/* eslint-disable camelcase,no-unused-vars,new-cap,no-undef,comma-dangle */
// This file is generated automatically and contain definition for code insight.
// It ignored by UnityBase server because name start from "_".
// Do not modify this file directly, instead run `ubcli createCodeInsightHelper -u root`

/**
 * Organisation structure
 *
 * @version 5.23.67
 * @module @unitybase/org
 */

/**
 * Departments.
 * This dictionary contains list of departments. Each department links to org_unit by Unity mixin
 *
 * @augments EntityNamespace
 * @mixes mStorage
 * @mixes dataHistory
 * @mixes unity
 */
class org_department_ns extends EntityNamespace {}

/**
 * @typedef orgDepartmentAttrs
 * @type {object}
 * @property {number|orgUnitAttrs} ID
 * @property {number|orgUnitAttrs} parentID - Parent
 * @property {string} code - Internal code
 * @property {string} name - Department name
 * @property {string} fullName - Department full name
 * @property {string} description - Department description
 * @property {string} nameGen - Department name in genitive case
 * @property {string} nameDat - Department name in dative case
 * @property {string} fullNameGen - Department full name in genitive case
 * @property {string} fullNameDat - Department full name in dative case
 * @property {number|cdnDeptypeAttrs} depTypeID - Department type
 * @property {string} caption - Caption
 * @property {number|orgDepartmentAttrs} mi_data_id
 * @property {Date} mi_dateFrom
 * @property {Date} mi_dateTo
 * @property {number|ubaUserAttrs} mi_owner
 * @property {Date} mi_createDate
 * @property {number|ubaUserAttrs} mi_createUser
 * @property {Date} mi_modifyDate
 * @property {number|ubaUserAttrs} mi_modifyUser
 * @property {Date} mi_deleteDate
 * @property {number|ubaUserAttrs} mi_deleteUser
 */

/**
 * Attributes defined in metadata. Property does not exist in real life and added for IDE
 *
 * @type {orgDepartmentAttrs}
 */
org_department_ns.attrs = {}

/**
 * Departments.
 * This dictionary contains list of departments. Each department links to org_unit by Unity mixin
 *
 * @type {org_department_ns}
 */
const org_department = new org_department_ns()
/**
 * Organizational Chart Diagrams
 *
 * @augments EntityNamespace
 * @mixes mStorage
 */
class org_diagram_ns extends EntityNamespace {}

/**
 * @typedef orgDiagramAttrs
 * @type {object}
 * @property {number} ID
 * @property {number|orgUnitAttrs} orgunitID - Root
 * @property {string} caption - Name
 * @property {boolean} isdefault - Default
 * @property {string} document - Organization chart
 * @property {number|ubaUserAttrs} mi_owner
 * @property {Date} mi_createDate
 * @property {number|ubaUserAttrs} mi_createUser
 * @property {Date} mi_modifyDate
 * @property {number|ubaUserAttrs} mi_modifyUser
 * @property {Date} mi_deleteDate
 * @property {number|ubaUserAttrs} mi_deleteUser
 */

/**
 * Attributes defined in metadata. Property does not exist in real life and added for IDE
 *
 * @type {orgDiagramAttrs}
 */
org_diagram_ns.attrs = {}

/**
 * Organizational Chart Diagrams
 *
 * @type {org_diagram_ns}
 */
const org_diagram = new org_diagram_ns()
/**
 * List of employees of of our organizations.
 * This dictionary contains list of departments. Employee is assigned to positions in org_employeeonstaff entity
 *
 * @augments EntityNamespace
 * @mixes mStorage
 * @mixes dataHistory
 */
class org_employee_ns extends EntityNamespace {}

/**
 * @typedef orgEmployeeAttrs
 * @type {object}
 * @property {number} ID
 * @property {string} code - Code
 * @property {number|ubaUserAttrs} userID - User
 * @property {string} lastName - Last name
 * @property {string} firstName - First name
 * @property {string} middleName - Middle name
 * @property {Date} birthDate - Date of birth
 * @property {string} description - Comment
 * @property {string|ubmEnumAttrs} sexType - Gender
 * @property {string} suffix - Suffix
 * @property {string} shortFIO - Last name with initials
 * @property {string} fullFIO - Full name
 * @property {string} apply - Title
 * @property {string} lastNameGen - Last name in genitive
 * @property {string} lastNameDat - Last name in dative
 * @property {string} lastNameObj - Last name in objective
 * @property {string} firstNameGen - First name in genitive
 * @property {string} firstNameDat - First name in dative
 * @property {string} firstNameObj - First name in objective
 * @property {string} middleNameGen - Middle name in genitive
 * @property {string} middleNameDat - Middle name in dative
 * @property {string} middleNameObj - Middle name in objective
 * @property {string} shortFIOGen - Short name in genitive
 * @property {string} shortFIODat - Short name in dative
 * @property {string} shortFIOObj - Short name in objective
 * @property {string} fullFIOGen - Full name in genitive
 * @property {string} fullFIODat - Full name in dative
 * @property {string} fullFIOObj - Full name in objective
 * @property {string} applyGen - Title in genitive
 * @property {string} applyDat - Title in dative
 * @property {string} applyObj - Title in objective
 * @property {string} facsimile - Facsimile
 * @property {string} avatar - Avatar
 * @property {number|orgEmployeeAttrs} mi_data_id
 * @property {Date} mi_dateFrom
 * @property {Date} mi_dateTo
 * @property {number|ubaUserAttrs} mi_owner
 * @property {Date} mi_createDate
 * @property {number|ubaUserAttrs} mi_createUser
 * @property {Date} mi_modifyDate
 * @property {number|ubaUserAttrs} mi_modifyUser
 * @property {Date} mi_deleteDate
 * @property {number|ubaUserAttrs} mi_deleteUser
 */

/**
 * Attributes defined in metadata. Property does not exist in real life and added for IDE
 *
 * @type {orgEmployeeAttrs}
 */
org_employee_ns.attrs = {}

/**
 * List of employees of of our organizations.
 * This dictionary contains list of departments. Employee is assigned to positions in org_employeeonstaff entity
 *
 * @type {org_employee_ns}
 */
const org_employee = new org_employee_ns()
/**
 * List of internal organization assignments.
 * The denouement essence, which indicates which employee on which position works (appointment). There is also a type of assignment (temporary, permanent, part-time, etc.)
 *
 * @augments EntityNamespace
 * @mixes mStorage
 * @mixes dataHistory
 */
class org_employeeonstaff_ns extends EntityNamespace {}

/**
 * @typedef orgEmployeeonstaffAttrs
 * @type {object}
 * @property {number} ID
 * @property {string} tabNo - # Employee
 * @property {number|orgEmployeeAttrs} employeeID - Employee
 * @property {number|orgStaffunitAttrs} staffUnitID - Position
 * @property {string|ubmEnumAttrs} employeeOnStaffType - Assignment Type
 * @property {string} description - Description
 * @property {string} caption - Caption
 * @property {number|orgEmployeeonstaffAttrs} mi_data_id
 * @property {Date} mi_dateFrom
 * @property {Date} mi_dateTo
 * @property {number|ubaUserAttrs} mi_owner
 * @property {Date} mi_createDate
 * @property {number|ubaUserAttrs} mi_createUser
 * @property {Date} mi_modifyDate
 * @property {number|ubaUserAttrs} mi_modifyUser
 * @property {Date} mi_deleteDate
 * @property {number|ubaUserAttrs} mi_deleteUser
 */

/**
 * Attributes defined in metadata. Property does not exist in real life and added for IDE
 *
 * @type {orgEmployeeonstaffAttrs}
 */
org_employeeonstaff_ns.attrs = {}

/**
 * List of internal organization assignments.
 * The denouement essence, which indicates which employee on which position works (appointment). There is also a type of assignment (temporary, permanent, part-time, etc.)
 *
 * @type {org_employeeonstaff_ns}
 */
const org_employeeonstaff = new org_employeeonstaff_ns()
/**
 * Assignment with pending date.
 * Entity which contains links to assignments with pending date
 *
 * @augments EntityNamespace
 * @mixes mStorage
 */
class org_employeeonstaff_pending_ns extends EntityNamespace {}

/**
 * @typedef orgEmployeeonstaffPendingAttrs
 * @type {object}
 * @property {number} ID
 * @property {number|orgEmployeeonstaffAttrs} emponstaffID - Assignment
 * @property {Date} startDate - Start
 * @property {Date} endDate - End
 * @property {number|ubaUserAttrs} mi_owner
 * @property {Date} mi_createDate
 * @property {number|ubaUserAttrs} mi_createUser
 * @property {Date} mi_modifyDate
 * @property {number|ubaUserAttrs} mi_modifyUser
 */

/**
 * Attributes defined in metadata. Property does not exist in real life and added for IDE
 *
 * @type {orgEmployeeonstaffPendingAttrs}
 */
org_employeeonstaff_pending_ns.attrs = {}

/**
 * Assignment with pending date.
 * Entity which contains links to assignments with pending date
 *
 * @type {org_employeeonstaff_pending_ns}
 */
const org_employeeonstaff_pending = new org_employeeonstaff_pending_ns()
/**
 * List of typical executors groups for tasks executors
 *
 * @augments EntityNamespace
 * @mixes mStorage
 * @mixes dataHistory
 * @mixes unity
 */
class org_execgroup_ns extends EntityNamespace {}

/**
 * @typedef orgExecgroupAttrs
 * @type {object}
 * @property {number|orgUnitAttrs} ID
 * @property {number|orgOrganizationAttrs} parentID - Parent unit
 * @property {string|ubmEnumAttrs} groupType - Type
 * @property {string} code - Code
 * @property {string} name - Name of the group
 * @property {string} nameGen - Name in genitive case
 * @property {string} nameDat - Name in dative case
 * @property {number|orgExecgroupAttrs} mi_data_id
 * @property {Date} mi_dateFrom
 * @property {Date} mi_dateTo
 * @property {number|ubaUserAttrs} mi_owner
 * @property {Date} mi_createDate
 * @property {number|ubaUserAttrs} mi_createUser
 * @property {Date} mi_modifyDate
 * @property {number|ubaUserAttrs} mi_modifyUser
 * @property {Date} mi_deleteDate
 * @property {number|ubaUserAttrs} mi_deleteUser
 */

/**
 * Attributes defined in metadata. Property does not exist in real life and added for IDE
 *
 * @type {orgExecgroupAttrs}
 */
org_execgroup_ns.attrs = {}

/**
 * List of typical executors groups for tasks executors
 *
 * @type {org_execgroup_ns}
 */
const org_execgroup = new org_execgroup_ns()
/**
 * Executors who attached to group and used for executors auto-filling in resolutions on group addition
 *
 * @augments EntityNamespace
 * @mixes mStorage
 */
class org_execgroupmember_ns extends EntityNamespace {}

/**
 * @typedef orgExecgroupmemberAttrs
 * @type {object}
 * @property {number} ID
 * @property {number|orgExecgroupAttrs} execGroupID - Executors group
 * @property {number|orgStaffunitAttrs} orgUnitID - Executor
 * @property {number|ubaUserAttrs} mi_owner
 * @property {Date} mi_createDate
 * @property {number|ubaUserAttrs} mi_createUser
 * @property {Date} mi_modifyDate
 * @property {number|ubaUserAttrs} mi_modifyUser
 */

/**
 * Attributes defined in metadata. Property does not exist in real life and added for IDE
 *
 * @type {orgExecgroupmemberAttrs}
 */
org_execgroupmember_ns.attrs = {}

/**
 * Executors who attached to group and used for executors auto-filling in resolutions on group addition
 *
 * @type {org_execgroupmember_ns}
 */
const org_execgroupmember = new org_execgroupmember_ns()
/**
 * Settlement accounts for internal organizations
 *
 * @augments EntityNamespace
 * @mixes mStorage
 */
class org_orgaccount_ns extends EntityNamespace {}

/**
 * @typedef orgOrgaccountAttrs
 * @type {object}
 * @property {number} ID
 * @property {number|orgOrganizationAttrs} organizationID - Organization
 * @property {number|cdnCurrencyAttrs} currencyID - Currency
 * @property {number|cdnBankAttrs} bankID - Bank
 * @property {string} code - Code
 * @property {string|ubmEnumAttrs} acctype - Type
 * @property {string} description - Description
 * @property {number|ubaUserAttrs} mi_owner
 * @property {Date} mi_createDate
 * @property {number|ubaUserAttrs} mi_createUser
 * @property {Date} mi_modifyDate
 * @property {number|ubaUserAttrs} mi_modifyUser
 * @property {Date} mi_deleteDate
 * @property {number|ubaUserAttrs} mi_deleteUser
 */

/**
 * Attributes defined in metadata. Property does not exist in real life and added for IDE
 *
 * @type {orgOrgaccountAttrs}
 */
org_orgaccount_ns.attrs = {}

/**
 * Settlement accounts for internal organizations
 *
 * @type {org_orgaccount_ns}
 */
const org_orgaccount = new org_orgaccount_ns()
/**
 *  List of internal organizations.
 * This dictionary contains list of internal organizations. Each organization links to org_unit by Unity mixin
 *
 * @augments EntityNamespace
 * @mixes mStorage
 * @mixes dataHistory
 * @mixes unity
 */
class org_organization_ns extends EntityNamespace {}

/**
 * @typedef orgOrganizationAttrs
 * @type {object}
 * @property {number|orgUnitAttrs} ID
 * @property {number|orgUnitAttrs} parentID - Parent
 * @property {string} code - Internal code
 * @property {string} OKPOCode - CCEO
 * @property {string} taxCode - Tax number
 * @property {string} vatCode - VAT number
 * @property {string} name - Organization name
 * @property {string} fullName - Organization full name
 * @property {string} nameGen - Name in genitive case
 * @property {string} nameDat - Name in dative case
 * @property {string} fullNameGen - Full name in genitive case
 * @property {string} fullNameDat - Full name in dative case
 * @property {string} description - Organization description
 * @property {number|cdnOrgbusinesstypeAttrs} orgBusinessTypeID - Organization type
 * @property {number|cdnOrgownershiptypeAttrs} orgOwnershipTypeID - Ownership type
 * @property {number|orgOrganizationAttrs} mi_data_id
 * @property {Date} mi_dateFrom
 * @property {Date} mi_dateTo
 * @property {number|ubaUserAttrs} mi_owner
 * @property {Date} mi_createDate
 * @property {number|ubaUserAttrs} mi_createUser
 * @property {Date} mi_modifyDate
 * @property {number|ubaUserAttrs} mi_modifyUser
 * @property {Date} mi_deleteDate
 * @property {number|ubaUserAttrs} mi_deleteUser
 */

/**
 * Attributes defined in metadata. Property does not exist in real life and added for IDE
 *
 * @type {orgOrganizationAttrs}
 */
org_organization_ns.attrs = {}

/**
 *  List of internal organizations.
 * This dictionary contains list of internal organizations. Each organization links to org_unit by Unity mixin
 *
 * @type {org_organization_ns}
 */
const org_organization = new org_organization_ns()
/**
 * List of position types
 *
 * @augments EntityNamespace
 * @mixes mStorage
 */
class org_profession_ns extends EntityNamespace {}

/**
 * @typedef orgProfessionAttrs
 * @type {object}
 * @property {number} ID
 * @property {string} code - Code
 * @property {string} name - Name
 * @property {string} fullName - Full name
 * @property {string} nameGen - Name in genitive case
 * @property {string} nameDat - Name in dative case
 * @property {string} fullNameGen - Full name in genitive case
 * @property {string} fullNameDat - Full name in dative case
 * @property {string} description - Caption
 * @property {number|ubaUserAttrs} mi_owner
 * @property {Date} mi_createDate
 * @property {number|ubaUserAttrs} mi_createUser
 * @property {Date} mi_modifyDate
 * @property {number|ubaUserAttrs} mi_modifyUser
 * @property {Date} mi_deleteDate
 * @property {number|ubaUserAttrs} mi_deleteUser
 */

/**
 * Attributes defined in metadata. Property does not exist in real life and added for IDE
 *
 * @type {orgProfessionAttrs}
 */
org_profession_ns.attrs = {}

/**
 * List of position types
 *
 * @type {org_profession_ns}
 */
const org_profession = new org_profession_ns()
/**
 * List of positions.
 * This dictionary contains list of positions. Each position links to org_unit by Unity mixin
 *
 * @augments EntityNamespace
 * @mixes mStorage
 * @mixes dataHistory
 * @mixes unity
 */
class org_staffunit_ns extends EntityNamespace {}

/**
 * @typedef orgStaffunitAttrs
 * @type {object}
 * @property {number|orgUnitAttrs} ID
 * @property {number|orgUnitAttrs} parentID - Parent
 * @property {string} code - Internal code
 * @property {string} name - Position name
 * @property {string} fullName - Full name
 * @property {string} description - Position description
 * @property {string} nameGen - Position name in genitive case
 * @property {string} nameDat - Position name in dative case
 * @property {string} fullNameGen - Full name in genitive case
 * @property {string} fullNameDat - Full name in dative case
 * @property {string} caption - Caption
 * @property {number|cdnProfessionAttrs} professionExtID - Profession
 * @property {number|orgProfessionAttrs} professionID - Position type
 * @property {number|cdnStaffunittypeAttrs} staffUnitTypeID - Staff unit type
 * @property {number} subordinationLevel - Subordination level
 * @property {boolean} isBoss - Boss
 * @property {number|orgStaffunitAttrs} mi_data_id
 * @property {Date} mi_dateFrom
 * @property {Date} mi_dateTo
 * @property {number|ubaUserAttrs} mi_owner
 * @property {Date} mi_createDate
 * @property {number|ubaUserAttrs} mi_createUser
 * @property {Date} mi_modifyDate
 * @property {number|ubaUserAttrs} mi_modifyUser
 * @property {Date} mi_deleteDate
 * @property {number|ubaUserAttrs} mi_deleteUser
 */

/**
 * Attributes defined in metadata. Property does not exist in real life and added for IDE
 *
 * @type {orgStaffunitAttrs}
 */
org_staffunit_ns.attrs = {}

/**
 * List of positions.
 * This dictionary contains list of positions. Each position links to org_unit by Unity mixin
 *
 * @type {org_staffunit_ns}
 */
const org_staffunit = new org_staffunit_ns()
/**
 * List of organization units.
 * Dictionary which is composed of organizations (org_organization), departments (org_department) and positions (org_staffunit) by Unity mixin. Dictionary is self-referential, which allows to build a hierarchy of all organizational units in one tree
 *
 * @augments EntityNamespace
 * @mixes mStorage
 * @mixes dataHistory
 * @mixes tree
 */
class org_unit_ns extends EntityNamespace {}

/**
 * @typedef orgUnitAttrs
 * @type {object}
 * @property {number} ID
 * @property {number|orgUnitAttrs} parentID - Parent
 * @property {string} code - Internal code
 * @property {string} caption - Caption
 * @property {string|ubmEnumAttrs} unitType - Org. unit type
 * @property {string} mi_treePath
 * @property {number|orgUnitAttrs} mi_data_id
 * @property {Date} mi_dateFrom
 * @property {Date} mi_dateTo
 * @property {number|ubaUserAttrs} mi_owner
 * @property {Date} mi_createDate
 * @property {number|ubaUserAttrs} mi_createUser
 * @property {Date} mi_modifyDate
 * @property {number|ubaUserAttrs} mi_modifyUser
 * @property {Date} mi_deleteDate
 * @property {number|ubaUserAttrs} mi_deleteUser
 * @property {string} mi_unityEntity
 */

/**
 * Attributes defined in metadata. Property does not exist in real life and added for IDE
 *
 * @type {orgUnitAttrs}
 */
org_unit_ns.attrs = {}

/**
 * List of organization units.
 * Dictionary which is composed of organizations (org_organization), departments (org_department) and positions (org_staffunit) by Unity mixin. Dictionary is self-referential, which allows to build a hierarchy of all organizational units in one tree
 *
 * @type {org_unit_ns}
 */
const org_unit = new org_unit_ns()