MA – Module OpenForms Reference

Mass Appraisal Module OpenForms Reference

Release 6.1 [To be reviewed]

Overview

OpenForms Reference information. Intended for Business Analysts and System Administrators.
The page contains general information on the system standards queries and distributed forms.

Distributed Forms

The following forms are distributed via the Enterprise Migration Tool EMT Import/Export in the Utility menu in the OpenForms Govern’ Administrator (GNA) system.
The forms can be copied and modified in the OpenForms Designer (OFD).

 

Form No. Page Link/Product Code Description
MA017 101-ma-ofr-017 CAMA – Land
MA021 101-ma-ofr-021 CAMA – Value Override
MA015 101-ma-ofr-015 CAMA – Sale info
MA014 101-ma-ofr-014 CAMA – Property Info
MA 101-ma-ofr- Buildings (contains BSE and )
MA 101-ma-ofr- CAMA – Building Drawing
MA016 101-ma-ofr-016 CAMA – Site

 

Site

[in development]

Business Entity Designer

Model & Entities

  • The Model is CAMA Sites.
  • Business entities include MA_Sites_Values and MA_Sites_History. These entities are linked by P_ID.

Attributes

Three attributes are added to the form in the BED.
These are calculated values that use the following expressions.

  • BUILDING_DIR IsNull(@attrINCOME_DIR_VALUE,0)-IsNull(@attrLAND_VALUE,0)
  • BUILDING_GRM IsNull(@attrINCOME_GRM_VALUE,0)-IsNull(@attrLAND_VALUE,0)
  • BUILDING_MRA IsNull(@attrMRA_VALUE,0)-IsNull(@attrLAND_VALUE,0)
NOTE: The same attributes and entities are added to the CAMA Property Information form.

OpenForms Designer

Controller for Site Information

  • Assembly: MsGovern.OpenForms.CustomControls.dll
  • Class MA_Site_Controller

Site Information > General tab

  • The General tab is configured by a custom control:
  • MASiteAdjustments_Control
  • The control displays a grid used for entering the site adjustments for the site.

Controller for Site History

  • Assembly: MsGovern.OpenForms.CustomControls.dll
  • Class MA_SiteHistory_Controller

Site Information ID Setters

  • P Id Parcel ID
  • Frozen Id Frozen ID
  • Year Id Year ID

Site History ID Setters (to be verified)

  • P Id Parcel ID

Order by

  • Site No Ascending
  • Year Id Ascending
  • Frozen Id Ascending

Land

Model
The Land Information Model Land Information form has two entities:

  • MA_LAND
  • MA_EXEMPTIONS

The exemptions entity is useful if you have real property tax exemptions that can be applied directly to a land record.
Data associated with MA_EXEMPTIONS are saved to MA_LK_EXEMPTIONS

Controllers
MA LAND

  • Assembly: MsGovern.OpenForms.CustomControl.dl
  • Class: MA_Land_Control
  • The Controller has a custom save and delete.
  • The custom save is used for creating the original record (Frozen ID -1)

MA LAND Form Action Buttons

  • Copy Land to copy the land data info from current land record
  • Paste Land to paste the land data info to current land record
  • Refresh to compute data and reload the form

MA_LAND ADJUSTMENT
Custom Entity

  • Assembly: MsGovern.OpenForms.CustomControl.dl
  • Class: MA_LandAdjustments_Control

Buildings

under construction

Reference Database tables
PC_PARCEL_LK_BLDG
MA_BUILDINBG
MA_BUILDING_INFO (merged with MA_BUILDING)
MA_BUILDING_DRAWING
MA_BUILDING_AREA by year
MA_BUILDING_1, _2, _etc.

Data Model

General Information on the models used for the forms

Property Control

Parcel [pc_parcel] is active [effective year, inactive year] Parcel linked to buildings [pc_pid_lk_bid] active [effective and inactive date] Building can be linked to property location (ex: corner address)
Building can be linked to building (ex: unit to condo complex building, premise renting in…)
Building can be master in building link (ex: condo complex building, rental building…)
Occupant records can be linked to building

Mass Appraisal (by year)

Building can be linked to a parcel that is linked to condo appraisal
Building can be linked to a parcel that is linked to premise rental appraisal
Building can be linked to a parcel site record by year
Building can be linked to a parcel income record by year
Building can be linked to a parcel MRA record by year

Miscellaneous Structure records can be linked to building
Occupant records can be linked to building

What’s New

The following are additions and changes related to the CAMA OpenForms Reference:

Release 6.1.1605.245 / 6.1.1603.316

A new field called VALUE_OVERRIDE has been added to the following forms:

  • Buildings
  • Income
  • Misc Structures
  • Site
  • Land
  • MRA

Deployments and Versions affected:

  • GOVERN_REFERENCE_V61_DEV_MTL-SQL2012_SQL 6.1.1605.245
  • GOVERN_REFERENCE_V61_REL_MTL-SQL2012_SQL 6.1.1603.316

Location of the changes are indicated below.

CAMA Buildings

CAMA_Buildings.png
Click to view full size image.

CAMA Land Information

CAMA_LandInformation.png
Click to view full size image.

CAMA Misc. Structure Information

CAMA_MiscStructInformation.png
Click to view full size image.

CAMA Site Information

CAMA_SiteInformation.png
Click to view full size image.

CAMA Income Information

CAMA_IncomeInformation.png
Click to view full size image.

CAMA Fair Market Value

CAMA_FairMarketValue_MRA.png
Click to view full size image.

 

 

101-ma-ofr

 

0 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 5 (0 votes, average: 0.00 out of 5)
You need to be a registered member to rate this.
Loading...

MA – Land Information

Mass Appraisal Land Information

[In Development]

Specification Overview

All the CAMA Land information is presented on a single form in Govern OpenForms called Land Information.

  • You can create multiple Land Information records for a parcel in order to cover all the different land uses and types.
  • Data about the parcel size are maintained on the CAMA Land Information forms and with the Govern Property Control Legal Information form.
    • The update on the Legal Information form is automatic.
    • There are options for excluding the lot size, depth, and frontage for a specific parcel.
    • For more information about the Legal Information form, click on the following link: PC Legal Information
  • The Land Value is determined by a number of factors that include the parcel size, the land use, the rate schedule, adjustments, and tax exemptions applied specifically to the land. It can be applied to a MRA record or to a Income record, according to the appraisal method selected as well as to the land record’s option INCLUDE IN Income or MRA.
  • Assessment Exemptions can be applied on Appraisal Land Records
  • Audit, Copy to, Roll forward, Audit trails and other standard features

What’s New

[5.1] (to be verified in 6.0) You can now copy and paste a land record. This can save time if you are creating multiple land records that are similar. The land records can be on separate parcels. All data from the General tab can be copied with the exception of the LOT_SIZE, LOT_UNITS_TYPE, UNITS, and UNITS_TYPE. Data are copied one record at a time.
[6.1] Refresh Icon no longer available
[6.1] Mass Appraisal Link Group table lookup …
[6.1] Cluster configuration for table lookup …
[6.1] Site is required for all components
[6.1] Land Info merged into Land
[6.1] Simulation and template fields removed
[6.1] New Override Fields (to show calculated and overrided value)

Land Information

General

All land records are maintained on a single data entry form called Land Information. The appraised land value is determined from the values enteredon this form that include area, use, and applicable adjustments. This Land Information form has a General and an Adjustments tab. If the Govern Real Property TAX module is integrated to the Mass Appraisal through Govern Admin, an Exemptions tab is included and you can apply tax exemptions directly to the land record (verify if available in 6.1) . Similar functionality is added to the Building Structural Elements and Features and Miscellaneous Structures forms. Before recording the land appraisal information record for a property, update the following:

  • Mass Appraisal Site Information
  • Mass Appraisal Property Information
  • Legal Description

If multiple Land Information records are available for the property, the navigation arrows are displayed. If it is configured, the Record Description is displayed.

Land Schedules without a Predefined Price per Unit

If a price per unit is included in the rate schedule, the land value is calculated automatically. Otherwise, if a price per unit is not included, then you must enter a value in the Units Price field under section. The Land Value is calculated based on the unit price and other fields.

Calculating the Agricultural Value

The Agricultural Unit Price is separate from the Land Unit Price. It is determined by multiplying the Units * Unit Price AG. The Land Adjustment is calculated according to the configuration. Amounts are displayed in the Unit Price AG and Total AG Before Adj. fields if the selected rate schedule code applies to the agricultural value.

The Units Price and Total Value Before Adjustments are calculated based on the Rate Schedule Code. The Total Value field at the bottom of the interface is calculated based on the total with the adjustments.

Excluding Land Area from the Legal Description

To exclude the land size from the Legal Description record for the property click on the exclude option according to how you set up the record:

  • Exclude Lot Size
  • Exclude Depth
  • Exclude Frontage

Copy and Paste to Create New Land Records

  • Copy: Use the copy and paste icons to copy data from one land record to another. The records can be on the same parcel or on multiple parcels. This can be useful if you are creating multiple land records with similar data. Records are copied one by one. To copy a record, open it in the Land Information form and click the Copy icon.
  • Paste: Use the Paste icon to paste land information data from the source parcel where it was copied with the Copy icon to the destination parcel. All data from the General tab are copied with the exception of the following: Lot Size, Lot Units Type, Units, and Unit Type (validate).

Overriding the Land Value

Total Value = Units * Unit Price + Land Adjustment + Site Adjustment + Neighborhood Adjustment + Final Adjustment.

To override the Total Value:
1. Select the General tab on the Land Information form.
2. Select the Override option to enable the Final Adjustment field.
Enter a new value in the Final Adjustment field. This is added to the Total Value. (New change in 6,.1)

Land Form – General

–General Section
Site No.

  • Select the Site from the Site No dropdown list. Several sites can be created for a property on the MA – Sites form. Typically, they are based on location and other geographic information.
  • Multiple adjustments can be applied to each Site using the MA – Sites form.

Rate Schedule

  • Select a land rate schedule from the Rate Schedule dropdown list. Rate Schedules are defined in Govern Admin. They determine the land value based on a number of factors, such as the number of units, the Link Group type (neighborhood, jurisdiction, income neighborhood). The rate can be applied as a flat rate or according to a schedule. A separate rate expression can be applied on the agricultural land on the parcel. The Land Adjustments can be associated with Rate Schedules in Govern Admin.

Land Use Code

  • Select a code for the land use from the Land Use Code dropdown list. The Land Use Codes are defined in Govern Admin. They are used for classifying properties according to how the land is used. Land Use Codes can be associated with a Property Type (VT_USR PROPTYPE) and classified as Agricultural. The Land Adjustments can be associated with land use codes in Govern Admin.

Land Unit type

  • Select the unit type corresponding to the area you entered from the Lot Units Type dropdown list. Examples are acres, hectares, square feet, and square meters.

–Dimensions Section
Enter the area of one of the following:

  • Depth / Exclude
  • Frontage / Excluded
  • Lot Size / Exclude

Exclude is used for calculating the land value. If Exclude is checked, the area will not be used in the Legal Total Size calculation.

–Units Section
During the computation, the units and unit type are automatically converted and the results are displayed in the Units and Unit Type fields. The Units Price and Total Value Before Adjustments are calculated based on the Rate Schedule Code during the save. The Total Value field at the bottom of the interface is calculated based on the total with the adjustments.

Total Units

  • Calculated amount

Unit Type

  • Calculated field (converted)

Unit Price

  • Calculated amount if entered in Land Schedule Land Rate

Unit Price AG

  • Calculated amount if entered in Land Schedule AG Rate

Total Value Before Adj.

  • Sum of land value before adjustments. Calculated amount.

Total AG Value Before Adj.

  • Sum if land Agricultural values before adjustments. Calculated amount.

–Adjustments Section

Land

  • The Land Adjustment is the total of the adjustments selected on the Adjustments tab. Calculated amount

Land AG

  • Calculated amount

Site

  • The Site Adjustment is calculated according to the selections made on the Site Information form. Calculated amount

Neighborhood

  • The Neighborhood Code is selected for the property on the Property Area record. Refer to the Property Control guide for details on this form. The adjustment applied to the land for the Neighborhood is defined in Govern Admin per Neighborhood on the Mass Appraisal Neighborhood Validation Table. .Calculated amount

 

Land Form – Adjustments

Viewing / Applying an Adjustment

The Land Information Adjustments tab lists the available adjustments.

To apply an adjustment, select the Adjustments tab on the Land Appraisal Information function. The available adjustments are listed. According to the setup, the adjustments can be associated with the Land Use Code or Rate Schedule selected on the General tab. Otherwise, they are not associated with any data entry field.

By default the land adjustments are listed by sequence number. You can sort them in ascending or descending order by any of the available columns. To do this, click on the column heading. You can also remove any columns that you do not want to view. Right-click on the title bar of the columns to display a context-sensitive menu. Deselect the columns that you do not want to view. You can also change the position of a column by dragging and dropping it to the left or right.

Select a specific code for the adjustment type, by clicking inside the Adjustment Code text field, if applicable. Click Save.

Overriding an Adjustment

To override a land adjustment, select the Adjustments tab on the Land Information form. Select (check) the Override checkbox beside the value you want to modify.

Enter a new value in the Value field and click Save. Note: The value is recalculated and displayed under Value.

Land Form – CAMA Exemptions

Validate if available in 6.1

Configuration

For a step by step administrative setup see Module Specification (above) Configuration or Product Map under the Land Form Function for all related product detail wiki URL pages.

There are three (3) Mass Appraisal Validation Tables that are specific to land information. All are set up and maintained in Govern Admin in Govern for Windows.

  • Land Adjustments (Table: MA_PARM_LANDADJT)
  • Land Rate Schedule (Table: MA_PARM_LANDSCHD)
  • Land Use Codes (Table: MA_PARM_LANDUSE)

Land Adjustments

  • You can create as many Mass Appraisal Land Adjustment tables as required.
  • Multiple adjustments can be applied to a land record.
  • Land adjustments tables are defined in Mass Appraisal tables and are often associated with topographic or other geographic features of the land or proximity to roads or schools.
  • They can be applied as flat rates, formulas, or logical expressions and associated with the land use or rate schedule codes.
  • Adjustments are displayed on both the Land Information > Adjustments tab.

Land Rate Schedule

  • The Mass Appraisal Land Rate Schedule Validation Table is unique.
  • Rate Schedules are defined in Govern Admin.
  • They determine the land value based on a number of factors, such as the number of units, the neighborhood, and the jurisdiction.
  • The rate can be applied as a flat rate or according to a schedule.
  • A separate rate, formula, or logical expression can be applied on the agricultural land on the parcel.
  • The Land Adjustments can be associated with Rate Schedules in Govern Admin.

Land Use Codes

  • The Mass Appraisal Land Use table is unique.
  • The Land Use Codes are used for classifying properties according to how the land is used.
  • Land Use Codes can be associated with a Property Type (Table: VT_USR_PROPTYPE) and classified as Agricultural.
  • The Land Adjustments can be associated with land use codes in Govern Admin.
NOTE: Before performing the specific setup for the CAMA Land Information form, it is important to complete the general CAMA configuration.

Documentation

This section provides links to the administrative and user documents for land information.

Administrator
Govern Land Administration : Mass Appraisal General Parameters and Validation Tables (specific to land) 6.0
Linear Square Foot Calculation: [To be revised] This document describes the linear square foot calculation used in the cumulative land calculation method.

User Manual
This document describes the Govern CAMA Land Information form for data entry of land
Govern Land Information user data entry

Technical Specification

See Module Section OpenForms Reference (OFR), Installation and Design info from R&D Developers

Video

8-101-100 – Land Appraisal from the Appraiser’s side Course 1 of 5 Govern APPRAISER
[PDF] [video]

 

 

101-ma-frm-017

 

0 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 5 (0 votes, average: 0.00 out of 5)
You need to be a registered member to rate this.
Loading...

MA – Audit Information

CAMA Audit Information

Overview

The CAMA Audit Information form is used for maintaining information about the mass appraisal audits associated with each property. This information includes the status of the audit, which can be either Pending or Finalized. A reason code can be associated with the audit. Details about the site visit, such as the appraiser’s name, dates, source codes and activity codes, as well as notes and comments can be tracked from this form. The Audit Information record can be transferred directly to the Govern Tax module.

When you save a CAMA Audit Record with the Value Finalized option selected, the historical data for the record are frozen.

Audit Information records can be created manually or generated automatically by the following batch processes:

  • MA Audit Pending: Run the MA Audit Pending batch process to generate a new Mass Appraisal Audit Information records with the Status set to Pending and the Frozen ID to 0. For details, see MA Audit Pending batch process.
  • MA Audit Finalized: Run the MA Audit Finalized batch process to generate Finalized Mass Appraisal Audit Information records from records with the Status set to Finalized. This batch process generates a Frozen ID for each audit, starting at -2 for the first. If a second audit is finalized, it is assigned Frozen ID -3, the third is assigned Frozen ID -4, and so on. Finalized records cannot be modified, except by authorized users. For details, see MA Audit Finalized batch process.

The Audit Information form contains new fields: Status and Reason Code.

Documentation

To view this information in pdf format, click on the following link

Accessing the Audit Information Form

To access the CAMA Audit Information form:

  1. Launch Govern.
  2. Open a Profile that contains the CAMA Audit Information form.
  3. Select Audit Information in the Forms Explorer.
  4. Perform a search to retrieve the required property record.
  5. Load the record to the form.

Audit Information Icons

New
Click the New icon to create a new Audit Information record for the property.
Save
Click the Save icon to save a new record or any modifications to an existing one. Data are saved to MA_AUDIT_INFO.
Delete
Click the Delete icon to remove the Property Information record from the database. A confirmation message appears. Click Yes to continue.
Browse
If multiple Frozen IDs exist for the record, click the Browse icon. You can then view and or select a copy of the record saved under a Frozen ID from the Browser Audit Information screen.
Transfer to Tax
Select the Transfer to Tax icon to transfer the active record directly to the TX_RE_ ASSESSMENT table in the Govern Real Property Tax module.
When you transfer the audit information to tax, the following fields are populated on the Tax Assessment Maintenance form and in the Govern database.

Govern OpenForms User Form and Fields Govern Database Table and Column
Form Real Estate Tax Assessment Maintenance form Table TX_RE_ ASSESSMENT table
Field Land Value Column VA_LAND_ VALUE
Field Improvement Value Column VA_IMPROVEMENT
Field Total Assessment Column VA_TOTAL_ASSMT

A confirmation message is displayed when you click the icon. Click OK to continue.

Audit Information Data Entry Fields

Value Finalized
Select the Value Finalized option and click Save when the audit is complete. Once a Value Finalized record is saved, all fields are read-only and cannot be modified, except by authorized users.A new Frozen ID is generated and applied to all the CAMA records for the property. These records can be viewed, at any time, by selecting the applicable Frozen ID in the History panel.
The MA Audit Finalized batch process automatically generates MA Audit Information records. On these records, the Value Finalized option is selected. Records are generated from MA Audit Information records with the Status set to Finalized.
Status
The Status combo box contains two items Pending and Finalized.
The MA Audit Pending batch process creates new MA Audit Information records with the Status set to Pending. An appraiser can set the Status to Finalized when the audit is complete. The MA Audit Finalized batch process generates finalized audit records and automatically selects the Value Finalized option.
Fiscal Year
By default, this field displays the fiscal year of the department. This year is also displayed on the Govern Toolbar.
Frozen ID
This field displays the frozen ID of the selected record. When the record is current, the Frozen ID is set to zero (0). When a finalized audit record is created for the property, the Frozen ID is set to -2 for the first, -3 for the second, -4 for the third, and so on.
Site Number
Select a Site Number from the drop-down list.
Audit Reason
Select a reason code to explain the reason for the audit (Table: VT_USER.MA_AUDIT_REASON).
Entry Date
Enter the date the information was recorded.
Appraiser
Select an appraiser’s name from the drop-down list.
Entry Code
Select the entry code from the drop-down list (Table: VT_USR_ MAENTRY).
Activity Code
Select the activity code from the drop-down list (Table: VT_ USR_MAACTV).
Source Code
Select the source code from the drop-down list (Table: VT_ USR_MAINFSRC).
Notes & Comments
This field provides space for notes and comments.

 

 

101-ma-frm-019

 

0 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 5 (0 votes, average: 0.00 out of 5)
You need to be a registered member to rate this.
Loading...

 

101-ma-frm-020

CAMA Miscellaneous (detached) Structures

Overview

The Govern CAMA Miscellaneous Structures form is used for determining the appraised value of the miscellaneous structures associated with a property record.
The term miscellaneous structures, or out buildings, refers to structures that are separate from the main buildings. This includes fences, gazebos, garages, and swimming pools. You can create codes for specific structures, such as the type of fence: chain link fence, picket fence, or post and rail fence; or type of swimming pool, above ground, above ground, vinyl-sided, wood and vinyl, or steel and vinyl.

The appraised value is based on the type and size of the structure. This can be modified by the grade and condition. Depreciation can be applied,
according to the number of years and observed condition. Then, you can apply multiple adjustments, as required based on the site; neighborhood;
physical, functional, economical state; the percentage that the structure is complete; overall adjustments, If required, you can override the total value.

The administrative setup for Miscellaneous Structures consists of creating the validation tables and codes for the Miscellaneous Structures user form in Govern.

Mass Appraisal General Administrative Setup

Before beginning the Miscellaneous Structures setup, complete the general administrative setup for Mass Appraisal. This is described in the Govern CAMA General Information guide. It comprises the following administrative forms, tables, and codes:

  • Mass Appraisal General Parameters:
    • Additional configuration if you are using Marshall & Swift
  • Mass Appraisal Validation Tables for All Modules
    • Depreciation
    • Correlated Values Distribution
    • Neighborhood
    • Rounding table:
      You can set up validation codes for rounding on Miscellaneous Structures Values
    • Site
    • Limited Assessment Validation Table
  • Mass Appraisal Forms
    • Security Setup for Mass Appraisal
    • Appraiser’s Name
    • Appraisal Report Fields
    • Multiple Assessment Rate

Mass Appraisal Validation Tables for Miscellaneous Structures Data

The following Mass Appraisal Validation Tables are used for miscellaneous structure data:

Miscellaneous Structures Codes

The Miscellaneous Structures Codes table (VT_USR_MISCUSE) defines the specific type of miscellaneous structure, such as chain link fence, picket fence, or post and rail fence. The initial appraised value is set on this form. A Depreciation Table is selected for the form. See Miscellaneous Structure Use Code Validation Table and Codes.

Miscellaneous Structures Condition

The Miscellaneous Structures Condition Mass Appraisal Validation Table (VT_USR_MISCGRAD) and codes are applied to the depreciation of the structure in order to increase or decrease the percentage of depreciation according to the state of the structure. See Miscellaneous Structures Grade Validation Table and Codes on page 19.

Miscellaneous Structures Grade

The Miscellaneous Structures Grade Validation Table (VT_USR_MISCCOND) and codes are applied to the Replacement Cost New (RCN) of the miscellaneous structure in order to increase or decrease the appraised value
based on quality or grade. See Miscellaneous Structure Condition Validation Table and Codes on page 25.

Miscellaneous Structures Adjustments

The Miscellaneous Structures Adjustments Validation Table (VT_USR_MISCADJT) and Codes are applied to the appraised value of the miscellaneous structure after the neighborhood and site adjustment are added
but before rounding is applied and before the Final Adjustment is calculated. See Miscellaneous Structure Adjustments Validation Table and Codes on
page 31.

All the Miscellaneous Structures validation tables are unique; i.e., there can be only one of each in the database. If you try to create a second, an error message appears, indicating that there is a duplicate key, and you are unable to continue. However, you can create as many codes as required.

Prerequisites for Miscellaneous Structures

The following user validation tables are used in the Mass Appraisal Validation Tables for Miscellaneous Structures:

  • Jurisdictions (VT_USR_JURISD)
  • Neighborhood (VT_USR_NHBD)
  • Property Type (VT_USR_PROPTYPE)
  • CAMA Permanent Adjustment Reasons (VT_USR_AREATYPE)

User Validation Tables are set up in Govern Admin in the Validation Table Header form.

Jurisdictions

You can set up validation codes in order to apply different codes and rates
based on the geographic jurisdictions defined by your state or municipality.
The jurisdictions are entered in the VT_USR_JURISD validation table. They
can be applied to the following Mass Appraisal Miscellaneous Structures
Validation Tables:

  • Mass Appraisal Misc Structure Codes Validation Table
  • Mass Appraisal Misc Structure Condition Validation Table
  • Mass Appraisal Misc Structure Grade Validation Table
  • Mass Appraisal Misc Structure Adjustments Validation Table

Follow these steps to apply validation codes to a jurisdiction:

1. Select Support of Multiple Jurisdictions on the System Registry Maintenance form.
2. Create jurisdictions in the VT_USR_JURISD user validation table.
3. Select the Apply by Jurisdiction on the Mass Appraisal Validation Table.
4. Select the jurisdiction from the Jurisdiction drop-down list on the Mass Appraisal Validation Codes form.

Neighborhoods

Neighborhoods are defined by the organization in the Neighborhood User Validation Table, VT_USR_NBHD validation table. They can be applied to the following Mass Appraisal Miscellaneous Structures Validation Tables in order to apply different codes and rates based on neighborhood:

  • Mass Appraisal Misc Structure Codes Validation Table
  • Mass Appraisal Misc Structure Condition Validation Table
  • Mass Appraisal Misc Structure Grade Validation Table
  • Mass Appraisal Misc Structure Adjustments Validation Table

To apply validation codes by neighborhood:
1. Create neighborhoods in the VT_USR_NBHD user validation table.
2. Select the Neighborhood Lookup on the Mass Appraisal Validation Table.
3. Select the neighborhood from the Neighborhood drop-down list on the Mass Appraisal Validation Codes form.

NOTE: The VT_USR_NBHD Table is populated by the Mass Appraisal Neighborhood Validation Table. The Mass Appraisal Validation Table is also used for defining codes and characteristics for the table. Refer to the Govern CAMA General Information guide for details.

The Neighborhood Adjustment for Miscellaneous Structures is defined in the Mass Appraisal Neighborhood Validation Table. It can be applied to the Neighborhood as a percentage, formula, or logical expression. For further details, refer to the Govern CAMA General Information guide.

Property Type

Property Types are created in the VT_USR_PROPTYPE user validation table. They can be applied to the Mass Appraisal Miscellaneous Structures Code
Validation Table.

To apply validation codes by property type:

1. Create property types in the VT_USR_PROPTYPE user validation table.
2. Select the property type from the Property Type drop-down list on the Mass Appraisal Validation Codes form.

Permanent Adjustment Reasons

You can set up permanent adjustment reason codes to include additional information about the miscellaneous structures on the MA – Miscellaneous Structures form.
For these codes, you need to create a user validation table in Govern Admin or in GNA. Refer to the Super User guide for details about Govern Admin or to the Govern New Administration documentation for details about GNA.

NOTE: The user validation tables and codes you create in the Validation Table Header form in Govern Admin are copied to the User Validation Table Editor in GNA. However, the reverse does not apply; i.e., the tables
and codes you create in GNA are not copied to Govern Admin.

The Permanent Adjustment Reason codes are available for the MA – Miscellaneous Structures form in Govern, regardless of where they are created. They are not available in Govern for Windows.

To set up permanent adjustment reason codes:
1. Create a user validation table with the table name PERMADJREASON in either Govern Admin or GNA.
2. Create codes for this table.

If you want to give the table a different name, follow these steps:

1. Launch the Govern Business Entity Designer (BED).
2. Select Business Entities.
3. Select the MA_MiscStructures business entity.
4. Select the PERM_ADJ_REASON attribute.
5. Change the table name under the Properties > Lookup Settings.
6. Click Save.
Refer to the Govern Business Entity Designer guide located on the Business Entity Designer page for further details.

General Mass Appraisal Validation Tables

The following Mass Appraisal Validation Tables are used in calculating Miscellaneous Structures values as well as other appraised values. These tables are described in the Govern CAMA General Information guide.

Depreciation Tables

Depreciation is applied to miscellaneous structures according to the age and the condition of the structure. It is based on a rate or schedule defined in the Mass Appraisal Depreciation Validation Tables and Codes (MA_PARAM_DEPR and VT_USR_<table_name>, where table_name refers to the user-defined name of the depreciation table). A Depreciation Table is associated with each miscellaneous structure type through the Miscellaneous Use Code Validation Table (VT_USR_MUSE).

Site Information

Site adjustments are set up in the Mass Appraisal Site validation table (MA_SITE). Multiple site adjustments for miscellaneous structures can be added to the record on the Mass Appraisal Site Information form in Govern. The total of these adjustments is added to the appraised value of the miscellaneous structure before the overall and final adjustments are calculated.

Rounding Table

Rounding can be defined for miscellaneous structures on the Mass Appraisal Rounding Table (MA_PARAM_MAROUND). It is applied to the appraised value of the structure after the Overall Adjustment is applied but before the Final Adjustment is added.

The Replacement Cost New (RCN) and Replacement Cost New Less Depreciation (RCNLD) values are not rounded.

Related Topics

 

 

101-ma-frm-020

 

0 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 5 (0 votes, average: 0.00 out of 5)
You need to be a registered member to rate this.
Loading...

MA – Story Case #10 (Matrix and Area Look-Up)

CAMA BSE Setup STORY CASE #10 (Matrix and Area Look-Up)

[In Development]

Overview

This story case uses the matrix setup with area look-up to create a 5 dimension look-up table.
These attributes are used to determine the base rate (dollars per square foot) and uses multiplier adjustments based on these attributes (1.02, 0.97).

Premise

The residential cost method starts by using five attributes: Quality, Story Type, Heating Type, Framing and Area.

 

 

101-ma-frm-025-Story-010

 

0 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 5 (0 votes, average: 0.00 out of 5)
You need to be a registered member to rate this.
Loading...

MA – Compute Building Value

CAMA Building Value Computation

General Purpose

The purpose of the Building Computation is to provide values of all the Govern’s system columns for a given record of the table MA_BUILDINGS_XX. The ultimate goal of this compute is to provide a building value (the cost for a building structural elements) based on building’s physical characteristics (called structural elements). [VB6 class name: GvObjCostComp OF:MACostComp.cls]

Important Notes RE: the Computation

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.

Parameters

General Parameters (SY REGISTRY by YEAR)

  • QP_ROUNDING = “Mass Appraisal”, “Quality Point Rounding” = (‘yes’ or ‘no’)
  • QP_DECIMAL = “Mass Appraisal”, “Quality Point Decimal”
  • USE_BASE_AREA_FOR_LOOKUP = “Mass Appraisal”, “Bldg Lookup By Base Area” = (‘yes’ or ‘no’)
  • ROUND_UP_AREA = “Mass Appraisal”, “Round Up Area” = (‘yes’ or ‘no’)
  • EFFECTIVE_LIVING = “Mass Appraisal”, “Effective = Living” = (‘yes’ or ‘no’)
  • “Mass Appraisal”, “Size Adjt Method”
  • CAMA_ADJ_DECIMAL = “Mass Appraisal”, “Cama Adjustment Decimal”
  • “Mass Appraisal”, “Size Adjt. Decimal”
  • SE_BY_MODELS = “Mass Appraisal”, “Associate SE to models” = (‘yes’ or ‘no’)
  • SE_BY_MODELS_YEAR = “Mass Appraisal”, “Associate SE to models Year Effective”
  • SQUARE_ROOT = “Mass Appraisal”, “Area In Square Root” = (‘yes’ or ‘no’)
  • “Mass Appraisal”, “Property Type From pc_legal_info” = (‘yes’ or ‘no’)
  • USE_METRIC = “General”, “use metric” = (‘yes’ or ‘no’)
  • SIZE_ADJ_METHOD = “Mass Appraisal”, “Size Adjt Method” = (‘1’ or ‘2’)
  • SIZE_ADJ_DECIMAL = “Mass Appraisal”, “Size Adjt. Decimal” default 3
  • PROPERTY_TYPE_FROM_PC_LEGAL = “Mass Appraisal”, “property type from pc_legal_info” = (‘yes’ or ‘no’)

Parameters discontinued in Govern OpenFroms 6.1.

  • “Mass Appraisal”, “Compatibility SE Compute”
  • “Mass Appraisal”, “Compatibility SE Compute Year Effective”
  • “Mass Appraisal”, “Optimize Computation Speed”
  • “Mass Appraisal”, “Round by Drawing Code”
  • “Mass Appraisal”, “Skip Rates Interpolation”

Changed Parameters

  • DEPR_BASE_YEAR=Year value (ex:2015), “Depreciation Year” should now be using the registry by year under “Mass Appraisal”

 

Tables and Fields

Tables

  • MA_BUILDINGS (includes old MA_BLDG_INFO)
  • MA_BLDG_AREA_YEAR (replaces old MA_BLDG_AREA)
  • PC_AREA.NBHD NOTE: At a minimum the PROPERTY_TYPE column has to be available to the building context, but ideally all columns of PC_LEGAL_INFO (to validate)
  • PC_LEGAL_INFO.PROPERTY_TYPE (same NOTE)
  • MA_BUILDINGS. BLDG_ID + BLDG_SEQ -> PC_LK_PARCEL_BLDG.P_ID
  • PC_LK_PARCEL_BLDG.P_ID -> PC_AREA.P_ID
  • PC_AREA.NBHD -> MA_PARM_NBHD.NBHD_CODE
  • MA_BUILDINGS.BLDG_USE_CODE -> MA_PARM_BLDGUSE.BUSE_CODE
  • MA_BUILDINGS.SUBMODEL_CODE -> MA_PARM_SUBMODEL.SUBMODEL_CODE
  • MA_BUILDINGS.BLDG_MODEL_CODE -> MA_PARM_DRAWING.BLDG_MODEL_CODE MA_BUILDINGS.SUBMODEL_CODE -> MA_PARM_DRAWING.SUBMODEL_CODE
  • MA_BUILDINGS.BLDG_MODEL_CODE -> MA_PARM_SE_MODELS.BLDG_MODEL_CODE
  • MA_BLDG_AREA_YEAR. AREA_CODE-> MA_PARM_DRAWING.BLDG_AREA_CODE
  • MA_BUILDINGS.YEAR_ID -> MA_MODIF_STAMP.YEAR_ID

Parameter Tables

  • MA_TABLES.TABLE_CATEGORY = “bldg”
  • MA_PARM_MAROUND.ROUNDING_CODE = “bldg” for the building value
  • MA_PARM_MAROUND.ROUNDING_CODE = “area” for the areas (building dimensions)
  • MA_PARM_MAROUND.ROUNDING_CODE = “look” for the areas used in lookups

Calculated Fields
The following system columns cannot be used in expressions stored in the MA_PARM tables nor should they be editable.

  • TOTAL_BASE
  • TOTAL_ACTUAL
  • TOTAL_EFFECTIVE
  • TOTAL_LIVING_AREA
  • TOTAL_HEATED
  • TOTAL_PERIMETER
  • TOTAL_RCN
  • TOTAL_RCNLD
  • TOTAL_VALUE
  • SITE_ADJ_TOTAL
  • NBHD_ADJ_TOTAL
  • FINAL_ADJ

Lookup Group
Many of the parameters used in the building computation depend on a lookup group. All the lookup groups are stored in the table MA_LOOKUP_GROUP and can be can be of the following types:

  • By neighborhood
  • By property type
  • By income neighborhood
  • By jurisdiction
  • By jurisdiction AND neighborhood
  • By jurisdiction AND income neighborhood
  • By jurisdiction AND property type

Look-up Group Example

We have a building record for the year 2015 with BLDG_USE_CODE = “45”. We want to get a BSE element which is defined in the table MA_PARM_SETAB where the table name is “EXTWALL” and the primary key contains the SE_CODE and LOOKUP_GROUP. We already have the YEAR_ID and the SE_CODE ( “45”) but now we need the lookup group.

Next, we go to the table MA_LOOKUP_GROUP and get all the records with TABLE_NAME=”EXTWALL”, YEAR_ID=2015 and CAMA_CODE=”45”. In our example, this lookup group is by jurisdiction and neighborhood so it will look like this:
LOOKUP_GROUP JURISDICTION NBHD
0 Null Null
1 31572 Null
2 31572 015
3 31572 016
4 31513 Null
5 31513 012

Here are some possible scenarios depending on the jurisdiction and neighborhood for the land record:
If Jurisdiction=31572 and Nbhd=015, then Lookup_Group=2
If Jurisdiction=31572 and Nbhd=020, then Lookup_Group=1
If Jurisdiction=45875 and Nbhd=015, then Lookup_Group=0

Properties required to get the lookup group
The following information is required to use the lookup group:

  • Jurisdiction:Use PC_PARCEL.JURISDICTION based on MA_LAND.P_ID = PC_PARCEL.P_ID.
  • Neighborhood and Income neighborhood: Use PC_AREA.NBHD and PC_AREA.INC_NBHD based MA_LAND.P_ID = PC_AREA.P_ID and _MA_LAND.FROZEN_ID = PC_AREA.FROZEN_ID.
  • Property type: Use MA_PARM_BLDGUSE.PROPERTY_TYPE based on MA_BUILDINGS.BLDG_USE_CODE = MA_PARM_BLDGUSE.BUSE_CODE and MA_BUILDINGS.YEAR_ID = MA_PARM_BLDGUSE.YEAR_ID. If no information is found in MA_PARM_BLDGUSE then we’ll use a blank property type (15 spaces). This is a table that depends itself on a lookup group. If the lookup group is by property type then for the purpose of the lookup we must use the PROPERTY_TYPE defined in PC_LEGAL_INFO.PROPERTY_TYPE.

 

Step 1 – Compute the areas

For each record in MA_BLDG_AREA_YEAR, based on the field BASE_AREA, using the percent values from MA_PARM_DRAWING (by searching with the AREA_CODE and lookup by MODEL/SUBMODEL if used):

a) Calculate the areas

Calculate the actual, effective, heated and perimeter area.

  • MA_BUILDINGS.TOTAL_BASE = the total of all MA_BLDG_AREA_YEAR.BASE_AREA

 

  • MA_BLDG_AREA_YEAR.EFFECTIVE_AREA = MA_BLDG_AREA_YEAR.BASE_AREA * Expression content [MA_PARM_DRAWING. EXPRESSION] * Expression content [MA_PARM_DRAWING.EFFECTIVE_EXPESSION] / 10000
    • If USE_METRIC we round to 1 decimal otherwise we round to 0 decimal

 

  • MA_BLDG_AREA_YEAR.ACTUAL_AREA = MA_BLDG_AREA_YEAR.BASE_AREA * Expression content [MA_PARM_DRAWING. EXPRESSION] / 100
    • If USE_METRIC we round to 1 decimal otherwise we round to 0 decimal. MA_BUILDINGS.TOTAL_ACTUAL = the total of all MA_BLDG_AREA_YEAR.ACTUAL_AREA

 

  • MA_BLDG_AREA_YEAR.LIVING_AREA = MA_BLDG_AREA_YEAR.ACTUAL_AREA
    • if MA_PARM_DRAWING.LIVING_AREA = -1 otherwise = 0
  • MA_BUILDINGS. TOTAL_LIVING _AREA = the total of all MA_BLDG_AREA_YEAR. LIVING _AREA
  • If EFFECTIVE_LIVING = “yes” then
    • MA_BUILDINGS.TOTAL_EFFECTIVE = the total of all MA_BLDG_AREA_YEAR. LIVING _AREA

 

  • MA_BLDG_AREA_YEAR.HEATED_AREA = MA_BLDG_AREA_YEAR.ACTUAL_AREA
    • if MA_PARM_DRAWING.HEATED = “yes” = MA_BLDG_AREA_YEAR.ACTUAL_AREA * MA_BLDG_AREA_YEAR.PERCENT_HEATED
    • if MA_PARM_DRAWING.HEATED = “partial” or = 0 if MA_PARM_DRAWING.HEATED = “no” MA_BUILDINGS. TOTAL_HEATED = the total of all MA_BLDG_AREA_YEAR. HEATED_AREA

 

  • MA_BUILDINGS. TOTAL_PERIMETER = the total of all MA_BLDG_AREA_YEAR. PERIMETER

 

b) Cumulate the building areas by type

This steps cumulates the areas by area type (i.e. Basement, Garage, Porch, 1st Floor … Attic, etc.). The Building Drawing Table Option By Area Type must be turned on where each drawing code can be associated to an area type. When none define, the Area Type ‘E’ Effective is used by default. When the Drawing Area Code Option Do not xxxx is turned on, the area is not added to the Effective or Area Type totals (i.e. for perimeter consideration only).

  • Cumulate the values in a collection by MA_PARM_DRAWING.AREA_TYPE (if NULL use the default ‘e’) if MA_PARM_DRAWING.EX_FROM_LOOKUP = 0 or NULL.
  • The collection is indexed by AREA_TYPE and contains the following variables:
    • TOTAL_EFFECTIVE = sum of all MA_BLDG_AREA_YEAR.EFFECTIVE_AREA per AREA_TYPE
    • TOTAL_FOR_LOOKUP = sum of all MA_BLDG_AREA_YEAR.EFFECTIVE_AREA per AREA_TYPE if USE_BASE_AREA_FOR_LOOKUP = “no” else sum of all MA_BLDG_AREA_YEAR.ACTUAL_AREA per AREA_TYPE if USE_BASE_AREA_FOR_LOOKUP = “yes”
    • TOTAL_RATE = 0 (will be use in the next steps)
    • TOTAL_VALUE = 0 (will be use in the next steps

c) Add the areas to TOTAL for Lookup
Cumulate the values of all TOTAL_FOR_LOOKUP into a variable GRAND_TOTAL_FOR_LOOKUP for use later in the compute.

Step 2 – Round and Update Areas

Round and update area fields in MA_BUILDING (see Rounding Table)

a) Rounding by Area type

  • Round each element of the collection created in step 1 for TOTAL_EFFECTIVE by using MA_PARM_MAROUND.ROUNDING_CODE = “area” and evaluating the Expression content [MA_PARM_ROUNDING.ROUND_TO_EXPESSION]. The rounding is performed by dividing TOTAL_EFFECTIVE by the ROUNDING_VALUE, by adding 0.4999999999999 if ROUND_UP_AREA = “yes”, by formatting the result to no decimal and then by multiplying back by the rounding value. If SQUARE_ROOT = “yes” then do a square root on TOTAL_EFFECTIVE.

b) Rounding by Total

  • Round each element of the collection created in step 1 for TOTAL_FOR_LOOKUP by using MA_PARM_MAROUND.ROUNDING_CODE = “look” and evaluating the Expression content [MA_PARM_ROUNDING.ROUND_TO_EXPESSION]. The rounding is performed by dividing TOTAL_FOR_LOOKUP by the ROUNDING_VALUE, by adding 0.4999999999999 if ROUND_UP_AREA = “yes”, by formatting the result to no decimal and then by multiplying back by the rounding value. If SQUARE_ROOT = “yes” then do a square root on TOTAL_FOR_LOOKUP.

c) Grand Total Rounding

  • Round GRAND_TOTAL_FOR_LOOKUP by using MA_PARM_MAROUND.ROUNDING_CODE = “look” and evaluating the Expression content [MA_PARM_ROUNDING.ROUND_TO_EXPESSION]. The rounding is performed by dividing TOTAL_EFFECTIVE by the ROUNDING_VALUE, by adding 0.4999999999999 if ROUND_UP_AREA = “yes”, by formatting the result to no decimal and then by multiplying back by the rounding value. If SQUARE_ROOT = “yes” then do a square root on GRAND_TOTAL_FOR_LOOKUP.

 

Step 3 – Get Initial Building Rate Information

Building Area Rate

Get Building Rate Setup
Check Rate Setup and get the initial rate from the building use code and the default property type. To do so, need to get one record from MA_TABLES for table_type = ‘bldguse’ to see if there is a lookup by:

  • bldg_model (field setab_use_model = -1)
  • submodel (field setab_submodel = -1)
  • units (field use_units = -1)

Get Property Type

  • PROPERTY_TYPE = MA_PARM_BLGUSE.PROPERTY_TYPE
  • If PROPERTY_TYPE is NULL then get the property type from PC_LEGAL_INFO.

Get Initial Rate
The rate is established by getting MA_PARM_BLGUSE or MA_PARM_BRATE if the units are used).
The rate will be associated with the TOTAL_RATE collection created in step 2 based on MA_PARM_SE_AREA.AREA_TYPE. If no records found, use ‘e’ (Effective area) as AREA_TYPE.
Fixed Rate

  • If MA_TABLES.USE_UNITS is False, then get the rate from MA_PARM_BLGUSE by searching with MA_BUILDINGS.BLDG_MODEL_CODE and with MA_BUILDINGS.SUBMODEL_CODE– depending on the lookup found above. The rate is evaluated from an expression and stored in TOTAL_RATE of every elements in the collection indexed by AREA_TYPE.

Rate by Unit

  • If the MA_TABLES. USE_UNITS is True, than get a pro-rated rate form MA_PARM_BRATE by searching with MA_BUILDINGS.BLDG_MODEL_CODE and with MA_BUILDINGS.SUBMODEL_CODE – depending on the lookup found above. The Up_to_units area information (TOTAL_FOR_LOOKUP) is prorated based on the collection indexed by AREA_TYPE (Up_to_units >= TOTAL_FOR_LOOKUP) AND the value of AREA_TYPE for each entry found in MA_PARM_SE_AREA . The rate is evaluated from an expression and stored in TOTAL_RATE for the selected elements in the collection indexed by AREA_TYPE.

 

Building Use Depreciation Table

We need to store the depreciation table and the maximum depreciation percentage into variables for use later in the depreciation step (step 18).

  • DEPR_TABLE = MA_PARM_BLGUSE.DEPR_TABLE.
  • MAX_ DEPR_PCT = MA_PARM_BLGUSE.MAX_ DEPR_PCT.

 

Building Rate by Area Units Example

When MA_TABLES. USE_UNITS is True
Collection contains:
AREA_TYPE TOTAL_FOR_LOOKUP TOTAL_RATE
b 1000 0
l 2000 0
MA_TABLES has:
TABLE_NAME COMPUTATION_SEQ SETAB_USE_MODEL SETAB_SUBMODEL SETAB_USE_UNITS
bldguse 0 0 0 -1
MA_PARM_SE_AREA has :
COMPUTATION_SEQ AREA_TYPE
0 b
0 l
MA_PARM_BRATE has:
BUSE_CODE UP_TO_UNITS RATE
ms0001a 1000 20.50
ms0001a 3000 18.50
ms0001a 9999999 10.00
The collection will contain:
AREA_TYPE TOTAL_FOR_LOOKUP TOTAL_RATE
b 1000 20.5
l 2000 19.5 (pro-rated)

Step 4 – Structural Elements Values Calculation

This step gets and calculates all building structural elements that apply.It computes or evaluates all the XXX_VA, XXX_V2 columns based on the corresponding value of XXX_CD.

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.

Parameters

Structural elements can be associated to:

  • Property type
  • SE models (based on the registry SE_BY_MODELS and SE_BY_MODELS_YEAR which determines the effective year)

Structural Elements in MA TABLE
Get all the structural elements records from MA_TABLE for the year, having TABLE_TYPE = ‘setab’ AND MA_TABLES.setab_rd_code <> ‘h’.

  • If they are associated to the SE models then join with the table MA_PARM_SE_MODELS and filter on MA_BUILDINGS.BLDG_MODEL_CODE,
  • if not then use PROPERTY_TYPE (Step 3) that match MA_TABLES.PROPERTY_TYPE or MA_TABLES.PROPERTY_TYPE = NULL.

Computation Sequence
The records will be ordered by COMPUTATION_SEQ.

* Use this set of records within the steps below *

Query Sample if Associated to SE Models

  • SELECT ma_tables.* FROM ma_tables, ma_parm_se_models WHERE ma_tables.year_id = ma_parm_se_models.year_id AND ma_tables.column_name = ma_parm_se_models.column_name AND ma_tables.computation_seq = ma_parm_se_models.computation_seq AND table_type = ‘setab’ AND setab_rd_code <> ‘h’ AND ma_tables.year_id = 2015 AND bldg_model_code = ‘ms0009’ ORDER BY ma_tables.computation_seq

 

MA Building Records Calculation

Each of the records will be treated separately, in order to find the value to be updated in MA_BUILDINGS for the corresponding XXX_VA field of the MA_TABLE.COLUMN_NAME, using the XXX_CD field value set in MA_BUILDINGS.

a) No Table Name

If there is no MA_TABLES.TABLE_NAME and the value into the corresponding _CD field is numeric, it will be transferred into the _VA field, otherwise XXX_VA is set to NULL.

b) No Table Name and Setab Col 11 = -1

If there is no MA_TABLES.TABLE_NAME and MA_TABLES.SETAB_COL_11 = -1 then XXX_V2 is set to NULL.
The next sub steps are only performed when there is a MA_TABLES.TABLE_NAME

c) Get MA_PARM_SETAB

Based on:

  • bldg_model_code (if MA_TABLES.setab_use_model = -1 – lookup by model)
  • submodel_code (if MA_TABLES.setab_submodel = -1 – lookup by submodel)
  • matrix_code (if MA_TABLES.setab_use_matrix = -1 – then retrieve another MA_TABLES record that will provide the MA_TABLES.COLUMN_NAME based on MA_TABLES.COMPUTATION_SEQ = MA_TABLES.setab_seq_pointer.
    • The matrix code value is found in MA_BUILDINGS.XXX_CD based on the retrieved MA_TABLES.COLUMN_NAME or in MA_BUILDINGS.XXX_VA if MA_TABLES.lookup_on_value = -1.
  • matrix_code2 (if MA_TABLES.setab_use_matrix = -1 – then use MA_TABLES.COMPUTATION_SEQ = MA_TABLES.setab_seq_pointer2.
  • matrix_code3 (if MA_TABLES.setab_use_matrix = -1 – then use MA_TABLES.COMPUTATION_SEQ = MA_TABLES.setab_seq_pointer3.
  • with up_to_units (if MA_TABLES.setab_area_lookup is set – lookup using the area collection, there are 3 area lookup types: a, p, t
    • ‘t’ (Grand Total) : use GRAND_TOTAL_FOR_LOOKUP
    • ‘a’ or ‘p’ : use the collection TOTAL_FOR_LOOKUP using AREA_TYPE = entry with the greater TOTAL_FOR_LOOKUP value in MA_PARM_se_area
    • ‘p’ : apply the percentage entered into the XXX_PC corresponding column in MA_BUILDINGS in order to reduce area if MA_TABLES.setab_col_3 = -1.
      • NOTE: If XXX_PC contains 50 then TOTAL_FOR_LOOKUP is 2000 then we use 1000 (50% of 2000).
      • Rates are always pro-rated between the UP_TO_UNITS as per example in step 3.

 

d) Evaluate MA_PARM_SETAB Expression

Evaluate the expression of MA_PARM_SETAB and store it in XXX_VA.

e) Rate Adjustment / Depreciation

If the Element Category of the record is Rate Adjustment (MA_TABLES.setab_rd_code = “r”)
AND there is a Depreciation Table set (field MA_PARM_SETAB.depr_table) then depreciation will be applied on the value (XXX_VA) as per below:

  • a. We get the DEPR_PCT
    • i. We determine the Appraisal base year APPR_BASE (registry DEPR_BASE_YEAR) using the current MA_TABLE.YEAR_ID
    • ii. MA_PARM_DEPR.TABLE_NAME = MA_PARM_SETAB.DEPR_TABLE
    • iii. We evaluate the MA_PARM_DEPR.NUMBER_OF_YEARS = FORMAT (APPR_BASE – MA_BUILDINGS.EYB to ‘000’). If negative we use 0. If MA_BUILDINGS.EYB is NULL we use MA_BUILDINGS.YEAR_BUILT.
    • iv. We evaluate the expression MA_PARM_DEPR.EXPRESSION
    • v. If MA_PARM_DEPR.EXPRESSION > MA_PARM_SETAB.max_depr_pct then the DEPR_PCT is MA_PARM_SETAB.max_depr_pct
  • b. We set the XXX_VA Value XXX_VA = XXX_VA * (100 – DEPR_PCT) / 100

 

f) Apply % to the Value

If a percentage is entered into the _PC corresponding column in MA_BUILDINGS (when MA_TABLES.setab_col_3 = “-1”) then apply the % (XXX_PC) to the value (XXX_VA).

g) Set MA_BUILDINGS.xxx_V2

If MA_TABLES.setab_col_11 = -1, Then
MA_BUILDINGS.XXX_V2″ = MA_PARM_SETAB.base_value.

Step 5 – Round and Compute Average

This step computes the average for all structural elements having equal consecutive MA_TABLE.TABLE_NAME with different MA_TABLE.COLUMN_NAME.
We exclude from this step all MA_TABLE.setab_col_3 = -1 or MA_TABLE.no_average = -1

  • Simply divide XXX_VA by the entry count and round to:
    • Case MA_TABLE.setab_rd_code
    • Case ‘q’ – IF QP_ROUNDING = ‘yes’ then round to QP_DECIMAL
    • Case ‘a’, ‘t’ – Round to CAMA_ADJ_DECIMAL
    • Case else Round to 2 digits.

If MA_TABLES.setab_col_11 = -1 Then perform the same logic for XXX_V2.

Example
MA_BUILDINGS
A1_VA= 16.445 A2_VA=20.555 A3_VA=2
MA_TABLES
COMPUTATION_SEQ TABLE_NAME COLUMN_NAME SETAB_COL_3
23 WALL A1 0
24 WALL A2 0
25 WALL A3 0
Results
A1_VA=16.445/3=5.48
A2_VA=20.555/3=6.85
A3_VA=2/3=0.67

Step 6 – Round and Compute Link

This step computes the linked values for all structural elements having MA_TABLES.setab_lk_pointer not NULL)

a) Loop in reverse order, from the last record to the first.
b) Depending on the field MA_TABLES.MATHS of each element having a link, its _VA field will be added, subtracted or multiplied to the _VA field of the linked computation sequence. For multiplication, if the MA_TABLES.PCT_AMT field is ‘p’ than the result will also be divided by 100 (Percent)
c) Set the value of XXX_VA to null
d) Case MA_TABLE.setab_rd_code

  • Case ‘q’ – IF QP_ROUNDING = ‘yes’ then round to QP_DECIMAL
  • Case ‘a’, ‘t’ then Round to CAMA_ADJ_DECIMAL
  • Case else then Round to 2 digits.

If MA_TABLES.setab_col_11 = -1 Then perform the same logic for XXX_V2.

Example
MA_BUILDINGS
A1_VA= 8 A2_VA=4
MA_TABLES
COMPUTATION_SEQ TABLE_NAME COLUMN_NAME MATH setab_lk_pointer (verify)
26 QUAL A1 X NULL
27 QMOD A2 + 27

A1_VA = 12
A2_VA = NULL

Step 7 – Adjust Areas

Scan the records of MA_TABLE and adjust the areas in the area collection (EFFECTIVE_AREA) for all entries MA_TABLES.setab_rd_code = “m”

Use the same logic as in STEP4 to select the MA_TABLES records.
Update the area collection (EFFECTIVE_AREA) by AREA_TYPE for all entries found in MA_PARM_se_area compute the EFFECTIVE_AREA collection.
if MA_PARM_se_area has no record found then use ‘e’.

  • Depending on MATHS, cumulate or multiply the value from column_VA to the EFFECTIVE_AREA collection based on MA_PARM_se_area .area_type
  • If the _V2 column is used, cumulate also the value from column_V2

 

Step 8 – Override Areas

Scan the records of MA_TABLE and override the areas in the area collection (EFFECTIVE_AREA) for all entries MA_TABLES.setab_rd_code = “s”

Use the same logic as in STEP4 to select the MA_TABLES records.
If MA_PARM_se_area has no record found then use ‘e’.

  • For all entries found in MA_PARM_SE_AREA move the XXX_VA to the corresponding EFFECTIVE_AREAcollection.

 

Step 9 – Adjust Rates

Scan the records of MA_TABLE and adjust the rates in the rate collection (TOTAL_RATE) for all entries MA_TABLES.setab_rd_code = “r” (VB6 : pv_scan_ma_table, pv_set_rate_tab)

Use the same logic as in STEP4 to select the MA_TABLES records.
Update the rate collection (TOTAL_RATE) by AREA_TYPE for all entries found in MA_PARM_se_area compute the TOTAL_RATEcollection.

  • if MA_PARM_se_area .AREA_TYPE = “e” (Effective Area) or no record found, then, depending on MATHS, cumulate or multiply the value from column_VA to all the areas within the collection, otherwise apply it only to the area_type corresponding to the area set in MA_PARM_se_area.

 

  • If the _V2 column is used, cumulate the value from column_V2Into a variable (grand_total_amount_adj_add) used below for CAMA adjustments.

 

Step 10 – Compute Size Adjustment

Compute the size adjustment variable (Govern for Windows: pv_compute_size_adjt).
A size adjustment is an adjustment to the rate based on the value of the TOTAL_EFFECTIVE collection.

Notes

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.

1. Get the MA_PARM_SIZEADJT entry for MA_BUILDINGS.BLDG_MODEL_CODE
2. If a record is not found then there is no size adjustment. Go to step 11.
3. If MA_PARM_SIZEADJT.SETAB_AREA_TYPE is NULL or = ‘e’ then we use MA_BUILDINGS.TOTAL_EFFECTIVE as the area value for the next sub steps, otherwise we use the TOTAL_EFFECTIVE collection item that match the area type. If the area value is 0 we go to step 11.
4. We evaluate the expression in MA_PARM_SIZEADJT.EXPRESSION and if the result is not zero then we set this value into MA_BUILDINGS.SIZE_ADJUSTMENTS and go to sub step 8.
5. if SIZE_ADJ_METHOD is Method 1 then the size adjustment is:

  • MA_BUILDINGS.SIZE_ADJUSTMENTS = ( MA_PARM_SIZEADJT.building_size * MA_PARM_SIZEADJT.land_bldg_ratio / area_value) + (1 – MA_PARM_SIZEADJT.land_bldg_ratio)
    • If MA_BUILDINGS.SIZE_ADJUSTMENTS < MA_PARM_SIZEADJT.MINIMUM_RATIO then we reset the size adjustment to the minimum.
    • If MA_BUILDINGS.SIZE_ADJUSTMENTS > MA_PARM_SIZEADJT.MAXIMUM_RATIO then we reset the size adjustment to the maximum.

6. if SIZE_ADJ_METHOD is Method 2 then the size adjustment is:

  • If the area value < MA_PARM_SIZEADJT.MINIMUM_RATIO then we reset the area value to the minimum.
  • If the area value > MA_PARM_SIZEADJT.MAXIMUM_RATIO then we reset the area value to the maximum.
  • MA_BUILDINGS.SIZE_ADJUSTMENTS = (area_value – MA_PARM_SIZEADJT.building_size) * MA_PARM_SIZEADJT.land_bldg_ratio

7. We round the size adjustments to the number of decimal positions as per the SIZE_ADJ_DECIMAL value.

8. If the size adjustment is for area type NULL or ‘e’ then we apply the following logic to ALL elements of the collection. If SIZE_ADJ_METHOD is Method 1 we multiply the rounded size adjustment by the rate found in the TOTAL_RATE collection for the current area_type. elseif SIZE_ADJ_METHOD is Method 2 we add the rounded size adjustment to the rate found in the TOTAL_RATE collection for the current area_type.

Step 11 – Compute Initial Value

In this step we compute an initial value for each items in the collection (VB6 : pv_compute_area_rate).

  • For each item in the area collection do TOTAL_VALUE = TOTAL_EFFECTIVE * TOTAL_RATE

 

Step 12 – Adjust the Total Value (CAMA Adjustment)

  • Scan the records of MA_TABLE and adjust the total value in the area collection (TOTAL_VALUE) for all entries MA_TABLES.setab_rd_code = “a”
  • Use the same logic as in STEP4 to select the MA_TABLES records.
  • If there are no records in MA_PARM_se_area or if MA_PARM_se_area.area_type = “e” then the adjustments are applied for all entries in the collection except for a Special Case (see below)
  • Depending on MATHS and PCT_AMT, cumulate or multiply the value from column_VA into the collection array TOTAL_VALUE.
  • If the _V2 column is used, cumulate also the value from column_V2into TOTAL_VALUE, independently of the MATHS.

Special Case:
If there are no records in MA_PARM_se_area OR if MA_PARM_se_area.area_type = “e”
AND also the MATHS is + or – and the PCT_AMT is ‘a’ (Amount), the adjustment will be applied only once, as following:

  • The value from column_VA will be cumulated into grand_total_amount_adj_add (and not into the collection array TOTAL_VALUE)
  • If the _V2 column is used, cumulate also the value from column_V2 into grand_total_amount_adj_add.

 

Step 13 – Compute the initial building value

The INITIAL_BLDG_VALUE is computed by adding all TOTAL_VALUE from the area collection.

  • Add grand_total_amount_adj_add (step 9) to INITIAL_BLDG_VALUE.

 

Step 14 – Compute the Quality Points

Quality points is a special type of adjustment that is a percentage that adjust the total value.
Scan the records of MA_TABLE for all entries MA_TABLES.setab_rd_code = “q”
Use the same logic as in STEP4 to select the MA_TABLES records.

  • Depending on MATHS (+ or – only), cumulate all the values of column_VA into MA_BUILDINGS.QUALITY_POINTS.
    • If MA_BUILDINGS.QUALITY_POINTS = 0 then set it to NULL and do not compute the adjustment below.

 

  • INITIAL_BLDG_VALUE = INITIAL_BLDG_VALUE * MA_BUILDINGS.QUALITY_POINTS / 100.

 

Step 15 – Compute Overall Adjustment

Overall adjustments are used to to modify the total value of a building according to user-defined criteria such as number of rooms or number

of fireplaces.

Scan the records of MA_TABLE and adjust the INITIAL_BLDG_VALUE for all entries MA_TABLES.setab_rd_code = “t”
Use the same logic as in STEP4 to select the MA_TABLES records.

  • Depending on MATHS and PCT_AMT, cumulate or multiply the value from column_VA into INITIAL_BLDG_VALUE.
  • If the _V2 column is used, cumulate also the value from column_V2into INITIAL_BLDG_VALUE, independently of the MATHS.

 

Step 16 – Compute the Effective Rate

The effective rate is calculated based on the building value divided by the area.

  • If SQUARE_ROOT = “yes” then
    • MA_BUILDINGS.effective_rate = INITIAL_BLDG_VALUE / Square root of (MA_BUILDINGS.total_effective)
  • Else
    • MA_BUILDINGS.effective_rate = INITIAL_BLDG_VALUE / MA_BUILDINGS.total_effective

Format the result to 2 decimal positions.

Step 17 – Compute RCN (Replacement Cost New)

The RCN value is the total value prior to depreciation.

  • If MA_BUILDINGS.nb_units > 1 then
    • MA_BUILDING.TOTAL_RCN = INITIAL_BLDG_VALUE * MA_BUILDINGS.nb_units
  • Else
    • MA_BUILDING.TOTAL_RCN = INITIAL_BLDG_VALUE.

Format the result to 0 decimal positions.

Step 18 – Get Depreciation

The goal of this step is to find the depreciation table to be used in step 19.

Scan the records of MA_TABLE for all depreciation types of structural elements.
Use the same logic as in STEP4 to select the MA_TABLES records.
The processing is specific to each Category MA_TABLES.setab_rd_code:

Depreciation (MA_TABLES.setab_rd_code = “d”)
Standard

  • DEPR_TABLE = MA_PARM_SETAB.DEPR_TABLE if not null and not set by type ‘e’.
  • MAX_ DEPR_PCT = MA_PARM_SETAB.MAX_ DEPR_PCT if not null.

Depreciation Override

  • If Depreciation Override (MA_TABLES.setab_rd_code = “o”), then:
    • MA_BUILDINGS.total_depr_pct = column_VA.
    • MA_BUILDINGS.total_RCNLD = MA_BUILDINGS.total_RCN * (100 -MA_BUILDINGS.total_depr_pct) / 100.
    • NOTE: There should be only one record with this Category, otherwise only the first value will used.

Format the result to 0 decimal positions.

    • Exit to step 21

Depreciation Table Override

  • If Depreciation Table Override (MA_TABLES.setab_rd_code = “e”), then
    • DEPR_TABLE = MA_PARM_SETAB.DEPR_TABLE if not null and not set by type ‘e’.

 

Step 19 – Compute Base Depreciation Percentage

The goal of this step is to compute the base depreciation percentage

We determine the Appraisal base year APPR_BASE (registry DEPR_BASE_YEAR) using the current MA_TABLE.YEAR_ID

  • MA_PARM_DEPR.TABLE_NAME = DEPR_TABLE
  • We evaluate the MA_PARM_DEPR.NUMBER_OF_YEARS = FORMAT (APPR_BASE – MA_BUILDINGS.EYB to ‘000’).
    • If negative we use 0. If MA_BUILDINGS.EYB is NULL we use MA_BUILDINGS.YEAR_BUILT.
  • We evaluate the expression MA_PARM_DEPR.EXPRESSION as DEPR_PCT

 

Step 20 – Adjust Depreciation

The goal of this step is to apply the depreciation adjustment,

Scan the records of MA_TABLE for the depreciation types ‘d’ of structural elements.
Use the same logic as in STEP4 to select the MA_TABLES records.
Depreciation (MA_TABLES.setab_rd_code = “d”)

  • If Non-Cumulative (MA_TABLES.no_cumulative = “-1”) keep the (column_VA) into an array called DEPR_ARRAY, to be applied later in this step.
    • NOTE: When the non-cumulative column is set, then PCT_AMT = ‘p’ and MATHS = ‘x’ (set by GNA), so we don’t need to check these values.
  • Otherwise
  • If MATHS = ‘x’ (Multiplier)
    • if the PCT_AMT = ‘a’ (Amount), multiply with the value: depr_pct = depr_pct * column_VA
    • if the PCT_AMT = ‘p’ (Percentage), multiply with the value and divide by 100: depr_pct = depr_pct * column_VA / 100
  • If MATHS = ‘+’ (Plus) OR ‘-’ (Minus). Add OR subtract the value from column_VA:
    • if the PCT_AMT = ‘a’ (Amount), add/subtract to the value:depr_pct = depr_pct +/- column_VA
    • if the PCT_AMT = ‘p’ (Percentage), add/subtract to the value and divide by 100: depr_pct = depr_pct +/- (DEPR_PCT * column_VA / 100)

Once all code processed compute the non-cumulative depreciations

NON_DEPR_AMOUNT = MA_BUILDINGS.total_RCN * (100 – depr_pct) / 100.

For each element of the DEPR_ARRAY

  • NON_DEPR_AMOUNT = NON_DEPR_AMOUNT – (NON_DEPR_AMOUNT * DEPR_ARRAY(x) / 100)

MA_BUILDINGS.total_depr_pct = 100 – (NON_DEPR_AMOUNT * 100 / MA_BUILDINGS.total_RCN) formatted to 2 decimal positions.
MA_BUILDINGS.total_RCNLD = NON_DEPR_AMOUNT formatted to 0 decimals.
MA_ BUILDINGS.TOTAL_VALUE = NON_DEPR_AMOUNT formatted to 0 decimals.

Step 21 – Compute Site Adjustment

Compute Site Adjustment MA_BUILDINGS.SITE_ADJ_TOTAL
See the site adjustment computation specs document. We will have to decide whether or not we call the site object before completing this step.

Site adjustment is based on the value of MA_BUILDINGS.SITE_NO and should be skipped if NULL (Should not occur as site is mandatory in 6.1)
The total site adjustment cannot produce a negative value if Allow_Negative_Value=False.

The adjustment (MA_BUILDINGS.SITE_ADJ_TOTAL) is calculated as (MA_BUILDINGS.total_RCNLD * MA_SITE.ADJ_BLDG_PERCENT / 100) + MA_SITE.ADJ_BLDG_AMOUNT.

The site adjustment is added to the MA_ BUILDINGS.TOTAL_VALUE.

Step 22 – Compute Neighborhood Adjustment

Compute Neighborhood Adjustment in MA_ BUILDINGS.NBHD_ADJ_TOTAL.
Property Type
The Neighborhood adjustment (MA_PARM_NBHD) is based on the property type (see the section on property type at the beginning of this document).
If NULL and PROPERTY_TYPE_FROM_PC_LEGAL = “yes” then we define the property type as PC_LEGAL_INFO.PROPERTY_TYPE.
IF no record found for a given property type then we search the MA_PARM_NBHD table with a blank property type (15 spaces).
Adjustment

  • The adjustment (MA_BUILDINGS.NBHD_ADJ_TOTAL) is calculated as (MA_BUILDINGS.TOTAL_VALUE * evaluated expression MA_PARM_NBHD.BLDG_EXPRESSION / 100)
  • The nbhd adjustment is added to the MA_ BUILDINGS.TOTAL_VALUE. This value cannot produce a negative value if Allow_Negative_Value=False.

 

Step 23 – Compute Global Adjustment

The goal of this step is to apply a global adjustment. This is an adjustment that is applied after the depreciation is calculated.

Scan the records of MA_TABLE for the global adjustments types ‘g’ of structural elements
Use the same logic as in STEP4 to select the MA_TABLES records.

Read all Global adjustments (MA_TABLES.setab_rd_code = “g”) and for each record:

  • Note: The type ‘g’ only support PCT_AMT = ‘p’ and MATHS = ‘x’ (set by GNA), so we don’t need to check these values.

If no records are found then continue to step 24.

Once all records ‘g’ are read:

  • MA_BUILDINGS.TOTAL_VALUE = MAF_VALUE

 

Step 24 – Compute Final Adjustment

The goal of this step is to calculate the final adjustment

The final adjustment is calculated only if MA_BUILDINGS.FINAL_ADJ_PERCENT is not NULL.

    • Note: A value of zero reset both the final_adj and final_adj_percent to NULL

 

  • MA_BUILDINGS.FINAL_ADJ = MA_BUILDINGS.TOTAL_VALUE * MA_BUILDINGS.FINAL_ADJ_PERCENT / 100

 

  • MA_BUILDINGS.TOTAL_VALUE = MA_BUILDINGS.TOTAL_VALUE + MA_BUILDINGS.FINAL_ADJ.

 

Step 25 – Compute the Final Rounded Value

The goal of this step is to compute the final rounded value.

  • MA_BUILDINGS.TOTAL_VALUE is rounded based on the MA_PARM_MAROUND information (code = ‘bldg’).

For example, if the rounding value is 1000, and the total value is 45678 then the value is 46000. If the rounding value was 100 then it would have been 45700.

Step 26 – Set the Modification Stamp

The goal of this step is to identify that the building value has been computed.

  • MA_BUILDINGS.MODIF_STAMP = MA_MODIF_STAMP.BLDG_STAMP if not null, otherwise we use the current date/time.

 

 

101-ma-compute-Bldg

 

0 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 5 (0 votes, average: 0.00 out of 5)
You need to be a registered member to rate this.
Loading...

 

MA – Land Value Computation

CAMA Land Value Computation

(Under Review)

Overview

The purpose of the Land Computation is to provide values for the Govern system columns for a given record of the table MA_LAND .
The ultimate goal of this compute is to provide a land value. Conceptually the land value is made of a rate multiplied by a number of units (see the Land dimension specification document). This initial land value is then adjusted based on the defined adjustments (MA_PARM_LANDADJT), neighborhood adjustments (MA_PARM_NBHD), MA_SITE adjustments (see the Site adjustment specification document) and some user entered adjustments (MA_LAND).

The land value is either a market land value (default) or an agricultural value depending on the land use code (MA_PARM_LANDUSE) and it was always stored in MA_LAND.TOTAL_VALUE.

NOTE: At some point for PEI, there has been a requirement to produce both the market value and the agricultural value from the same LAND record for some custom process. This is why we now have a column MA_LAND.TOTAL_VALUE_AG. This is a bit confusing because the total land agricultural value is always the sum of all MA_LAND.TOTAL_VALUE for the records having a MA_LAND.LUSE_CODE of type agricultural and the MA_LAND.TOTAL_VALUE_AG is not used anywhere in the system except for a custom process that updates some mixed used values in MA_MASTER.

Govern for Windows class name : GvObjLand (MALand.cls)

Important Notes RE: the Computation

  • 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

Parameters

Registry and Constant

  • SF_IN_ACRE = 43560 ‘ number of square feet in 1 acre
  • SM_IN_ACRE = 4046. 85642 ‘ number of square meter in 1 acre
  • FEET_IN_METER = 3.2808399 ‘ number of feet in 1 meter

 

  • ADJ_BY_LAND_USE = “Mass Appraisal”, “Associate Ladjt to Luse” = (‘yes’ or ‘no’)
  • ADJ_BY_LAND_SCHEDULE = “Mass Appraisal”, “Associate Ladjt to Landschd” = (‘yes’ or ‘no’)
  • ADJ_BY_LAND _EFFECTIVE = “Mass Appraisal”, “Associate Ladjt to Luse Year Effective” = smallInt (default global year_id)

 

  • ALLOW_NEGATIVE_VAL = “Mass Appraisal”, “Allow Negative Value” = (‘yes’ or ‘no’)
  • COMPUTE_ADJ_BY_SEQ = “Mass Appraisal”, “Compute By Sequence” = (‘yes’ or ‘no’)
  • COMPUTE_ADJ_BY_SEQ _EFFECTIVE = “Mass Appraisal”, “Compute By Sequence Year Effective” = smallInt
  • CUMULATIVE_LAND_RATE = “Mass Appraisal”, “Cumulative Land Rate” = (‘yes’ or ‘no’)
  • FULL_SCALE_FORMAT = “Mass Appraisal”, “Land SF to Acres Full Precision” = (‘yes’ or ‘no’)
  • PROPERTY_TYPE_FROM_PC_LEGAL = “Mass Appraisal”, “property type from pc_legal_info” = (‘yes’ or ‘no’)
  • SKIP_RATE_INTERPOLATION = “Mass Appraisal”, “Skip Rates Interpolation for Land” = (‘yes’ or ‘no’)

New in version 6.1

  • RATE_NB_DIGITS = “Mass Appraisal”, “Land Rate Nb Digits” = smallInt – default to 2
  • LAND_AG_MARKET_SAME_RECORD = “Mass Appraisal”, “Land Rate Nb Digits” = (‘yes’ or ‘no’)

Deprecated (Abandoned in version 6+)

  • “Mass Appraisal”, “Compatibility SE Compute”
  • “Mass Appraisal”, “Compatibility SE Compute Year Effective”

 

Table Used (Available for the expressions)

  • MA_LAND. LUSE_CODE -> MA_PARM_LANDUSE.LUSE_CODE
  • MA_LAND. LUSE_CODE -> MA_PARM_LADJT_LUSE.LUSE_CODE
  • MA_LAND. RATE_SCHEDULE -> MA_PARM_LANDSCHD.SCHEDULE_CODE
  • MA_LAND. RATE_SCHEDULE -> MA_PARM_LDJT_SCHD.SCHEDULE_CODE
  • MA_LAND. RATE_SCHEDULE -> MA_PARM_LANDRATE.SCHEDULE_CODE
  • MA_LAND. PLOT_USE-> MA_PARM_PLOT_USE.PLOT_USE (SAMA Only)
  • MA_LAND.P_ID -> PC_LEGAL_INFO.P_ID (Only if PROPERTY_TYPE_FROM_PC_LEGAL = “yes” and MA_PARM_LANDUSE.PROPERTY_TYPE is NULL)
  • MA_LAND.P_ID -> PC_AREA.P_ID
  • PC_AREA.NBHD -> MA_PARM_NBHD.NBHD_CODE
  • MA_LAND.P_ID -> MA_VALUE_AUDIT.REF_ID
  • MA_TABLES.TABLE_CATEGORY = “land”
  • MA_PARM_MAROUND.ROUNDING_CODE = “land”
  • MA_LAND.YEAR_ID -> MA_MODIF_STAMP.YEAR_ID

 

MA_LAND SYSTEM COLUMNS

The following system columns cannot be used in expressions stored in the MA_PARM tables nor should they be editable.

  • total_value
  • total_value_ag
  • units_price
  • units_price_ag
  • adj_total
  • site_adj_total
  • nbhd_adj_total
  • final_adj

 

Lookup groups

Many of the parameters used in the land computation depend on a lookup group. All the lookup groups are stored in the table MA_LOOKUP_GROUP and can be can be of the following types:

  • By neighborhood
  • By property type
  • By income neighborhood
  • By jurisdiction
  • By jurisdiction AND neighborhood
  • By jurisdiction AND income neighborhood

Example:
We have a land record for the year 2015 with LUSE_CODE = “2212”. We want to get the land schedule information which is defined in the table MA_PARM_LANDSCHD where the primary key is SCHEDULE_CODE, YEAR_ID and LOOKUP_GROUP. We already have the year and the schedule code (2015 and “2212”) but we now need the lookup group.Next we go to the table MA_LOOKUP_GROUP and get all the records with TABLE_NAME=”landschd” , YEAR_ID=2015 and CAMA_CODE=”2212”. In our example, this lookup group is By jurisdiction and neighborhood so it will look like this:
LOOKUP_GROUP JURISDICTION NBHD

  • 0 Null Null
  • 1 31572 Null
  • 2 31572 015
  • 3 31572 016
  • 4 31513 Null
  • 5 31513 012

Here are some possible scenarios depending on the jurisdiction and neighborhood for the land record:

  • If Jurisdiction=31572 and Nbhd=015, then Lookup_Group=2
  • If Jurisdiction=31572 and Nbhd=020, then Lookup_Group=1
  • If Jurisdiction=45875 and Nbhd=015, then Lookup_Group=0

Properties required to get the lookup group

  • Jurisdiction: Use PC_PARCEL.JURISDICTION based on MA_LAND.P_ID = PC_PARCEL.P_ID.
  • Neighborhood and Income neighborhood: Use PC_AREA.NBHD and PC_AREA.INC_NBHD based MA_LAND.P_ID = PC_AREA.P_ID and _MA_LAND.FROZEN_ID = PC_AREA.FROZEN_ID.
  • Property type: Use MA_PARM_LANDUSE.PROPERTY_TYPE based on MA_LAND.LUSE_CODE = MA_PARM_LANDUSE.LUSE_CODE and MA_LAND.YEAR_ID = MA_PARM_LANDUSE.YEAR_ID. If no information is found in MA_PARM_LANDUSE then we’ll use a blank property type (15 spaces). This is a table that depends itself on a lookup group. If the lookup group is By property type then for the purpose of the lookup we must use the PROPERTY_TYPE defined in PC_LEGAL_INFO.PROPERTY_TYPE.

 

Agricultural and Non-agricultural

The land record contains 2 fields for which an agricultural version exists: UNITS_PRICE/UNITS_PRICE_AG and TOTAL_VALUE/TOTAL_VALUE_AG.
There are 4 flags in the system that drive how these fields are calculated:

1. LAND_AG_MARKET_SAME_RECORD in SY_REGISTRY. When ‘yes’, this means that we need to calculate both the non-agricultural and the agricultural values. The field MA_PARM_LANDSCHD.FIXED_RATE_VAL_AG will be used as the base unit price for UNITS_PRICE_AG in this case.

2. MA_PARM_LANDSCHD.APPLY_RATE_ADJ_AG. This flag is only taken into account when LAND_AG_MARKET_SAME_RECORD is ‘yes’. When true (-1), this means that all the rate adjustments must be applied to UNITS_PRICE_AG.

3. MA_PARM_LANDSCHD.APPLY_LAND_ADJ_AG. This flag is only taken into account when LAND_AG_MARKET_SAME_RECORD is ‘yes’. When true (-1), this means that all the total value adjustments must be applied to TOTAL_VALUE_AG.

4. MA_PARM_LANDUSE.AGRICULTURAL. When true (-1), at the end of the compute if UNITS_PRICE_AG is null or 0 then we move the value from UNITS_PRICE to UNITS_PRICE_AG and we set UNITS_PRICE to null. We do the same for TOTAL_VALUE/TOTAL_VALUE_AG.

Computation Errors

In case of errors during the computation process (for example, parameters not configured), all the system columns must be set to 0 and no timestamp should be attached to the land record.

Compute Logic

STEP 1 – Units Calculation

Units calculation (VB6 : pv_init_compute)
The units’ type is determined by getting MA_PARM_ LANDSCHD.

a) If MA_PARM_LANDSCHD.UNITS_TYPE is not NULL then MA_LAND.UNITS_TYPE = MA_PARM_LANDSCHD.UNITS_TYPE

b) If MA_LAND.UNITS_TYPE is null then MA_LAND.UNITS_TYPE = MA_LAND_LOT_UNITS_TYPE

c) MA_LAND_UNITS is calculated based on the value of MA_LAND.UNITS_TYPE (SY table “LUNIT1”)

  • a. Case “f”, “e”, “m” then MA_LAND.UNITS = MA_LAND.FRONTAGE
  • b. Case “a”
    • Case MA_LAND.LOT_UNITS_TYPE = “sf”
      • MA_LAND.UNITS = MA_LAND.LOT_SIZE * SF_IN_ACRE
    • Case MA_LAND.LOT_UNITS_TYPE = “sm”
      • MA_LAND.UNITS = MA_LAND.LOT_SIZE / SM_IN_ACRE
    • Case MA_LAND.LOT_UNITS_TYPE “h”
      • MA_LAND.UNITS = MA_LAND.LOT_SIZE * 10000 / SM_IN_ACRE
    • Case else
      • MA_LAND.UNITS = MA_LAND.LOT_SIZE
  • c. Case “sf”
    • Case MA_LAND.LOT_UNITS_TYPE = “a”
      • MA_LAND.UNITS = MA_LAND.LOT_SIZE * SF_IN_ACRE
    • Case MA_LAND.LOT_UNITS_TYPE = “sm”
      • MA_LAND.UNITS = MA_LAND.LOT_SIZE * FEET_IN_METER * FEET_IN_METER
    • Case MA_LAND.LOT_UNITS_TYPE “h”
      • MA_LAND.UNITS = MA_LAND.LOT_SIZE * 10000 * FEET_IN_METER * FEET_IN_METER
    • Case else
      • MA_LAND.UNITS = MA_LAND.LOT_SIZE
  • d. Case “sm”
    • Case MA_LAND.LOT_UNITS_TYPE = “a”
      • MA_LAND.UNITS = MA_LAND.LOT_SIZE * SM_IN_ACRE
    • Case MA_LAND.LOT_UNITS_TYPE = “sf”
      • MA_LAND.UNITS = MA_LAND.LOT_SIZE / (FEET_IN_METER * FEET_IN_METER)
    • Case MA_LAND.LOT_UNITS_TYPE “h”
      • MA_LAND.UNITS = MA_LAND.LOT_SIZE * 10000
    • Case else
      • MA_LAND.UNITS = MA_LAND.LOT_SIZE
  • e. Case “h”
    • Case MA_LAND.LOT_UNITS_TYPE = “a”
      • MA_LAND.UNITS = MA_LAND.LOT_SIZE * SM_IN_ACRE / 10000
    • Case MA_LAND.LOT_UNITS_TYPE = “sf”
      • MA_LAND.UNITS = MA_LAND.LOT_SIZE / ( FEET_IN_METER * FEET_IN_METER * 10000 )
    • Case MA_LAND.LOT_UNITS_TYPE “sm”
      • MA_LAND.UNITS = MA_LAND.LOT_SIZE / 10000
    • Case else
      • MA_LAND.UNITS = MA_LAND.LOT_SIZE
  • f. Case “d”
    • MA_LAND.UNITS = MA_LAND.DEPTH
  • g. Case else
    • If Ma_LAND.UNITS is null or 0 then MA_LAND.UNITS = MA_LAND.LOT_SIZE

d) ROUND MA_LAND.UNITS (4 decimals if FULL_SCALE_FORMAT = ‘no’ or 15 decimals if FULL_SCALE_FORMAT = ‘yes’)

STEP 2 – Base Rate Calculation

Base rate calculation (VB6 : pv_init_base_rate)

a) Fixed Rate

The rate is established by getting MA_PARM_ LANDSCHD.

  • If MA_PARM_LANDSCHD.FIXED_RATE = -1 then
    • MA_LAND.UNITS_PRICE = FIXED_RATE_VALUE or evaluated from the expression in FIXED_RATE_EXPRESSION

b) Cumulative Land Rate

If CUMULATIVE_LAND_RATE = “Yes” and MA_PARM_ LANDSCHD.FIXED_RATE <> -1
IF number of MA_PARM_LANDRATE records <= 1 then @subject_to_nbhd_min_max = TRUE

  • MA_LAND.UNITS_PRICE = weighted sum of all unit price found in MA_PARM_LANDRATE up to MA_LAND.UNITS.

Example: MA_LAND.UNITS = 5000
MA_PARM_LANDRATE has 4 records
UP_TO_UNITS | RATE
2000 25
4000 20
6000 15
999999 5
MA_LAND.UNITS_PRICE = ( (2000 X 25) + (2000 X 20) + (1000 X 15)) / 5000 = 21

c) Non Cumulative LANDRATE

If CUMULATIVE_LAND_RATE = “No” and MA_PARM_ LANDSCHD.FIXED_RATE <> -1

  • If SKIP_RATE_INTERPOLATION = “Yes”
    • MA_LAND.UNITS_PRICE = first rate found in MA_PARM_LANDRATE that is greater than MA_LAND.UNITS.

Example: MA_LAND.UNITS = 5000
MA_PARM_LANDRATE has 4 records
UP_TO_UNITS | RATE
2000 25
4000 20
6000 15
999999 5
MA_LAND.UNITS_PRICE = 15

STEP 3 – Base Rate Calculation (Interpolation = No)

If SKIP_RATE_INTERPOLATION = “No”

  • MA_LAND.UNITS_PRICE = rate proration between UP_TO_UNITS in MA_PARM_LANDRATE based MA_LAND.UNITS.

Example: MA_LAND.UNITS = 5000
MA_PARM_LANDRATE has 4 records
UP_TO_UNITS | RATE
2000 25
4000 20
6000 15
999999 5
MA_LAND.UNITS_PRICE = ( ( (5000 – 4000)) * 20 + ( (6000 – 5000) * 15) ) / 2000 = 17.5
NOTE: If MA_LAND.UNITS <= 2000 then the rate is 25.

Format Land Unit Price

MA_LAND_UNITS_PRICE is formatted according to RATE_NB_DIGITS

STEP 4 – Agricultural Rate Calculation

This step is required only if LAND_AG_MARKET_SAME_RECORD = “yes”
MA_LAND.UNITS_PRICE_AG = MA_PARM_ LANDSCHD.FIXED_RATE_VAL_AG or evaluated from the expression in MA_PARM_ LANDSCHD.FIXED_RATE_EXPRESSION_AG
MA_LAND.UNITS_PRICE_AG is formatted according to RATE_NB_DIGITS

STEP 5 – Process Land Adjustment Features

Set the value of MA_LAND.(column)_AM for features (VB6 : pv_compute_adjustment)
We process all features (The land features are defined as all MA_TABLES records having a TABLE_TYPE = “landadjt” AND LANDADJT_CODE = “f”)

  • If MA_LAND.(column)_CD is numeric
    • then we move it to MA_LAND.(column)_AM otherwise we set MA_LAND.(column)_AM to NULL.

STEP 6 – Adjusted Rate Calculation

Adjusted rate calculation (VB6 : pv_compute_adjt_rate)
The land adjustments are defined as all MA_TABLES records having a TABLE_TYPE = “landadjt” AND LANDADJT_CODE = “r”. (rate adjustment)
Note: if MA_PARM_LANDSCHD.APPLY_RATE_ADJ_AG = -1 then the same adjustments for MA_LAND_UNITS_PRICE applies to MA_LAND_UNITS_PRICE_AG.

IF ADJ_BY_LAND_USE = “yes” AND ADJ_BY_LAND _EFFECTIVE <= MA_LAND.YEAR_ID then all rate adjustments are filtered by the MA_LAND. LUSE_CODE using the MA_PARM_LADJT_LUSE table
IF ADJ_BY_LAND_SCHEDULE = “yes” AND ADJ_BY_LAND _EFFECTIVE <= MA_LAND.YEAR_ID then all rate adjustments are filtered by the MA_LAND. RATE_SCHEDULE using the MA_PARM_LADJT_SCHD table.

a) Get Adjustment Amount (AM)

For each adjustment we evaluate MA_LAND.(MA_TABLES.COLUMN_NAME)_AM for the adjustment
MA_LAND.(MA_TABLES.COLUMN_NAME)_AM is set to NULL if MA_LAND.(MA_TABLES.COLUMN_NAME)_CD is null
MA_LAND.(MA_TABLES.COLUMN_NAME)_AM = MA_LAND.(MA_TABLES.COLUMN_NAME)_CD if MA_TABLES.TABLE_NAME is NULL or empty or only = to spaces and _CD is numeric
MA_LAND.(MA_TABLES.COLUMN_NAME)_AM = MA_PARM_LANDADJT.ADJUSTMENT or evaluated from the expression in MA_PARM_LANDADJT.ADJUSTMENT_EXPRESSION

b) Perform Average Calculation

We perform the average calculation of MA_LAND.(MA_TABLES.COLUMN_NAME)_AM by selecting all MA_TABLES.LANDADJT_AVG = -1
The average is performed and stored on the column pointed by LANDADJT_LINK_COLUMNNAME
based on the number of entries.. All the other columns are set to NULL.

Example: MA_TABLES has 5 land adjustment rates and MA_LAND has the following values
MA_LAND.ADJ10_AM = 7
MA_LAND.ADJ20_AM = 5
MA_LAND.ADJ30_AM = 8.5
MA_LAND.ADJ40_AM = 3
MA_LAND.ADJ50_AM = 9.5

COMPUTATION_SEQ | COLUMN_NAME | LANDADJT_AVG | LANDADJT_LINK_COLUMNNAME
10 ADJ10 NULL NULL
20 ADJ20 -1 10
30 ADJ30 NULL NULL
40 ADJ40 -1 10
50 ADJ50 -1 30
Average is calculated as (7+5+3)/3 = 5 so the result will be stored in MA_LAND.ADJ10_AM
Average is calculated as (8.5+9.5)/2 = 9 so the result will be stored in MA_LAND.ADJ30_AM
After this step the values are
MA_LAND.ADJ10_AM = 5, MA_LAND.ADJ20_AM = NULL, MA_LAND.ADJ30_AM = 9, MA_LAND.ADJ40_AM = NULL, MA_LAND.ADJ50_AM = NULL

c) Perform Link Calculation

We perform the link calculation of MA_LAND.(MA_TABLES.COLUMN_NAME)_AM by selecting all MA_TABLES.LANDADJT_LINK = -1
The link operation is based on the MA_TABLES.MATHS operator (+,-,X,/) AND MA_TABLES.PCT_AMT and is performed and stored on the column pointed by
LANDADJT_LINK_COLUMNNAME
based on the number of entries.. All the other columns are set to NULL.

Example: MA_TABLES has 5 land adjustment rates and MA_LAND has the following values
MA_LAND.ADJ10_AM = 8
MA_LAND.ADJ20_AM = 2
MA_LAND.ADJ30_AM = 6
MA_LAND.ADJ40_AM = 0.6
MA_LAND.ADJ50_AM = 3

COMPUTATION_SEQ | COLUMN_NAME | LANDADJT_LINK |
LANDADJT_LINK_COLUMNNAME
| MATHS | PCT_AMT
10 ADJ10 NULL NULL X p
20 ADJ20 -1 10 + a
30 ADJ30 NULL NULL + a
40 ADJ40 -1 10 X a
50 ADJ50 -1 30 – a
First Link is calculated as (8+2) X 0.6 = 6 so the result will be stored in MA_LAND.ADJ10_AM

Second link is calculated as 6-3 = 3 so the result will be stored in MA_LAND.ADJ30_AM
MA_LAND.ADJ10_AM = 6
MA_LAND.ADJ20_AM = NULL
MA_LAND.ADJ30_AM = 3
MA_LAND.ADJ40_AM = NULL
MA_LAND.ADJ50_AM = NULL

d) Perform Group Calculation

We perform the groups calculation of MA_LAND.(MA_TABLES.COLUMN_NAME)_AM by selecting all MA_TABLES.LANDADJT_GROUP NOT NULL
The goal of the group rate calculation is to come up with one rate adjustment for all groups.
The resulting rate adjustment is stored on the first entry having a group. Conceptually, the system process each entry in a group to come up with a group total. The final value is the average of all group totals

Example MA_TABLES has 6 land adjustment rates that have groups and MA_LAND has the following values
MA_LAND.ADJ10_AM = 1
MA_LAND.ADJ20_AM = 2
MA_LAND.ADJ30_AM = 3
MA_LAND.ADJ40_AM = 4
MA_LAND.ADJ50_AM = 5
MA_LAND.ADJ50_AM = 6

COMPUTATION_SEQ | COLUMN_NAME | LANDADJT_GROUP | MATHS | PCT_AMT
10 ADJ10 100 + a
20 ADJ20 100 + a
30 ADJ30 100 X a
40 ADJ40 200 + a
50 ADJ50 200 X a
60 ADJ60 200 + a

First group is calculated as (1+2) X 3= 6
Second group (4X5) + 6 = 26
Group average is performed (26+6) /2 = 16 so the result will be stored in MA_LAND.ADJ10_AM.
NOTE: The MATHS operator is ignored for the first amount of each group.

MA_LAND.ADJ10_AM = 16
MA_LAND.ADJ20_AM = NULL
MA_LAND.ADJ30_AM = NULL
MA_LAND.ADJ40_AM = NULL
MA_LAND.ADJ50_AM = NULL
MA_LAND.ADJ60_AM = NULL.

e) Perform Rate Adjustment

We perform the rate adjustment by selecting ( all non nulls MA_LAND.(column)_AM for MA_TABLES.LANDADJT_CODE = “r”
where MA_LAND.(column)_OV = 0 ) OR selecting ( all non nulls MA_LAND.(column)_OV_VALUE for MA_TABLES.LANDADJT_CODE = “r”.where MA_LAND.(column)_OV = -1 )

There are 4 MATHS sign +,-,X,/ and 2 PCT_AMT values a (amount), p (percentage).
We take the starting rate previously calculated MA_LAND.UNITS_PRICE (and possibly MA_LAND_UNITS_PRICE_AG) and we apply every rate adjustment to it. Adjustments are cumulative.
Case MATHS = ‘+’

  • If PCT_AMT = ‘a’ then we add MA_LAND.(column_name)_AM to the rate (UNITS_PRICE)
  • If PCT_AMT = ‘p’ then we first apply the percentage represented by MA_LAND.(column_name)_AM to the rate (UNITS_PRICE) and then we add the result to the rate. Example rate = 10 MA_LAND.ADJ10_AM = 5 then (10 X 5%) + 10 = 10.50

Case MATHS = ‘-’

  • If PCT_AMT = ‘a’ then we subtract MA_LAND.(column_name)_AM to the rate (UNITS_PRICE)
  • If PCT_AMT = ‘p’ then we first apply the percentage represented by MA_LAND.(column_name)_AM to the rate (UNITS_PRICE) and then we subtract the result to the rate. Example rate = 10 MA_LAND.ADJ10_AM = 5 then (10 X 5%) + 10 = 9.50

Case MATHS = ‘X’

  • If PCT_AMT = ‘a’ then we multiply MA_LAND.(column_name)_AM to the rate (UNITS_PRICE).
  • If PCT_AMT = ‘p’ then we multiply by the percentage represented by MA_LAND.(column_name)_AM to the rate (UNITS_PRICE) . Example rate = 10 MA_LAND.ADJ10_AM = 90 then (10 X 90%) = 9

Case MATHS = ‘/’

  • If PCT_AMT = ‘a’ then we divide the rate (UNITS_PRICE) by MA_LAND.(column_name)_AM
  • If PCT_AMT = ‘p’ then we divide the rate (UNITS_PRICE) by the percentage represented by MA_LAND.(column_name)_AM to. Example rate = 10 MA_LAND.ADJ10_AM = 90 then (10 / 90%) = 11.11111

If MATHS or PCT_AMT are null then no operation is performed.

STEP 7 – Initial Value calculation

Initial total value evaluated (VB6 : pv_init_compute)

MA_LAND.TOTAL_VALUE = MA_LAND.UNITS X MA_LAND.UNITS_PRICE

  • IF MA_LAND.TOTAL_VALUE < 0 and ALLOW_NEGATIVE_VAL = ‘no’
    • then MA_LAND.TOTAL_VALUE = 0
  • if LAND_AG_MARKET_SAME_RECORD = “yes”
    • then MA_LAND.TOTAL_VALUE_AG = MA_LAND.UNITS X MA_LAND.UNITS_PRICE_AG
  • IF MA_LAND.TOTAL_VALUE_AG < 0 and ALLOW_NEGATIVE_VAL = ‘no’
    • then MA_LAND.TOTAL_VALUE_AG = 0

STEP 8 – Compute Land Adjustments

Compute Land Adjustments MA_LAND.ADJ_TOTAL (VB6 : pv_compute_adjustment, pv_set_added_fields)
Similar to the logic of Step 5, we compute all adjustments based on MA_TABLES.LANDADJT_CODE = ‘a’.
The land adjustments are defined as all MA_TABLES records having a TABLE_TYPE = “landadjt” AND LANDADJT_CODE = “a”.

  • IF ADJ_BY_LAND_USE = “yes” AND ADJ_BY_LAND _EFFECTIVE <= MA_LAND.YEAR_ID
    • then all adjustments are filtered by the MA_LAND. LUSE_CODE using the MA_PARM_LADJT_LUSE table
  • IF ADJ_BY_LAND_SCHEDULE = “yes” AND ADJ_BY_LAND _EFFECTIVE <= MA_LAND.YEAR_ID
    • then all adjustments are filtered by the MA_LAND. RATE_SCHEDULE using the MA_PARM_LDJT_SCHD table.

a) For each adjustment we evaluate MA_LAND.(MA_TABLES.COLUMN_NAME)_AM for the adjustment
MA_LAND.(MA_TABLES.COLUMN_NAME)_AM is set to NULL if MA_LAND.(MA_TABLES.COLUMN_NAME)_CD is null
MA_LAND.(MA_TABLES.COLUMN_NAME)_AM = MA_LAND.(MA_TABLES.COLUMN_NAME)_CD if MA_TABLES.TABLE_NAME is NULL or empty or only = to spaces and _CD is numeric.

The MA_PARM_LANDADJT records are filtered by the various lookup_seq columns and by the up_to_units. The up_to_units value is based on the value of MA_TABLES.APPLY_TO.
Case ‘d’ MA_LAND.DEPTH
Case ‘f’ MA_LAND.FRONTAGE
Case ‘u’ MA_LAND.UNITS

  • MA_LAND.(MA_TABLES.COLUMN_NAME)_AM = MA_PARM_LANDADJT.ADJUSTMENT or evaluated from the expression in MA_PARM_LANDADJT.ADJUSTMENT_EXPRESSION

b) We perform the average calculation exactly like Step 5b.

c) We perform the link calculation exactly like Step 5c.

d) We perform the land adjustment similar to step 5e by selecting all non nulls MA_LAND.(column)_AM (when MA_LAND.(column)_OV = 0) OR MA_LAND.(column)_OV_VALUE (when MA_LAND.(column)_OV = -1) for MA_TABLES.LANDADJT_CODE = “a”, except that instead of using the UNITS_PRICE we use MA_LAND.TOTAL_VALUE or MA_LAND.TOTAL_VALUE_AG and we store the result in MA_LAND.ADJ_TOTAL or MA_LAND.ADJ_TOTAL_AG

e) We add the result of step d into the total value for both market and agricultural.

MA_LAND.TOTAL_VALUE = MA_LAND.TOTAL_VALUE + MA_LAND.ADJ_TOTAL

MA_LAND.TOTAL_VALUE_AG = MA_LAND.TOTAL_VALUE_AG + MA_LAND.ADJ_TOTAL_AG

STEP 9 – Compute Site Adjustments

Compute Site Adjustment MA_LAND.SITE_ADJ_TOTAL (VB6 : pv_get_siteadjt).
Business rules

  • Site adjustment is based on the value of MA_LAND.SITE_NO and should be skipped if NULL. (cannot be null in 6.1)
  • Site adjustments are only calculated for the market value (not for the AG) portion.
  • The total site adjustment cannot produce a negative value if ALLOW_NEGATIVE_VAL = ‘no’

Adjustment Total

  • The adjustment (MA_LAND.SITE_ADJ_TOTAL ) is calculated as ( MA_LAND.TOTAL_VALUE * MA_SITE.ADJ_LAND_PERCENT / 100) + MA_SITE.ADJ_LAND_AMOUNT
  • The site adjustment is added to the MA_LAND.TOTAL_VALUE.

 

STEP 10 – Compute Neighborhood Adjustment

Compute Neighborhood Adjustment MA_LAND.NBHD_ADJ_TOTAL and Apply Minimum and Maximum land value for a neighborhood
[under review] All – Neighborhood Parm Table
The Neighborhood adjustment (MA_PARM_NBHD) is based on the property type and on jurisdiction (new).
Registry Parameters
– The total site adjustment cannot produce a negative value if ALLOW_NEGATIVE_VAL = ‘no’ – to be validated
– If CUMULATIVE_LAND_RATE = “yes”
Property Type Determination
The property type is the same that is defined in the Lookup group section at the beginning of this document. (to be validated)
The property type is defined in MA_PARM_LANDUSE.PROPERTY_TYPE or If NULL and PROPERTY_TYPE_FROM_PC_LEGAL = “yes” then we define the property type as PC_LEGAL_INFO.PROPERTY_TYPE.
If the property type is blank (15 spaces) and PROPERTY_TYPE_FROM_PC_LEGAL = “yes” then for the purposes of this step we use the property type defined in PC_LEGAL_INFO.PROPERTY_TYPE.
Neighborhood Table Lookup
IF no record found for a given property type then we search the MA_PARM_NBHD table with a blank property type (15 spaces).
– The neighborhood adjustment is only calculated for the market value (not for the AG) portion.
– The total site adjustment cannot produce a negative value if ALLOW_NEGATIVE_VAL = ‘no’ – to be validated
– The land factor is either MA_PARM_NBHD.LAND_FACTOR or an evaluated expression
Neighborhood Adjustment (compute)
The neighborhood adjustment is MA_LAND.NBHD_ADJ_TOTAL is calculated as MA_LAND.TOTAL_VALUE * land factor / 100
The nbhd adjustment is added to the MA_LAND.TOTAL_VALUE.
Apply Neighborhood Minimum and Maximums
If CUMULATIVE_LAND_RATE = “yes” and MA_LAND.ADJ_TOTAL is NULL and @subject_to_nbhd_min_max = TRUE
then
– If MA_LAND.TOTAL_VALUE < MA_PARM_NBHD.LAND_MINIMUM then MA_LAND.TOTAL_VALUE = MA_PARM_NBHD.LAND_MINIMUM
– If MA_LAND.TOTAL_VALUE > MA_PARM_NBHD.LAND_MAXIMUM then MA_LAND.TOTAL_VALUE = MA_PARM_NBHD.LAND_MAXIMUM

STEP 11 – Compute Final Adjustment

Compute final adjustment (VB6 : pv_override).
The final adjustment is calculated only if MA_LAND.FINAL_ADJ_PERCENT is not NULL.

  • MA_LAND.FINAL_ADJ = MA_LAND.TOTAL_VALUE * MA_LAND.FINAL_ADJ_PERCENT / 100
  • MA_LAND.TOTAL_VALUE = MA_LAND.TOTAL_VALUE + MA_LAND.FINAL_ADJ

 

STEP 12 – Rounding

Compute the final rounded value (VB6 : pv_override, pv_round_value).
MA_LAND.TOTAL_VALUE is rounded based on the MA_PARM_MAROUND information (code = ‘land’).
For example, if the rounding value is 1000, and the total value is 45678 then the value is 46000. If the rounding value was 100 then it would have been 45700.
Compute Logic – STEP 13

STEP 13 – Agricultural Processing

If MA_LAND.UNITS_PRICE_AG is null or 0 AND MA_PARM_LANDUSE.AGRICULTURAL = -1, then we move the value from MA_LAND.UNITS_PRICE to MA_LAND.UNITS_PRICE_AG and we set MA_LAND.UNITS_PRICE to null.

The same is done for the fields MA_LAND.TOTAL_VALUE and MA_LAND.TOTAL_VALUE_AG.

STEP 14 – Set the Modification Stamp

Step 14 – Set the modif stamp for the computed record (VB6 : compute_land).
We set MA_LAND.MODIF_STAMP = MA_MODIF_STAMP.LAND_STAMP if not null, otherwise we use the current date/time.

 

 

101-ma-compute-Land

 

0 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 5 (0 votes, average: 0.00 out of 5)
You need to be a registered member to rate this.
Loading...