import { ROLES_NAME_ID } from "../../../constants/constants"; const ADMIN_ROLES = [ROLES_NAME_ID.admin]; const DFIP_ROLES = [ROLES_NAME_ID.admin, ROLES_NAME_ID.executor_dfip, ROLES_NAME_ID.executor_durrs]; const ALL_ROLES = [ ROLES_NAME_ID.admin, ROLES_NAME_ID.executor_rf, ROLES_NAME_ID.executor_dfip, ROLES_NAME_ID.executor_durrs, ]; // Матрица доступа к полям первой таблицы. export const FIRST_TABLE_FIELD_ACCESS = { name: ADMIN_ROLES, org_unit_id: ALL_ROLES, status: DFIP_ROLES, technical_number: [], object_address: ALL_ROLES, vsp_format: ALL_ROLES, placement_type: ALL_ROLES, staff_count: ALL_ROLES, total_area: ALL_ROLES, project_type: ALL_ROLES, krf_decision_date: ALL_ROLES, fk_decision_date: ALL_ROLES, board_decision_date: ALL_ROLES, open_relocate_close_date: ALL_ROLES, funding_by_ko_decision: DFIP_ROLES, year: ADMIN_ROLES, is_in_plan: DFIP_ROLES, is_in_plan_q2: DFIP_ROLES, is_in_plan_q3: DFIP_ROLES, is_in_plan_q4: DFIP_ROLES, development_block: DFIP_ROLES, reserve_to_prrs_ahr: DFIP_ROLES, reserve_to_prrs_kv: DFIP_ROLES, }; // Поле становится доступным после заполнения предыдущего этапа согласования. export const FIRST_TABLE_FIELD_DEPENDENCIES = { fk_decision_date: "krf_decision_date", board_decision_date: "fk_decision_date", }; export const FIRST_TABLE_FIELD_VALUE_REQUIREMENTS = { reserve_to_prrs_ahr: { fieldKey: "_projectFundingByKoDecision", value: "bank_reserve", }, reserve_to_prrs_kv: { fieldKey: "_projectFundingByKoDecision", value: "bank_reserve", }, }; export const canEditFirstTableField = (fieldKey, roleId) => FIRST_TABLE_FIELD_ACCESS[fieldKey]?.includes(roleId) ?? false; const isFilled = (value) => value !== null && value !== undefined && value !== ""; export const hasReserveValuesInChildSmetas = (project) => (project?.sub_rows || []).some( (smeta) => isFilled(smeta.reserve_to_prrs_ahr) || isFilled(smeta.reserve_to_prrs_kv), ); export const isFirstTableFieldDependencySatisfied = (fieldKey, rowData) => { const dependencyKey = FIRST_TABLE_FIELD_DEPENDENCIES[fieldKey]; if (dependencyKey && !rowData?.[dependencyKey]) return false; const valueRequirement = FIRST_TABLE_FIELD_VALUE_REQUIREMENTS[fieldKey]; if (valueRequirement && rowData?.[valueRequirement.fieldKey] !== valueRequirement.value) return false; return true; };