{"version":3,"file":"UdpTransactionTypesPage.mjs","names":["React","useCallback","useState","useMemo","useRef","useEffect","useTranslation","makeStyles","LinearProgress","UdpTransactionTypeSidesheet","useCatalogStore","SearchMethodUdpGrid","apiMutate","useAxiosGet","BUSINESS_OBJECT_KEY_PROPERTIES","useSnackbar","FluentDialog","getSuccessAction","UdpTransactionTypeStatusSidesheet","UdpTransactionTypeTransactionActionSidesheet","useUser","UdpTransactionUiActionSidesheet","UdpTransactionTypeConfigurationSidesheet","EMPTY_GUID","PropertyTypeEnum","UdpSearchEnums","UdpTransactionAttachmentTypeSidesheet","ConfigService","REQUIRED_COLUMN_DEF_MAPPING","attachments","displayName","actions","transactionId","createdOn","currentStatusId","currentRevisionNo","lastEventTypeId","REQUIRED_COLUMN_DEF_FIELDS","Object","keys","DISABLE_ORDERING_FOR_FIELDS","PAGE_SIZE","baseSearchPayload","pageNumber","pageSize","filterElements","filterGroups","orderElements","groupingType","groupProperty","groupOperationList","eagerLoad","logicalSearchOperator","useStyles","theme","loadingBar","bottom","spacing","marginLeft","marginRight","formatTransactionTypeConfigurationIntoExpressionLogic","configurationObj","CurrentStatus","CurrentDomainValue","TenantUserRoleIds","TenantUserRolesComparisonOperator","andConditions","push","var","transactionTypeStatusId","entries","forEach","field","config","isConfigObject","Array","isArray","operator","comparisonValue","value","effectiveOperator","operands","length","tenantUserRolesOperator","in","and","UdpTransactionTypesPage","user","t","classes","enqueueSnackbar","closeSnackbar","successAction","gridApiRef","ttsGridApiRef","tttaGridApiRef","tuaGridApiRef","ttcGridApiRef","ttctaGridApiRef","tatGridApiRef","searchObject","setSearchObject","selectedTransactionType","setSelectedTransactionType","isTransactionTypeSideSheetOpen","setIsTransactionTypeSideSheetOpen","isTransactionTypeSidesheetLoading","setIsTransactionTypeSidesheetLoading","isDeleteTransactionTypeDialogOpen","setIsDeleteTransactionTypeDialogOpen","isPageConfigurationSidesheetOpen","setIsPageConfigurationSidesheetOpen","isCalendarViewConfigurationSidesheetOpen","setIsCalendarViewConfigurationSidesheetOpen","selectedDomainName","setSelectedDomainName","isTransactionTypeStatusSidesheetOpen","setIsTransactionTypeStatusSidesheetOpen","isDeleteTransactionTypeStatusDialogOpen","setIsDeleteTransactionTypeStatusDialogOpen","selectedTransactionTypeStatus","setSelectedTransactionTypeStatus","isCreateOrEditTransactionTypeStatusSidesheetOpen","setIsCreateOrEditTransactionTypeStatusSidesheetOpen","ttstatuses","setTTStatuses","isTransactionTypeTransactionActionSidesheetOpen","setIsTransactionTypeTransactionActionSidesheetOpen","selectedTransactionTypeTransactionAction","setSelectedTransactionTypeTransactionAction","isCreateOrEditTransactionTypeTransactionActionSidesheetOpen","setIsCreateOrEditTransactionTypeTransactionActionSidesheetOpen","isDeleteTransactionTypeTransactionActionDialogOpen","setIsDeleteTransactionTypeTransactionActionDialogOpen","tttactions","setTTTActions","isTransactionUiActionSidesheetOpen","setIsTransactionUiActionSidesheetOpen","selectedTransactionUiAction","setSelectedTransactionUiAction","isCreateOrEditTransactionUiActionSidesheetOpen","setIsCreateOrEditTransactionUiActionSidesheetOpen","isDeleteTransactionUiActionDialogOpen","setIsDeleteTransactionUiActionDialogOpen","isTransactionTypeConfigurationSidesheetOpen","setIsTransactionTypeConfigurationSidesheetOpen","selectedTransactionTypeConfiguration","setSelectedTransactionTypeConfiguration","isCreateOrEditTransactionTypeConfigurationSidesheetOpen","setIsCreateOrEditTransactionTypeConfigurationSidesheetOpen","isDeleteTransactionTypeConfigurationDialogOpen","setIsDeleteTransactionTypeConfigurationDialogOpen","isTransactionTypeConfigurationTransactionActionSidesheetOpen","setIsTransactionTypeConfigurationTransactionActionSidesheetOpen","selectedTransactionTypeConfigurationTransactionAction","setSelectedTransactionTypeConfigurationTransactionAction","isCreateOrEditTransactionTypeConfigurationTransactionActionSidesheetOpen","setIsCreateOrEditTransactionTypeConfigurationTransactionActionSidesheetOpen","isDeleteTransactionTypeConfigurationTransactionActionDialogOpen","setIsDeleteTransactionTypeConfigurationTransactionActionDialogOpen","isTransactionAttachmentTypeSidesheetOpen","setIsTransactionAttachmentTypeSidesheetOpen","selectedTransactionAttachmentType","setSelectedTransactionAttachmentType","isCreateOrEditTransactionAttachmentTypeSidesheetOpen","setIsCreateOrEditTransactionAttachmentTypeSidesheetOpen","isDeleteTransactionAttachmentTypeDialogOpen","setIsDeleteTransactionAttachmentTypeDialogOpen","hasDefaultAndCancelledTransactionTypeStatus","transactionTypeStatuses","checkHasDefault","checkHasCancelledStatus","some","record","isDefault","isCancelledStatus","postCreateTransactionType","transactionType","productV1ApiUrl","method","data","putUpdateTransactionType","transactionTypeId","deleteTransactionType","transactionsByTransactionTypeId","loading","getTransactionsByTransactionIdLoading","fetchTransactionsByTransactionTypeId","searchField","searchOperator","searchValue","groupId","getAll","postCreateTransactionTypeStatus","transactionTypeStatus","putUpdateTransactionTypeStatus","deleteTransactionTypeStatus","searchTransactionTypeStatusByTransactionTypeId","searchPayload","loadTTStatuses","ttsResponse","status","pageList","transactionActions","actionApis","pages","tenantV1ApiUrl","currentTenantId","postCreateTransactionTypeTransactionAction","transactionTypeTransactionAction","putUpdateTransactionTypeTransactionAction","transactionTypeTransactionActionId","deleteTransactionTypeTransactionAction","searchTransactionTypeTransactionActionByTransactionTypeId","loadTTTActions","tttaResponse","postCreateTransactionUiAction","transactionUiAction","putUpdateTransactionUiAction","transactionUiActionId","deleteTransactionUiAction","tUiActionsList","fetchTUiActionsList","transactionUiActionTypes","postCreateTransactionTypeConfiguration","transactionTypeConfiguration","putUpdateTransactionTypeConfiguration","transactionTypeConfigurationId","deleteTransactionTypeConfiguration","transactionRuleTypes","roles","postCreateTransactionTypeConfigurationTransactionAction","ttcta","putUpdateTransactionTypeConfigurationTransactionAction","transactionTypeConfigurationTransactionAction","deleteTransactionTypeConfigurationTransactionAction","ttctaList","fetchTtctaList","postCreateTransactionAttachmentType","transactionAttachmentType","putUpdateTransactionAttachmentType","transactionAttachmentTypeId","deleteTransactionAttachmentType","currentApiCatalogId","state","catalogObjectNames","integrationV2ApiUrl","domainName","catalogObject","catalogObjectProperties","properties","filter","property","includes","name","map","catalogObjectDateProperties","type","DateTime","handleSideSheet","isOpen","handleTransactionTypeStatusSideSheet","handleCreateOrEditTransactionTypeStatusSideSheet","handleTransactionTypeTransactionActionSidesheet","handleCreateOrEditTransactionTypeTransactionActionSidesheet","handleTransactionUiActionSidesheet","handleCreateOrEditTransactionUiActionSidesheet","handleTransactionTypeConfigurationSidesheet","handleCreateOrEditTransactionTypeConfigurationSidesheet","handleTransactionTypeConfigurationTransactionActionSidesheet","handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet","handleTransactionAttachmentTypeSidesheet","handleCreateOrEditTransactionAttachmentTypeSidesheet","handleCreateTransactionType","formValues","domainFields","restValues","pageConfigurationColumnDefsDict","domainFieldsDict","reduce","accumulator","entry","fieldKey","UdpBusinessDomainPrefix","order","hide","pageConfiguration","gridTitle","createTransactionButtonLabel","hideCreateTransaction","paginationAutoPageSize","hideSaveChanges","columnDefProperties","calendarViewConfiguration","enabled","isDefaultView","defaultCalendarViewType","domainStartDateProperty","domainEndDateProperty","domainPropertyToDisplay","newTransactionType","response","defaultValue","anchorOrigin","vertical","horizontal","action","current","refreshServerSide","err","title","variant","handleUpdateTransactionType","initialValues","updatedTransactionType","handleDeleteTransactionType","handleCreateTransactionTypeStatus","newTransactionTypeStatus","color","hasDefaultOrCancelledStatus","isCreatingDefaultStatus","isCreatingCancelledStatus","searchTransactionTypeStatusResponse","statusConflictMessage","handleUpdateTransactionTypeStatus","updatedTransactionTypeStatus","hasExistingDefaultOrCancelledStatus","isEditingDefaultStatus","isEditingCancelledStatus","handleDeleteTransactionTypeStatus","handleCreateTransactionTypeTransactionAction","transactionAction","toStatus","actionApiId","pageId","mandatoryFields","hiddenFields","disabledFields","domainDataToUpdate","domainDataDictionary","newTransactionTypeTransactionAction","transactionActionId","parameters","ToStatus","DomainDataToUpdate","MandatoryFields","HiddenFields","DisabledFields","ActionApiId","PageId","handleUpdateTransactionTypeTransactionAction","updatedTransactionTypeTransactionAction","description","icon","handleDeleteTransactionTypeTransactionAction","handleCreateTransactionUiAction","transactionUiActionType","actionApi","page","newTransactionUiAction","transactionUiActionTypeId","handleUpdateTransactionUiAction","updatedTransactionUiAction","handleDeleteTransactionUiAction","handleCreateTransactionTypeConfiguration","transactionRuleType","currentStatus","tenantUserRoles","tenantUserRolesComparisonOperator","currentDomainValue","tenantUserRoleIds","tur","roleId","expressionLogic","newTransactionTypeConfiguration","transactionRuleTypeId","configuration","CurrentStatusId","handleUpdateTransactionTypeConfiguration","updatedTransactionTypeConfiguration","handleDeleteTransactionTypeConfiguration","handleCreateTransactionTypeConfigurationTransactionAction","transactionTypeTransactionActions","newTTCTActions","handleUpdateTransactionTypeConfigurationTransactionAction","existingTransactionTypeTransactionActionId","updatedTransactionTypeConfigurationTransactionAction","handleDeleteTransactionTypeConfigurationTransactionAction","handleCreateTransactionAttachmentType","newTransactionAttachmentType","handleUpdateTransactionAttachmentType","handleDeleteTransactionAttachmentType","handleOpenDeleteTransactionTypeDialog","handleCloseDeleteTransactionTypeDialog","handleOpenDeleteTransactionTypeStatusDialog","handleCloseDeleteTransactionTypeStatusDialog","handleOpenDeleteTransactionTypeTransactionActionDialog","handleCloseDeleteTransactionTypeTransactionActionDialog","handleOpenDeleteTransactionUiActionDialog","handleCloseDeleteTransactionUiActionDialog","handleOpenDeleteTransactionTypeConfigurationDialog","handleCloseDeleteTransactionTypeConfigurationDialog","handleOpenDeleteTransactionTypeConfigurationTransactionActionDialog","handleCloseDeleteTransactionTypeConfigurationTransactionActionDialog","handleOpenDeleteTransactionAttachmentTypeDialog","handleCloseDeleteTransactionAttachmentTypeDialog","columnDefs","headerName","resizable","sortable","cellDataType","cellRenderer","cellRendererParams","actionList","id","iconName","handleOnClick","e","valueGetter","params","suppressMenu","headerConfig","primaryActionButton","label","onClick","gridFunctions","gridOptions","pagination","handleGridApiCallback","api","searchMethodConfig","requestUrl","customSearchObject"],"sources":["../../../../src/udp/pages/UdpTransactionTypesPage/UdpTransactionTypesPage.jsx"],"sourcesContent":["import React, {\n  useCallback,\n  useState,\n  useMemo,\n  useRef,\n  useEffect\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { makeStyles } from '@material-ui/core';\nimport { LinearProgress } from '../../../UI/loading/LinearProgress';\nimport UdpTransactionTypeSidesheet from './sidesheets/UdpTransactionTypeSidesheet';\nimport { useCatalogStore } from '../../../stores/catalogStore';\nimport { SearchMethodUdpGrid } from '../../../UI/templates/newGrid';\nimport { apiMutate, useAxiosGet } from '../../../utilities';\nimport { BUSINESS_OBJECT_KEY_PROPERTIES } from '../../../utilities/entities/entityUtilities';\nimport { useSnackbar } from 'notistack';\nimport { FluentDialog, getSuccessAction } from '../../../UI';\nimport UdpTransactionTypeStatusSidesheet from './sidesheets/UdpTransactionTypeStatusSidesheet';\nimport UdpTransactionTypeTransactionActionSidesheet from './sidesheets/UdpTransactionTypeTransactionActionSidesheet';\nimport { useUser } from '../../../utilities/auth';\nimport UdpTransactionUiActionSidesheet from './sidesheets/UdpTransactionUiActionSidesheet';\nimport UdpTransactionTypeConfigurationSidesheet from './sidesheets/UdpTransactionTypeConfigurationSidesheet';\nimport { EMPTY_GUID, PropertyTypeEnum, UdpSearchEnums } from '../../../enums';\nimport UdpTransactionAttachmentTypeSidesheet from './sidesheets/UdpTransactionAttachmentTypeSidesheet';\nimport { ConfigService } from '../../../configService';\n\nexport const REQUIRED_COLUMN_DEF_MAPPING = {\n  attachments: { displayName: 'Attachments' },\n  actions: { displayName: 'Actions' },\n  transactionId: { displayName: 'Transaction Id' },\n  createdOn: { displayName: 'Created On' },\n  currentStatusId: { displayName: 'Current Status' },\n  currentRevisionNo: { displayName: 'Revision No' },\n  lastEventTypeId: { displayName: 'Last Event Type' }\n};\n\nexport const REQUIRED_COLUMN_DEF_FIELDS = Object.keys(\n  REQUIRED_COLUMN_DEF_MAPPING\n);\n\nexport const DISABLE_ORDERING_FOR_FIELDS = ['attachments', 'actions'];\n\nconst PAGE_SIZE = 100;\n\nconst baseSearchPayload = {\n  pageNumber: 1,\n  pageSize: PAGE_SIZE,\n  filterElements: [],\n  filterGroups: [],\n  orderElements: [],\n  groupingType: '',\n  groupProperty: [],\n  groupOperationList: [],\n  eagerLoad: false,\n  logicalSearchOperator: 1\n};\n\nconst useStyles = makeStyles((theme) => ({\n  loadingBar: {\n    bottom: theme.spacing(-0.5),\n    marginLeft: theme.spacing(0.5),\n    marginRight: theme.spacing(0.5)\n  }\n}));\n\n/**\n * This function formats the 'Configuration' data into a specific format that can be\n * used by the external library jsonLogic. The formatted data is stored in the\n * udp.TransactionTypeConfiguration table in the ExpressionLogic column.\n */\nconst formatTransactionTypeConfigurationIntoExpressionLogic = (\n  configurationObj\n) => {\n  if (!configurationObj || typeof configurationObj !== 'object') {\n    return '';\n  }\n\n  const {\n    CurrentStatus,\n    CurrentDomainValue,\n    TenantUserRoleIds,\n    TenantUserRolesComparisonOperator\n  } = configurationObj;\n  const andConditions = [];\n\n  if (CurrentStatus) {\n    andConditions.push({\n      '==': [\n        { var: 'currentStatusId' },\n        // this check ensures that if the 'No Status' option is selected for the currentStatus, then\n        // the currentStatusId is stored in expressionLogic with a value of null\n        CurrentStatus?.transactionTypeStatusId === EMPTY_GUID\n          ? null\n          : CurrentStatus?.transactionTypeStatusId\n      ]\n    });\n  }\n\n  if (CurrentDomainValue && typeof CurrentDomainValue === 'object') {\n    Object.entries(CurrentDomainValue).forEach(([field, config]) => {\n      if (!field || !config) {\n        return;\n      }\n\n      const isConfigObject =\n        config && typeof config === 'object' && !Array.isArray(config);\n      const operator = isConfigObject ? config?.operator : null;\n      const comparisonValue = isConfigObject ? config?.value : config;\n      const effectiveOperator = operator || '==';\n      const operands =\n        effectiveOperator === '!' || effectiveOperator === '!!'\n          ? [{ var: `currentDomainValue.${field}` }]\n          : [{ var: `currentDomainValue.${field}` }, comparisonValue];\n\n      andConditions.push({\n        [effectiveOperator]: operands\n      });\n    });\n  }\n\n  if (Array.isArray(TenantUserRoleIds) && TenantUserRoleIds.length > 0) {\n    const tenantUserRolesOperator = TenantUserRolesComparisonOperator || 'some';\n    andConditions.push({\n      [tenantUserRolesOperator]: [\n        { var: 'tenantUserRoleIds' },\n        {\n          in: [{ var: '' }, TenantUserRoleIds]\n        }\n      ]\n    });\n  }\n\n  if (!andConditions.length) {\n    return '';\n  }\n\n  return {\n    and: andConditions\n  };\n};\n\nconst UdpTransactionTypesPage = () => {\n  // Hooks\n  const user = useUser();\n  const { t } = useTranslation();\n  const classes = useStyles();\n  const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n  const successAction = getSuccessAction(closeSnackbar);\n  // Grid Refs\n  const gridApiRef = useRef(null); // TransactionType grid\n  const ttsGridApiRef = useRef(null); // TransactionTypeStatus grid\n  const tttaGridApiRef = useRef(null); // TransactionTypeTransactionAction grid\n  const tuaGridApiRef = useRef(null); // TransactionUiAction grid\n  const ttcGridApiRef = useRef(null); // TransactionTypeConfiguration grid\n  const ttctaGridApiRef = useRef(null); // TransactionTypeConfigurationTransactionAction grid\n  const tatGridApiRef = useRef(null); // TransactionAttachmentType grid\n\n  // States\n  const [searchObject, setSearchObject] = useState(baseSearchPayload);\n  // TransactionType\n  const [selectedTransactionType, setSelectedTransactionType] = useState(null);\n  const [isTransactionTypeSideSheetOpen, setIsTransactionTypeSideSheetOpen] =\n    useState(false);\n  const [\n    isTransactionTypeSidesheetLoading,\n    setIsTransactionTypeSidesheetLoading\n  ] = useState(false);\n  const [\n    isDeleteTransactionTypeDialogOpen,\n    setIsDeleteTransactionTypeDialogOpen\n  ] = useState(false);\n  const [\n    isPageConfigurationSidesheetOpen,\n    setIsPageConfigurationSidesheetOpen\n  ] = useState(false);\n  const [\n    isCalendarViewConfigurationSidesheetOpen,\n    setIsCalendarViewConfigurationSidesheetOpen\n  ] = useState(false);\n  const [selectedDomainName, setSelectedDomainName] = useState('');\n  // TransactionTypeStatus\n  const [\n    isTransactionTypeStatusSidesheetOpen,\n    setIsTransactionTypeStatusSidesheetOpen\n  ] = useState(false);\n  const [\n    isDeleteTransactionTypeStatusDialogOpen,\n    setIsDeleteTransactionTypeStatusDialogOpen\n  ] = useState(false);\n  const [selectedTransactionTypeStatus, setSelectedTransactionTypeStatus] =\n    useState(null);\n  const [\n    isCreateOrEditTransactionTypeStatusSidesheetOpen,\n    setIsCreateOrEditTransactionTypeStatusSidesheetOpen\n  ] = useState(false);\n  const [ttstatuses, setTTStatuses] = useState([]);\n  // TransactionTypeTransactionAction\n  const [\n    isTransactionTypeTransactionActionSidesheetOpen,\n    setIsTransactionTypeTransactionActionSidesheetOpen\n  ] = useState(false);\n  const [\n    selectedTransactionTypeTransactionAction,\n    setSelectedTransactionTypeTransactionAction\n  ] = useState(null);\n  const [\n    isCreateOrEditTransactionTypeTransactionActionSidesheetOpen,\n    setIsCreateOrEditTransactionTypeTransactionActionSidesheetOpen\n  ] = useState(false);\n  const [\n    isDeleteTransactionTypeTransactionActionDialogOpen,\n    setIsDeleteTransactionTypeTransactionActionDialogOpen\n  ] = useState(false);\n  const [tttactions, setTTTActions] = useState([]);\n  // TransactionUiAction\n  const [\n    isTransactionUiActionSidesheetOpen,\n    setIsTransactionUiActionSidesheetOpen\n  ] = useState(false);\n  const [selectedTransactionUiAction, setSelectedTransactionUiAction] =\n    useState(null);\n  const [\n    isCreateOrEditTransactionUiActionSidesheetOpen,\n    setIsCreateOrEditTransactionUiActionSidesheetOpen\n  ] = useState(false);\n  const [\n    isDeleteTransactionUiActionDialogOpen,\n    setIsDeleteTransactionUiActionDialogOpen\n  ] = useState(false);\n  // TransactionTypeConfiguration\n  const [\n    isTransactionTypeConfigurationSidesheetOpen,\n    setIsTransactionTypeConfigurationSidesheetOpen\n  ] = useState(false);\n  const [\n    selectedTransactionTypeConfiguration,\n    setSelectedTransactionTypeConfiguration\n  ] = useState(null);\n  const [\n    isCreateOrEditTransactionTypeConfigurationSidesheetOpen,\n    setIsCreateOrEditTransactionTypeConfigurationSidesheetOpen\n  ] = useState(false);\n  const [\n    isDeleteTransactionTypeConfigurationDialogOpen,\n    setIsDeleteTransactionTypeConfigurationDialogOpen\n  ] = useState(false);\n  // TransactionTypeConfigurationTransactionAction\n  const [\n    isTransactionTypeConfigurationTransactionActionSidesheetOpen,\n    setIsTransactionTypeConfigurationTransactionActionSidesheetOpen\n  ] = useState(false);\n  const [\n    selectedTransactionTypeConfigurationTransactionAction,\n    setSelectedTransactionTypeConfigurationTransactionAction\n  ] = useState(null);\n  const [\n    isCreateOrEditTransactionTypeConfigurationTransactionActionSidesheetOpen,\n    setIsCreateOrEditTransactionTypeConfigurationTransactionActionSidesheetOpen\n  ] = useState(false);\n  const [\n    isDeleteTransactionTypeConfigurationTransactionActionDialogOpen,\n    setIsDeleteTransactionTypeConfigurationTransactionActionDialogOpen\n  ] = useState(false);\n  // TransactionAttachmentType\n  const [\n    isTransactionAttachmentTypeSidesheetOpen,\n    setIsTransactionAttachmentTypeSidesheetOpen\n  ] = useState(false);\n  const [\n    selectedTransactionAttachmentType,\n    setSelectedTransactionAttachmentType\n  ] = useState(null);\n  const [\n    isCreateOrEditTransactionAttachmentTypeSidesheetOpen,\n    setIsCreateOrEditTransactionAttachmentTypeSidesheetOpen\n  ] = useState(false);\n  const [\n    isDeleteTransactionAttachmentTypeDialogOpen,\n    setIsDeleteTransactionAttachmentTypeDialogOpen\n  ] = useState(false);\n\n  const hasDefaultAndCancelledTransactionTypeStatus = useCallback(\n    (\n      transactionTypeStatuses,\n      checkHasDefault = false,\n      checkHasCancelledStatus = false\n    ) => {\n      if (!transactionTypeStatuses) {\n        return false;\n      }\n      return transactionTypeStatuses?.some((record) => {\n        if (\n          record.transactionTypeStatusId !==\n          selectedTransactionTypeStatus?.transactionTypeStatusId\n        ) {\n          const isDefault = record?.isDefault;\n          const isCancelledStatus = record?.isCancelledStatus;\n          if (checkHasDefault && isDefault) return true;\n          if (checkHasCancelledStatus && isCancelledStatus) return true;\n        }\n        return false;\n      });\n    },\n    [selectedTransactionTypeStatus]\n  );\n\n  // API Calls\n  /** TransactionType */\n  const postCreateTransactionType = async (transactionType) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionType`,\n      {\n        method: 'POST'\n      },\n      {\n        data: transactionType\n      }\n    );\n  };\n\n  const putUpdateTransactionType = async (\n    transactionTypeId,\n    transactionType\n  ) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionType/${transactionTypeId}`,\n      {\n        method: 'PUT'\n      },\n      {\n        data: transactionType\n      }\n    );\n  };\n\n  const deleteTransactionType = async (transactionTypeId) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionType/${transactionTypeId}`,\n      {\n        method: 'DELETE'\n      }\n    );\n  };\n\n  const [\n    {\n      data: transactionsByTransactionTypeId,\n      loading: getTransactionsByTransactionIdLoading\n    },\n    fetchTransactionsByTransactionTypeId\n  ] = useAxiosGet(\n    ConfigService.productV1ApiUrl,\n    `UdpTransaction/search`,\n    {\n      method: 'post',\n      data: {\n        filterElements: [\n          {\n            searchField: 'TransactionTypeId',\n            searchOperator: '=',\n            searchValue: selectedTransactionType?.transactionTypeId,\n            groupId: 1\n          }\n        ],\n        getAll: true\n      }\n    },\n    !!!selectedTransactionType?.transactionTypeId ||\n      !!!isDeleteTransactionTypeDialogOpen,\n    false\n  );\n\n  /** TransactionTypeStatus */\n  const postCreateTransactionTypeStatus = async (transactionTypeStatus) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionTypeStatus`,\n      {\n        method: 'POST'\n      },\n      {\n        data: transactionTypeStatus\n      }\n    );\n  };\n\n  const putUpdateTransactionTypeStatus = async (\n    transactionTypeStatusId,\n    transactionTypeStatus\n  ) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionTypeStatus/${transactionTypeStatusId}`,\n      {\n        method: 'PUT'\n      },\n      {\n        data: transactionTypeStatus\n      }\n    );\n  };\n\n  const deleteTransactionTypeStatus = async (transactionTypeStatusId) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionTypeStatus/${transactionTypeStatusId}`,\n      {\n        method: 'DELETE'\n      }\n    );\n  };\n\n  const searchTransactionTypeStatusByTransactionTypeId = useCallback(\n    async (transactionTypeId) => {\n      const searchPayload = {\n        filterElements: [\n          {\n            searchField: 'TransactionTypeId',\n            searchOperator: '=',\n            searchValue: transactionTypeId,\n            groupId: 1\n          }\n        ],\n        getAll: true\n      };\n\n      return await apiMutate(\n        ConfigService.productV1ApiUrl,\n        `UdpTransactionTypeStatus/search`,\n        {\n          method: 'POST'\n        },\n        {\n          data: searchPayload\n        }\n      );\n    },\n    []\n  );\n\n  useEffect(() => {\n    if (!selectedTransactionType?.transactionTypeId) return;\n    const loadTTStatuses = async () => {\n      const ttsResponse = await searchTransactionTypeStatusByTransactionTypeId(\n        selectedTransactionType?.transactionTypeId\n      );\n      if (ttsResponse?.status === 200) {\n        setTTStatuses(ttsResponse.data?.pageList);\n      }\n    };\n    if (\n      isTransactionTypeStatusSidesheetOpen ||\n      isTransactionTypeConfigurationSidesheetOpen ||\n      isTransactionTypeTransactionActionSidesheetOpen\n    ) {\n      loadTTStatuses();\n    }\n  }, [\n    searchTransactionTypeStatusByTransactionTypeId,\n    //selectedTransactionType?.transactionTypeId, Leaving this out to prevent re-fetching when closing sidesheets\n    isTransactionTypeStatusSidesheetOpen,\n    isTransactionTypeConfigurationSidesheetOpen,\n    isTransactionTypeTransactionActionSidesheetOpen\n  ]);\n\n  /** TransactionAction */\n  const [{ data: transactionActions }] = useAxiosGet(\n    ConfigService.productV1ApiUrl,\n    `UdpTransactionAction`,\n    {\n      method: 'GET'\n    },\n    false,\n    false\n  );\n\n  /** ActionApis */\n  const [{ data: actionApis }] = useAxiosGet(\n    ConfigService.productV1ApiUrl,\n    `UdpTransactionWorkflowActionApi`,\n    {\n      method: 'GET'\n    },\n    false,\n    false\n  );\n\n  /** PageIds */\n  const [{ data: pages }] = useAxiosGet(\n    ConfigService.tenantV1ApiUrl,\n    `Page?tenantId=${user?.currentTenantId}`,\n    {\n      method: 'GET'\n    },\n    !!!user?.currentTenantId,\n    false\n  );\n\n  /** TransactionTypeTransactionAction */\n  const postCreateTransactionTypeTransactionAction = async (\n    transactionTypeTransactionAction\n  ) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionTypeTransactionAction`,\n      {\n        method: 'POST'\n      },\n      {\n        data: transactionTypeTransactionAction\n      }\n    );\n  };\n\n  const putUpdateTransactionTypeTransactionAction = async (\n    transactionTypeTransactionActionId,\n    transactionTypeTransactionAction\n  ) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionTypeTransactionAction/${transactionTypeTransactionActionId}`,\n      {\n        method: 'PUT'\n      },\n      {\n        data: transactionTypeTransactionAction\n      }\n    );\n  };\n\n  const deleteTransactionTypeTransactionAction = async (\n    transactionTypeTransactionActionId\n  ) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionTypeTransactionAction/${transactionTypeTransactionActionId}`,\n      {\n        method: 'DELETE'\n      }\n    );\n  };\n\n  const searchTransactionTypeTransactionActionByTransactionTypeId = useCallback(\n    async (transactionTypeId) => {\n      const searchPayload = {\n        filterElements: [\n          {\n            searchField: 'TransactionTypeId',\n            searchOperator: '=',\n            searchValue: transactionTypeId,\n            groupId: 1\n          }\n        ],\n        getAll: true\n      };\n\n      return await apiMutate(\n        ConfigService.productV1ApiUrl,\n        `UdpTransactionTypeTransactionAction/search`,\n        {\n          method: 'POST'\n        },\n        {\n          data: searchPayload\n        }\n      );\n    },\n    []\n  );\n\n  useEffect(() => {\n    if (!selectedTransactionType?.transactionTypeId) return;\n    const loadTTTActions = async () => {\n      const tttaResponse =\n        await searchTransactionTypeTransactionActionByTransactionTypeId(\n          selectedTransactionType?.transactionTypeId\n        );\n      if (tttaResponse?.status === 200) {\n        setTTTActions(tttaResponse.data?.pageList);\n      }\n    };\n    if (isTransactionTypeConfigurationTransactionActionSidesheetOpen) {\n      loadTTTActions();\n    }\n  }, [\n    searchTransactionTypeTransactionActionByTransactionTypeId,\n    isTransactionTypeConfigurationTransactionActionSidesheetOpen\n    //selectedTransactionType?.transactionTypeId, Leaving this out to prevent re-fetching when closing sidesheets\n  ]);\n\n  /** TransactionUiAction */\n  const postCreateTransactionUiAction = async (transactionUiAction) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionUiAction`,\n      {\n        method: 'POST'\n      },\n      {\n        data: transactionUiAction\n      }\n    );\n  };\n\n  const putUpdateTransactionUiAction = async (\n    transactionUiActionId,\n    transactionUiAction\n  ) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionUiAction/${transactionUiActionId}`,\n      {\n        method: 'PUT'\n      },\n      {\n        data: transactionUiAction\n      }\n    );\n  };\n\n  const deleteTransactionUiAction = async (transactionUiActionId) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionUiAction/${transactionUiActionId}`,\n      {\n        method: 'DELETE'\n      }\n    );\n  };\n\n  const [{ data: tUiActionsList }, fetchTUiActionsList] = useAxiosGet(\n    ConfigService.productV1ApiUrl,\n    `UdpTransactionUiAction/search`,\n    {\n      method: 'post',\n      data: {\n        filterElements: [\n          {\n            searchField: 'TransactionTypeId',\n            searchOperator: '=',\n            searchValue: selectedTransactionType?.transactionTypeId,\n            groupId: 1\n          }\n        ],\n        getAll: true\n      }\n    },\n    !!!isTransactionUiActionSidesheetOpen,\n    false\n  );\n\n  /** TransactionUiActionType */\n  const [{ data: transactionUiActionTypes }] = useAxiosGet(\n    ConfigService.productV1ApiUrl,\n    `UdpTransactionUiActionType`,\n    {\n      method: 'GET'\n    },\n    false,\n    false\n  );\n\n  /** TransactionTypeConfiguration */\n  const postCreateTransactionTypeConfiguration = async (\n    transactionTypeConfiguration\n  ) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionTypeConfiguration`,\n      {\n        method: 'POST'\n      },\n      {\n        data: transactionTypeConfiguration\n      }\n    );\n  };\n\n  const putUpdateTransactionTypeConfiguration = async (\n    transactionTypeConfigurationId,\n    transactionTypeConfiguration\n  ) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionTypeConfiguration/${transactionTypeConfigurationId}`,\n      {\n        method: 'PUT'\n      },\n      {\n        data: transactionTypeConfiguration\n      }\n    );\n  };\n\n  const deleteTransactionTypeConfiguration = async (\n    transactionTypeConfigurationId\n  ) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionTypeConfiguration/${transactionTypeConfigurationId}`,\n      {\n        method: 'DELETE'\n      }\n    );\n  };\n\n  /** TransactionRuleType */\n  const [{ data: transactionRuleTypes }] = useAxiosGet(\n    ConfigService.productV1ApiUrl,\n    `UdpTransactionRuleType`,\n    {\n      method: 'GET'\n    },\n    false,\n    false\n  );\n\n  /** Roles */\n  const [{ data: roles }] = useAxiosGet(\n    ConfigService.tenantV1ApiUrl,\n    `Roles?tenantId=${user?.currentTenantId}`,\n    {\n      method: 'GET'\n    },\n    !!!user?.currentTenantId,\n    false\n  );\n\n  /** TransactionTypeConfigurationTransactionAction */\n  const postCreateTransactionTypeConfigurationTransactionAction = async (\n    ttcta\n  ) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionTypeConfigurationTransactionAction/createBulk`,\n      {\n        method: 'POST'\n      },\n      {\n        data: ttcta\n      }\n    );\n  };\n\n  const putUpdateTransactionTypeConfigurationTransactionAction = async (\n    transactionTypeConfigurationId,\n    transactionTypeTransactionActionId,\n    transactionTypeConfigurationTransactionAction\n  ) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionTypeConfigurationTransactionAction/${transactionTypeConfigurationId}/${transactionTypeTransactionActionId}`,\n      {\n        method: 'PUT'\n      },\n      {\n        data: transactionTypeConfigurationTransactionAction\n      }\n    );\n  };\n\n  const deleteTransactionTypeConfigurationTransactionAction = async (\n    transactionTypeConfigurationId,\n    transactionTypeTransactionActionId\n  ) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionTypeConfigurationTransactionAction/${transactionTypeConfigurationId}/${transactionTypeTransactionActionId}`,\n      {\n        method: 'DELETE'\n      }\n    );\n  };\n\n  const [{ data: ttctaList }, fetchTtctaList] = useAxiosGet(\n    ConfigService.productV1ApiUrl,\n    `UdpTransactionTypeConfigurationTransactionAction/search`,\n    {\n      method: 'post',\n      data: {\n        filterElements: [\n          {\n            searchField: 'TransactionTypeConfigurationId',\n            searchOperator: '=',\n            searchValue:\n              selectedTransactionTypeConfiguration?.transactionTypeConfigurationId,\n            groupId: 1\n          }\n        ],\n        getAll: true\n      }\n    },\n    !!!selectedTransactionTypeConfiguration?.transactionTypeConfigurationId,\n    false\n  );\n\n  /** TransactionAttachmenType */\n  const postCreateTransactionAttachmentType = async (\n    transactionAttachmentType\n  ) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionAttachmentType`,\n      {\n        method: 'POST'\n      },\n      {\n        data: transactionAttachmentType\n      }\n    );\n  };\n\n  const putUpdateTransactionAttachmentType = async (\n    transactionAttachmentTypeId,\n    transactionAttachmentType\n  ) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionAttachmentType/${transactionAttachmentTypeId}`,\n      {\n        method: 'PUT'\n      },\n      {\n        data: transactionAttachmentType\n      }\n    );\n  };\n\n  const deleteTransactionAttachmentType = async (\n    transactionAttachmentTypeId\n  ) => {\n    return await apiMutate(\n      ConfigService.productV1ApiUrl,\n      `UdpTransactionAttachmentType/${transactionAttachmentTypeId}`,\n      {\n        method: 'DELETE'\n      }\n    );\n  };\n\n  const currentApiCatalogId = useCatalogStore(\n    (state) => state.currentApiCatalogId\n  );\n\n  const [{ data: catalogObjectNames }] = useAxiosGet(\n    ConfigService.integrationV2ApiUrl,\n    `apiCatalog/${currentApiCatalogId}/catalogObjectNames?modelsOnly=true`,\n    {},\n    !!!currentApiCatalogId,\n    false\n  );\n\n  const domainName = selectedDomainName || selectedTransactionType?.domainName;\n\n  const [{ data: catalogObject }] = useAxiosGet(\n    ConfigService.integrationV2ApiUrl,\n    `apiCatalog/${currentApiCatalogId}/catalogObject/${domainName}`,\n    {},\n    !!!currentApiCatalogId || !!!domainName,\n    false\n  );\n\n  // Get the list of properties for the selected domain name (i.e. catalogObjectName)\n  const catalogObjectProperties = useMemo(() => {\n    if (!selectedDomainName || !catalogObject?.properties) return [];\n    return catalogObject.properties\n      .filter(\n        (property) =>\n          !BUSINESS_OBJECT_KEY_PROPERTIES.includes(property.name) &&\n          property.name !== null\n      )\n      .map((property) => property.name);\n  }, [catalogObject, selectedDomainName]);\n\n  const catalogObjectDateProperties = useMemo(() => {\n    if (!selectedDomainName || !catalogObject?.properties) return [];\n    return catalogObject.properties\n      .filter(\n        (property) =>\n          !BUSINESS_OBJECT_KEY_PROPERTIES.includes(property.name) &&\n          property.name !== null &&\n          property.type === PropertyTypeEnum.DateTime\n      )\n      .map((property) => property.name);\n  }, [catalogObject, selectedDomainName]);\n\n  /** Sidesheet handlers */\n  const handleSideSheet = useCallback((isOpen, transactionType) => {\n    setIsTransactionTypeSideSheetOpen(isOpen);\n    setSelectedTransactionType(transactionType);\n  }, []);\n\n  const handleTransactionTypeStatusSideSheet = useCallback(\n    (isOpen, transactionType) => {\n      setIsTransactionTypeStatusSidesheetOpen(isOpen);\n      setSelectedTransactionType(transactionType);\n    },\n    []\n  );\n\n  const handleCreateOrEditTransactionTypeStatusSideSheet = useCallback(\n    (isOpen, transactionTypeStatus) => {\n      setIsCreateOrEditTransactionTypeStatusSidesheetOpen(isOpen);\n      setSelectedTransactionTypeStatus(transactionTypeStatus);\n    },\n    []\n  );\n\n  const handleTransactionTypeTransactionActionSidesheet = useCallback(\n    (isOpen, transactionType) => {\n      setIsTransactionTypeTransactionActionSidesheetOpen(isOpen);\n      setSelectedTransactionType(transactionType);\n    },\n    []\n  );\n\n  const handleCreateOrEditTransactionTypeTransactionActionSidesheet =\n    useCallback((isOpen, transactionTypeTransactionAction) => {\n      setIsCreateOrEditTransactionTypeTransactionActionSidesheetOpen(isOpen);\n      setSelectedTransactionTypeTransactionAction(\n        transactionTypeTransactionAction\n      );\n    }, []);\n\n  const handleTransactionUiActionSidesheet = useCallback(\n    (isOpen, transactionType) => {\n      setIsTransactionUiActionSidesheetOpen(isOpen);\n      setSelectedTransactionType(transactionType);\n    },\n    []\n  );\n\n  const handleCreateOrEditTransactionUiActionSidesheet = useCallback(\n    (isOpen, transactionUiAction) => {\n      setIsCreateOrEditTransactionUiActionSidesheetOpen(isOpen);\n      setSelectedTransactionUiAction(transactionUiAction);\n    },\n    []\n  );\n\n  const handleTransactionTypeConfigurationSidesheet = useCallback(\n    (isOpen, transactionType) => {\n      setIsTransactionTypeConfigurationSidesheetOpen(isOpen);\n      setSelectedTransactionType(transactionType);\n    },\n    []\n  );\n\n  const handleCreateOrEditTransactionTypeConfigurationSidesheet = useCallback(\n    (isOpen, transactionTypeConfiguration) => {\n      setIsCreateOrEditTransactionTypeConfigurationSidesheetOpen(isOpen);\n      setSelectedTransactionTypeConfiguration(transactionTypeConfiguration);\n    },\n    []\n  );\n\n  const handleTransactionTypeConfigurationTransactionActionSidesheet =\n    useCallback((isOpen, transactionTypeConfiguration) => {\n      setIsTransactionTypeConfigurationTransactionActionSidesheetOpen(isOpen);\n      setSelectedTransactionTypeConfiguration(transactionTypeConfiguration);\n    }, []);\n\n  const handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet =\n    useCallback((isOpen, transactionTypeConfigurationTransactionAction) => {\n      setIsCreateOrEditTransactionTypeConfigurationTransactionActionSidesheetOpen(\n        isOpen\n      );\n      setSelectedTransactionTypeConfigurationTransactionAction(\n        transactionTypeConfigurationTransactionAction\n      );\n    }, []);\n\n  const handleTransactionAttachmentTypeSidesheet = useCallback(\n    (isOpen, transactionType) => {\n      setIsTransactionAttachmentTypeSidesheetOpen(isOpen);\n      setSelectedTransactionType(transactionType);\n    },\n    []\n  );\n\n  const handleCreateOrEditTransactionAttachmentTypeSidesheet = useCallback(\n    (isOpen, transactionAttachmentType) => {\n      setIsCreateOrEditTransactionAttachmentTypeSidesheetOpen(isOpen);\n      setSelectedTransactionAttachmentType(transactionAttachmentType);\n    },\n    []\n  );\n\n  // API call handlers\n  /** TransactionType */\n  const handleCreateTransactionType = useCallback(\n    async (formValues) => {\n      const { domainFields, ...restValues } = formValues;\n\n      const { pageConfigurationColumnDefsDict, domainFieldsDict } = (\n        Array.isArray(domainFields) ? domainFields : []\n      ).reduce(\n        (accumulator, entry) => {\n          if (!entry || !entry[0]) {\n            return accumulator;\n          }\n\n          const field = entry[0];\n          let fieldKey = field;\n          // Add a prefix, _UdpBusinessDomain_, to the non-custom, non-required/Transaction domain fields, e.g. ones that were selected from catalogObjectProperties\n          // Excludes the requred Transaction fields to prevent prefixing them with _UdpBusinessDomain_\n          if (!REQUIRED_COLUMN_DEF_FIELDS.includes(field) && catalogObjectProperties.includes(fieldKey)) {\n            fieldKey = `${UdpSearchEnums.UdpBusinessDomainPrefix}_${fieldKey}`;\n          }\n          const config = entry[1] || {};\n\n          const displayName = config.displayName || field;\n          const order = config.order || 0;\n          const hide = config.hide || false;\n\n          // Always add to the PageConfiguration\n          accumulator.pageConfigurationColumnDefsDict[fieldKey] = {\n            displayName,\n            order,\n            hide\n          };\n\n          // Conditionally add to DomainFields (excludes the required Transaction/Additional fields)\n          if (!REQUIRED_COLUMN_DEF_FIELDS.includes(field)) {\n            accumulator.domainFieldsDict[field] = {\n              displayName,\n              order,\n              hide\n            };\n          }\n\n          return accumulator;\n        },\n        { pageConfigurationColumnDefsDict: {}, domainFieldsDict: {} }\n      );\n\n      const pageConfiguration = {\n        gridTitle: restValues?.pageConfiguration?.gridTitle || '',\n        createTransactionButtonLabel:\n          restValues?.pageConfiguration?.createTransactionButtonLabel || '',\n        hideCreateTransaction: restValues?.pageConfiguration?.hideCreateTransaction,\n        paginationAutoPageSize: restValues?.pageConfiguration?.paginationAutoPageSize,\n        hideSaveChanges: restValues?.pageConfiguration?.hideSaveChanges,\n        columnDefProperties: pageConfigurationColumnDefsDict,\n        calendarViewConfiguration: {\n          enabled: !!restValues?.pageConfiguration?.calendarViewConfiguration?.enabled,\n          isDefaultView:\n            !!restValues?.pageConfiguration?.calendarViewConfiguration?.enabled && !!restValues?.pageConfiguration?.calendarViewConfiguration?.isDefaultView,\n          defaultCalendarViewType:\n            restValues?.pageConfiguration?.calendarViewConfiguration?.defaultCalendarViewType || '',\n          domainStartDateProperty:\n            restValues?.pageConfiguration?.calendarViewConfiguration?.domainStartDateProperty || '',\n          domainEndDateProperty: restValues?.pageConfiguration?.calendarViewConfiguration?.domainEndDateProperty || '',\n          domainPropertyToDisplay:\n            restValues?.pageConfiguration?.calendarViewConfiguration?.domainPropertyToDisplay || ''\n        }\n      };\n\n      const newTransactionType = {\n        ...restValues,\n        domainFields: domainFieldsDict,\n        pageConfiguration: pageConfiguration\n      };\n\n      try {\n        const response = await postCreateTransactionType(newTransactionType);\n        if (response?.status === 201) {\n          enqueueSnackbar(t('transactionTypes.page.snackbars.typeCreated', { defaultValue: 'TransactionType created successfully' }), {\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            },\n            action: successAction\n          });\n        }\n        handleSideSheet(false);\n        setSelectedDomainName('');\n        gridApiRef.current?.refreshServerSide();\n      } catch (err) {\n        enqueueSnackbar(\n          typeof err.response.data === 'object'\n            ? err.response.data.title\n            : err.response.data,\n          {\n            variant: 'error',\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            }\n          }\n        );\n      }\n    },\n    [\n      catalogObjectProperties,\n      enqueueSnackbar,\n      handleSideSheet,\n      successAction,\n      t\n    ]\n  );\n\n  const handleUpdateTransactionType = useCallback(\n    async (formValues, initialValues) => {\n      const { domainFields, ...restValues } = formValues;\n      const transactionTypeId = initialValues.transactionTypeId;\n\n      const { pageConfigurationColumnDefsDict, domainFieldsDict } = (\n        Array.isArray(domainFields) ? domainFields : []\n      ).reduce(\n        (accumulator, entry) => {\n          if (!entry || !entry[0]) {\n            return accumulator;\n          }\n\n          const field = entry[0];\n          let fieldKey = field;\n          // Add a prefix, _UdpBusinessDomain_, to the non-custom, non-required/Transaction domain fields, e.g. ones that were selected from catalogObjectProperties\n          // Excludes the requred Transaction fields to prevent prefixing them with _UdpBusinessDomain_\n          if (!REQUIRED_COLUMN_DEF_FIELDS.includes(field) && catalogObjectProperties.includes(fieldKey)) {\n            fieldKey = `${UdpSearchEnums.UdpBusinessDomainPrefix}_${fieldKey}`;\n          }\n          const config = entry[1] || {};\n\n          const displayName = config.displayName || field;\n          const order = config.order || 0;\n          const hide = config.hide || false;\n\n          // Always add to the PageConfiguration\n          accumulator.pageConfigurationColumnDefsDict[fieldKey] = {\n            displayName,\n            order,\n            hide\n          };\n\n          // Conditionally add to DomainFields (excludes the required Transaction fields)\n          if (!REQUIRED_COLUMN_DEF_FIELDS.includes(field)) {\n            accumulator.domainFieldsDict[field] = {\n              displayName,\n              order,\n              hide\n            };\n          }\n\n          return accumulator;\n        },\n        { pageConfigurationColumnDefsDict: {}, domainFieldsDict: {} }\n      );\n\n      const pageConfiguration = {\n        gridTitle: restValues?.pageConfiguration?.gridTitle || '',\n        createTransactionButtonLabel:\n          restValues?.pageConfiguration?.createTransactionButtonLabel || '',\n        hideCreateTransaction: restValues?.pageConfiguration?.hideCreateTransaction,\n        paginationAutoPageSize: restValues?.pageConfiguration?.paginationAutoPageSize,\n        hideSaveChanges: restValues?.pageConfiguration?.hideSaveChanges,\n        columnDefProperties: pageConfigurationColumnDefsDict,\n        calendarViewConfiguration: {\n          enabled: !!restValues?.pageConfiguration?.calendarViewConfiguration?.enabled,\n          isDefaultView:\n            !!restValues?.pageConfiguration?.calendarViewConfiguration?.enabled && !!restValues?.pageConfiguration?.calendarViewConfiguration?.isDefaultView,\n          defaultCalendarViewType:\n            restValues?.pageConfiguration?.calendarViewConfiguration?.defaultCalendarViewType || '',\n          domainStartDateProperty:\n            restValues?.pageConfiguration?.calendarViewConfiguration?.domainStartDateProperty || '',\n          domainEndDateProperty: restValues?.pageConfiguration?.calendarViewConfiguration?.domainEndDateProperty || '',\n          domainPropertyToDisplay:\n            restValues?.pageConfiguration?.calendarViewConfiguration?.domainPropertyToDisplay || ''\n        }\n      };\n\n      const updatedTransactionType = {\n        ...initialValues,\n        ...formValues,\n        domainFields: domainFieldsDict,\n        pageConfiguration: pageConfiguration\n      };\n\n      try {\n        const response = await putUpdateTransactionType(\n          transactionTypeId,\n          updatedTransactionType\n        );\n        if (response.status === 204) {\n          enqueueSnackbar(t('transactionTypes.page.snackbars.typeUpdated', { defaultValue: 'TransactionType updated successfully' }), {\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            },\n            action: successAction\n          });\n        }\n        handleSideSheet(false);\n        setSelectedDomainName('');\n        gridApiRef.current?.refreshServerSide();\n      } catch (err) {\n        enqueueSnackbar(\n          typeof err.response.data === 'object'\n            ? err.response.data.title\n            : err.response.data,\n          {\n            variant: 'error',\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            }\n          }\n        );\n      }\n    },\n    [\n      catalogObjectProperties,\n      enqueueSnackbar,\n      handleSideSheet,\n      successAction,\n      t\n    ]\n  );\n\n  const handleDeleteTransactionType = useCallback(async () => {\n    if (!selectedTransactionType) return;\n\n    setIsTransactionTypeSidesheetLoading(true);\n    const transactionTypeId = selectedTransactionType.transactionTypeId;\n\n    try {\n      const response = await deleteTransactionType(transactionTypeId);\n      if (response.status === 204) {\n        enqueueSnackbar(t('transactionTypes.page.snackbars.typeDeleted', { defaultValue: 'TransactionType deleted successfully' }), {\n          anchorOrigin: {\n            vertical: 'top',\n            horizontal: 'center'\n          },\n          action: successAction\n        });\n      }\n      setIsDeleteTransactionTypeDialogOpen(false);\n      gridApiRef.current?.refreshServerSide();\n    } catch (err) {\n      enqueueSnackbar(\n        typeof err.response.data === 'object'\n          ? err.response.data.title\n          : err.response.data,\n        {\n          variant: 'error',\n          anchorOrigin: {\n            vertical: 'top',\n            horizontal: 'center'\n          }\n        }\n      );\n    } finally {\n      setIsTransactionTypeSidesheetLoading(false);\n    }\n  }, [\n    enqueueSnackbar,\n    selectedTransactionType,\n    successAction,\n    t,\n    setIsTransactionTypeSidesheetLoading,\n    setIsDeleteTransactionTypeDialogOpen\n  ]);\n  /** end of TransactionType */\n\n  /** TransactionTypeStatus */\n  const handleCreateTransactionTypeStatus = useCallback(\n    async (formValues) => {\n      const newTransactionTypeStatus = {\n        ...formValues,\n        transactionTypeId: selectedTransactionType?.transactionTypeId,\n        color: formValues?.color?.value || null\n      };\n      let hasDefaultOrCancelledStatus = false;\n\n      try {\n        const isCreatingDefaultStatus = formValues?.isDefault === true;\n        const isCreatingCancelledStatus =\n          formValues?.isCancelledStatus === true;\n        if (isCreatingDefaultStatus || isCreatingCancelledStatus) {\n          const searchTransactionTypeStatusResponse =\n            await searchTransactionTypeStatusByTransactionTypeId(\n              selectedTransactionType?.transactionTypeId\n            );\n          if (searchTransactionTypeStatusResponse?.status !== 200) {\n            enqueueSnackbar(\n              t('transactionTypes.page.snackbars.statusValidationFailed', {\n                defaultValue:\n                  'Unable to validate existing TransactionTypeStatus records. Please try again.'\n              }),\n              {\n                variant: 'error',\n                anchorOrigin: {\n                  vertical: 'top',\n                  horizontal: 'center'\n                }\n              }\n            );\n            return;\n          }\n          hasDefaultOrCancelledStatus =\n            hasDefaultAndCancelledTransactionTypeStatus(\n              searchTransactionTypeStatusResponse?.data?.pageList,\n              isCreatingDefaultStatus,\n              isCreatingCancelledStatus\n            );\n        }\n\n        if (\n          (isCreatingDefaultStatus || isCreatingCancelledStatus) &&\n          hasDefaultOrCancelledStatus\n        ) {\n          let statusConflictMessage = '';\n          if (isCreatingDefaultStatus) {\n            statusConflictMessage = t(\n              'transactionTypes.page.snackbars.statusConflictDefault',\n              {\n                defaultValue:\n                  'There is already a TransactionTypeStatus for this TransactionType that has IsDefault set to true.'\n              }\n            );\n          } else if (isCreatingCancelledStatus) {\n            statusConflictMessage = t(\n              'transactionTypes.page.snackbars.statusConflictCancelled',\n              {\n                defaultValue:\n                  'There is already a TransactionTypeStatus for this TransactionType that has IsCancelledStatus set to true.'\n              }\n            );\n          }\n          enqueueSnackbar(statusConflictMessage, {\n            variant: 'error',\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            }\n          });\n          return;\n        }\n        const response = await postCreateTransactionTypeStatus(\n          newTransactionTypeStatus\n        );\n        if (response?.status === 201) {\n          enqueueSnackbar(t('transactionTypes.page.snackbars.statusCreated', { defaultValue: 'TransactionTypeStatus created successfully' }), {\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            },\n            action: successAction\n          });\n        }\n        handleCreateOrEditTransactionTypeStatusSideSheet(false);\n        ttsGridApiRef.current?.refreshServerSide();\n      } catch (err) {\n        enqueueSnackbar(\n          typeof err.response?.data === 'object'\n            ? err.response.data.title\n            : err.response.data,\n          {\n            variant: 'error',\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            }\n          }\n        );\n      }\n    },\n    [\n      enqueueSnackbar,\n      ttsGridApiRef,\n      handleCreateOrEditTransactionTypeStatusSideSheet,\n      successAction,\n      t,\n      selectedTransactionType,\n      searchTransactionTypeStatusByTransactionTypeId,\n      hasDefaultAndCancelledTransactionTypeStatus\n    ]\n  );\n\n  const handleUpdateTransactionTypeStatus = useCallback(\n    async (formValues, initialValues) => {\n      const transactionTypeStatusId = initialValues.transactionTypeStatusId;\n      const updatedTransactionTypeStatus = {\n        ...initialValues,\n        ...formValues,\n        color: formValues?.color?.value || null\n      };\n      let hasExistingDefaultOrCancelledStatus = false;\n\n      try {\n        const isEditingDefaultStatus = formValues?.isDefault === true;\n        const isEditingCancelledStatus = formValues?.isCancelledStatus === true;\n        if (isEditingDefaultStatus || isEditingCancelledStatus) {\n          const searchTransactionTypeStatusResponse =\n            await searchTransactionTypeStatusByTransactionTypeId(\n              selectedTransactionType?.transactionTypeId\n            );\n          if (searchTransactionTypeStatusResponse?.status !== 200) {\n            enqueueSnackbar(\n              t('transactionTypes.page.snackbars.statusValidationFailed', {\n                defaultValue:\n                  'Unable to validate existing TransactionTypeStatus records. Please try again.'\n              }),\n              {\n                variant: 'error',\n                anchorOrigin: {\n                  vertical: 'top',\n                  horizontal: 'center'\n                }\n              }\n            );\n            return;\n          }\n          hasExistingDefaultOrCancelledStatus =\n            hasDefaultAndCancelledTransactionTypeStatus(\n              searchTransactionTypeStatusResponse?.data?.pageList,\n              isEditingDefaultStatus,\n              isEditingCancelledStatus\n            );\n        }\n\n        if (\n          (isEditingDefaultStatus || isEditingCancelledStatus) &&\n          hasExistingDefaultOrCancelledStatus\n        ) {\n          enqueueSnackbar(\n            isEditingDefaultStatus\n              ? isEditingCancelledStatus\n                ? t('transactionTypes.page.snackbars.statusConflictBoth', {\n                    defaultValue:\n                      'There is already a TransactionTypeStatus for this TransactionType that has IsDefault and/or IsCancelledStatus set to true.'\n                  })\n                : t('transactionTypes.page.snackbars.statusConflictDefault', {\n                    defaultValue:\n                      'There is already a TransactionTypeStatus for this TransactionType that has IsDefault set to true.'\n                  })\n              : t('transactionTypes.page.snackbars.statusConflictCancelled', {\n                  defaultValue:\n                    'There is already a TransactionTypeStatus for this TransactionType that has IsCancelledStatus set to true.'\n                }),\n            {\n              variant: 'error',\n              anchorOrigin: {\n                vertical: 'top',\n                horizontal: 'center'\n              }\n            }\n          );\n          return;\n        }\n        const response = await putUpdateTransactionTypeStatus(\n          transactionTypeStatusId,\n          updatedTransactionTypeStatus\n        );\n        if (response.status === 204) {\n          enqueueSnackbar(t('transactionTypes.page.snackbars.statusUpdated', { defaultValue: 'TransactionTypeStatus updated successfully' }), {\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            },\n            action: successAction\n          });\n        }\n        handleCreateOrEditTransactionTypeStatusSideSheet(false);\n        ttsGridApiRef.current?.refreshServerSide();\n      } catch (err) {\n        enqueueSnackbar(\n          typeof err.response?.data === 'object'\n            ? err.response.data.title\n            : err.response.data,\n          {\n            variant: 'error',\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            }\n          }\n        );\n      }\n    },\n    [\n      enqueueSnackbar,\n      ttsGridApiRef,\n      handleCreateOrEditTransactionTypeStatusSideSheet,\n      successAction,\n      t,\n      searchTransactionTypeStatusByTransactionTypeId,\n      hasDefaultAndCancelledTransactionTypeStatus,\n      selectedTransactionType\n    ]\n  );\n\n  const handleDeleteTransactionTypeStatus = useCallback(async () => {\n    if (!selectedTransactionTypeStatus) return;\n\n    const transactionTypeStatusId =\n      selectedTransactionTypeStatus.transactionTypeStatusId;\n\n    try {\n      const response = await deleteTransactionTypeStatus(\n        transactionTypeStatusId\n      );\n      if (response.status === 204) {\n        enqueueSnackbar(t('transactionTypes.page.snackbars.statusDeleted', { defaultValue: 'TransactionTypeStatus deleted successfully' }), {\n          anchorOrigin: {\n            vertical: 'top',\n            horizontal: 'center'\n          },\n          action: successAction\n        });\n      }\n      setIsDeleteTransactionTypeStatusDialogOpen(false);\n      ttsGridApiRef.current?.refreshServerSide();\n    } catch (err) {\n      enqueueSnackbar(\n        typeof err.response.data === 'object'\n          ? err.response.data.title\n          : err.response.data,\n        {\n          variant: 'error',\n          anchorOrigin: {\n            vertical: 'top',\n            horizontal: 'center'\n          }\n        }\n      );\n    }\n  }, [\n    enqueueSnackbar,\n    selectedTransactionTypeStatus,\n    successAction,\n    t,\n    ttsGridApiRef,\n    setIsDeleteTransactionTypeStatusDialogOpen\n  ]);\n  /** end of TransactionTypeStatus */\n\n  /** TransactionTypeTransactionAction */\n  const handleCreateTransactionTypeTransactionAction = useCallback(\n    async (formValues) => {\n      const {\n        transactionAction,\n        toStatus,\n        actionApiId,\n        pageId,\n        mandatoryFields,\n        hiddenFields,\n        disabledFields,\n        domainDataToUpdate,\n        ...restValues\n      } = formValues || {};\n\n      const domainDataDictionary = (\n        Array.isArray(domainDataToUpdate) ? domainDataToUpdate : []\n      ).reduce((accumulator, entry) => {\n        if (!entry) {\n          return accumulator;\n        }\n\n        const [field, value] = entry;\n        if (field) {\n          accumulator[field] = value;\n        }\n\n        return accumulator;\n      }, {});\n\n      const newTransactionTypeTransactionAction = {\n        ...restValues,\n        transactionTypeId: selectedTransactionType?.transactionTypeId,\n        transactionActionId: transactionAction?.transactionActionId,\n        parameters: {\n          ToStatus: toStatus?.transactionTypeStatusId,\n          DomainDataToUpdate: domainDataDictionary,\n          MandatoryFields: Array.isArray(mandatoryFields)\n            ? mandatoryFields\n            : [],\n          HiddenFields: Array.isArray(hiddenFields) ? hiddenFields : [],\n          DisabledFields: Array.isArray(disabledFields) ? disabledFields : [],\n          ActionApiId: actionApiId?.actionApiId || '',\n          PageId: pageId?.pageId || ''\n        }\n      };\n\n      try {\n        const response = await postCreateTransactionTypeTransactionAction(\n          newTransactionTypeTransactionAction\n        );\n        if (response?.status === 201) {\n          enqueueSnackbar(\n            t('transactionTypes.page.snackbars.actionCreated', {\n              defaultValue: 'TransactionTypeTransactionAction created successfully'\n            }),\n            {\n              anchorOrigin: {\n                vertical: 'top',\n                horizontal: 'center'\n              },\n              action: successAction\n            }\n          );\n        }\n        handleCreateOrEditTransactionTypeTransactionActionSidesheet(false);\n        tttaGridApiRef.current?.refreshServerSide();\n      } catch (err) {\n        enqueueSnackbar(\n          typeof err.response.data === 'object'\n            ? err.response.data.title\n            : err.response.data,\n          {\n            variant: 'error',\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            }\n          }\n        );\n      }\n    },\n    [\n      enqueueSnackbar,\n      tttaGridApiRef,\n      handleCreateOrEditTransactionTypeTransactionActionSidesheet,\n      successAction,\n      t,\n      selectedTransactionType\n    ]\n  );\n\n  const handleUpdateTransactionTypeTransactionAction = useCallback(\n    async (formValues, initialValues) => {\n      const {\n        transactionAction,\n        toStatus,\n        actionApiId,\n        pageId,\n        mandatoryFields,\n        hiddenFields,\n        disabledFields,\n        domainDataToUpdate\n      } = formValues || {};\n\n      const transactionTypeTransactionActionId =\n        initialValues.transactionTypeTransactionActionId;\n      // Process the domainDataToUpdate array form data into an object\n      const domainDataDictionary = (\n        Array.isArray(domainDataToUpdate) ? domainDataToUpdate : []\n      ).reduce((accumulator, entry) => {\n        if (!entry) {\n          return accumulator;\n        }\n\n        const [field, value] = entry;\n        if (field) {\n          accumulator[field] = value;\n        }\n\n        return accumulator;\n      }, {});\n\n      const updatedTransactionTypeTransactionAction = {\n        ...initialValues,\n        name: formValues?.name || '',\n        description: formValues?.description || '',\n        icon: formValues?.icon || '',\n        transactionTypeTransactionActionId: transactionTypeTransactionActionId,\n        transactionTypeId: selectedTransactionType?.transactionTypeId,\n        transactionActionId: transactionAction?.transactionActionId,\n        parameters: {\n          ToStatus: toStatus?.transactionTypeStatusId,\n          DomainDataToUpdate: domainDataDictionary,\n          MandatoryFields: Array.isArray(mandatoryFields)\n            ? mandatoryFields\n            : [],\n          HiddenFields: Array.isArray(hiddenFields) ? hiddenFields : [],\n          DisabledFields: Array.isArray(disabledFields) ? disabledFields : [],\n          ActionApiId: actionApiId?.actionApiId || '',\n          PageId: pageId?.pageId || ''\n        }\n      };\n\n      try {\n        const response = await putUpdateTransactionTypeTransactionAction(\n          transactionTypeTransactionActionId,\n          updatedTransactionTypeTransactionAction\n        );\n        if (response.status === 204) {\n          enqueueSnackbar(\n            t('transactionTypes.page.snackbars.actionUpdated', {\n              defaultValue: 'TransactionTypeTransactionAction updated successfully'\n            }),\n            {\n              anchorOrigin: {\n                vertical: 'top',\n                horizontal: 'center'\n              },\n              action: successAction\n            }\n          );\n        }\n        handleCreateOrEditTransactionTypeTransactionActionSidesheet(false);\n        tttaGridApiRef.current?.refreshServerSide();\n      } catch (err) {\n        enqueueSnackbar(\n          typeof err.response.data === 'object'\n            ? err.response.data.title\n            : err.response.data,\n          {\n            variant: 'error',\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            }\n          }\n        );\n      }\n    },\n    [\n      enqueueSnackbar,\n      tttaGridApiRef,\n      handleCreateOrEditTransactionTypeTransactionActionSidesheet,\n      successAction,\n      t,\n      selectedTransactionType\n    ]\n  );\n\n  const handleDeleteTransactionTypeTransactionAction = useCallback(async () => {\n    if (!selectedTransactionTypeTransactionAction) return;\n\n    const transactionTypeTransactionActionId =\n      selectedTransactionTypeTransactionAction.transactionTypeTransactionActionId;\n\n    try {\n      const response = await deleteTransactionTypeTransactionAction(\n        transactionTypeTransactionActionId\n      );\n      if (response.status === 204) {\n        enqueueSnackbar(\n          t('transactionTypes.page.snackbars.actionDeleted', {\n            defaultValue: 'TransactionTypeTransactionAction deleted successfully'\n          }),\n          {\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            },\n            action: successAction\n          }\n        );\n      }\n      setIsDeleteTransactionTypeTransactionActionDialogOpen(false);\n      tttaGridApiRef.current?.refreshServerSide();\n    } catch (err) {\n      enqueueSnackbar(\n        typeof err.response.data === 'object'\n          ? err.response.data.title\n          : err.response.data,\n        {\n          variant: 'error',\n          anchorOrigin: {\n            vertical: 'top',\n            horizontal: 'center'\n          }\n        }\n      );\n    }\n  }, [\n    enqueueSnackbar,\n    selectedTransactionTypeTransactionAction,\n    successAction,\n    t,\n    setIsDeleteTransactionTypeTransactionActionDialogOpen\n  ]);\n  /** end of TransactionTypeTransactionAction */\n\n  /** TransactionUiAction */\n  const handleCreateTransactionUiAction = useCallback(\n    async (formValues) => {\n      const { transactionUiActionType, actionApi, page, ...restValues } =\n        formValues;\n\n      const newTransactionUiAction = {\n        ...restValues,\n        transactionTypeId: selectedTransactionType?.transactionTypeId,\n        transactionUiActionTypeId:\n          transactionUiActionType?.transactionUiActionTypeId,\n        parameters: {\n          ActionApiId: actionApi?.actionApiId || '',\n          PageId: page?.pageId || ''\n        }\n      };\n\n      try {\n        const response = await postCreateTransactionUiAction(\n          newTransactionUiAction\n        );\n        if (response?.status === 201) {\n          enqueueSnackbar(t('transactionTypes.page.snackbars.uiActionCreated', { defaultValue: 'TransactionUiAction created successfully' }), {\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            },\n            action: successAction\n          });\n        }\n        handleCreateOrEditTransactionUiActionSidesheet(false);\n        tuaGridApiRef.current?.refreshServerSide();\n        fetchTUiActionsList();\n      } catch (err) {\n        enqueueSnackbar(\n          typeof err.response.data === 'object'\n            ? err.response.data.title\n            : err.response.data,\n          {\n            variant: 'error',\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            }\n          }\n        );\n      }\n    },\n    [\n      enqueueSnackbar,\n      tuaGridApiRef,\n      handleCreateOrEditTransactionUiActionSidesheet,\n      successAction,\n      t,\n      selectedTransactionType,\n      fetchTUiActionsList\n    ]\n  );\n\n  const handleUpdateTransactionUiAction = useCallback(\n    async (formValues, initialValues) => {\n      const { transactionUiActionType, actionApi, page, ...restValues } =\n        formValues;\n      const transactionUiActionId = initialValues.transactionUiActionId;\n\n      const updatedTransactionUiAction = {\n        ...restValues,\n        transactionUiActionId: transactionUiActionId,\n        transactionTypeId: selectedTransactionType?.transactionTypeId,\n        transactionUiActionTypeId:\n          transactionUiActionType?.transactionUiActionTypeId,\n        parameters: {\n          ActionApiId: actionApi?.actionApiId || '',\n          PageId: page?.pageId || ''\n        }\n      };\n\n      try {\n        const response = await putUpdateTransactionUiAction(\n          transactionUiActionId,\n          updatedTransactionUiAction\n        );\n        if (response.status === 204) {\n          enqueueSnackbar(t('transactionTypes.page.snackbars.uiActionUpdated', { defaultValue: 'TransactionUiAction updated successfully' }), {\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            },\n            action: successAction\n          });\n        }\n        handleCreateOrEditTransactionUiActionSidesheet(false);\n        tuaGridApiRef.current?.refreshServerSide();\n        fetchTUiActionsList();\n      } catch (err) {\n        enqueueSnackbar(\n          typeof err.response.data === 'object'\n            ? err.response.data.title\n            : err.response.data,\n          {\n            variant: 'error',\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            }\n          }\n        );\n      }\n    },\n    [\n      enqueueSnackbar,\n      tuaGridApiRef,\n      handleCreateOrEditTransactionUiActionSidesheet,\n      successAction,\n      t,\n      selectedTransactionType,\n      fetchTUiActionsList\n    ]\n  );\n\n  const handleDeleteTransactionUiAction = useCallback(async () => {\n    if (!selectedTransactionUiAction) return;\n\n    const transactionUiActionId =\n      selectedTransactionUiAction.transactionUiActionId;\n\n    try {\n      const response = await deleteTransactionUiAction(transactionUiActionId);\n      if (response.status === 204) {\n        enqueueSnackbar(t('transactionTypes.page.snackbars.uiActionDeleted', { defaultValue: 'TransactionUiAction deleted successfully' }), {\n          anchorOrigin: {\n            vertical: 'top',\n            horizontal: 'center'\n          },\n          action: successAction\n        });\n      }\n      setIsDeleteTransactionUiActionDialogOpen(false);\n      tuaGridApiRef.current?.refreshServerSide();\n      fetchTUiActionsList();\n    } catch (err) {\n      enqueueSnackbar(\n        typeof err.response.data === 'object'\n          ? err.response.data.title\n          : err.response.data,\n        {\n          variant: 'error',\n          anchorOrigin: {\n            vertical: 'top',\n            horizontal: 'center'\n          }\n        }\n      );\n    }\n  }, [\n    enqueueSnackbar,\n    selectedTransactionUiAction,\n    successAction,\n    t,\n    setIsDeleteTransactionUiActionDialogOpen,\n    fetchTUiActionsList\n  ]);\n  /** end of TransactionUiAction */\n\n  /** TransactionTypeConfiguration */\n  const handleCreateTransactionTypeConfiguration = useCallback(\n    async (formValues) => {\n      const {\n        transactionRuleType,\n        currentStatus,\n        tenantUserRoles,\n        tenantUserRolesComparisonOperator,\n        currentDomainValue,\n        ...restValues\n      } = formValues;\n\n      const domainDataDictionary = (\n        Array.isArray(currentDomainValue) ? currentDomainValue : []\n      ).reduce((accumulator, entry) => {\n        if (!entry) {\n          return accumulator;\n        }\n\n        const field = entry[0];\n        const value = entry[1].value;\n        const operator = entry[1]?.operator?.value;\n        if (field) {\n          accumulator[field] = {\n            value: value,\n            operator: operator\n          };\n        }\n\n        return accumulator;\n      }, {});\n\n      const tenantUserRoleIds = tenantUserRoles?.map((tur) => tur?.roleId);\n      const configurationObj = {\n        CurrentStatus: currentStatus,\n        CurrentDomainValue: domainDataDictionary,\n        TenantUserRoleIds: Array.isArray(tenantUserRoleIds)\n          ? tenantUserRoleIds\n          : [],\n        TenantUserRolesComparisonOperator:\n          tenantUserRolesComparisonOperator?.value || 'some'\n      };\n      const expressionLogic =\n        formatTransactionTypeConfigurationIntoExpressionLogic(configurationObj);\n      const newTransactionTypeConfiguration = {\n        ...restValues,\n        transactionTypeId: selectedTransactionType?.transactionTypeId,\n        transactionRuleTypeId: transactionRuleType?.transactionRuleTypeId,\n        configuration: {\n          ...configurationObj,\n          CurrentStatusId: currentStatus?.transactionTypeStatusId\n        },\n        expressionLogic\n      };\n\n      try {\n        const response = await postCreateTransactionTypeConfiguration(\n          newTransactionTypeConfiguration\n        );\n        if (response?.status === 201) {\n          enqueueSnackbar(\n            t('transactionTypes.page.snackbars.configurationCreated', {\n              defaultValue: 'TransactionTypeConfiguration created successfully'\n            }),\n            {\n              anchorOrigin: {\n                vertical: 'top',\n                horizontal: 'center'\n              },\n              action: successAction\n            }\n          );\n        }\n        handleCreateOrEditTransactionTypeConfigurationSidesheet(false);\n        ttcGridApiRef.current?.refreshServerSide();\n      } catch (err) {\n        enqueueSnackbar(\n          typeof err.response.data === 'object'\n            ? err.response.data.title\n            : err.response.data,\n          {\n            variant: 'error',\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            }\n          }\n        );\n      }\n    },\n    [\n      enqueueSnackbar,\n      ttcGridApiRef,\n      handleCreateOrEditTransactionTypeConfigurationSidesheet,\n      successAction,\n      t,\n      selectedTransactionType\n    ]\n  );\n\n  const handleUpdateTransactionTypeConfiguration = useCallback(\n    async (formValues, initialValues) => {\n      const {\n        transactionRuleType,\n        currentStatus,\n        tenantUserRoles,\n        tenantUserRolesComparisonOperator,\n        currentDomainValue,\n        name,\n        ...restValues\n      } = formValues;\n      const transactionTypeConfigurationId =\n        initialValues.transactionTypeConfigurationId;\n\n      const domainDataDictionary = (\n        Array.isArray(currentDomainValue) ? currentDomainValue : []\n      ).reduce((accumulator, entry) => {\n        if (!entry) {\n          return accumulator;\n        }\n\n        const field = entry[0];\n        const value = entry[1].value;\n        const operator = entry[1]?.operator?.value;\n        if (field) {\n          accumulator[field] = {\n            value: value,\n            operator: operator\n          };\n        }\n\n        return accumulator;\n      }, {});\n\n      const tenantUserRoleIds = tenantUserRoles?.map((tur) => tur?.roleId);\n      const configurationObj = {\n        CurrentStatus: currentStatus,\n        CurrentDomainValue: domainDataDictionary,\n        TenantUserRoleIds: Array.isArray(tenantUserRoleIds)\n          ? tenantUserRoleIds\n          : [],\n        TenantUserRolesComparisonOperator:\n          tenantUserRolesComparisonOperator?.value\n      };\n      const expressionLogic =\n        formatTransactionTypeConfigurationIntoExpressionLogic(configurationObj);\n      const updatedTransactionTypeConfiguration = {\n        ...initialValues,\n        name: name || '',\n        order: formValues?.order || 0,\n        enabled: formValues?.enabled,\n        transactionTypeConfigurationId: transactionTypeConfigurationId,\n        transactionTypeId: selectedTransactionType?.transactionTypeId,\n        transactionRuleTypeId: transactionRuleType?.transactionRuleTypeId,\n        configuration: {\n          ...configurationObj,\n          CurrentStatusId: currentStatus?.transactionTypeStatusId\n        },\n        expressionLogic\n      };\n\n      try {\n        const response = await putUpdateTransactionTypeConfiguration(\n          transactionTypeConfigurationId,\n          updatedTransactionTypeConfiguration\n        );\n        if (response.status === 204) {\n          enqueueSnackbar(\n            t('transactionTypes.page.snackbars.configurationUpdated', {\n              defaultValue: 'TransactionTypeConfiguration updated successfully'\n            }),\n            {\n              anchorOrigin: {\n                vertical: 'top',\n                horizontal: 'center'\n              },\n              action: successAction\n            }\n          );\n        }\n        handleCreateOrEditTransactionTypeConfigurationSidesheet(false);\n        ttcGridApiRef.current?.refreshServerSide();\n      } catch (err) {\n        enqueueSnackbar(\n          typeof err.response.data === 'object'\n            ? err.response.data.title\n            : err.response.data,\n          {\n            variant: 'error',\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            }\n          }\n        );\n      }\n    },\n    [\n      enqueueSnackbar,\n      ttcGridApiRef,\n      handleCreateOrEditTransactionTypeConfigurationSidesheet,\n      successAction,\n      t,\n      selectedTransactionType\n    ]\n  );\n\n  const handleDeleteTransactionTypeConfiguration = useCallback(async () => {\n    if (!selectedTransactionTypeConfiguration) return;\n\n    const transactionTypeConfigurationId =\n      selectedTransactionTypeConfiguration.transactionTypeConfigurationId;\n\n    try {\n      const response = await deleteTransactionTypeConfiguration(\n        transactionTypeConfigurationId\n      );\n      if (response.status === 204) {\n        enqueueSnackbar(\n          t('transactionTypes.page.snackbars.configurationDeleted', {\n            defaultValue: 'TransactionTypeConfiguration deleted successfully'\n          }),\n          {\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            },\n            action: successAction\n          }\n        );\n      }\n      setIsDeleteTransactionTypeConfigurationDialogOpen(false);\n      ttcGridApiRef.current?.refreshServerSide();\n    } catch (err) {\n      enqueueSnackbar(\n        typeof err.response.data === 'object'\n          ? err.response.data.title\n          : err.response.data,\n        {\n          variant: 'error',\n          anchorOrigin: {\n            vertical: 'top',\n            horizontal: 'center'\n          }\n        }\n      );\n    }\n  }, [\n    enqueueSnackbar,\n    selectedTransactionTypeConfiguration,\n    successAction,\n    t,\n    setIsDeleteTransactionTypeConfigurationDialogOpen\n  ]);\n  /** end of TransactionTypeConfiguration */\n\n  /** TransactionTypeConfigurationTransactionAction */\n  const handleCreateTransactionTypeConfigurationTransactionAction = useCallback(\n    async (formValues) => {\n      const { transactionTypeTransactionActions } = formValues;\n\n      const newTTCTActions = [];\n\n      transactionTypeTransactionActions?.forEach((action) => {\n        newTTCTActions.push({\n          transactionTypeConfigurationId:\n            selectedTransactionTypeConfiguration?.transactionTypeConfigurationId,\n          transactionTypeTransactionActionId:\n            action?.transactionTypeTransactionActionId\n        });\n      });\n\n      try {\n        const response =\n          await postCreateTransactionTypeConfigurationTransactionAction(\n            newTTCTActions\n          );\n        if (response?.status === 201) {\n          enqueueSnackbar(\n            t('transactionTypes.page.snackbars.linkedActionsCreated', {\n              defaultValue:\n                'TransactionTypeConfigurationTransactionAction(s) created successfully'\n            }),\n            {\n              anchorOrigin: {\n                vertical: 'top',\n                horizontal: 'center'\n              },\n              action: successAction\n            }\n          );\n        }\n        handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet(\n          false\n        );\n        ttctaGridApiRef.current?.refreshServerSide();\n        fetchTtctaList();\n      } catch (err) {\n        enqueueSnackbar(\n          typeof err.response.data === 'object'\n            ? err.response.data.title\n            : err.response.data,\n          {\n            variant: 'error',\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            }\n          }\n        );\n      }\n    },\n    [\n      enqueueSnackbar,\n      ttctaGridApiRef,\n      handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet,\n      successAction,\n      t,\n      selectedTransactionTypeConfiguration,\n      fetchTtctaList\n    ]\n  );\n\n  const handleUpdateTransactionTypeConfigurationTransactionAction = useCallback(\n    async (formValues, initialValues) => {\n      const { transactionTypeTransactionActions } = formValues;\n      const transactionTypeConfigurationId =\n        selectedTransactionTypeConfiguration?.transactionTypeConfigurationId;\n      const existingTransactionTypeTransactionActionId =\n        initialValues?.transactionTypeTransactionActionId;\n\n      const updatedTransactionTypeConfigurationTransactionAction = {\n        transactionTypeConfigurationId: transactionTypeConfigurationId,\n        transactionTypeTransactionActionId:\n          transactionTypeTransactionActions?.[0]\n            ?.transactionTypeTransactionActionId\n      };\n\n      try {\n        const response =\n          await putUpdateTransactionTypeConfigurationTransactionAction(\n            transactionTypeConfigurationId,\n            existingTransactionTypeTransactionActionId,\n            updatedTransactionTypeConfigurationTransactionAction\n          );\n        if (response.status === 204) {\n          enqueueSnackbar(\n            t('transactionTypes.page.snackbars.linkedActionUpdated', {\n              defaultValue:\n                'TransactionTypeConfigurationTransactionAction updated successfully'\n            }),\n            {\n              anchorOrigin: {\n                vertical: 'top',\n                horizontal: 'center'\n              },\n              action: successAction\n            }\n          );\n        }\n        handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet(\n          false\n        );\n        ttctaGridApiRef.current?.refreshServerSide();\n        fetchTtctaList();\n      } catch (err) {\n        enqueueSnackbar(\n          typeof err.response.data === 'object'\n            ? err.response.data.title\n            : err.response.data,\n          {\n            variant: 'error',\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            }\n          }\n        );\n      }\n    },\n    [\n      enqueueSnackbar,\n      ttctaGridApiRef,\n      handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet,\n      successAction,\n      t,\n      selectedTransactionTypeConfiguration,\n      fetchTtctaList\n    ]\n  );\n\n  const handleDeleteTransactionTypeConfigurationTransactionAction =\n    useCallback(async () => {\n      if (!selectedTransactionTypeConfigurationTransactionAction) return;\n\n      const transactionTypeConfigurationId =\n        selectedTransactionTypeConfigurationTransactionAction?.transactionTypeConfigurationId;\n      const transactionTypeTransactionActionId =\n        selectedTransactionTypeConfigurationTransactionAction?.transactionTypeTransactionActionId;\n\n      try {\n        const response =\n          await deleteTransactionTypeConfigurationTransactionAction(\n            transactionTypeConfigurationId,\n            transactionTypeTransactionActionId\n          );\n        if (response.status === 204) {\n          enqueueSnackbar(\n            t('transactionTypes.page.snackbars.linkedActionDeleted', {\n              defaultValue:\n                'TransactionTypeConfigurationTransactionAction deleted successfully'\n            }),\n            {\n              anchorOrigin: {\n                vertical: 'top',\n                horizontal: 'center'\n              },\n              action: successAction\n            }\n          );\n        }\n        setIsDeleteTransactionTypeConfigurationTransactionActionDialogOpen(\n          false\n        );\n        ttctaGridApiRef.current?.refreshServerSide();\n        fetchTtctaList();\n      } catch (err) {\n        enqueueSnackbar(\n          typeof err.response.data === 'object'\n            ? err.response.data.title\n            : err.response.data,\n          {\n            variant: 'error',\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            }\n          }\n        );\n      }\n    }, [\n      ttctaGridApiRef,\n      enqueueSnackbar,\n      selectedTransactionTypeConfigurationTransactionAction,\n      successAction,\n      t,\n      setIsDeleteTransactionTypeConfigurationTransactionActionDialogOpen,\n      fetchTtctaList\n    ]);\n  /** end of TransactionTypeConfigurationTransactionAction */\n\n  /** TransactionAttachmentType */\n  const handleCreateTransactionAttachmentType = useCallback(\n    async (formValues) => {\n      const newTransactionAttachmentType = {\n        ...formValues,\n        transactionTypeId: selectedTransactionType?.transactionTypeId\n      };\n\n      try {\n        const response = await postCreateTransactionAttachmentType(\n          newTransactionAttachmentType\n        );\n        if (response?.status === 201) {\n          enqueueSnackbar(t('transactionTypes.page.snackbars.attachmentTypeCreated', { defaultValue: 'TransactionAttachmentType created successfully' }), {\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            },\n            action: successAction\n          });\n        }\n        handleCreateOrEditTransactionAttachmentTypeSidesheet(false);\n        tatGridApiRef.current?.refreshServerSide();\n      } catch (err) {\n        enqueueSnackbar(\n          typeof err.response.data === 'object'\n            ? err.response.data.title\n            : err.response.data,\n          {\n            variant: 'error',\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            }\n          }\n        );\n      }\n    },\n    [\n      enqueueSnackbar,\n      tatGridApiRef,\n      successAction,\n      t,\n      selectedTransactionType,\n      handleCreateOrEditTransactionAttachmentTypeSidesheet\n    ]\n  );\n\n  const handleUpdateTransactionAttachmentType = useCallback(\n    async (formValues, initialValues) => {\n      const transactionTypeId = selectedTransactionType?.transactionTypeId;\n      const transactionAttachmentTypeId =\n        selectedTransactionAttachmentType?.transactionAttachmentTypeId;\n      const updatedTransactionType = {\n        ...initialValues,\n        ...formValues,\n        transactionTypeId: transactionTypeId,\n        transactionAttachmentTypeId: transactionAttachmentTypeId\n      };\n\n      try {\n        const response = await putUpdateTransactionAttachmentType(\n          transactionAttachmentTypeId,\n          updatedTransactionType\n        );\n        if (response.status === 204) {\n          enqueueSnackbar(t('transactionTypes.page.snackbars.attachmentTypeUpdated', { defaultValue: 'TransactionAttachmentType updated successfully' }), {\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            },\n            action: successAction\n          });\n        }\n        handleCreateOrEditTransactionAttachmentTypeSidesheet(false);\n        tatGridApiRef.current?.refreshServerSide();\n      } catch (err) {\n        enqueueSnackbar(\n          typeof err.response.data === 'object'\n            ? err.response.data.title\n            : err.response.data,\n          {\n            variant: 'error',\n            anchorOrigin: {\n              vertical: 'top',\n              horizontal: 'center'\n            }\n          }\n        );\n      }\n    },\n    [enqueueSnackbar, selectedTransactionType, successAction, t]\n  );\n\n  const handleDeleteTransactionAttachmentType = useCallback(async () => {\n    if (!selectedTransactionAttachmentType) return;\n\n    const transactionAttachmentTypeId =\n      selectedTransactionAttachmentType?.transactionAttachmentTypeId;\n\n    try {\n      const response = await deleteTransactionAttachmentType(\n        transactionAttachmentTypeId\n      );\n      if (response.status === 204) {\n        enqueueSnackbar(t('transactionTypes.page.snackbars.attachmentTypeDeleted', { defaultValue: 'TransactionAttachmentType deleted successfully' }), {\n          anchorOrigin: {\n            vertical: 'top',\n            horizontal: 'center'\n          },\n          action: successAction\n        });\n      }\n      setIsDeleteTransactionAttachmentTypeDialogOpen(false);\n      tatGridApiRef.current?.refreshServerSide();\n    } catch (err) {\n      enqueueSnackbar(\n        typeof err.response.data === 'object'\n          ? err.response.data.title\n          : err.response.data,\n        {\n          variant: 'error',\n          anchorOrigin: {\n            vertical: 'top',\n            horizontal: 'center'\n          }\n        }\n      );\n    }\n  }, [\n    enqueueSnackbar,\n    selectedTransactionAttachmentType,\n    tatGridApiRef,\n    successAction,\n    t,\n    setIsDeleteTransactionAttachmentTypeDialogOpen\n  ]);\n  /** end of TransactionAttachmentType */\n\n  const handleOpenDeleteTransactionTypeDialog = useCallback(\n    (transactionType) => {\n      setSelectedTransactionType(transactionType);\n      setIsDeleteTransactionTypeDialogOpen(true);\n    },\n    []\n  );\n\n  const handleCloseDeleteTransactionTypeDialog = useCallback(() => {\n    setIsDeleteTransactionTypeDialogOpen(false);\n    setSelectedTransactionType(null);\n  }, []);\n\n  const handleOpenDeleteTransactionTypeStatusDialog = useCallback(\n    (transactionTypeStatus) => {\n      setSelectedTransactionTypeStatus(transactionTypeStatus);\n      setIsDeleteTransactionTypeStatusDialogOpen(true);\n    },\n    []\n  );\n\n  const handleCloseDeleteTransactionTypeStatusDialog = useCallback(() => {\n    setIsDeleteTransactionTypeStatusDialogOpen(false);\n    setSelectedTransactionTypeStatus(null);\n  }, []);\n\n  const handleOpenDeleteTransactionTypeTransactionActionDialog = useCallback(\n    (transactionTypeTransactionAction) => {\n      setSelectedTransactionTypeTransactionAction(\n        transactionTypeTransactionAction\n      );\n      setIsDeleteTransactionTypeTransactionActionDialogOpen(true);\n    },\n    []\n  );\n\n  const handleCloseDeleteTransactionTypeTransactionActionDialog =\n    useCallback(() => {\n      setIsDeleteTransactionTypeTransactionActionDialogOpen(false);\n      setSelectedTransactionTypeTransactionAction(null);\n    }, []);\n\n  const handleOpenDeleteTransactionUiActionDialog = useCallback(\n    (transactionUiAction) => {\n      setSelectedTransactionUiAction(transactionUiAction);\n      setIsDeleteTransactionUiActionDialogOpen(true);\n    },\n    []\n  );\n\n  const handleCloseDeleteTransactionUiActionDialog = useCallback(() => {\n    setIsDeleteTransactionUiActionDialogOpen(false);\n    setSelectedTransactionUiAction(null);\n  }, []);\n\n  const handleOpenDeleteTransactionTypeConfigurationDialog = useCallback(\n    (transactionTypeConfiguration) => {\n      setSelectedTransactionTypeConfiguration(transactionTypeConfiguration);\n      setIsDeleteTransactionTypeConfigurationDialogOpen(true);\n    },\n    []\n  );\n\n  const handleCloseDeleteTransactionTypeConfigurationDialog =\n    useCallback(() => {\n      setIsDeleteTransactionTypeConfigurationDialogOpen(false);\n      setSelectedTransactionTypeConfiguration(null);\n    }, []);\n\n  const handleOpenDeleteTransactionTypeConfigurationTransactionActionDialog =\n    useCallback((transactionTypeConfigurationTransactionAction) => {\n      setSelectedTransactionTypeConfigurationTransactionAction(\n        transactionTypeConfigurationTransactionAction\n      );\n      setIsDeleteTransactionTypeConfigurationTransactionActionDialogOpen(true);\n    }, []);\n\n  const handleCloseDeleteTransactionTypeConfigurationTransactionActionDialog =\n    useCallback(() => {\n      setIsDeleteTransactionTypeConfigurationTransactionActionDialogOpen(false);\n      setSelectedTransactionTypeConfigurationTransactionAction(null);\n    }, []);\n\n  const handleOpenDeleteTransactionAttachmentTypeDialog = useCallback(\n    (transactionAttachmentType) => {\n      setSelectedTransactionAttachmentType(transactionAttachmentType);\n      setIsDeleteTransactionAttachmentTypeDialogOpen(true);\n    },\n    []\n  );\n\n  const handleCloseDeleteTransactionAttachmentTypeDialog = useCallback(() => {\n    setIsDeleteTransactionAttachmentTypeDialogOpen(false);\n    setSelectedTransactionAttachmentType(null);\n  }, []);\n\n  const columnDefs = useMemo(() => {\n    return [\n      {\n        headerName: t('transactionTypes.page.columns.transactionTypeId', { defaultValue: 'Transaction Type ID' }),\n        field: 'transactionTypeId',\n        resizable: true,\n        sortable: false,\n        hide: true\n      },\n      {\n        headerName: t('transactionTypes.grid.name', { defaultValue: 'Name' }),\n        field: 'name',\n        resizable: true,\n        sortable: false\n      },\n      {\n        headerName: t('transactionTypes.page.columns.domainName', { defaultValue: 'Domain Name' }),\n        field: 'domainName',\n        resizable: true,\n        sortable: false\n      },\n      {\n        headerName: t('transactionTypes.page.columns.domainFields', { defaultValue: 'Domain Fields' }),\n        field: 'domainFields',\n        resizable: true,\n        sortable: false,\n        hide: true\n      },\n      {\n        headerName: t('transactionTypes.page.columns.allowRevisions', { defaultValue: 'Allow Revisions' }),\n        field: 'hasRevision',\n        resizable: true,\n        sortable: false,\n        cellDataType: 'boolean'\n      },\n      {\n        headerName: t('transactionTypes.page.columns.revisionField', { defaultValue: 'Revision Field' }),\n        field: 'revisionField',\n        resizable: true,\n        sortable: false\n      },\n      {\n        headerName: t('transactionTypes.grid.enabled', { defaultValue: 'Enabled' }),\n        field: 'enabled',\n        resizable: true,\n        sortable: false,\n        cellDataType: 'boolean'\n      },\n      {\n        headerName: t('transactionTypes.page.columns.archivedOnCancel', { defaultValue: 'Archived on Cancel' }),\n        field: 'archiveOnCancel',\n        resizable: true,\n        sortable: false,\n        cellDataType: 'boolean'\n      },\n      {\n        headerName: t('transactionTypes.page.columns.fieldLabel', { defaultValue: 'Field Label' }),\n        field: 'domainFieldLabel',\n        resizable: true,\n        sortable: false\n      },\n      {\n        headerName: t('transactionTypes.page.columns.subType', { defaultValue: 'Sub-Type' }),\n        field: 'domainFieldType',\n        resizable: true,\n        sortable: false\n      },\n      {\n        headerName: t('transactionTypes.page.columns.subTypeValue', { defaultValue: 'Sub-Type Value' }),\n        field: 'domainFieldValue',\n        resizable: true,\n        sortable: false\n      },\n      {\n        headerName: t('transactionTypes.grid.actions', { defaultValue: 'Actions' }),\n        field: 'actions',\n        cellRenderer: 'actionsRenderer',\n        cellRendererParams: {\n          actionList: [\n            {\n              id: 0,\n              title: t('common.edit', { defaultValue: 'Edit' }),\n              iconName: 'edit',\n              handleOnClick: (e, transactionType) => {\n                handleSideSheet(true, transactionType?.data);\n              }\n            },\n            {\n              id: 1,\n              title: t('common.delete', { defaultValue: 'Delete' }),\n              iconName: 'trashCan',\n              handleOnClick: (e, transactionType) => {\n                handleOpenDeleteTransactionTypeDialog(transactionType?.data);\n              }\n            },\n            {\n              id: 2,\n              title: t('transactionTypes.page.actions.manageStatuses', { defaultValue: 'Manage Statuses' }),\n              iconName: 'settings',\n              handleOnClick: (e, transactionType) => {\n                handleTransactionTypeStatusSideSheet(\n                  true,\n                  transactionType?.data\n                );\n              }\n            },\n            {\n              id: 3,\n              title: t('transactionTypes.page.actions.manageActions', { defaultValue: 'Manage Actions' }),\n              iconName: 'text-grammar-settings',\n              handleOnClick: (e, transactionType) => {\n                handleTransactionTypeTransactionActionSidesheet(\n                  true,\n                  transactionType?.data\n                );\n              }\n            },\n            {\n              id: 4,\n              title: t('transactionTypes.page.actions.manageFormsPages', { defaultValue: 'Manage Forms/Pages' }),\n              iconName: 'form-new',\n              handleOnClick: (e, transactionType) => {\n                handleTransactionUiActionSidesheet(true, transactionType?.data);\n              }\n            },\n            {\n              id: 5,\n              title: t('transactionTypes.page.actions.manageRules', { defaultValue: 'Manage Rules' }),\n              iconName: 'apps-list',\n              handleOnClick: (e, transactionType) => {\n                handleTransactionTypeConfigurationSidesheet(\n                  true,\n                  transactionType?.data\n                );\n              }\n            },\n            {\n              id: 6,\n              title: t('transactionTypes.page.actions.manageAttachmentTypes', { defaultValue: 'Manage Attachment Types' }),\n              iconName: 'attachment',\n              handleOnClick: (e, transactionType) => {\n                handleTransactionAttachmentTypeSidesheet(\n                  true,\n                  transactionType?.data\n                );\n              }\n            }\n          ]\n        },\n        valueGetter: (params) => params.data,\n        suppressMenu: true,\n        sortable: false,\n        filter: false\n      }\n    ];\n  }, [\n    handleSideSheet,\n    handleOpenDeleteTransactionTypeDialog,\n    handleTransactionTypeStatusSideSheet,\n    handleTransactionTypeTransactionActionSidesheet,\n    handleTransactionUiActionSidesheet,\n    handleTransactionTypeConfigurationSidesheet,\n    handleTransactionAttachmentTypeSidesheet,\n    t\n  ]);\n\n  const headerConfig = {\n    title: t('transactionTypes.page.title', { defaultValue: 'Transaction Types' }),\n    primaryActionButton: {\n      label: t('common.add', { defaultValue: 'Add' }),\n      iconName: 'add',\n      onClick: () => handleSideSheet(true)\n    }\n  };\n\n  const gridFunctions = [\n    { name: 'agGridExport' },\n    { name: 'agGridSizeColumnsToFit' },\n    { name: 'agGridAutoSizeColumns' },\n    { name: 'agGridResetColumns' },\n    { name: 'agGridHideShowColumns' }\n  ];\n\n  const gridOptions = useMemo(() => {\n    return {\n      pagination: true\n    };\n  }, []);\n\n  const handleGridApiCallback = (api) => {\n    gridApiRef.current = api;\n  };\n\n  const searchMethodConfig = useMemo(() => {\n    return {\n      requestUrl: `${ConfigService.productV1ApiUrl}/UdpTransactionType/search`,\n      customSearchObject: searchObject\n    };\n  }, [searchObject]);\n\n  return (\n    <>\n      {isTransactionTypeSidesheetLoading && (\n        <LinearProgress className={classes.loadingBar} color='secondary' />\n      )}\n      <SearchMethodUdpGrid\n        searchMethodConfig={searchMethodConfig}\n        columnDefs={columnDefs}\n        gridHeaderConfig={headerConfig}\n        gridOptions={gridOptions}\n        gridApiCallback={handleGridApiCallback}\n        gridFunctions={gridFunctions}\n      />\n      <UdpTransactionTypeSidesheet\n        key={selectedTransactionType?.transactionTypeId}\n        initialTransactionType={selectedTransactionType}\n        selectedDomainName={selectedDomainName}\n        isSideSheetOpen={isTransactionTypeSideSheetOpen}\n        handleSideSheet={handleSideSheet}\n        setSelectedDomainName={setSelectedDomainName}\n        handleCreateTransactionType={handleCreateTransactionType}\n        handleUpdateTransactionType={handleUpdateTransactionType}\n        catalogObjectNames={catalogObjectNames}\n        catalogObjectProperties={catalogObjectProperties}\n        catalogObjectDateProperties={catalogObjectDateProperties}\n        isPageConfigurationSidesheetOpen={isPageConfigurationSidesheetOpen}\n        setIsPageConfigurationSidesheetOpen={\n          setIsPageConfigurationSidesheetOpen\n        }\n        isCalendarViewConfigurationSidesheetOpen={\n          isCalendarViewConfigurationSidesheetOpen\n        }\n        setIsCalendarViewConfigurationSidesheetOpen={\n          setIsCalendarViewConfigurationSidesheetOpen\n        }\n      />\n      {getTransactionsByTransactionIdLoading ? (\n        <LinearProgress />\n      ) : (\n        <FluentDialog\n          open={isDeleteTransactionTypeDialogOpen}\n          onClose={handleCloseDeleteTransactionTypeDialog}\n          title={t('transactionTypes.page.dialogs.confirmDeleteTitle', { defaultValue: 'Confirm Delete' })}\n          message={\n            !transactionsByTransactionTypeId?.pageList?.length\n              ? t('transactionTypes.page.dialogs.deleteType', {\n                  defaultValue: 'Are you sure you want to delete this type?'\n                })\n              : t('transactionTypes.page.dialogs.deleteTypeBlocked', {\n                  defaultValue:\n                    'Unable to delete this type as there are existing transactions associated with it. As an alternative, you can disable the type to prevent further use.'\n                })\n          }\n          labelOne={t('common.delete', { defaultValue: 'Delete' })}\n          actionOne={handleDeleteTransactionType}\n          buttonOneHidden={!!transactionsByTransactionTypeId?.pageList?.length}\n          labelTwo={t('common.cancel', { defaultValue: 'Cancel' })}\n          actionTwo={handleCloseDeleteTransactionTypeDialog}\n        />\n      )}\n      <UdpTransactionTypeStatusSidesheet\n        ref={ttsGridApiRef}\n        transactionType={selectedTransactionType}\n        transactionTypeStatus={selectedTransactionTypeStatus}\n        isSideSheetOpen={isTransactionTypeStatusSidesheetOpen}\n        isTransactionTypeStatusCreateOrEditSidesheetOpen={\n          isCreateOrEditTransactionTypeStatusSidesheetOpen\n        }\n        handleTransactionTypeStatusSideSheet={\n          handleTransactionTypeStatusSideSheet\n        }\n        handleCreateOrEditTransactionTypeStatusSideSheet={\n          handleCreateOrEditTransactionTypeStatusSideSheet\n        }\n        handleCreateTransactionTypeStatus={handleCreateTransactionTypeStatus}\n        handleUpdateTransactionTypeStatus={handleUpdateTransactionTypeStatus}\n        handleDeleteTransactionTypeStatus={\n          handleOpenDeleteTransactionTypeStatusDialog\n        }\n      />\n      <FluentDialog\n        open={isDeleteTransactionTypeStatusDialogOpen}\n        onClose={handleCloseDeleteTransactionTypeStatusDialog}\n        title={t('transactionTypes.page.dialogs.confirmDeleteTitle', { defaultValue: 'Confirm Delete' })}\n        message={t('transactionTypes.page.dialogs.deleteStatus', { defaultValue: 'Are you sure you want to delete this status?' })}\n        labelOne={t('common.delete', { defaultValue: 'Delete' })}\n        actionOne={handleDeleteTransactionTypeStatus}\n        labelTwo={t('common.cancel', { defaultValue: 'Cancel' })}\n        actionTwo={handleCloseDeleteTransactionTypeStatusDialog}\n      />\n      <UdpTransactionTypeTransactionActionSidesheet\n        ref={tttaGridApiRef}\n        transactionType={selectedTransactionType}\n        transactionTypeTransactionAction={\n          selectedTransactionTypeTransactionAction\n        }\n        isSideSheetOpen={isTransactionTypeTransactionActionSidesheetOpen}\n        isTransactionTypeTransactionActionCreateOrEditSidesheetOpen={\n          isCreateOrEditTransactionTypeTransactionActionSidesheetOpen\n        }\n        handleTransactionTypeTransactionActionSidesheet={\n          handleTransactionTypeTransactionActionSidesheet\n        }\n        handleCreateOrEditTransactionTypeTransactionActionSidesheet={\n          handleCreateOrEditTransactionTypeTransactionActionSidesheet\n        }\n        handleCreateTransactionTypeTransactionAction={\n          handleCreateTransactionTypeTransactionAction\n        }\n        handleUpdateTransactionTypeTransactionAction={\n          handleUpdateTransactionTypeTransactionAction\n        }\n        handleDeleteTransactionTypeTransactionAction={\n          handleOpenDeleteTransactionTypeTransactionActionDialog\n        }\n        transactionActions={transactionActions}\n        catalogObjectProperties={catalogObjectProperties}\n        actionApis={actionApis}\n        pages={pages}\n        ttstatuses={ttstatuses}\n      />\n      <FluentDialog\n        open={isDeleteTransactionTypeTransactionActionDialogOpen}\n        onClose={handleCloseDeleteTransactionTypeTransactionActionDialog}\n        title={t('transactionTypes.page.dialogs.confirmDeleteTitle', { defaultValue: 'Confirm Delete' })}\n        message={t('transactionTypes.page.dialogs.deleteAction', { defaultValue: 'Are you sure you want to delete this action?' })}\n        labelOne={t('common.delete', { defaultValue: 'Delete' })}\n        actionOne={handleDeleteTransactionTypeTransactionAction}\n        labelTwo={t('common.cancel', { defaultValue: 'Cancel' })}\n        actionTwo={handleCloseDeleteTransactionTypeTransactionActionDialog}\n      />\n      <UdpTransactionUiActionSidesheet\n        ref={tuaGridApiRef}\n        transactionType={selectedTransactionType}\n        transactionUiAction={selectedTransactionUiAction}\n        isSideSheetOpen={isTransactionUiActionSidesheetOpen}\n        handleTransactionUiActionSidesheet={handleTransactionUiActionSidesheet}\n        isCreateOrEditTransactionUiActionSidesheetOpen={\n          isCreateOrEditTransactionUiActionSidesheetOpen\n        }\n        handleCreateOrEditTransactionUiActionSidesheet={\n          handleCreateOrEditTransactionUiActionSidesheet\n        }\n        handleCreateTransactionUiAction={handleCreateTransactionUiAction}\n        handleUpdateTransactionUiAction={handleUpdateTransactionUiAction}\n        handleDeleteTransactionUiAction={\n          handleOpenDeleteTransactionUiActionDialog\n        }\n        transactionUiActionTypes={transactionUiActionTypes}\n        actionApis={actionApis}\n        pages={pages}\n        tUiActionsList={tUiActionsList}\n      />\n      <FluentDialog\n        open={isDeleteTransactionUiActionDialogOpen}\n        onClose={handleCloseDeleteTransactionUiActionDialog}\n        title={t('transactionTypes.page.dialogs.confirmDeleteTitle', { defaultValue: 'Confirm Delete' })}\n        message={t('transactionTypes.page.dialogs.deleteUiAction', { defaultValue: 'Are you sure you want to delete this UI action?' })}\n        labelOne={t('common.delete', { defaultValue: 'Delete' })}\n        actionOne={handleDeleteTransactionUiAction}\n        labelTwo={t('common.cancel', { defaultValue: 'Cancel' })}\n        actionTwo={handleCloseDeleteTransactionUiActionDialog}\n      />\n      <UdpTransactionTypeConfigurationSidesheet\n        ref={ttcGridApiRef}\n        transactionType={selectedTransactionType}\n        transactionTypeConfiguration={selectedTransactionTypeConfiguration}\n        isSideSheetOpen={isTransactionTypeConfigurationSidesheetOpen}\n        handleTransactionTypeConfigurationSidesheet={\n          handleTransactionTypeConfigurationSidesheet\n        }\n        isCreateOrEditTransactionTypeConfigurationSidesheetOpen={\n          isCreateOrEditTransactionTypeConfigurationSidesheetOpen\n        }\n        handleCreateOrEditTransactionTypeConfigurationSidesheet={\n          handleCreateOrEditTransactionTypeConfigurationSidesheet\n        }\n        handleCreateTransactionTypeConfiguration={\n          handleCreateTransactionTypeConfiguration\n        }\n        handleUpdateTransactionTypeConfiguration={\n          handleUpdateTransactionTypeConfiguration\n        }\n        handleDeleteTransactionTypeConfiguration={\n          handleOpenDeleteTransactionTypeConfigurationDialog\n        }\n        transactionRuleTypes={transactionRuleTypes}\n        catalogObjectProperties={catalogObjectProperties}\n        ttstatuses={ttstatuses}\n        roles={roles}\n        transactionTypeConfigurationTransactionAction={\n          selectedTransactionTypeConfigurationTransactionAction\n        }\n        isTransactionTypeConfigurationTransactionActionSidesheetOpen={\n          isTransactionTypeConfigurationTransactionActionSidesheetOpen\n        }\n        handleTransactionTypeConfigurationTransactionActionSidesheet={\n          handleTransactionTypeConfigurationTransactionActionSidesheet\n        }\n        handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet={\n          handleCreateOrEditTransactionTypeConfigurationTransactionActionSidesheet\n        }\n        isCreateOrEditTransactionTypeConfigurationTransactionActionSidesheetOpen={\n          isCreateOrEditTransactionTypeConfigurationTransactionActionSidesheetOpen\n        }\n        tttactions={tttactions}\n        handleCreateTransactionTypeConfigurationTransactionAction={\n          handleCreateTransactionTypeConfigurationTransactionAction\n        }\n        handleUpdateTransactionTypeConfigurationTransactionAction={\n          handleUpdateTransactionTypeConfigurationTransactionAction\n        }\n        handleDeleteTransactionTypeConfigurationTransactionAction={\n          handleOpenDeleteTransactionTypeConfigurationTransactionActionDialog\n        }\n        ttctaList={ttctaList}\n        ttctaGridApiRef={ttctaGridApiRef}\n      />\n      <FluentDialog\n        open={isDeleteTransactionTypeConfigurationDialogOpen}\n        onClose={handleCloseDeleteTransactionTypeConfigurationDialog}\n        title={t('transactionTypes.page.dialogs.confirmDeleteTitle', { defaultValue: 'Confirm Delete' })}\n        message={t('transactionTypes.page.dialogs.deleteRule', { defaultValue: 'Are you sure you want to delete this rule?' })}\n        labelOne={t('common.delete', { defaultValue: 'Delete' })}\n        actionOne={handleDeleteTransactionTypeConfiguration}\n        labelTwo={t('common.cancel', { defaultValue: 'Cancel' })}\n        actionTwo={handleCloseDeleteTransactionTypeConfigurationDialog}\n      />\n      <FluentDialog\n        open={isDeleteTransactionTypeConfigurationTransactionActionDialogOpen}\n        onClose={\n          handleCloseDeleteTransactionTypeConfigurationTransactionActionDialog\n        }\n        title={t('transactionTypes.page.dialogs.confirmDeleteTitle', { defaultValue: 'Confirm Delete' })}\n        message={t('transactionTypes.page.dialogs.deleteLinkedAction', { defaultValue: 'Are you sure you want to delete this linked action?' })}\n        labelOne={t('common.delete', { defaultValue: 'Delete' })}\n        actionOne={handleDeleteTransactionTypeConfigurationTransactionAction}\n        labelTwo={t('common.cancel', { defaultValue: 'Cancel' })}\n        actionTwo={\n          handleCloseDeleteTransactionTypeConfigurationTransactionActionDialog\n        }\n      />\n      <UdpTransactionAttachmentTypeSidesheet\n        ref={tatGridApiRef}\n        transactionType={selectedTransactionType}\n        transactionAttachmentType={selectedTransactionAttachmentType}\n        isSideSheetOpen={isTransactionAttachmentTypeSidesheetOpen}\n        isTransactionAttachmentTypeCreateOrEditSidesheetOpen={\n          isCreateOrEditTransactionAttachmentTypeSidesheetOpen\n        }\n        handleTransactionAttachmentTypeSidesheet={\n          handleTransactionAttachmentTypeSidesheet\n        }\n        handleCreateOrEditTransactionAttachmentTypeSidesheet={\n          handleCreateOrEditTransactionAttachmentTypeSidesheet\n        }\n        handleCreateTransactionAttachmentType={\n          handleCreateTransactionAttachmentType\n        }\n        handleUpdateTransactionAttachmentType={\n          handleUpdateTransactionAttachmentType\n        }\n        handleDeleteTransactionAttachmentType={\n          handleOpenDeleteTransactionAttachmentTypeDialog\n        }\n      />\n      <FluentDialog\n        open={isDeleteTransactionAttachmentTypeDialogOpen}\n        onClose={handleCloseDeleteTransactionAttachmentTypeDialog}\n        title={t('transactionTypes.page.dialogs.confirmDeleteTitle', { defaultValue: 'Confirm Delete' })}\n        message={t('transactionTypes.page.dialogs.deleteAttachmentType', { defaultValue: 'Are you sure you want to delete this attachment type?' })}\n        labelOne={t('common.delete', { defaultValue: 'Delete' })}\n        actionOne={handleDeleteTransactionAttachmentType}\n        labelTwo={t('common.cancel', { defaultValue: 'Cancel' })}\n        actionTwo={handleCloseDeleteTransactionAttachmentTypeDialog}\n      />\n    </>\n  );\n};\n\nexport default UdpTransactionTypesPage;\n"],"mappings":"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"}