{"version":3,"sources":["framework.core/XExportColumn.ts","framework.core/JobNames.ts","framework.core/data/DBMappingInfo.ts","uiControls/SmartTableRenderers.tsx","framework.core/SecurityGrant.ts","util/index.ts","fms.core/constants/index.ts","constants/index.ts","util/navigationHelpers.ts","framework.core/data/SQLInfo.ts","dateUtils/index.ts","ApplicationContext.ts","ui/PrimaryButton.tsx","components/common/JobListViewContext.ts","ui/TextBox.tsx","ui/HighlightButton.tsx","ui/ActionButton.tsx","hooks/useGlobalOkDialog.ts","ui/layout/InlineInputControlRow.tsx","ui/SecondaryButton.tsx","hooks/useFastStorage.ts","hooks/useFunctionKeys.ts","constants/fmsSubMenu.ts","fms.data/models/SearchModelBase.ts","tableSettings/index.ts","fastStorage/index.ts","hooks/useGlobalYesNoDialog.ts","img/container_tracking-yellow.svg","img/container_tracking-green.svg","img/container_tracking-blue.svg","img/container_tracking-red.svg","components/common/commonListRenderers.tsx","components/common/commonExportFormat.tsx","framework.core/DocumentType.ts","components/common/AbstractListView.tsx","ui/IfmsModal.tsx","ui/tables/editing/tableEditContext.ts","ui/tables/useEditableTableNavigation.ts","ui/tables/editing/TableEditControls.tsx","img/line-seq-swap-arrow-down-black.svg","img/line-seq-swap-arrow-down-white.svg","img/line-seq-swap-arrow-down-gray.svg","img/line-seq-swap-arrow-up-black.svg","img/line-seq-swap-arrow-up-white.svg","img/line-seq-swap-arrow-up-gray.svg","ui/tables/TableSearch.tsx","ui/tables/editing/EditableTable.tsx","ui/tables/useMultiTableContext.tsx","globals/index.ts","ui/menu/Menu.tsx","components/common/ListViewShortcutMenu.tsx","uiControls/SmartTable.tsx","uiControls/ToolboxMenuItem.tsx","hooks/useMemento.ts","img/calendar-red-top.png","ui/Date.tsx","ui/LeftRightSplit.tsx","ui/CheckBox.tsx","ui/layout/InlineInputControlRowNoLabel.tsx","ui/BottomDrawer.tsx","framework.core/Memo.ts","img/memo_doc_excel.svg","img/memo_doc_pdf.svg","img/memo_doc_ppt.svg","img/memo_doc_text.svg","img/memo_doc_word.svg","img/memo_doc_png.svg","img/memo-up-down.svg","msg.reader/msg.reader.js","img/loghistory/Shared.png","uiControls/infoArea/InfoAreaDrawer.tsx","img/memo_doc_msg.png","img/loghistory/Fax.png","img/loghistory/Email.png","img/loghistory/Print.png","img/loghistory/Outlook.png","img/loghistory/Upload.png","img/loghistory/Unshared.png","img/loghistory/Shared_PDF.png","fms.report/args/index.ts","fms.core/data/TrackingModule.ts","components/common/BlStatusRow.tsx","filtering/index.ts","ui/Select.tsx","hooks/useReportViewer.ts","fms.core/data/ChangeTrackable.ts","ui/layout/InputControlRow.tsx","ui/BlackInverseButton.tsx","ui/Float.tsx","ui/LightBlueButton.tsx","uiControls/UniqueLinkButton.tsx","hooks/useSuntekSettings.ts","ui/Label.tsx","app/hooks.ts","components/referenceFiles/ReferenceFiles.tsx","framework.core/CargoEventName.ts","hooks/useSystemSettings.ts","img/lock_red.png","components/accounting/general/journal/more/SearchJournal.tsx","components/accounting/general/journal/more/JournalVoucher.tsx","components/accounting/reports/GeneralLedger.tsx","components/accounting/general/journal/JournalListView.tsx","ui/CloseButton.tsx","hooks/useFunction.js","fms.enum/index.ts","ui/GreenButton.tsx","util/inputUtils.ts","components/referenceFiles/IfmsReferenceFilesContext.tsx","hooks/useDirtyCheck2.ts","fms.core/MblStatusViewModel.ts","ui/RadioButton.tsx","hooks/useSetEditedId.ts","components/accounting/tableSettings/index.ts","ui/PrimaryInverseButton.tsx","components/JobListSubMenu.tsx","fms.data/modules/FmsModFunc.ts","ui/DateTime.tsx","ui/IfmsButton.tsx","ui/tables/useTableNavigation.ts","components/common/Fieldset.tsx","components/reports/tableSettings/index.tsx","fms.core/constants/FmsSecCntr.ts","uiControls/CurrencyLabel.tsx","img/lock_blue.png","ui/LabeledCheckBox.tsx","ui/tables/FilterDrawer.tsx","hooks/useFilterBar.tsx","img/container_tracking-white.svg","ui/LinkButton.tsx","components/common/InfoAreaInvoiceBillCrDb.tsx","components/common/reports/reportTableSettings/reportTableSettings.ts","components/common/reports/AdjustBalance.tsx","components/common/JobListSuntekCommand.tsx","fms.core/TrackRequest.ts","img/Tracking_R.svg","components/reports/TrackingRequest.tsx","components/reports/EmailOption.tsx","components/oceanImport/mbl/MblListView.tsx","fms.data/models/OiLoadListItem.ts","components/oceanImport/loadPlan/LoadPlanListView.tsx","components/oceanImport/tableSettings/index.ts","fms.data/models/OiContainerListItem.ts","components/oceanImport/containerStatus/ContainerStatusListView.tsx","fms.data/models/OiVesselListItem.ts","components/oceanImport/vesselInfo/VesselInfoListView.tsx","fms.data/models/AmsListItemBase.ts","fms.data/models/AmsVoyageListItem.ts","fms.data/models/AmsVoyage.ts","components/oceanImport/ams/implementation/ViewVoyage.tsx","img/DownloadAll.png","img/NotDownloaded.png","img/Downloaded.png","components/oceanImport/ams/VoyageListView.tsx","fms.data/models/AmsMasterListItem.ts","fms.core/ams/AmsContainer.ts","fms.core/ams/AmsMbl.ts","components/oceanImport/ams/implementation/ViewMbl.tsx","components/oceanImport/ams/MblListView.tsx","fms.data/models/AmsHouseListItem.ts","fms.core/ams/AmsHts.ts","fms.core/ams/AmsHm.ts","fms.core/ams/AmsHbl.ts","components/oceanImport/ams/implementation/ViewHbl.tsx","components/oceanImport/ams/HblListView.tsx","fms.data/models/AmsUserListItem.ts","components/oceanImport/ams/tableSettings/index.ts","fms.data/models/AmsUserPort.ts","framework.core/AmsUser.ts","components/oceanImport/ams/implementation/ViewUser.tsx","components/oceanImport/ams/UsersListView.tsx","fms.data/models/AmsBranchListItem.ts","components/oceanImport/ams/BranchListView.tsx","fms.data/models/AmsBillingCodeListItem.ts","components/oceanImport/ams/BillingCodeListView.tsx","fms.data/models/AmsHistoryListItem.ts","components/oceanImport/ams/HistoryListView.tsx","fms.data/models/Ams1CHistoryListItem.ts","components/oceanImport/ams/CrHistoryListView.tsx","components/oceanExport/mbl/MblListView.tsx","webpack:///./src/img/container_tracking.svg?3fdb","fms.data/models/ReleaseHblInfo.ts","components/oceanImport/hbl/implementation/HblRelease.tsx","framework.core/edi/CFSManifestReleaseOption.ts","components/oceanImport/hbl/HblReleasePopup.tsx","img/Isf_P_circle.svg","components/oceanImport/hbl/HblListView.tsx","components/oceanExport/hbl/HblListView.tsx","fms.data/models/OceanQuoteListItem.ts","components/oceanExport/quotation/QuotationListView.tsx","fms.data/models/AirQuoteListItem.ts","components/airExport/quotation/QuotationListView.tsx","components/oceanExport/booking/BookingListView.tsx","fms.data/models/OeLoadPlanListItem.ts","components/oceanExport/loadPlan/LoadPlanListView.tsx","hooks/useIfmsColSizes.ts","components/common/BicInfoAreaHistory.tsx","components/accounting/bill/BillListView.tsx","fms.core/Edi310Header.ts","components/reports/Edi310.tsx","components/reports/Edi310Batch.tsx","components/accounting/invoice/InvoiceListView.tsx","components/accounting/crdb/CrdbListView.tsx","components/common/companies/CompanyListView.tsx","components/otherShipment/otherShipment/implementation/implementationConstants.ts","components/otherShipment/otherShipment/implementation/MblMilestoneContainerStatus.tsx","components/otherShipment/otherShipment/implementation/MblMilestone.tsx","components/otherShipment/otherShipment/implementation/mblUtils.ts","components/otherShipment/otherShipment/MblMilestonePopup.tsx","components/otherShipment/otherShipment/OtherShipmentListView.tsx","components/warehousing/receipt/ReceiptListView.tsx","components/warehousing/receiving/ReceivingListView.tsx","components/warehousing/shipping/ShippingListView.tsx","fms.data/models/WhInvenSumListItem.ts","components/warehousing/inventory/InventoryListView.tsx","fms.data/models/WhInvenDetailListItem.ts","components/warehousing/inOut/InOutListView.tsx","components/warehousing/storageInvoice/StorageInvoiceListView.tsx","fms.data/models/WhCustListItem.ts","components/warehousing/company/CompanyListView.tsx","fms.data/models/WhItemsListItem.ts","fms.core/WItemEDI.ts","uiControls/EdiWebCenterDropDown.tsx","components/reports/ItemUpload.tsx","components/warehousing/item/ItemListView.tsx","fms.data/models/WhLocationListItem.ts","components/warehousing/location/LocationListView.tsx","fms.data/models/CustomerPaymentListItem.ts","components/reports/HistoryViewPayment.tsx","components/accounting/payments/customerPayment/CustomerPaymentListView.tsx","fms.data/models/CustomerPaymentMemoListItem.ts","fms.core/BatchStatementHd.ts","components/accounting/reports/customerPaymentMemo/more/BatchStatementProcessing.tsx","components/accounting/reports/CustomerVendorStatement.tsx","components/accounting/reports/customerPaymentMemo/CustomerPaymentMemoListView.tsx","fms.data/models/AgentPaymentListItem.ts","components/accounting/payments/agentPayment/AgentPaymentListView.tsx","components/accounting/payments/billPayment/reports/BankEdi.tsx","components/reports/CheckPrint.tsx","components/accounting/payments/billPayment/reports/BatchCheckProcessing.tsx","fms.core/BatchCheckProcessingModel.ts","components/accounting/payments/billPayment/BillPaymentListView.tsx","fms.data/models/CreditPaymentListItem.ts","components/accounting/payments/ccPayment/CCPaymentListView.tsx","fms.data/models/OtQuotationListItem.ts","components/otherShipment/quotation/QuotationListView.tsx","components/airImport/mawb/MawbListView.tsx","components/airImport/hawb/HawbListView.tsx","components/airExport/mawb/MawbListView.tsx","components/airExport/hawb/implementation/HawbMilestone.tsx","components/airExport/hawb/HawbBlStatusPopup.tsx","components/airExport/hawb/HawbListView.tsx","fms.data/models/OeContainerListItem.ts","components/oceanExport/containerStatus/OeContainerStatusListView.tsx","components/accounting/gInvoice/GeneralInvoiceListView.tsx","components/accounting/gBill/GeneralBillListView.tsx","fms.data/models/BankRecActListItem.ts","components/accounting/bankTransactions/BankRecon/report/BankReconActivityReportView.tsx","components/accounting/bankTransactions/BankRecon/BankReconListView.tsx","fms.data/models/BankTransferListItem.ts","components/accounting/bankTransactions/BankTransfer/BankTransferListView.tsx","fms.data/models/AdjPrepaidExpenseListItem.ts","components/accounting/general/prepaidExpenseAdjustment/PrepaidExpenseAdjustmentListView.tsx","fms.data/models/PayrollSummaryListItem.ts","components/accounting/general/payrollSummary/PayrollSummaryListView.tsx","fms.data/models/Payroll2ListItem.ts","components/accounting/general/payroll2/Payroll2ListView.tsx","fms.data/models/AdjDepreciationListItem.ts","components/accounting/general/DepreciationAdjustment/DepreciationAdjustmentListView.tsx","fms.data/models/AdjAmortizationListItem.ts","components/accounting/general/AmortizationAdjustment/AmortizationAdjustmentListView.tsx","fms.data/models/BadDebtExpenseListItem.ts","components/accounting/general/BadDebtProcessing/BadDebtProcessingListView.tsx","components/accounting/general/tableSettings/index.ts","fms.data/models/SalesTaxReturnListItem.ts","components/accounting/general/salesTaxReturn/SalesTaxReturnListView.tsx","components/oceanImport/isf/IsfListView.tsx","components/common/download/MasterDownloadListView.tsx","components/common/download/HouseDownloadListView.tsx","fms.data/models/PimsPoListItem.ts","components/common/download/ShipmentListView.tsx","components/Help/MemoAllListView.tsx","components/Help/AttachedFileListView.tsx","components/Help/EmailLogListView.tsx","components/Help/PrintLogListView.tsx","components/Help/FaxLogListView.tsx","fms.data/models/UTCommunicationListItem.ts","components/Help/CommunicationListView.tsx","fms.data/models/PaymentPrepListItem.ts","components/accounting/payments/paymentPrep/PaymentPrepListView.tsx","fms.data/models/AciManifestListItem.ts","components/oceanImport/ams/HouseBillListView.tsx","components/accounting/general/BatchRecog/BatchRecogListView.tsx","img/Tracking_Y_Triangle.svg","img/Tracking_B_Triangle.svg","img/MyEvent_AN.svg","img/MyEvent_Carrier.svg","img/MyEvent_Cust.svg","img/MyEvent_Pickup.svg","img/MyEvent_Return.svg","img/MyEvent_Billings.svg","components/oceanImport/containerStatus/MyEventListView.tsx","components/common/listJobNames.ts","ui/LabeledControl.tsx","hooks/useTableStorage.ts","components/common/utils/formatUtils.ts","ui/CheckBoxUncontrolled.tsx","components/reports/AccountBalance.tsx","features/operationSlice.ts","ui/MultilineTextBox.tsx","ui/BlueTitleRow.tsx","screenMemory/index.ts","features/screenStackSlice.ts","components/accounting/reports/ClosingPeriod.tsx","fms.core/PeriodClosing.ts","ui/OrangeButton.tsx","components/accounting/reports/yearEndProcessing/tableSettings.ts","fms.core/FYPeriod.ts","components/accounting/reports/ManageFiscalYearEnd.tsx","components/accounting/reports/YearEndProcessing.tsx","config/index.tsx","features/storageSlice.ts","features/jobMenuSlice.ts","fms.data/models/InvoiceListItem.ts","components/warehousing/tableSettings/index.ts","ui/RecogModal.tsx","components/oceanImport/mbl/implementation/mblUtils.ts","framework.core/BlEventName.ts","fms.core/BlEventLog.ts","ui/CheckBoxIcon.tsx","fms.core/HblStatusViewModel.ts","fms.data/models/OiHblListItem.ts","hooks/useDeepCompareEffect.js","fms.data/models/BillListItem.ts","ui/lookup/LookupField.tsx","uiControls/MoveTypeDropDown.tsx","hooks/useStorage.ts","fms.data/models/AiHblListItem.ts","components/accounting/routes/index.ts","components/oceanExport/tableSettings/index.ts","hooks/useJobMenus.tsx","hooks/useSideMenuHeightMonitor.ts","img/direct_print.svg","img/direct_print_White.svg","img/preview_print_disable.svg","img/direct_print_disable.svg","IfmsSideMenu.tsx","components/reports/BatchPrint.tsx","fms.data/models/JournalLedgerListItem.ts","ui/Number.tsx","fms.core/OmContainer.ts","fms.data/models/OiMblListItem.ts","fms.core/AcctHistHd.ts","uiControls/BranchDropDown.tsx","uiControls/ClearableSearch.tsx","uiControls/lookup/OceanUnPortLookupField.tsx","components/reports/HistoryView.tsx","features/loginSlice.ts","fms.data/models/MyEventListItem.ts","features/globalOkDialogSlice.ts","fms.core/pims/PimsContainer.ts","uiControls/lookup/GlNoLookupField.tsx","ui/TextBoxUncontrolled.tsx","fms.data/models/OeMblListItem.ts","fms.data/models/OeHblListItem.ts","components/oceanExport/routes/index.ts","components/warehousing/routes/index.ts","fms.data/modules/FmsModAccount.ts","uiControls/BankDropDown.tsx","excel/index.js","hooks/useExternalScreenFilter.ts","fms.core/HblInven.ts","img/container_tracking-black.svg","fms.core/PimsCntrEvent.ts","features/listScreenSettingsSlice.ts","fms.data/models/WhReciptsListItem.ts","fms.data/models/WhRcvListItem.ts","fms.data/models/WhShipListItem.ts","fms.data/models/OeBookingListItem.ts","fms.data/models/BatchRecogListItem.ts","fms.data/lookup/CheckLookup.ts","framework.core/data/TextValue.ts","fms.core/ApHd.ts","components/accounting/bill/report/PrintBill.tsx","fms.data/models/AiMblListItem.ts","fms.data/models/AeMblListItem.ts","fms.data/models/AeHblListItem.ts","fms.data/models/OtherOperationListItem.ts","fms.data/models/CodeCompanyListItem.ts","fms.data/models/PimsBookingListItem.ts","fms.data/models/PimsVanningListItem.ts","fms.data/models/BillPaymentListItem.ts","fms.data/models/CrDbListItem.ts","fms.data/models/IsfListItem.ts","components/airExport/routes/index.ts","components/airImport/routes/index.ts","components/oceanImport/routes/index.ts","fms.data/models/CodeMemoTitleListItem.ts","uiControls/ButtonGroup.tsx","img/notice_warning.svg","components/airExport/tableSettings/index.ts","features/lastSavedJobSlice.ts","fms.core/ApDetail.ts","util/routeUtils.ts","features/globalYesNoDialogSlice.ts","fms.data/models/UTTaskMemoListItem.ts","fms.data/models/UTEmailLogListItem.ts","fms.data/models/UTPrintLogListItem.ts","fms.data/models/UTFaxLogListItem.ts","fms.core/CargoEventLog.ts","fms.report/index.ts","uiControls/lookup/CompanyListExLookupField.tsx","fms.data/models/UTAttachedFileListItem.ts","components/common/routes/index.ts","components/otherShipment/routes/index.ts","img/circle-exit-red.svg","fms.data/models/RateTableListItem.ts","ui/tables/useFlexResizer.ts","ui/tables/useFixResizer.ts","ui/TableHeaderFilters.tsx","ui/tables/Table.tsx","msg.reader/DataStream.js","hooks/useJobMenu.tsx","uiControls/lookup/CompanyLookupField.tsx","uiControls/Currency.tsx","uiControls/CurrencyDropDown.tsx","ui/GrayButtonTabs.tsx","ui/PrimaryButtonTabs.tsx","ui/DeepBlueButtonTabs.tsx","hooks/useJobMenuUrlQuery.ts","uiControls/UsersDropDown.tsx","fms.core/OpAcct.ts","fms.core/AeAcctRecord.ts","uiControls/lookup/CopyInvTargetBLLookupField.tsx","uiControls/lookup/CopyInvTargetAcctLookupField.tsx","components/accounting/common/CopyInvoice.tsx","components/otherShipment/tableSettings/index.ts","components/airImport/mawb/util/index.ts","hooks/dialogHelpers.tsx","ui/DangerButton.tsx","hooks/useWindowSize.ts","components/reports/BillInformation.tsx","fms.core/GenContainer.ts","components/airImport/tableSettings/index.ts","fms.core/AemExtra2.ts","img/preview_print.svg","security/AuthService.ts","components/jobSwitchingMenuContext.ts","ui/DarkInverseButton.tsx","ui/tables/useTableRowSelection.ts","img/circle-exit-white.svg","components/oceanExport/mbl/implementation/implementationConstants.ts","fms.core/WItem.ts","fms.core/RateTable.ts","img/preview_print_White.svg","ui/TooltipButton.tsx","fms.data/models/CodeAirportListItem.ts","components/referenceFiles/implementation/air/Airport.tsx","fms.data/models/CodeBLTypeListItem.ts","components/referenceFiles/implementation/ocean/OriginalBlType.tsx","fms.core/CodeContainerType.ts","fms.data/models/CodeContainerTypeListItem.ts","components/referenceFiles/implementation/ocean/ContainerType.tsx","fms.data/models/CodeMoveTypeListItem.ts","components/referenceFiles/implementation/ocean/MoveType.tsx","fms.data/models/CodeScheduleDKListItem.ts","components/referenceFiles/implementation/ocean/ScheduleDkPort.tsx","fms.data/models/CodeVesselListItem.ts","components/referenceFiles/implementation/ocean/VesselName.tsx","fms.data/models/CodeOtherOPCategoryListItem.ts","components/referenceFiles/implementation/OtherShipmentType.tsx","fms.data/models/CodeExportInfoListItem.ts","components/referenceFiles/implementation/aes/ExportInfo.tsx","fms.data/models/CodeExportLicListItem.ts","components/referenceFiles/implementation/aes/LicenseInfo.tsx","fms.data/models/CodeScheduleBListItem.ts","components/referenceFiles/implementation/aes/Scheduleb.tsx","components/referenceFiles/implementation/aes/BuyingRate.tsx","fms.data/models/CodeAccountListItem.ts","fms.core/CodeGlNo.ts","components/referenceFiles/implementation/codes/AccountCodeDetails.tsx","components/referenceFiles/implementation/codes/AccountCode.tsx","fms.data/models/CodeAccountSubListItem.ts","components/referenceFiles/implementation/codes/AccountSubCode.tsx","fms.data/models/CodeBillingListItem.ts","fms.core/NCodeCharge.ts","components/referenceFiles/implementation/codes/BillingCode.tsx","fms.data/models/CodeANTitleListItem.ts","components/referenceFiles/implementation/AnTitle.tsx","fms.data/models/CodeCommodityListItem.ts","components/referenceFiles/implementation/CommodityCode.tsx","fms.data/models/CodeCurrencyListItem.ts","components/referenceFiles/implementation/currency/CurrencyCode.tsx","fms.data/models/CodeExchangeRateListItem.ts","components/referenceFiles/implementation/ExchangeRate.tsx","fms.data/models/CodeCountryListItem.ts","components/referenceFiles/implementation/region/Country.tsx","fms.data/models/CodeStateListItem.ts","components/referenceFiles/implementation/region/State.tsx","fms.data/models/CodeUNLocationListItem.ts","fms.core/CodeOceanUnPort.ts","components/referenceFiles/implementation/region/UnLocationCode.tsx","fms.data/models/CodeEDI315ListItem.ts","components/referenceFiles/implementation/Edi315.tsx","components/referenceFiles/implementation/memoInfo/MemoTitle.tsx","components/referenceFiles/implementation/CodesFactory.js","InvalidOperation.tsx","NotFound.tsx","config/routes.tsx","components/memoList/routes/index.ts","components/referenceFiles/routes/index.ts","components/Help/routes/index.tsx","components/setup/routes/index.tsx","components/home/routes/index.ts","components/opReport/routes/index.ts","fms.core/AiMbl.ts","fms.core/AeMbl.ts","fms.core/OiMbl.ts","fms.core/OeMbl.ts","fms.core/GenMain.ts","ui/LabeledSelect.tsx","ui/LabeledTextBox.tsx","uiControls/lookup/CyLocationLookupField.tsx","img/configure-04.svg","img/configure-04-green.svg","uiControls/screens/ScreenTitleBar.tsx","hooks/useListHeightMonitor.ts","img/excel_black.svg","img/excel_green.svg","components/common/JobListView.tsx","hooks/useGetEditedId.ts","hooks/useContextMenu.tsx","hooks/useListData.ts","img/toggleOn_blue.svg","img/toggleOffDisabled.svg","ui/ToggleButton.tsx","fms.core/HblPoNo.ts","ui/FilterableSelect2.tsx","constants/salesCostTypes.ts","uiControls/MultiNameDropDown.tsx","fms.core/OhContainer.ts","uiControls/lookup/CompanyListNotAgentLookupField.tsx","fms.data/modules/FmsModEdi.ts","uiControls/CountryIsoCodeDropDown.tsx","components/oceanImport/hbl/implementation/hblUtils.ts","ui/GreenButtonInputExcel.tsx","uiControls/ContainerTypeDropDown.tsx","fms.data/models/CodeSCACListItem.ts","fms.core/CodeScac.ts","components/referenceFiles/implementation/aes/Carrier.tsx","fms.core/CodeAirLine.ts","fms.data/models/CodeAirlineListItem.ts","components/referenceFiles/implementation/air/Airline.tsx","ui/WhiteButton.tsx","components/oceanImport/loadPlan/tableSettings/index.ts","components/oceanExport/mbl/implementation/mblUtils.ts","uiControls/SalesCostTypeLabel.tsx","components/reports/FlexTank.tsx","uiControls/IsoCountryDropDown.tsx","components/memoList/useMemoListOperationStorage.ts","features/activeDutyTrackingSlice.ts","components/oceanImport/mbl/implementation/implementationConstants.ts","components/oceanImport/mbl/implementation/MblMilestoneContainerStatus.tsx","components/oceanImport/mbl/implementation/MblMilestone.tsx","components/oceanImport/mbl/MblMilestonePopup.tsx","components/airImport/mawb/implementation/implementationConstants.ts","components/airImport/mawb/implementation/MawbAirLineStatus.tsx","components/airImport/mawb/implementation/MawbMilestone.tsx","components/airImport/mawb/MawbMilestonePopup.tsx","components/airExport/mawb/implementation/implementationConstants.ts","components/airExport/mawb/implementation/MawbAirLineStatus.tsx","components/airExport/mawb/implementation/MawbMilestone.tsx","components/airExport/mawb/MawbMilestonePopup.tsx","components/oceanExport/mbl/implementation/MblMilestoneContainerStatus.tsx","components/oceanExport/mbl/implementation/MblMilestone.tsx","components/oceanExport/mbl/MblMilestonePopup.tsx","components/oceanImport/hbl/implementation/HblMilestone.tsx","components/oceanImport/hbl/HblBlStatusPopup.tsx","components/oceanExport/hbl/implementation/HblMilestone.tsx","components/oceanExport/hbl/HblMilestonePopup.tsx","components/airImport/hawb/implementation/HawbMilestone.tsx","components/airImport/hawb/HawbMilestonePopup.tsx","api/ifmsApi.ts","api/index.ts","uiControls/OkButton.tsx","ui/Spinner.tsx","ApplicationLoading.tsx","img/login/bg1.jpg","img/login/bg2.jpg","img/login/bg3.jpg","img/login/bg4.jpg","img/login/bg5.jpg","img/login/bg6.jpg","img/login/bg7.jpg","img/login/bg8.jpg","img/login/bg9.jpg","img/login/bg10.jpg","img/sun-logo.svg","img/iFMS_B.svg","img/ico_user.png","Login.tsx","img/ico_lock.png","img/job-switching-list.svg","components/JobSwitchingMenu.tsx","img/customer_not-selected_skyblue.svg","img/customer-not-selected.svg","ui/dashboard/menu/DashboardMenu.tsx","img/ifms-logo_White.svg","img/reference-not-selected2_skyblue.svg","img/settings-not-selected_skyblue.svg","img/container_tracking.svg","img/container_tracking-skyblue.svg","img/Inbond_B.svg","img/Inbond_D.svg","img/user.svg","img/user_selected.svg","ui/DashboardCustomButton.tsx","ui/UserButton.tsx","features/globalYesNoCancelDialogSlice.ts","img/eSupport-not-selected.svg","img/eSupport-not-selected_skyblue.svg","img/accounting-not-selected.png","img/warehousing-not-selected.png","img/air-import-not-selected.svg","img/air-export-not-selected.svg","img/freight-receipt-not-selected.svg","img/utilities-not-selected.svg","img/runner.svg","img/exit.svg","img/ocean-import-not-selected_skyblue.svg","img/ocean-export-not-selected_skyblue.svg","img/air-import-not-selected_skyblue.svg","img/air-export-not-selected_skyblue.svg","img/trucking-others-not-selected_skyblue.svg","img/freight-receipt-not-selected_skyblue.svg","img/warehousing-not-selected_skyblue.svg","img/report-manager-not-selected_skyblue.svg","img/billings-not-selected_skyblue.svg","img/accounting-not-selected_skyblue.svg","img/utilities-not-selected_skyblue.svg","img/billings-not-selected.svg","img/my-job-not-select.svg","img/my-job-not-select-skyblue.svg","img/bell.svg","img/bi.svg","img/bi_D.svg","img/AMS_B.svg","img/AMS_D.svg","img/AES_B.svg","img/AES_D.svg","img/ISF_B.svg","img/ISF_D.svg","components/IfmsTopBar.tsx","img/ocean-import-not-selected.png","img/ocean-export-not-selected.png","img/trucking-others-not-selected.png","img/report-manager-not-selected.png","img/reference-not-selected2.png","img/settings-not-selected.png","img/ifms-logo-black.png","img/notice_inform_blue.svg","img/notice_inform_YesNo.svg","img/notice_error.svg","uiControls/TableHeaderSizeDisplay.tsx","components/reports/MyMemo.tsx","components/reports/VolumebyCargoTypeYears.tsx","fms.core/AutoBillingHD.ts","components/accounting/gInvoice/AutoBilling/AutoBilling.tsx","IfmsMain.tsx","AutoLogin.tsx","App.tsx","features/globalInputDialogSlice.ts","app/store.ts","index.tsx"],"names":["XCellType","XAlignType","Create","obj","text","width","align","Left","type","String","dataIndex","formatString","col","visible","moveable","searchIndex","mandatory","maxLength","defaultFocus","canBeHidden","resizable","sortable","filterable","hiddenInColumnSetup","noNullOrEmptySearch","JobNames","getOpTypeConstant","jobName","opType","opName","substring","indexOf","toUpperCase","constants","opTypes","oceanImport","oceanExport","airImport","airExport","otherShipment","warehousing","accounting","getJobNameFromInvBillCrDbJobType","fType","OIHbl","OIMbl","OEHbl","OEMbl","AIHbl","AIMbl","AEHbl","AEMbl","OtherOP","WHRcv","WHShip","WHRcpt","None","isMasterJob","includeOP","ret","isHouseJob","getOpByjobName","Company","customer","getOpByName","myEvent","getJobNameByTbName","tbName","toLowerCase","Warehouse","Inventory","CustPaymentMemo","SeaQuotation","getTbNameByJobName","OEBook","AMSHouse","AMSMaster","ACIManifest","ISF","CommInvoice","FfmOrderFulfilling","FfmReceiving","OITruckLoad","InventoryItem","WHRcptPanP","SellingRate","OceanRate","Invoice","InvoAdj","GInvo","WHStorageInv","AutoBillingStorage","AutoBillingInvoice","CrDb","CrDbAdj","Bill","APayAdj","GBill","BillPayment","CustPayment","AgntPayment","CheckDeposit","UndoDeposit","CCPayment","Settle","BankTransfer","BankRecActivity","OIContainer","OEContainer","AMSVoyage","AMSHistory","AMSC1History","AirQuotation","OtQuotation","SlipJournal","OIMPims","OEMPims","AIMPims","AEMPims","OIHPims","OEHPims","AIHPims","AEHPims","OIMMyPims","OEMMyPims","AIMMyPims","AEMMyPims","OIHMyPims","OEHMyPims","AIHMyPims","AEHMyPims","OiSoPims","OeSoPims","AiSoPims","AeSoPims","Bank","BillingCode","GLNo","CreditCardSetup","SalesTaxReturn","PayrollSummary","Payroll2","BatchMemo","PrepaidExpenseAdjustment","DepreciationAdjustment","AmortizationAdjustment","BadDebtExpense","Scac","getMasterJob","subJob","dbType","masterJob","isAirJob","job","isExportJob","getJobNameFromInvBillCrdbTbName","acctTbName","getOpTypeFromInvBillCrdbTbName","DBMappingInfo","init","dbField","dbTable","dbParams","this","field","table","name","push","SQLField","fieldName","value","tbId","undefined","c1","NumberedIndicatorRendererImpl","row","className","index","IndicatorRendererImpl","TableIndicatorRendererImpl","rowIndex","TableCheckBoxRendererImpl","columnId","disabled","onChangeFunc","id","onChange","chk","TableNumberRendererImpl","decimal","showZero","formattedValue","format","repeat","numeral","Number","formatNumber","TableTextRendererImpl","onLabelClick","clickProps","onClick","style","cursor","color","fontWeight","TableDateRendererImpl","dateType","dateFormat","useSuntekSettings","company","renderValue","formatDate","formatDateTime","TextRendererImpl","cell","column","TextAlignLeftRendererImpl","accountName","displayValue","TextAlignLeftWithBordersRendererImpl","TextAlignLeftWithAddressTooltipRendererImpl","tempAddressText","Header","original","sName","shipper","cName","consignee","nName","notify","bName","puCargoLocation","truckingCompany","data-tooltip","TextAlignRightRendererImpl","NullableCheckboxIconRendererImpl","NullableCheckboxRedIconRendererImpl","NullableBlackCheckboxIconRendererImpl","DateRendererImpl","suntekSettings","DateTimeRendererImpl","DateTimeIncludeSecRendererImpl","CurrencyAmountRendererImpl","currencyAccessor","data","currency","amount","cellValue","decimals","getDecimal","toFixed","FloatRendererImpl","useComma","formattedNumber","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","useGrouping","FloatCurRendererImpl","FloatWithBorderRendererImpl","BlueTextRendererImpl","tooltip","bold","fontSize","padding","NumberedIndicatorRenderer","React","memo","IndicatorRenderer","TextRenderer","TableTextRenderer","TableDateRenderer","TableNumberRenderer","TableCheckBoxRenderer","TableIndicatorRenderer","NullableCheckboxIconRenderer","NullableBlackCheckboxIconRenderer","DateRenderer","DateTimeRenderer","DateTimeIncludeSecRenderer","TextAlignLeftRenderer","TextAlignLeftWithBordersRenderer","TextAlignRightRenderer","CurrencyAmountRenderer","TextAlignLeftWithAddressTooltipRenderer","FloatRenderer","FloatCurRenderer","FloatWithBorderRenderer","BlueTextRenderer","NullableCheckboxRedIconRenderer","SecurityGrant","securityGroupId","securityTaskId","securityTaskCode","grantAdd","grantActive","grantType","grantRead","grantEdit","grantDel","grantPrint","grantYesNo","createdBy","createdAt","modifiedBy","modifiedAt","Object","assign","OperationsMap","_","map","operations","key","getLayoutSizes","viewportWidth","layout","break4","break3","break2","break1","large","getOperationKey","operationName","match","find","x","getOperationNameFromJobName","Error","stringsContainsIgnoreCase","str1","str2","includes","stringsEqualIgnoreCase","stringsStartsWithIgnoreCase","startsWith","dimensionsToCbmKgs","length","height","pcs","volCm","includeLbs","weightCalculationBase","change","chgWeight","lChgWeight","mathRound","kgToLbs","n","isNaN","lbsToKg","Math","round","cftToCbm","isCharacterKeyPress","evt","keyCode","handleBillOrInvoiceLineItemDelete","cur1Param","cur2Param","exRate1Param","exRate2Param","lineItems","cur1","cur2","exRate1","exRate2","some","cur","agtCur","handleBillOrInvoiceCurrencyChange","newCur","oldCur","availableCurrenciesParam","primaryCurrency","availableCurrencies","filter","isEmpty","invCur1","invCur2","applyLineItemCurrencyChange","l","billOrInvoiceCurrencyChangeWorker","i","lineItemsParam","curChangeFnc","forEach","ind","handleBillOrInvoiceLineItemCurrencyChange","calculateHeaderCurrencyAmount","rate","qty","headerCurrency","cur3","cur4","exRate3","exRate4","headerToPrimaryRate","amountInPrimary","calculatePrimaryCurrencyAmount","calculatePrimaryCurrencyAmountFor","amountParam","currencies","getCurrencies","c","getValueInCurrency","a","parseFloat","makeTrackableListItemInCopyMode","copyApiResult","resultList","elementType","propertyValue","create","newElement","trackable","getOwnPropertyNames","getOwnPropertyDescriptor","y","defineProperty","isNullOrEmpty","str","isWhiteSpaceCheck","trim","setCaretPosition","el","caretPos","elAsAny","createTextRange","range","move","select","selectionStart","focus","setSelectionRange","isEveryPropertyEmpty","additionalEmptyValues","propertiesToSkip","testObj","cloneDeep","specialObj","Array","isArray","omit","keys","keyName","emptyCheck","isString","isNumber","emptyCheckSpecial","values","every","formatAmount","decimalCount","thousands","abs","negativeSign","parseInt","toString","j","substr","replace","slice","e","console","log","isElementFocusable","getQueryParamObject","history","urlSearchParams","URLSearchParams","location","search","fromEntries","entries","parseJwt","token","base64","split","jsonPayload","decodeURIComponent","atob","charCodeAt","join","JSON","parse","appendLine","result","cbmInchToCm","num","cbmCmToInch","lbsInchToCm","lbsCmToInch","sleep","ms","Promise","resolve","setTimeout","replaceAt","stringGetFirstLine","arr","stringGetSecondLines","cbmToCft","cbm","retDecimal","left","filterListBySecTask","filterList","secTask","fmsSecTask","items","f","MenuFilterGrents","grents","appContext","disableMenu","compliance","amsEnableAll","amsEnable","amsId1","amsId2","amsId3","disable","amsUseeManifest","useSalesTaxReturn","FmsSecTask","AcctSalesTaxReturnList","enableBranch","OPRptBranchPerform","g","sjob","nonItemThenHide","AcctDeposit","AcctDepositClear","AcctUndoDeposit","AcctUndoDepositClear","AcctAgingAR","AcctAgingAP","AcctAgingAgent","AcctAgingARAP","AcctAgingOther","Map","getJobNamesByCurrentUrl","searchValue","getListItemByJobName","OiMblListItem","OiHblListItem","AiMblListItem","AiHblListItem","OeMblListItem","OeHblListItem","OeBookingListItem","AeMblListItem","AeHblListItem","OtherOperationListItem","WhReciptsListItem","WhRcvListItem","WhShipListItem","CodeCompanyListItem","BillPaymentListItem","PimsBookingListItem","PimsVanningListItem","BatchRecog","BatchRecogListItem","OpInvoice","InvoiceListItem","OpBill","BillListItem","OpCrDb","CrDbListItem","JournalLedgerListItem","MyEvent","MyEventListItem","IsfListItem","GetCompanyNameNew","vID","vComName","vIgnoreBlank","getTooltipValue","customLabel","WHInvoice","WHBill","WHCrDb","OILoad","OELoad","findSecurityTask","taskCode","securityGrants","getSecBySecTask","secType","SecType","Read","secGrant","Add","Edit","Delete","YesOrNo","stringArraysEqual","arr1","arr2","sort","SQLIndex","FmsComboType","FmsAutoNumberType","ListFilterType","ComboParamsBase","comboType","useEmpty","firstValue","defValue","addAllItem","addDetailSummarylItem","addUnknownItem","LookupParamasBase","displayMember","valueMember","listMember","WebCenterParams","centerType","WebCenter","EdiWebCenterParams","EdiWebCenter","CategoryParams","Category","StateParams","country","State","CreditCardParams","CreditCard","BankParams","SecurityGroup","ANTitle","IsOcean","MultiName","IsoCountryParams","IsoCountry","ExportLicense","ExportLic","OdtcCategory","ODTCCategory","OdtcUnitOfMeasure","ODTCUnitOfMeasure","ExportInfo","home","whReceipt","opReport","standalone","utility","billings","businessIntell","types","MBL","HBL","MAWB","HAWB","regular","halfSplitLargeRight","halfSplitRegularRight","halfSplitSmallRight","portOfLoading","break","infoAreaEntity","oceanImportMbl","oceanImportHbl","oceanExportMbl","oceanExportHbl","oceanImportInvoice","oceanImportBill","oceanImportCrdb","oceanImportQuotation","codeMiscMemoTitle","codeCompanyBranch","codeCompanyCompany","codeCompanyCompanyUser","codeCompanyDepartment","codeOceanPortCode","codeOceanVesselName","codeMiscCommodity","SAVE_SUCCESS_DEFAULT_MSG","SAVE_ERROR_MESSAGE","LOAD_ERROR_MESSAGE","BL_INFO","Doc_Server","Document_Server","List_Billings","List_Journal","Units","NavigationType","newPage","jobMenuSwitch","openNewPage","link","navigationType","metadata","afterScreenUrl","params","channel","postal","publish","SQLType","SQLCondition","propertyName","SQLInfo","tableName","Select","isSingleTable","fields","whereFields","where","conditionalString","sqlInfo","propName","sf","fldName","getFieldByPropertyName","getWhereFieldByPropertyName","getWhereFieldByFieldName","BlStatus","UpdateDutyEntity","UpdateSrcDutyEntity","UpdateBrokerInfo","UpdateStatusOP","SaveAcctHistory","UpdateOriginActionDate","DeleteDepoData","DeleteApData","UpdateHblITInfo","UpdateHblFDest","SaveAiManifest","UpdateWhLocationStatus","RegisterWhItem","UpdateByAcmeID","UpdateHistory","UpdateVoidInfo","UpdateCreditInfo","UpdateCancelCreditInfo","UpdateBLInfo","SaveReviseInvo","UpdatePaidAmend","SaveNewJournalByMaster","MatchAdvanceInPayment","SaveNewJournalByTask","formatIso","iso","moment","getLongDateFromIso","getCurrentDateIso","dateOnly","isoDate","getDateFormat","isoDateTime","includeSec","forList","format2","getDateTimeFormat","formatDateTimeFull","isoToDate","toDate","now","nowMillisecond","nowDate","getCurrentMonth","month","getCurrentYear","year","nowUtc","utc","nowStartOfDay","startOf","nowStartOfMonth","prevMonthStartOfDay","add","prevMonthLastOfDay","getDiffMonths","iso1","iso2","diff","getDiffDays","dateTextToIso","date","valid","m","isValid","dateTimeTextToIso","dateTime","jsDateToIso","getTime","tIndex","hhMM","getDate","addDays","days","addMonths","months","addYears","years","isIsoBefore","isoBeforeCheck","isBefore","compareIso","m1","m2","isSame","getBigDate","setTime","time","timePart","getDateFromEpoch","epoch","Date","getEpochFromDate","valueOf","isIsoDateTime","ISO_8601","from","label","monthsList","quartersList","halfList","defaultState","api","user","systemSettings","setSystemSettings","setSuntekSettings","defaultPageSize","onLogout","refreshSystemSettings","appInfoAreaContent","setAppInfoAreaContent","appInfoAreaDrawerHeight","setAppInfoAreaDrawerHeight","useDarkMode","setUseDarkMode","backgroundColor","setBackgroundColor","securityControls","setSecurityControls","getControlDisableStatus","logoutWorker","myMemoTaskReminder","setMyMemoTaskReminder","useCheckReminder","setUseCheckReminder","myMemoId","setMyMemoId","ApplicationContext","createContext","PrimaryButton","forwardRef","ref","children","other","baseClass","notsetbackcolorwhenfocus","defaultProps","selectedElement","hasOpenedScreenStartingWithUrl","hasOpenedScreenStartingWithUrlWithoutMe","hasOpenedScreenInAnyOperationStartingWithUrl","hasOpenedScreenInAnyOperationStartingWithUrlWithoutMe","getOpenedScreenInAnyOperationStartingWithUrl","moveToOpenedScreenInAnyOperationStartingWithUrl","reloadData","triggerTableSearch","setFilterForScreenExternally","setFilterForSearchModel","infoAreaContent","setInfoAreaContent","updateDataRow","openedByF6","f6Origin","f6Query","rowExtrasId","setRowExtrasId","setClickedCell","setData","viewPopupRow","dismissPopupRow","showPopupRow","setListFilterType","trackingRequestEmailList","setTrackingRequestEmailList","recogModalData","setRecogModalData","JobListViewContext","TextBox","placeholder","onPaste","error","red","alignRight","alignCenter","onEnter","password","onTabNext","onTabPrevious","textId","noborder","noLeftBorder","underline","onFocus","onBlur","focusableWhenDisabled","autocompleteOffGuard","uniqueId","inputId","unInitializeEvent","document","getElementById","removeEventListener","onKeyDown","useEffect","addEventListener","initializeEvent","cssClass","initialStyle","textStyle","processTabNext","stopPropagation","preventDefault","processTabPrevious","isCell","element","divElements","querySelectorAll","div","contains","target","relatedTarget","nativeEvent","dataset","nocellvalidate","classList","backFocus","changeFocus","selectInput","handleBlurValidation","shiftKey","ctrlKey","textAlign","textDecoration","autoComplete","list","data-tooltip-onlywhencutoff","dark","HighlightButton","IfmsButton","borderColors","splitMenuItemsIntoSections","actionButtonItems","item","hidden","separator","selected","newCol","CLOSE_ALL_MENUS","ActionButton","size","action","hideCaret","onItemSelected","variant","useState","menuVisible","_setMenuVisible","referenceElement","setReferenceElement","popperElement","setPopperElement","arrowElement","setArrowElement","usePopper","modifiers","options","styles","attributes","menuContainerRef","useRef","buttonRef","openRef","mouseMove","mX","clientX","mY","clientY","overButton","overMenu","current","bc","getBoundingClientRect","right","top","bottom","mc","isJobSwitcingMenuOpend","showMenu","setMenuVisible","handleClickOutsideMenu","handleCloseMenu","v","dispatchEvent","CustomEvent","ButtonComponent","HighlightButtonComponent","SecondaryButton","DangerButton","PrimaryInverseButton","BlackInverseButton","appliedPopperStyles","popper","minWidth","onActionButtonClick","onActionButtonRightClick","formatterItems","useMemo","ButtonComponentToRender","onContextMenu","icon","faAngleUp","faAngleDown","node","onMouseMove","Menu","mode","onMenuItemSelected","subMenuStyle","whiteSpace","menuStyle","maxHeight","overflowY","borderTop","paddingTop","arrow","useGlobalOkDialog","dispatch","useAppDispatch","contentParam","hideOkButton","showGlobalOkDialog","content","formatDialogContent","InlineInputControlRow","validationFor","smallMargin","useLeftMargin","labelStyle","paddingRight","marginLeft","labelSize","renderedLabel","rowClass","leftSize","rightSize","data-validationfor","getTypeStorageUrlSuffixForEditScreen","currentUrl","getRoutePath","mergeCustomizer","objValue","srcValue","isObject","merge","initializeStorageAndGet","storageName","initialValue","fastStorage","useTypedFastStorage","storageNameParam","defaultValue","useHistory","url","pathname","useFastStorage","storageObj","_updateStorage","deleteObjFromStorage","storageObjRef","tick","useDirtyCheck","getCleanState","updateStorage","objRef","_setTick","tickRef","doTick","isTrackableObject","updateStorageValue","isListData","forceClone","mergeWith","handleUndefinedValues","orgEntity","prop","checkEntityPropChanges","resultObj","FKeys","FKeyCodes","useFunctionKeys","onEsc","onFunction","onAltChar","onCtrlChar","onDelete","onUp","onDown","onSave","handlers","handle","isEscape","isEnter","isFunction","isAltChar","window","event","altKey","isCtrlChar","isDelete","fkey","isUp","isDown","isSave","isCtrlPressed","currentHandlers","cancelBubble","actualFKey","char","fromCharCode","FmsSubMenu","mapSearchFields","general1","general2","general3","to","date1","date2","location1","location2","location3","number","number1","number2","SearchModelBase","descending","orderByEta","searchField","excludeOrderByField","recCount","isSearch","extraWhere","isExpressSearch","customSearchFieldMap","customizedFields","searchFields","Set","orderByAscending","storageVersion","createColumnFocusListHierarchy","settings","columns","anchorFound","defaultColumnFocus","accessor","invoiceLineItems","tableVersion","overflowX","useStorage","flexResizer","headersColor","initialWidthPercentage","gInvoiceLineItems","billLineItems","invoiceLineItemsWithVat","gInvoiceLineItemsWithCreditAmount","gBillLineItemsWithCreditAmount","gBillLineItems","billLineItemsWithVat","billPreviewLineItems","companyContactLineItems","companyBrokerLineItems","companyDeliveryLineItems","companyAutoBillingLineItems","companyMiscInfoLineItems","mblContainerDetails","mblSelectContainer","mblStatus","alternateRows","maxWidth","hblBlDetailsNoOfPackages","crdbLineItems","crdbLineItemsWH","hblHblBodyLineItems","aiHawbHblBodyLineItems","hblOiHblPoBodyLineItems","commonCompaniesCompanyList","filterType","billInsideAccordionLineItems","invoiceInsideAccordionLineItems","crdbInsideAccordionLineItems","acctInfoBillLineItems","acctInfoInvoiceLineItems","acctInfoCrdbLineItems","oceanImportMblList","mblReviewProfit","whReviewProfit","invoiceList","billList","crdbList","oceanImportHblList","codesCompanyCompanyUserList","subscriberIdList","infoAreaMemoTable","infoAreaLogHistoryTable","infoAreaBicTable","infoAreaBicHistoryTable","infoAreaBicHistoryLineItemsTable","infoAreaBicRevisionHistoryLineItemsTable","salespersonList","companyGroupList","branchList","billingTemplateList","billingTemplateEntryList","airRateList","oceanRateList","sellingRateList","oceanRateInfoList","airRatePartyInfoList","securityAssignmentList","securityGroupUserList","securityControlList","securityStateList","userSecurityList2","bankList","creditCardList","payrollGroupList","payrollEntityList","accountCodeList","filterTypeV2","Bool","accountSubCodeList","billingCodeList","billingCodeDetailList","editEventList","edit301List","edit310List","serverBranchList","codesAirlineList","codesAirportList","codesObltypeList","codesContainerTypeList","codesMoveTypeList","codesPortCodeList","codesVesselNameList","codesOtherShipmentTypeList","codesAesExportInfoList","codesAesExportLicenseList","codesAesScheduleBList","codesAesCarrierList","codesCurrencyList","codesExchangeRateList","codesRegionCountryList","codesRegionStateList","codesAnTitleList","codesCommodityList","codesEdi315List","codesMemoTitleList","codesMemoReminderTaskList","codesMemoAttachedFileList","codesRegionUnLocationCodeList","codesLogFileEmailLogList","codesLogFilePrintLogList","codesLogFileFaxLogList","billOrInvoiceSummaryLineItems","crdbSummaryLineItems","periodBillOrInvoiceLineItems","periodBillOrInvoiceLineItemsCredit","periodBillOrInvoiceLineItemsWithVat","periodBillOrInvoiceLineItemsWithVatCredit","periodCrdbLineItems","oceanImportIsfList","codesUserGroupList","pimsMasterDownloadList","pimsHouseDownloadList","pimsShipmentList","lastTransactionTable","utTaskMemoListItem","utAttachedFileListItem","utCommunicationListItem","utFaxLogListItem","utPrintLogListItem","utEmailLogListItem","securityControlTable","securityControlListTable","bankBalanceList","aiMawbDirectBlLineItems","oiMblDirectBlLineItems","buyingRateList","internetTrackingList","internetTrackingCompanyList","useGlobalYesNoDialog","invert","focusindex","addor","showGlobalYesNoDialog","BillingsRenderer","tempBillingsTooltip","PeriodRenderer","RecognizedRenderer","TrackEventNameRenderer","lastEventDate","ShipmentTypeRenderer","formatShipmentType","LastEventRenderer","trDate","useContext","trStatus","lastEvent","fmsGlobal","getFmsGlobal","imgSrc","displayText","displayDateTime","mblNo","hblNo","containerNo","AcmeID","email","trType","cntrYellow","trStatusDesc","cntrRed","cntrBlue","cntrGreen","replaceAll","display","alignItems","float","src","alt","open","paddingLeft","ShipmentTypeFilterRenderer","applySearchWithEnter","LclFclRenderer","formatLclFcl","LclFclFilterRenderer","unFormatLclFcl","BillInvoiceCrdbFilterRenderer","RecognizedFilterRenderer","TaxIdTypeFilterRenderer","StatusNotUseFileLockedRenderer","VoidFilterRenderer","InactiveFilterRenderer","CTypeFilterRenderer","BicTypeFilterRenderer","RQFilterRenderer","nullableCheckBoxValue","CurrencyAmountValue","Decimalformat","decimalFormat","DateTimeSecond","TaxIdType","cellvalue","CustomerTypeValue","DocumentType","AbstractListView","s","rowId","context","applicationContext","dismiss","userId","ModalBase","styled","DefaultModalContainer","BlueModalContainer","DarkModeModalContainer","ModalContentStyle","zIndex","border","ModalOverlayStyle","position","SearchModalOverlayStyle","lastPosition","IfmsModal","isOpen","title","onCancel","onShow","onHide","onAfterOpen","draggable","noPadding","isBlueHeader","noVerticalScroll","cancelOnEsc","columnOptionCloseOnEsc","memoCloseOnEsc","modalName","getElementsByClassName","textContent","onCloseMemoPopup","toggle","setToggle","movedCoord","setMovedCoord","dragRef","modalRef","widthStyle","widthNumber","handleDrag","modal","parentNode","rect","lastX","lastY","deltaX","deltaY","stopDrag","headerBaseClass","modalContentStyle","innerWidth","background","ModalContainer","shouldCloseOnOverlayClick","shouldCloseOnEsc","contentLabel","overlay","onMouseDown","faTimes","enabled","tempEditColumnIndex","setTempEditColumnIndex","doSelectCell","setDoSelectCell","editRowIndex","setEditRowIndex","editColumnIndex","setEditColumnIndex","deleteLine","addLine","rowCount","rowRenderers","isCellLock","getCellData","getIndexOfFirstInvalidCell","getIndexOfFirstInvalidCellAsync","canDeleteRow","canAdd","tableParentDivId","showTotalLineNum","controlsAfterAddLineBtn","controlsBeforeAddLineBtn","lineSeqChange","initializeFocusedCell","addRowOnArrowDownInSpecialCase","shouldConfirmBeforeDelete","useTableSearch","tableColumnLength","TableEditContext","scrollCellIntoView","tableId","cellNode","tableNode","header","hrect","crect","prect","xVisible","yStart","yEnd","clientHeight","yVisible","xDelta","yDelta","isCellScrolledIntoView","scrollTo","scrollTop","scrollLeft","behavior","getChildrenTree","childNodes","getCellId","headerId","getCellType","tableEle","querySelector","getCellText","cellId","parseResult","innerText","actualCellValue","cellActualValue","childWithActualValue","getElementsByTagName","useEditableTableNavigation","tableEditContext","tableRef","useVirtual","tableSearchChannel","inputChannel","tableDataLength","presetSubscription","tableSearchSubscription","startCell","endCell","doRemoveCellSelectArea","setDoRemoveCellSelectArea","directLookupOpenRef","paymentDetailSearch","setPaymentDetailSearch","paymentDetailSearchType","setPaymentDetailSearchType","waitBothChangedRef","isUserScroll","scrollHandler","removeCellSelectArea","selectedCellClass","selectCellArr","remove","copyCell","cellRange","startCellId","endCellId","checkCellSelectArea","textarea","createElement","startCol","endCol","startRow","endRow","fullText","body","appendChild","execCommand","removeChild","getSelectedCol","getSelectedRow","isSecureContext","navigator","clipboard","writeText","then","catch","onEnterKey","directLookupOpen","isTabKey","activeElement","editCell","curElement","isLookupCell","blur","doSelectTableCell","bothChange","setSelectedRow","setSelectedCol","waitBothChanged","hasIndicatorCell","uninitialize","unsubscribe","onTableKeyDown","onTableClick","onFocusOut","onScroll","reactModal","clearTableSelection","parts","parseCellLocation","cellIdPrefix","findCell","newRowIndex","closest","handleTableFocusNavigation","currentNode","elementClassName","isForward","tableElement","tabKeyEvent","KeyboardEvent","code","which","bubbles","cancelable","editColIndex","inputElement","navigate","bottomHideFocusEle","topHideFocusEle","newIndex","getCurrentTabableIndex","prevElementClassName","getTabableElementByIndex","focusTabableByIndex","nextTabableElementClassName","focusNextTabable","isDisplayedRow","checkSelectedRowDisplayed","onSearch","isBasicLetter","isBasicNumber","isNumPadNumber","numValue","colIndex","editCellClass","rowNum","rowsEle","rowHeight","maxDisplayRowNum","floor","ceil","setSelectedRowScrollTop","findIndex","selectedRowIndex","scrollToOptions","callback","forceFind","findRowIndex","waitForSelectedRowDisplayed","renderCallback","requestAnimationFrame","columnIndex","offsetParent","isFirstColumn","moveScroll","currentCellSelections","subscribe","topic","targetId","searchCol","colName","TableEditControlsImpl","props","tableOptions","tableIdRef","focusColumnRef","enterSubscription","_setTableId","setTick","observer","tableContainerRef","uninitializeObserver","disconnect","makeSureControlsAreScrolledIntoView","controlsInTable","parentElement","container","trect","viewStart","viewEnd","isScrolledIntoView","scrollIntoView","block","observe","setTableReference","targetNode","MutationObserver","childList","subtree","curEditRowIndex","tempEditRowIndex","canBeDeleted","editablePropertyNames","EditCell","shouldConfirmDelete","pick","showDeleteConfirmDialog","curEditColIndex","lastIndex","focusRowIndex","focusColIndex","added","setDataFunc","newData","curListData","tempCurListData","splice","firstSelectableColumnIndex","child","getFirsFocusableColumnIndex","useImperativeHandle","useDeepCompareEffect","HTMLElement","TableEditControls","TableSearch","showTableSearchConfiguration","setTableSearchConfiguration","fieldType","setFieldType","setSearch","searchRef","searchValueChannel","openSubscription","cancel","searchRowCell","dataEntryContainer","focusNode","tabableElements","dateId","Float","floatId","TableDateType","TableCellTypes","TableCellAligns","store","tableStates","listeners","updates","currentTableId","getState","listener","delete","EditableCellStyle","EditableCellRenderer","allColumns","rowRenderer","rowData","cellData","Renderer","specialRenderer","Right","GetCellRenderer","NonEditCell","EditableTableImpl","summaryRowCount","customTableId","showTopBtn","showBottomBtn","tableTitle","onInitialized","editControlsRef","lineSeqDownBtnHovered","setLineSeqDownBtnHovered","lineSeqUpBtnHovered","setLineSeqUpBtnHovered","smartTableRef","useVat","accessorsToFilter","filteredRowRenderers","state","setState","changedTableId","removeTable","updateState","useTableState","tableState","resizeColumn","persist","showColumn","getColumnWidth","tableContextState","deleteCellSelected","useEditControls","useTypedStorage","setSelectedIndex","LineSeqChangeButton","disableBtn","dataLength","arrowUpSrc","arrowUpWhiteIcon","arrowUpBlackIcon","arrowDownSrc","arrowDownWhiteIcon","arrowDownBlackIcon","arrowUpGrayIcon","arrowDownGrayIcon","marginTop","onMouseEnter","onMouseLeave","d","r","Cell","selectable","marginBottom","headerRow","marginRight","Provider","SmartTable","cellRangeSelect","renderBottomControls","selectedColIndex","EditableTable","dateTimeFormat","setCurrencies","setPrimaryCurrency","setDefaultPageSize","p","getDefaultPageSize","setUsers","u","setDateFormat","DateBlank","setDateTimeFormat","setFmsGlobalBySg","sg","isSuntekAdmin","CanFinalize","ToolRecog","CanFileLock","ToolOpClose","CanFileUnlock","ToolCancelOpClose","MnuCheckM","ToolBlock","NoProfitShow","NoBillingsShow","OPAcctBlockAfterClosed","BlockAPApprove","BlockAPHold","SUNTEK_ID","SUNTEK_PW","SUPERUSER_ID","SUPERUSER_PW","NewAuth_SiS_EncSubsID","SuntekPhone","CanUseHybrid","IsDateDMY","CurrencyInfo","USD","CAD","KRW","JPY","EUR","PAPER_SIZE_LETTER_LANDSCAPE","PAPER_SIZE_LETTER","PAPER_SIZE_A4","PAPER_SIZE_A4_LANDSCAPE","GLNO_DUTYAR","GLNO_DUTYAP","GLNO_DUTYAR_AGENT","GLNO_DUTYAP_AGENT","GLNO_DUTY_TO_CUST","GLNO_DUTY_TO_AGENT","GLNO_LOAN_TO_AGENT","GLNO_COLLECT_FOR_AGENT","GLNO_SECURITY_DEPOSIT","AdvRecGLNo","AdvPayGLNo","BankLoan","SuspenseRcv","SuspensePay","LoanRcv","CreditCardRefund","LongTermLoan","AutoLoan","CashInBank","DividendPayable","SecurityDeposit","Capital","LoanInterIncome","LoanInterExpense","Investment","PrepaidExpense","DepreciationExpense","AmortizationExpense","bannedWords","DateInterval","MenuItemFactory","customSubmenuArrow","specialMenu","menuItemClasses","icon2","menuId","submenuContent","si","withMenuId","menuItemMap","selectedKeys","IfmsMenu","menuWidth","menuItems","subItems","subSubItems","totalGroups","subMenuClassName","procesMenuSelection","menuKey","domEvent","MenuItems","subMenuItem","menuItem","justifyContent","margin","ListViewShortcutMenu","createDefaultSettings","containerWidth","calcFixedWidth","reduce","sum","totalWidth","ColumnNameRenderer","columnName","VisibleRenderer","toggleColumn","falseColor","ColumnSettings","originalColumns","currentColumns","isHoverVisibleButton","setIsHoverVisibleButton","isHoverSettingButton","setIsHoverSettingButton","initialData","findIsCurrentlyVisible","canBeToggled","_setData","dataRef","getActualIndexOfFirstVisibleEntryInTable","setSelectedRowIndex","selectedRowIndexInTable","setSelectedRowIndexInTable","useTableNavigation","doProcessRowSelection","selectTableRow","tableNavigationCleanup","orderBy","setOrderBy","isSorting","setIsSorting","dd","getDisplayData","displayedData","rowIndexInTable","updateIndex","newCurrentState","scrollSelectedTableRowIntoView","selectedRows","findVisibility","newColumns","displayColumns","visibleColumns","arrayMoveImmutable","indicator","useHighlightCellOnMouseover","useSetClickedCellWhenClick","onHeaderClick","sortingListData","ColSetting","SmartTableImpl","customStorage","footerRow","getCustomCellProps","rowProps","tableStyle","isListView","noTooltip","noHeaders","useHeaderFilterParams","useHeaderFilter","oriListData","disableBtnNameWhenFilterModalOpen","storageNameBase","storageKey","storage","localforage","appliedTableId","initialized","setInitialized","setSettings","showColumnConfiguration","setShowColumnConfiguration","showColumnSettings","makeSureColumnsAreVisible","columnList","columnAccessors","doMakeSureColumnsAreVisible","getCurrentWidthInDom","divRef","useCallback","initializeFromStorage","intializeInMemory","getItem","settingsFromStorage","setItem","currentWidthInDom","changeIndex","neighboringIndex","neighboringWidthInDom","newNeighboringWidth","resizeTableColumnInDom","saveColumnsSettings","settingsCopy","showColumnFlexResizer","showColumnFixResizer","delta","resizeColumnFlexResizer","resizeColumnFixResizer","getActualIndex","visibleIndex","visiblePassed","numOfInvisible","colBranch","maxWidthAccessor","colWidths","colInitWidths","max","tempColumns","renderer","headerFilterType","doNotSetHeaderWhite","blackMode","onColumnReorder","actualFrom","actualTo","hasStatusColumn","elem","hasRecogColumn","hiddenColumnNum","canNotDropIndex","onColumnsResized","resizedColumns","actualIndex","propTypes","PropTypes","string","isRequired","array","func","bool","shape","oneOf","ExportCollection","XCol","ToolboxMenuItem","shortcut","useMemento","_setValue","setHistory","setValue","isEqual","lastHistoryElement","initial","currentYear","getFullYear","currentDate","today","day","IfmsDateImpl","onCalendarSelect","noRangeCheck","startDateCheck","noSetLastValidDateWhenOutOfRange","nopopup","hideIcon","iconOffset","fireBlur","showPlaceHolder","doNotCheckRange","setOpen","useSystemSettings","textValue","setTextValue","isoValue","setIsoValue","memento","_setOpen","calendarContainerRef","inputContainerRef","iconRef","activeStartDate","setActiveStartDate","placement","strategy","mask","isOutOfRange","intervalOfInputDate","formatResult","lastValid","startDateYear","startDateMonth","startDate","errMsg","mapValueToState","handleClickOutside","handleBlur","dateParam","endsWith","missingElements","currentYearPositionStart","onlyYearPartIsMissing","valueWithCurrentYear","processSpecialKeys","iconStyle","maskChar","alwaysShowMask","onKeyUp","inputProps","tabIndex","locale","nextLabel","faAngleRight","prevLabel","faAngleLeft","next2Label","prev2Label","onActiveStartDateChange","IfmsDate","any","leftProps","additionalProps","basicStyle","leftStyle","rightProps","rightStyle","LeftRightSplit","createCheckedClass","noTopOffset","offsetBaseClass","createUncheckedClass","createChekedCustomStyles","Checked","xmlns","viewBox","createUncheckedCustomStyles","Unchecked","CheckBox","focusId","inlist","reverse","highlightOnFocus","skipFocusOnClick","labelColor","notificationSubscription","toggleSubscription","setFocus","toggleRequestedByParent","setToggleRequestedByParent","inputRef","unsubscribeChannels","onParentToggle","handleClick","onInnerFocus","parentId","containerClass","focusElement","opacity","InlineInputControlRowNoLabel","BottomDrawer","Memo","memoType","jobId","cc","description","isPublic","logFileId","logFileDetails","pimsLinkId","operator","creator","remind","remindDate","remindTime","due","dueDate","dueTime","addAsTaskReminder","reminderStatus","noTrackProps","getdateProps","GetNextId","arg","dicFieldMappings","TrackableEntity","CONST","FILE_HEADER","uInt2int","MSG","UNUSED_BLOCK","END_OF_CHAIN","S_BIG_BLOCK_SIZE","S_BIG_BLOCK_MARK","L_BIG_BLOCK_SIZE","L_BIG_BLOCK_MARK","SMALL_BLOCK_SIZE","BIG_BLOCK_MIN_DOC_SIZE","HEADER","PROPERTY_START_OFFSET","BAT_START_OFFSET","BAT_COUNT_OFFSET","SBAT_START_OFFSET","SBAT_COUNT_OFFSET","XBAT_START_OFFSET","XBAT_COUNT_OFFSET","PROP","NO_INDEX","PROPERTY_SIZE","NAME_SIZE_OFFSET","MAX_NAME_LENGTH","TYPE_OFFSET","PREVIOUS_PROPERTY_OFFSET","NEXT_PROPERTY_OFFSET","CHILD_PROPERTY_OFFSET","START_BLOCK_OFFSET","SIZE_OFFSET","TYPE_ENUM","DIRECTORY","DOCUMENT","ROOT","FIELD","PREFIX","ATTACHMENT","RECIPIENT","NAME_MAPPING","CLASS_MAPPING","ATTACHMENT_DATA","TYPE_MAPPING","DIR_TYPE","INNER_MSG","getBlockOffsetAt","msgData","offset","bigBlockSize","getBlockAt","ds","startOffset","seek","readInt32Array","bigBlockLength","getNextBlockInner","blockOffsetData","currentBlock","currentBlockIndex","getNextBlock","batData","getNextBlockSmall","sbatData","parseMsgData","headerData","readByte","xBlockLength","batCount","readInt","propertyStart","sbatStart","sbatCount","xbatStart","xbatCount","batCountInHeader","readInt32","startIndex","remainingBlocks","nextBlockAt","xBatBlock","blocksToProcess","min","blockStartAt","xbatData","propertyData","currentOffset","convertBlockToProperties","createPropertyHierarchy","fieldsData","attachments","recipients","fieldsDataDir","maxBatsInHeader","convertName","nameLength","readShort","readStringAt","convertProperty","previousProperty","nextProperty","childProperty","startBlock","sizeBlock","propertyBlockOffset","propertyCount","propertyOffset","nodeProperty","currentIndex","shift","dirProperty","fieldsDataDirInner","fieldsDataDocument","attachmentField","recipientField","getFieldType","innerMsgContent","documentProperty","fieldClass","fieldTypeMapped","fieldValue","getFieldValue","isAddPropertyValue","uint8ArraValue","TextDecoder","decode","applyValueConverter","fieldProperty","extractorFieldValue","sbat","dataTypeExtractor","chain","blockChain","nextBlockSmall","getChainByBlockSmall","readDataByBlockSmall","resultData","Int8Array","idx","dataType","binary","localDs","DataStream","LITTLE_ENDIAN","readChainDataByBlockSmall","blockStartOffset","bigBlockOffset","blockSize","readString","readUCS2String","readUint8Array","bat","byteOffset","bigBlockNumber","nextBlock","typeMapped","valueExtractor","extractor","MSGReader","arrayBuffer","prototype","getFileData","b","arraysEqual","readInt8Array","fileData","getAttachment","attach","attachData","dataId","fieldData","fileName","MemoDropzoneContainer","AttachFile","logId","file","File","getFileIcon","filename","pdfImg","excelImg","wordImg","pptImg","pngImg","textImg","openLogFile","logFileName","userToken","fetch","config","serverUrl","method","headers","response","ok","contentType","get","blob","pdfBlob","newWindow","pdfUrl","URL","createObjectURL","iframe","overflow","href","download","click","status","renderTitleButton","Button","DeepBlueButtonTabs","PrimaryButtonTabs","GrayButtonTabs","MemoDetails","setMemo","memoTitle","files","setFiles","setTabIndex","useReminder","setUseReminder","fontColorItem","acceptedFiles","oriFiles","duplicateFileName","lastModifiedDate","memoAttachedFileMaxSize","newFile","accessToken","useDropzone","onDrop","getRootProps","getInputProps","FilterableSelect2","getId","getLabel","onSelect","onTextChange","MultilineTextBox","borderBottom","newFiles","deleteFile","openFile","paddingBottom","faUpload","UsersDropDown","DateTime","RadioButton","group","checked","onChecked","renderDetails","MemoView","onPrint","logData","hideLogHistory","hideMemoList","startFiles","selectedMemoListIndex","setSelectedMemoListIndex","editMemo","setEditMemo","removeEditMemo","selectedIndex","useTableRowSelection","noKeyboard","memoAndUpdateTableWidth","logHistoryTableWidth","onMemoPopupClose","prepareMemoForEdit","setMemoDetail","isView","getJobDetail","apiResult","success","message","edit","view","editIndex","tEntity","newfiles","logFile","oFileName","starts","tEntity2","deleteMemoByIndex","printMemo","memoDetailCancelButton","getElementsByName","selectDefault","attaches","DarkInverseButton","fileinfo","showDetails","details","showTitle","logHistoryTableOptions","returnLabel","openViewer","docType","Unknown","LogFax","LogPrint","LogEmail","offsetWidth","screenLeft","getAuthKey","screen","availHeight","SharedIcon","setMemoDetailWithFile","setMemoInfo","subject","attachFiles","dropFiles","cntMail","aFile","mailFile","fileReader","FileReader","onload","buffer","msgReader","attachment","attactfile","readAsArrayBuffer","flexShrink","Label","focusable","InfoAreaDrawer","renderedMemo","customTabs","showContent","onClose","com1Id","setMemoTitle","loading","setLoading","extraTabContent","setExtraTabContent","prevContent","usePrevious","viewReport","useReportViewer","listSec","ToolMemo","loadMemoTitle","pageSize","getListItems","MemoTitle","CodeMemoTitleListItem","calculateSearchParameters","entities","totalCount","nonEmptyTitles","inactive","unshift","loadData","getJobListPanelItems","mainChange","sqlInfoList","getSQLInfoList","deletedFiles","k","addedFiles","delFile","reminderSql","checkPropDirty","Insert","Update","saveJobDetail","insertResult","insertList","model","savedId","newId","formData","FormData","append","upload","apiResult2","deleteMemo","deleteJobDetail","args","MemoArgs","formCaption","loadExtraTabContent","extraTabs","contentLoader","extraContent","memoTableEle","logHistoryTableEle","secCont","Main","secCntr","FmsSecCntr","MemoEdit","contName","MemoDelete","setSecurityControl","logHistory","resizer","prevSibling","prevSiblingHeight","mouseMoveHandler","dy","tempHeight","userSelect","pointerEvents","drawerContentListHeight","mouseUpHandler","removeProperty","tableScrollbarHeight","titleBarHeight","infoAreaHeight","titleBars","infoArea","vh","documentElement","innerHeight","doAdjustTableHeight","memoLen","memoTitleIsUpdate","canBeAdd","canBeEdit","FormType","ModeEdit","data-open","headline","faPlus","memoUpDownIcon","clear","highlightColor","count","hideCustomHeadline","ReportArgs","stamp","useMultiCur","toCompanyid","userID","copies","isExportToExcel","ccEmail","bccEmail","emailTemplateName","fileAttachments","AciHistoryArgs","dataCompanyID","houseID","AccountBalanceByEntityArgs","comType","comId","comName","subCode","fromGLNo","toGLNo","branch","showForeign","salesCostOnly","AgntStatementArgs","agent","departments","stDate","edDate","paidType","sortNum","eurRate","showDetail","showPstatus","received","customForm","billto","descptDetail","confirmed","AmsHistoryArgs","amsMode","AmsHistoryMasterArgs","masterID","AmsUsageArgs","acctType","amsGroupId","dateFrom","dateTo","hblNumber","useEManifest","aciSearchStr","ArrivalNoticeArgs","showCharge","hidePPCC","caption","legalTerms","turnInCode","emptyRtnID","fileNo","opEmail","withAttachGuaranteeLetter","AuthEntryArgs","IRC225Args","useSignature","totalHawb","AWBArgs","forUse","orgCpy","shipperName","pShipperName","carrierName","firstCarrier","destCountry","companyName","remark","remarkFont","notShowRule","deliveryOption","showSellingRate","attachIATATerm","carrierOption","BalanceSheetArgs","strDate","previousDate","printYears","reportType","BankDraftArgs","dataOnly","issueDate","usDollar","atSight","payTo","payToAddr","lCno","openBank","openDate","cnee","cneeAddr","drawnBank","drawnBankAddr","bankRef","signature","negoBank","negoBankAddr","draftNo","checkOP","otherInst","multiName","billsLanding","blCopy","com","ins","ctf","con","pkn","wgt","amdDate","BankReconHistoryArgs","endDate","bankID","BookConfirmArgs","BookingAIFGArgs","BookingArgs","period","BranchPerformanceArgs","actStartDate","BrokerageArgs","carrier","CancelITArgs","username","attn","place","CarrierCertArgs","CheckArgs","copyOnly","formName","fromNo","toNo","bank","CheckSubArgs","CheckReqCommonArgs","requestBy","ChkMessengerArgs","COArgs","CommInvArgs","CorrNoticeArgs","CRDBArgs","batchPrintInfos","dbConnOname","sortBy","CustomerNonActivityArgs","department","salesMan","type1","PaymentPrepArgs","TbName","TbId","DailyAccountCommonArgs","showInactive","edate","showBadARBank","bankInfos","DailyAccountSub2Args","valStr","DevannArgs","instruction","cfs","cy","DOArgs","deliveryTo","trucker","ppcc","carrierFieldType","remarkAdd","forCnee","truckingCoID","DockReceiptArgs","DutyBalanceArgs","DutyPendingsArgs","rptType","EmptyCntrRtnArgs","ETAArgs","finalETA","operatorName","svcRep","companyGroup","notReleased","ExdecArgs","EmpPerformanceArgs","periodFrom","periodTo","sortFieldNum","empName","viewType","ExdectransitArgs","FreightANArgs","GeneralLedgerArgs","glNoFrom","glNoTo","GLAgingByEntryArgs","glCode","IncomeStatementArgs","previousStrdate","previousEndDate","previousStrdate2","previousEndDate2","previousStrdate3","previousEndDate3","reportOption","useLocalLanguage","acualStartDate","reportType2","InvoiceArgs","ITArgs","nos","ISFUsageArgs","groupID","showdetail","InlandArgs","InvenPickArgs","centerNo","InvenActivityArgs","InvenItemHistoryArgs","IssueReadyArgs","JournalVoucherArgs","language","slipType","seqNo","journalKey","fromSeqNo","toSeqNo","LabelArgs","LienNoticeArgs","LiftingArgs","option","gr_40HTEU","gr_45TEU","LocalStatementArgs","advance","completeInvo","departs","departsIL","pastDue","excl0Term","pBalShow","notShowOver","asOf","invoiceOnly","sortType","invoiceIDs","LocalStatement","LoadPlanArgs","rstation","LabelAirArgs","masterPieceCount","housePieceCount","headerType","mutipleComID","showHousePieceCount","showHouseBLNo","LabelPouchArgs","pieceCount","LabelComAddressArgs","skipCount","companyID","incudeCountry","LabelFolderArgs","field1","field2","field3","field4","field5","field6","field7","field8","field9","field10","LabelBookArgs","ManifestArgs","MasterSetArgs","NewAgingCommonArgs","endingDate","acmeID","useNewAcct","glNo","comId2","showCurrency","showBalanceOnly","fromOtherReport","doNotShowZeroBal","groupSalesman","isFromMain","AgingAR","NewDeferredArgs","salesFrom","salesTo","sortOrder","showNoBilling","NewGeneralJournalArgs","NewProfitArgs","isHouseMode","groupFieldName","selectFieldValue","periodType","dataBLName","isSPReport","lossOnly","NewVendorCostSummaryArgs","paidStatus","sortVendorCost","OIHouseBLArgs","houseBLNo","OIAuditArgs","actMgr","OutstandArgs","custWare","moveType","OOHouseBLArgs","fcr","authorized","fcR_RecBy","fcR_RecDateTime","fcR_RecPerson","showRemark","totalNoContPkgs","showBLType","agentRef","actCarrier","showVessel","showOnBoard","showErrorAttach","pageCount","showIssue","showExRate","OutboundCargoManifestArgs","manifestType","houseAgentIDs","contact","OEUSDAArgs","OutStateArgs","PayrollSummaryArgs","payrollId","payrollGroupId","PeriodicGLDetailArgs","stnum","ednum","custType","custID","custName","glSubCode","PickupArgs","toTrucking","pickupRefNo","pickupDate","pickupAt","pickupContact","deliverRefNo","deliverDate","deliverTo","deliveryContact","commodity","hbLnos","pkgs","weight","measurement","straightBlRider","flexiTankBlRider","PreliminaryClaimArgs","noticeTo","vendorFlag","PODArgs","toCustomer","remarks","deliveryDate","signedBy","PreAlertArgs","repType","PendingListArgs","PickSlipArgs","QuotationArgs","quoteID","ReportANandROrderPackageArgs","sendID","releaseTo","specialInstructions","ReleaseArgs","ReleaseHistArgs","ocean","air","ReportDocumentPackageArgs","sendToType","reportTypes","blFormName","awbRemark","awbRemarkFont","master","awbShowUserSign","ReportAgentPackageArgs","agentReportType","houseAgentID","billTo","showAwbUserSign","dlvryOption","SecondANArgs","StraightBLArgs","SAArgs","FiveYearsDataReportArgs","TopSalesByYearsArgs","customerType","fromDate","TSAArgs","masterBLNo","TrialBalanceNewArgs","TransferArgs","TelexReleaseArgs","TrailerLoadArgs","TransactionISArgs","transaction","USDAArgs","faxTo","chargeTo","faxTo1","VolumeCommonArgs","fieldOptionNum","sortFieldName","nomi","VesselAcctArgs","vesselName","voyage","WhseLabelOthArgs","WarehouseReceiptArgs","WhseLabelRcptArgs","WhseLabelShipArgs","GenEmailArgs","generalMode","cfsType","companyEmailAddr","NewProfitCustomerDetailArgs","shipmentType","documentFileName","headerTitle","productCode","parameter","directPrint","useDefaultPrinter","exportPath","silentMode","SalesCostByCustomerArgs","rType","AmsManifestArgs","amsMasterId","amsVoyageId","DeleteHistoryArgs","jobIndex","ISFHistoryArgs","isfNo","getSQLInfoList2","ct","dicMappings","sqlType","InsertOrUpdate","pKey","sqlList","keyTable","keyMappingInfo","lowerFirst","changedProps","w","SQLFieldListEquals","upperFirst","newValue","complexChangedProps","complexItem","keyPropertyName","changeTrackable","keyValue","changedCollectionProps","addedItems","t","changedItems","deletedItems","te","keyField","hasKey","keyVal","getSQLInfoKey","getChangeTrackable","getDbMappings","list1","list2","trackableObj","parentName","isDirty","checkPropertyChangesOfAddedItem","collPropName","collectionName","ccProp","o","oc","complexName","cci","propPath","createChangedProperty","oldValue","lastdot","lastIndexOf","cp","getOriginalValue","ctObj","dicMap","propSet","dotIndex","val","ccp","ccProps","BlStatusRowImpl","onToggle","onDateTimeChange","noStatus","showDatePlaceHolder","renderedCheckbox","onTimeTabNext","BlStatusRow","FilterStorageVersion","initialSearch","generalText1","generalText2","generalText3","generalNullOrEmpty","dateFrom1","dateTo1","dateFrom2","dateTo2","location1Text","location2Text","location3Text","numberFrom","numberTo","numberFrom1","numberTo1","numberFrom2","numberTo2","numberNullOrEmpty","extras","version","dateNullOrEmpty","listType","isSearchByReport","hasValue","isFilterObjectEmpty","general","getInitialSearch","currentUser","selectId","selectWidth","hideCaretWhenDisabled","blankWhenDisabled","onEnterSameValue","rollBackPrevValue","notFocusNextEleWhenSelectItem","roundborder","forExSerach","useBlank","itemsRef","containerIdRef","selectInputIdRef","openSelectSubscription","_setSelectedItem","selectedItemRef","setSelectedItem","filteredItems","_setFilteredItems","stringValue","_setStringValue","stringValueRef","skipStringValueCheckRef","lastSelectValueRef","fieldClickRef","listItemSelectRef","filteredItemsRef","setFilteredItems","fi","selectMenuContainerRef","_setReferenceElement","_setPopperElement","_setArrowElement","popperRef","referenceRef","arrowElementRef","setStringValue","newPos","offsetTop","openWithoutFilter","newSelectedItem","newFilteredItemValue","findItem","onListItemSelected","lastSelectIndex","processBlur","notifyEmptyValue","isEditTableCell","sv","selectedBaseClass","inputRect","inputStyleBase","borderRadius","inputArrowStyleBase","inputStyle","data-actual-value","itemWithStringLabel","checkPopupAvailable","n1","close","n2","reportArgs","popup","hlink","suntekId","encodeURIComponent","stringify","reportId","jwt","alert","viewEmptyReport","faxMode","toCompanyList","GenFax","GenEmail","AcmeID4","_trackable","setChildTrackable","nextId","thisEntity","initData","curEntity","ctEntity","ccPropIndex","orgColl","curColl","CompareTrackableObjects","CompareTrackableCollection","ccIndex","itemsToRemoveFromOrgCollection","chgIndex","addIndex","pullAt","orgObj","changedIndex","cplxObj","changeProp","orgVal","curVal","ComparePrimitives","obj1","obj2","getAcceptedEntity","cleanObj","omitBy","without","forOwn","acceptChanges","entity","setCleanStateStorage","rejectChanges","me","xcp","collObj","InputControlRow","nolabel","nocontrol","customFontSize","notsetbackcolorwhendisabled","setCaretPositionBeforeDot","elemId","alignLeft","plain","allowLeadingZeros","thousandSeparator","external","externalValueChangeRequest","setExternalValueChangeRequest","fixedDecimals","setFixedDecimals","valueRemovedManually","channelSubscription","onValueChangeRequestByParent","doHandleChange","floatValue","v1Param","v2Param","v1","v2","areValuesSame","newVal","componentValue","appliedStyle","decimalScale","fixedDecimalScale","onValueChange","currentValue","isAllowed","minCheck","maxCheck","LightBlueButton","UniqueLinkButton","viewLink","operation","beforeRedirect","uniqueLinkPrefixQuery","goToAlreadyOpenPage","isMainOp","jobMenu","useAppSelector","screenStack","activeOperation","moveToSingleOpenedScreenInAnyOperationStartingWithUrl","useJobMenus","activeOperationKey","isDisabled","OpenNewPageAsync","urls","viewModeTimestamp","timestamp","replaceJobMenuTimestamp","WhiteButton","blue","nomargin","labelText","labelNode","baseStyle","useDispatch","useSelector","checkLastSelectedMenu","allMenuIndexArray","lastSelectedIndexArray","menus","level","inlineEdit","CodeBLType","CodeContainerType","CodeMoveType","CodeOceanPort","CodeVessel","CodeScac","NoCanada","CodeAirLine","CodeAirPort","CodeOtherOPType","CodeExportInfo","CodeExportLic","CodeScheduleB","CodeANTitle","CodeCurrency","CodeExchangeRate","CodeMemoTitle","CodeCountry","CodeState","CodeUNLocation","CodeEDI315Code","CodeBillingCode","CodeAccountCode","CodeAccountSubCode","report","listItemObj","listData","findListItem","getExportCollection","typeOfOrderByValue","dataArray","valueA","valueB","compareResult","localeCompare","Double","StrBool","checkTabIsDirty","oriData","curData","dataIndexArray","updateIndexes","condition","indexes","findUpdateIndexes","isUpdate","ReferenceFiles","getExternalFunctions","useFunction","callbacks","useStore","goBack","useJobMenu","storeStorage","removeFromStorage","selectedMenuIndex","_setSelectedMenuIndex","selectedMenuIndexRef","lastSelectedMenuIndexRef","selectedSideMenuIndex","carrierBuyRate","setCarrierBuyRate","hideTab","setHideTab","selectedSideMenuClassName","initilizeCheckMenuArray","menuIndex","sideMenuIndex","lastSelectedItemIndex","setSelectedMenuIndex","resetSelectedButton","findReferenceFilesSideMenu","currentScreenHasInlineEditing","currentScreenTitle","onMenuItemClicked","menuItemIndex","doSave","externalFunctions","ifmsReferenceFilesSave","ifmsReferenceFilesCancel","getLastSelectedItemIndex","userMenus","buttonNameArray","otherElement","getTabLabel","otherStorageKey","screenFilter","jobMenuLabel","jobMenuUrl","standAloneInfo","isActiveMenu","fontFamily","flex","customTopOffset","topBarHeight","customZIndex","menuIndexData","lastSelectedIndexData","set","settingsMenuClick","componentIndex","CargoEventName","FmsBooking","EmptyOut","FullIn","PositionedIn","PositionedOut","VesselLoaded","VesselDeparted","TransShipArrived","TransShipDischarged","TransShipLoaded","TransShipDeparted","FeederArrived","FeederDischarged","FeederLoader","FeederDeparted","VesselArrived","VesselBerthed","VesselDischarged","FmsDlvrToCfs","FullOut","EmptyIn","RailLoaded","RailDeparted","RailArrived","RailUnloaded","PickAvail","PickLfd","TerminalFee","TerminalHold","PodTml","PickAppointment","EtaChange","PodTmlChanged","DestArrived","Delivered","VgmReceived","CarrierRls","CustomsRls","fromSettings","newIGeneralWithList","JournalImpl","modelStorage","getJournalStorageKeys","inStorage","setInStorage","removeJournalFromStorage","journalRef","loadExisting","searchBy","seqFrom","seqTo","initialize","JournalInitializedImpl","journal","setJournal","onPopupClose","jobListContext","filterOrderObj","getSearchJournalQuery","item2","slot","item1","searchModel","MapSearchFields","DateComponent","LabeledControl","control","enableSearch","Fieldset","BranchDropDown","addAll","JournalDetails","selectedElementId","JournalVoucherImpl","removeJournalVoucherFromStorage","journalVoucherRef","JournalVoucherInitializedImpl","journalVoucher","setJournalVoucher","acctOptions","accountingStartDateYear","accountingStartDateMonth","seqNoControl","fromSeq","toSeq","errorMsg","JournalBook","print","JournalVoucherDetails","GeneralLedgerImpl","removeGeneralLedgerFromStorage","generalLedgerRef","acctStartDate","documentType","NewGeneralJournal","currentMonth","fiscalStartMonth","fiscalEndMonth","GeneralLedgerInitializedImpl","generalLedger","setGeneralLedger","getReportArg","isExport","GeneralLedger","excelExport","GeneralLedgerDetails","dataTooltip","lStatus","lockRed","minHeight","useSelectedOperations","openMenu","seq","jourType","tbType","getBeginningJournal","fKey","editUrl","viewUrl","AcctSlipJournalList","copy","openSpecialJournalView","RightClickMenu","ListCommands","selectedPopupMenuItem","setSelectedPopupMenuItem","searchJournalSec","AcctSearchJournal","hasSelectedRow","canBeCopied","popupComponent","SearchJournal","JournalVoucher","companyId","popupLabel","popupWidth","cloneElement","ListToolbar","ListViewExtras","setUnprocessedFkey","unprocessedFkey","doProcessFkey","useJournal","useExternalScreenFilter","switchJournal","mtbName","mblId","tbIndex","IncomeTaxAdjustment","JournalListView","listFilterType","All","formatData","searchValueExtractor","useBranch","colRenderer","Center","changedValue","tsettings","accountingJournalList","cols","CloseButton","tabable","isMouseOver","setIsMouseOver","circleExitWhite","circleExitRed","functions","invokers","filteredCallbacks","warn","AcctHeadType","AbiReportType","AcctCodeType","AcctModeType","ChgType","LocCode","FormSubType","getBillingCodeTypeFromAcctHeadType","OIM","OIH","OEH","OEM","AIH","AIM","AEH","AEM","OTH","WHR","WHS","STG","GEN","getAcctHeadTypeByTBName","PRD","FRCV","FOE","FSTG","ETRY","OTOP","GreenButton","lowercaseChildren","input","blockScroll","preventScroll","getNextElement","setFocusFirstEleWhenNextNull","getAllTabableElements","currentInTabOrderFound","nextTabElement","tempNextTabElement","HTMLInputElement","activeIndex","IFmsReferenceFilesContext","object","getCleanStateStorage","delCleanStateStorage","nameParam","propertiesToIgnore","setCleanState","cleanState","isDirtyComparedTo","newState","compareObject","dirty","dirtyCleanup","OceanEventName","AirEventName","MblStatusViewModel","lPort","dPort","eta","fDest","vessel","frtLoc","pickUpNo","etd","firstCode","firstPort","firstCodeEta","storageDate","goDate","opClosed","opCloseDate","closedBy","actClosed","actCloseDate","actClosedBy","commDocDate","commDocTime","commDocBy","commDocChk","entryDocDate","entryDocTime","entryDocBy","entryDocChk","f7501Date","f7501Time","f7501By","f7501Chk","f3461Date","f3461Time","f3461By","f3461Chk","puSentDate","puSentTime","puSentBy","puSentChk","delSchedDate","delSchedTime","delSchedBy","delSchedChk","delActDate","delActTime","delActBy","delActChk","podDate","podTime","podBy","podChk","billDate","billTime","billBy","billChk","billPacketDate","billPacketTime","billPacketBy","billPacketChk","trackerDate","trackerTime","trackerBy","trackerChk","lastTrackDate","lastTrackTime","lastTrackBy","lastTrackChk","emptyRetDate","emptyRetTime","emptyRetBy","emptyRetChk","anPrtDate","anPrtTime","anPrtBy","anPrtChk","inlandNtcDate","inlandNtcTime","inlandNtcBy","inlandNtcChk","doConfirmDate","doConfirmTime","doConfirmBy","doConfirmChk","doSentDate","doSentTime","doSentBy","doSentChk","delAddrDate","delAddrTime","delAddrBy","delAddrChk","ddpDate","ddpTime","ddpBy","ddpChk","examOnDate","examOnTime","examOnBy","examOnChk","examOffDate","examOffTime","examOffBy","examOffChk","anSend","anSendBy","isSend","atmeSend","atmeSendBy","isAtmeSend","cargoRls","cargoRlsBy","isCargoRls","anSentDate","anSentBy","anSentChk","fltNo","cargoOnBoard","cntrItemList","eventItemList","getFieldMappings","_aimDicFieldMappings","_aemDicFieldMappings","PimsContainer","_airDicFieldMappings","srcFieldMappings","_seaDicFieldMappings","OiContainerEvents","Booking","ContainerDispatched","InGate","LoadedOnVessel","VesselDeparture","CarrierRelease","CustomsRelease","VesselArrival","UnloadedFromVessel","DevanInstToCfs","RailDeparture","RailArrival","AvailableForDelivery","OutGate","DeliverToCustomer","ReturnEmptyContainer","OeContainerEvents","AiAirLineEvents","PickUp","FlightDepature","FlightArrival","DeliveryCustomer","OceanMblStatusMap","ReceiveAnFromCarr","mblProp","SendAnToCust","MblReceive","ReceiveCrDb","cntrDate","cntrLoc","pimsCntrDate","pimsCntrLoc","CustomsHold","ArrangeTrucking","SendPuDelInst","SendPod","BookingConfirm","PickupEmptyContainer","DeliveryToCarrier","OeBookingConfirm","OeArrangeTrucking","SendSedToCarrier","PickupLoadContainer","FileAes","SendOceanCargoManifest","SendAgentDocPackage","OePickupEmptyContainer","OeDeliveryToCarrier","AirMblStatusMap","radioId","boldOnActive","isSelectableLabel","isDisableColorLabel","processCheckedNative","onCheckedWrapper","outline","CustomEditId","storageKeyMap","OiQuotation","OeQuotation","AiQuotation","AeQuotation","Container","WHCustomer","WHItem","WHLoc","WHInvenSummary","WHInvenDetail","MemoList","FileAttach","LogMail","LogCommunication","CCClear","PaymentPrep","BankRecon","AMSUser","AMSBranch","AMSGroup","AMSBilling","useSetEditedId","jobNames","has","setSavedEntityForUrl","isNew","refreshAll","queryOpType","getJobFromName","listView","generateListView","listDataStorageKey","tempOriData","updateStorageAndDispatch","filterObj","editedId","fetchAndFormatData","tempListData","oriDataIndex","insertItem","batchRecognitionReportTable","CompanyAddressLabelReportTable","periodClosingReportTable","customerPaymentList","agentPaymentList","billPaymentList","ccPaymentList","customerPaymentContainerDetails1","customerPaymentContainerDetails2","customerPaymentContainerDetails3","customerPaymentContainerDetails4","agentPaymentContainerDetails1","agentPaymentContainerDetails2","agentPaymentContainerDetails3","agentPaymentContainerDetails4","billPaymentContainerDetails1","billPaymentContainerDetails2","billPaymentContainerDetails3","billPaymentContainerDetails4","ccPaymentContainerDetails2","ccPaymentContainerDetails3","customerPaymentMemoList","generalInvoiceList","generalBillList","depositClearTable","checkClearTable","creditCardClearTable","bankReconList","bankReconTable","bankTransferList","prepaidExpenseAdjustmentList","prepaidExpenseAdjustmentTable","paymentPrepTable","paymentPrepList","payrollSummaryList","showNewRowPlaceholder","payroll2List","payrollSummaryAmountsTable","payrollSummaryByEntityTable","payroll2GroupTable","payroll2AmountsTable","payroll2ByEntityTable","depreciationAdjustmentList","depreciationAdjustmentTable","amortizationAdjustmentList","amortizationAdjustmentTable","badDebtProcessingList","badDebtProcessingTable","salesTaxReturnTable","journalTable","undoDepositClearTable","cancelCheckClearTable","cancelCreditCardClearTable","checkClearWithExcelTable","paymentToolList","periodLoadStorageItem","emailOptionItem","autoBillingDetailTable","autoInvoiceDetailTable","getSelectedSubMenuArgs","fmsSubMenu","blNo","blFName","refNo","mawbNo","hawbNo","receiveNo","shipNo","houseBill","deptName","blType","aoType","airOcean","blName","importExport","MasterProfit","MasterProfitHBL","OICargoManifest","OOCargoManifest","AICargoManifest","AOCargoManifest","FolderLabel","OutOfStateLog","ArrivalNotice","_2ndArrivalNotice","WorkSheet","OIHouseBL","HouseProfit","CarrierCertificate","ExdecTransit","DockReceipt","MasterSet","TelexReleaseMessage","OOHBook","OEUSDA","AuthEntry","TsaSecurity","TsaUnknown","WReceipt","WLabelReceive","WShip","WLabelShip","FArrivalNotice","CrDbNote","PuInvoice","PrintCheckSlip","PrintMessengerSlip","CompanyProfile","IssueReady","AIAWB","Profit","OI_CargoManifest","OO_CargoManifest","AI_CargoManifest","AO_CargoManifest","agentId","LabelFolder","OutofStateLogSheet","getRList","getBrokerEmailFax","showAmountByCurrencyInInvoice","SecondAN","OIHouseBl","CarrierCert","Exdectransit","TelexRelease","hBookingNo","cBookingNo","OOHBookAIFG","TSASecurity","TSAUnknown","WarehouseReceipt","WhseLabelReceive","PickSlip","WhseLabelShip","FreightAN","invoiceNo","invoiceToFName","showPastDueOnInv","showCurAmountInInv","invoiceTo","crDbNo","CRDB","vendor","CheckSub","ChkMessenger","IssueReadyDraft","AWB","historyUpdate","msg","skipSuntekAdmin","contents","acctHistoryUpdate","isDraft","histMsg","saveDutyEntity","dutyCustId","dutyAgentId","mblJobName","mblJobId","Execute","updateHCFS","cfsLocation","updateBLStatus","updateHouse","getDepartmentNameByTbName","getSelectedCheckValues","seperator","isValidFYDate","endMonth","fyEnd","setFullYear","setMonth","setDate","getMonth","fyisoEnd","checkBillNo","checkNo","deleteDepoData","depoId","originId","creditAmt","checkPostDate","inputDate","initDate","checkPostDate2","CloseDate","getGLDate","vDate","returnDate","closeData","glDate","tempDate","AcctStartDate","updateOriginActionDate","finalizeHistoryUpdate","recogDate","hTbId","isSet","sqlInfos","getRecogConfirmMsg","confirmMsg","defaultDate","getRecogSQLInfos","mTbName","mTbId","setStatusAll","checkCompleteBLForm","getISOCodeFromSuntekSetup","setDefaultForMSetup","fmsMAccountOpt","invoDefaultDateForImport","invoDefaultDateForExport","billDefaultDateForImport","billDefaultDateForExport","crDbDefaultDateForImport","useETACrDb","useTodayCrDbDefaultDate","crDbDefaultDateForExport","WrapperStyle","DateStyleBordered","borderRight","DateStyle","TimeStyle","validateHhMm","test","Time","timeId","timeValue","setTimeValue","startsWithTwo","formatChars","borderLeft","lTimeId","dateRef","timeToApply","newDateTime","timeEl","ExtraSmallStyle","SmallStyle","RegularStyle","LargeStyle","skipTableCheck","hoverIcon","disabledIcon","iconHeight","preventDuplicateAction","additionalStyle","buttonClassName","remainingProps","renderButtonIcon","onClickWrapper","currentTarget","ColumnMemory","ScrollMemory","updateScrollMemory","findClickedCell","parseRowLocation","holdScroll","ifmsChannel","scrollWidth","listScrollPos","xEnd","moveScrollX","xNotVisibleScrollMemory","moveScrollY","yVisibleScrollMemoryBottom","yNotVisibleScrollMemoryTop","selectedRowScrollPosition","forceSetDisplayRows","firstRowgroup","rowsLength","pageMoveCellCount","isPageUp","tableAllRows","lastRow","lastRowIndex","getDefaultColumnSelectionIndex","tableColumnDefaultFocusHierarchy","onRowIndexChanged","onRowDoubleClick","skipObserver","dontHighlightCell","deselectable","executeSameFuncDoubleClickAndEnter","onCellRightClick","doNotSetRowBackColor","iFMSChannel","selectedRow","_selectedCol","subscribeChannels","isNotUseStatusSearch","jobNameList","getListJobNameByJobName","modals","evtNode","focusEle","initializeObserver","onDoubleClick","clickedCell","doSelectTableCellAndNotify","eventTarget","stopEvent","handleKeyNavigation","doNotifyRowChanged","numberOfHeader","childElementCount","rowgroupElements","rowgroupElement","rowElements","newColIndex","scrollTopPos","returnData","selectedRowEle","getSelectedRowInfo","rowgroupsArray","selectedRowElement","parentRowgroup","rowgroupIndex","rowsInCurrentGroup","selectedRowInGroupIndex","isLastIndex","handlePageKeys","moveRowCount","scrollTargetRow","handleArrowKeys","movement","handler","lastColumnIndex","defaultColIndex","doSelectTableRow","fromClick","rowSelector","currentRowSelections","headerClick","selectTableCol","noInlinePadding","horizontal","noBold","fieldset","aesInfoTable","vehInfoTable","correctionNoticeTable","arrivalNoticeTable","mblMemoListTable","pickupDeliveryTable","deliveryOrderTable","certificateOfOriginTable","certificateOfOriginTable_Canada","certificateOfOriginTable_Air","bankDraftTable","shippingAdviceMoreTable","sendBlTable","batchPrintTable","bankEdiTable","batchCheckProcessingVendorTable","batchCheckProcessingCheckTable","batchStatementProcessingTable","historyViewMainDetailTable","historyViewBillingDetailTable","historyViewRevisionTable","paymentHistoryTable","myMemoTable","edi310BatchTable","sendShipmentStatusContainerTable","sendShipmentStatusTable","historyViewPaymentMainTable","historyViewPaymentDetailsTable","billInformationTable","profitDetailTable","accountBalanceTable","volumeByCargoTypeYearsTable","CurrencyLabel","decimalOverride","LabeledCheckBox","checkboxMarginLeft","controlMarginLeft","nullSearchEnableColumns","FilterContent","IncludeSearchProperties","extractScreenTitleBar","titleNodes","StatusFilter","StatusFilterNotUseFileLocked","GeneralFilter","customRenderers","customRenderer","FilterSummary","filterOrder","CheckBoxIcon","renderDateRangeValue","getSearchHistoryValue","recordCount","tempReverseArray","FilterEntry","filterId","entryType","filterLabel","nullOrEmpty","setNullOrEmpty","applySearch","floatOverride","noNullOrEmptySearches","checkbox","getPresetType","filterColumnPreset","generalFilters","dateFilters","numberFilters","boolFilters","getPresetEmptySlot","multipleSearch","extraCount","mapPresetValueToSearch","presetSlot","extraParts","extraIndex","extraSlot","tempSearchExtras","generalText","FilterDrawer","searchStorage","setFilterOrderInStorage","isPaneOpen","_setIsPaneOpen","setFilterColumnPreset","filterValue","_setFilterValue","multipleSearchRef","isMultipleSearchChecked","setIsMultipleSearchChecked","filterValueRef","isNullSearchEnableColumn","filterOrderRef","setFilterValue","setFilterOrder","setIsPaneOpen","_setSearch","countSubscription","dismissSubscription","setOrderByAscending","setCount","filterIndex","newFilterOrder","isSpecialHeaderWithEmptyValue","applyPageSize","recalcApplyButtonDisable","newSearch","externalSetSearchInStorage","existingEntryIndex","filterSlot","filterSlotOverride","searchToApply","newFilterOrderEntry","multipleOf","columnAccessor","getFilterLabel","getDecimals","applyButtonDisable","isMultiple","switchList","setPresetValue","FilterButtonProxyFactory","FilterButtonProxy","filterProps","useFilterBar","tableSettings","initialOrderBy","customStorageName","storageExternalSetKey","storageExternalSetSourceKey","orderByStorageKey","filterOrdersStorageKey","storageInitialize","getInitialSearchWithPageSizeFromSettings","setExternalSetSearchInStorage","removeExternalSetSearchFromStorage","externalSetSearchSourceInStorage","setExternalSetSearchSourceInStorage","removeExternalSetSearchSourceFromStorage","searchInStorage","_setSearchInStorage","removeSearchFromStorage","filterOrderInStorage","removeFilterOrderFromStorage","storageRef","setInitialOrderByInStorage","removeInitialOrderByFromStorage","searchCountRef","filterSetterSubscription","forceClearSubscription","applyCount","forceClear","setSearchInStorage","runSearchValueExtractors","extra","clearFilters","clearFiltersFromStorage","resetOrderBy","FilterButton","bind","LinkButton","AccountingEntityRenderer","onLinkToAccounting","CurrencyRenderer","acctTypeRenderer","jobTypeRenderer","lineHeight","linkPath","jobType","infoHeadline","getJobAcctDetails","paidAmount","balance","loadInfoAreaInvoiceBillCrDb","adjustBalanceTable","AdjustBalanceImpl","removeAdjustBalanceFromStorage","adjustBalanceRef","AdjustBalanceInitializedImpl","adjustBalance","setAdjustBalance","tableStorage","useTableStorage","check","setCheck","subFill","getAdjTypeByJobName","subUpdate","AdjustBalance","JobListSuntekCommand","RequestType","keyProp","showTransactionImpact","showFixJournal","showFixLockedData","showAdjustBalance","onSubMenuClick","adjBalancePopupLabel","fixJournalByMaster","fixJournalByTask","fixOpAcct","TrackingRequestImpl","vcResult","newRequest","setNewRequest","groupTitleRef","groupVisibleRef","groupItem","removeData","getTrackRequest","requestKind","bl","InitTrackRequestGroup","trs","cntrNo","tr","divElement","innerHTML","Tracking_R","statusDesc","checkPopupWidth","groupDataLength","groupData","TrackingRequestInitializedImpl","groupTitle","groupVisible","validateEmails","emails","emailArray","clickItem","alreadySettingsMenuOpend","trackingCancelRequest","emailTo","noticeToUpdates","trackingUpdateRequest","trackingRequestResult","trackingRequestByMbl","trackingRequestByContainer","mblLabel","editNumber","dangerouslySetInnerHTML","__html","u1Date","u1Id","u2Date","u2Id","TrackingRequestPopup","EmailOptionImpl","isUsedTrackingRequest","emailListRef","emailCntRef","displayData","setDisplayData","cleanup","getCompaniesToNotify","addReservedEmail","isSelect","getCode","tempList","comList","ipos","adoList","DEPT","F_EMAIL","F_ID","comIds","EmailOptionInitializedImpl","emailList","emailText","EmailList","temp","trimLeft","toggleSelection","RenderedTable","EmailOptionPopup","MoveTypeFilterRenderer","MoveTypeDropDown","lockBlue","HblRenderer","switchToHblFor","useMblOperations","mbl","switchToContainerFor","switchToAmsFor","amsLinkId","switchToAcctInfo","useSelectedMblOperations","hblCount","viewEdit","editUrlProfitTab","viewUrlProfitTab","deleteMbl","switchToHbl","switchToContainer","switchToAms","recognize","viewBillings","moveToDeleteHistoryReport","viewProfit","isStatus","processFileLock","opClose","isClosed","fileLockResult","editModelKey","keyMatch","fileClosed","closeDate","plusIndex","containerCount","CheckAndDoTrackRequest","cntrCount","CheckTrStatus","IsShippingLineSupported","CheckTrackRequestAllowed","countToSend","perMonth","containersPerMonth","checkThisMonthRequests","vcScac","reqType","trackingCheckShippingLine","getTrackRequestedContainerCountPerMbl","showFileLock","showCntrTracking","lockCancelRecog","recognized","trackingService","itemStatus","menuStatus","openContainerTracking","TrackRequestFunc","PaidRenderer","TrancationImpactButtonCommands","allowViewJournalOP","MblListCommands","setSavedEntityAfterRecog","hasOpenedNew","STARCFSMANI","makeCfsManifest","item3","subMenu","RecogModal","MblListToolbar","MblListViewExtras","MblListView","listCount","useTrackingService","oceanAir","useLotNumber","OimListType","UseLot","Normal","cntrWhite","cntrBlack","domIdSuffix","onCloseMilestonePopup","onCloseTracking49Popup","onCloseEmailOptionPopup","isUndefined","EmailOption","TrackingRequest","OiLoadListItem","loadNo","fromAmount","toAmount","truckingETD","fromTruckingETD","toTruckingETD","postDate","fromPostDate","toPostDate","truckingCoId","warehouseId","warehouseName","fromU2Date","toU2Date","fromCreatedAt","toCreatedAt","OrderBy","useSelectedLoadPlanOperations","TrailerLoad","deleteLoadPlan","LoadPlanListCommands","LoadPlanListToolbar","LoadPlanListViewExtras","LoadPlanListView","oceanImportLoadPlanList","containerStatusList","myEventList","vesselInfoList","amsVoyageList","amsMblList","amsHblList","amsUsersList","amsBranchList","amsBillingCodeList","amsHistoryCodeList","amsCrHistoryCodeList","releaseBlContainerTable","releaseBlPaybleTable","releaseBlReceivableTable","houseBillList","OiContainerListItem","oiMblId","conType","loadingPort","dischargePort","placeOfDelivery","fromEta","toEta","bookingDate","fromBookingDate","toBookingDate","ord","fromOrd","toOrd","inDate","fromInDate","toInDate","loadDate","fromLoadDate","toLoadDate","atd","fromAtd","toAtd","ata","fromAta","toAta","unloadDate","fromUnloadDate","toUnloadDate","carrierRls","fromCarrierRls","toCarrierRls","customsRls","fromCustomsRls","toCustomsRls","rAtd","fromRAtd","toRAtd","inlandEta","fromInlandEta","toInlandEta","rAta","fromRAta","toRAta","lastFreeDay","fromLastFreeDay","toLastFreeDay","puDate","fromPuDate","toPuDate","outDate","fromOutDate","toOutDate","dcDate","fromDcDate","toDcDate","emptyReturn","fromEmptyReturn","toEmptyReturn","fromEtd","toEtd","fromTrDate","toTrDate","returnCloumns","booking","customRls","datePopupInputValue","rowMblId","updateContainerInfo","oimContainerArray","oimContainerList","oimContainer","ClickAbleDateRenderer","switchToMbl","CsListCommands","CsListToolbar","switchToMblFor","useOperations","CsListViewExtras","ContainerPopup","save","setDatePopupInputValue","ContainerStatusListView","DoSave","OiVesselListItem","discharge","SelectedViEta","changeEtaModel","ViListCommands","showEtaEdit","setShowEtaEdit","isReminder","setChangeEtaModel","prevState","VesselAcct","setOIetaByVessel","CheckBoxUncontrolled","changeETA","ViListToolbar","ViListViewExtras","VesselInfoListView","OIVessel","AmsListItemBase","AmsVoyageListItem","amsStatus","lloyds","loadPort","fromETD","toETD","fromETA","toETA","lastPort","lastETD","fromLastETD","toLastETD","AmsVoyage","amsUserID","userName","loadETD","firstETA","vesselIndex","lPortName","fPortName","uPortName","ViewVoyageImpl","removeVoyageFromStorage","getAmsVessel","ViewVoyageImplInitializedImpl","ViewVoyage","BlockRenderer","useSelectedAMSVOperations","useAMSVOperations","switchToAmsHbl","showView","listFilter","setListFilter","isBlock","dismissView","changeVoyageListData","Downloaded","Virgin","allIconSelected","voyageAll","allIcon","downloadedIconSelected","voyageDown","downloadedIcon","notDownIconSelected","voyageNotDown","notDownIcon","viewDownloadView","VoyageListView","AmsMasterListItem","manifestSeq","finalDest","loadEtd","fromLoadEtd","toLoadEtd","onBoard","fromOnBoard","toOnBoard","expr1","amsUserId","AmsContainer","sealNo1","sealNo2","descCode","serviceCode","amsMasterID","created","modified","AmsMbl","fsCompanyId","convRefNo","svcBulletNo","origin","dCode","vesselFlag","lfp","pou","svcNo","mCommodity","feederVessel","fCode","n1Scac","n2Scac","coload","coloadBlNo","lclFcl","expRls","caType","cntrId","cntrType","acctID","acDesc","preRevenue","preCost","colRevenue","colCost","dPortName","carrierName1","viewListSettings","ViewMblImpl","removeMblFromStorage","getAmsMbl","ViewMblImplInitializedImpl","ViewMbl","switchToVoyageFor","switchToAmsVoyage","changeMblListData","AmsHistoryMaster","AmsManifest","isAmsEnable","getAmsLink","mblAll","mblDown","mblNotDown","openMasterHistoryReport","openAmsManifestReport","AmsHouseListItem","strBlock","vSendDate","fromVSendDate","toVSendDate","responseCode","vInbondNo","coLoadAms","coLoadAmsbl","responseDate","fromResponseDate","toResponseDate","statusRemark","AmsHts","amsContainerId","htsNo","marks","wUnit","pUnit","amsHouseId","volume","vUnit","flagMarks","flagDesc","AmsHm","hmCode","hmClass","hmQualifier","hmDescript","hmContact","hmUnpage","flashPoint","flashUnit","negative","AmsHbl","amsID","valueCargo","itNo","amsMblNo","sAddress1","sAddress2","sAddress3","sPhone","cType","cAddress1","cAddress2","cAddress3","cPhone","nAddress1","nAddress2","nAddress3","nPhone","bsName","bsAddress1","bsAddress2","bsAddress3","bsPhone","bcName","bcAddress1","bcAddress2","bcAddress3","bcPhone","bnName","bnAddress1","bnAddress2","bnAddress3","bnPhone","placeOfRec","dCode1","fDestPort","foreignDest","foreignPort","delivery","custRefNo","coloadAmsBl","hValue","sPkgs","spUnit","sWeight","swUnit","sVolume","svUnit","sValue","containerHId","containerMId","crDate","dPortName1","hts","hm","descriptionOfContainerSettings","hazardousInfoSettings","NoOfContainerRenderer","ViewHblImpl","removeHblFromStorage","getAmsHbl","ViewHblImplInitializedImpl","hbl","tab","setTab","BlInfo","DescriptionOfContainer","colspan","acc","HazardousInfo","ViewHbl","StatusFilterRenderer","useSelectedHblOperations","useHblOperations","switchToAmsMbl","changeHblListData","AmsHistory","hblAll","hblDown","hblNotDown","openHouseHistoryReport","AmsUserListItem","passWord","amsSubGroup","active","amsUserPortTable","amsUserScacTable","AmsUserPort","portID","scacID","portName","AmsUser","amsGroupID","amsGroupName","fsCompanyID","pageRowCnt","portList","carrierList","findButtonStyle","findTextBoxStyle","findIconStyle","ViewUserImpl","removeUserFromStorage","getAmsUser","ViewUserImplInitializedImpl","userRef","setUserRef","setDirty","portSearchRef","scacSearchRef","eur","portLeftTableOptions","portRightTableOptions","scacLeftTableOptions","scacRightTableOptions","handlePortSearch","handleScacSearch","LabeledSelect","TextBoxUncontrolled","faSearch","ViewUser","popupMode","setPopupMode","dismissUserView","UsersListView","AmsBranchListItem","_data","isSelected","maxId","it","foundIndex","BranchListView","AmsBillingCodeListItem","amsBillingCode","BillingCodeListView","AmsHistoryListItem","amsMessage","conVName","HistoryListView","Ams1CHistoryListItem","entryNo","pkg","toPkg","fromPkg","CrHistoryListView","direct","isFileClosed","MapOeSearchFields","oceanExportMblList","lType","OemListType","_extends","arguments","source","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","clipPath","fillRule","clipRule","fill","SvgContainerTracking","_ref","svgRef","titleId","ForwardRef","ReleaseHblInfo","subBl","podEta","kgs","lbs","cft","cdtLmt","mExpRls","pMemo","cfsLoc","cfsDate","pror","edi","oblCol","oblDate","rlsd","rlsDate","rlsBy","containers","billItems","invoItems","mRlsDate","billToName","cdtHold","totalBalance","totalPastDue","cfsYn","printRelOrder","cfsRelOrder","releaseOrder","rlsBtnEnable","rlsBtnText","HblRelease","blInfo","setBlInfo","rlsYN","updateFlag","setUpdateFlag","relFlag","setRelFlag","containerTableOptions","no","paybleTableOptions","receivableTableOptions","subEnableRelease","userid","disabledRlsYn","CFSManifestReleaseOption","requestDept","HblReleaseImpl","hblId","billToId","cfsOption","removeBlInfo","blInfoRef","doClose","notifyResult","RefreshListView","rlsStat","checkReleaseOrder","cfsyn","opt","getReleaseHblInfo","loadedModelObj","oriOblCol","oriExpRls","oriRlsd","saveReleaseHblInfo","makeCfsRelease","releaseNow","HblReleaseInitializedImpl","HblReleasePopup","OblDateRenderer","OblColClickFor","OblColRenderer","RlsDateRenderer","RlsColClickFor","RlsStatRenderer","HblTypeFilterRenderer","AmsRenderer","useAms","UseAMSISfIcon","data-toolip","IsfRenderer","useIsf","InbondRenderer","ChbRenderer","chbRspCode","chbRspMsg","HblListCommands","setSavedEntityJournal","deleteHbl","setSavedEntityOim","openedByMaster","newUrl","onPopupCompClick","HblListToolbar","nRet","oblStat","AcmeID3","confirm","setOblCol","tRet","CashierRelease","HblListViewExtras","HblListView","isCanada","OihListType","NormalCan","showMilestoneInOihList","HblInfo","bizMode","formatHblType","hasCLimit","onCloseHblRlsPopup","hblElement","HblBlStatusPopup","setSavedEntityOem","oeMblId","switchToBookingFor","switchToBooking","oceanExportHblList","OehListType","kgslbsDecimal","HblMilestonePopup","OceanQuoteListItem","quoteNo","quoteDate","fromQuoteDate","toQuoteDate","serviceType","plofRec","plofDel","customerId","u1ID","u2ID","mblRefNo","validBy","fromValidBy","toValidBy","sManID","contactName","isLast","OIQuot","OEQuot","Quotation","deleteQuotation","category","getOceanImportMblInfoAreaBics","QuotationListView","oceanExportQuotationList","AirQuoteListItem","AIQuot","AEQuot","QuotationAir","airExportQuotationList","deleteItem","BookingListView","oceanExportBookingList","OeLoadPlanListItem","bookingNo","agentSName","cutOffDate","fromCutOffDate","toCutOffDate","lpU2Date","fromLPU2Date","toLPU2Date","lpU2ID","deleteOceanImportMblById","oceanExportLoadPlanList","Large","row12","row6","row4","row3","breakNo","Break1","Break2","Break3","Break4","getDetailLabel","getAmountLabel","getBicNoLabel","getBicDateLabel","getBicCompanyLabel","getRevisionHistoryLabel","marign","SalesCostTypeLabelRenderer","SalesCostTypeLabel","BicInfoAreaHistory","historyData","useWindowSize","useIfmsColSizes","historyHDList","revisionHistory","revisionHistList","historyTableOptions","lineItemsData","historyDetaillAllList","ediHdId","historyLineItemsTableOptions","revisionHistoryLineItemsTableOptions","sectionSize","Currency","last","LabeledTextBox","confirmDate","confirmActionDate","ConfirmedRenderer","WHBillConfirmed","BillGivCredit","BillCancelCredit","BillConfirmed","setBillConfirmed","Boolean","allowOnChange","classes","mouseOverRowIndex","void","draft","useBillOperations","switchToParentFor","bill","columnLabel","columnIdEx","textEx","switchToList","useSelectedBillOperations","AcctBillList","opAcctBlockAfterClosed","switchToParent","viewPaymentHistory","BillListCommands","hasSecCp","AcctCustPayment","hasSecBp","AcctBillPayment","billNo","vendorId","CopyInvoice","srcJobName","srcJobId","vendorName","customerName","disablePrint","PrintBill","HistoryView","allowViewJournalBillings","BillListToolbar","BillListViewExtras","param","getAcctHistory","BillListView","OceanImport","OceanExport","AirImport","AirExport","needAfterScreenUrl","checkAllOperation","selectedBillNo","BillInformation","billId","EdiSharedInfo","release","senderID","senderIdQualifier","senderName","receiverID","receiverIdQualifier","receiverName","ediType","Edi310Impl","edi310","setEdi310","run","setRun","getEDI310","ftpID","ftpPassword","ftpOutFolder","ftpScac","faCheckData","invoHdIds","lines","invoiceId","receiverId","receiverIdq","senderId","senderIdq","ediInfo","ediSeqNo","make310","Edi310InitializedImpl","clickEDI","invoiceDate","ediDate","Edi310","Edi310BatchImpl","edi310Batch","setEdi310Batch","getEDI310Batch","Edi310BatchInitializedImpl","searchEDI","SelectRenderer","_list","Edi310Batch","InvGivCredit","InvCancelCredit","WHInvConfirmed","InvConfirmed","setInvoiceConfirmed","useInvoiceOperations","invoice","referenceNo","useSelectedInvoiceOperations","AcctInvoiceList","InvoiceListCommands","puInvoice","BatchPrint","InvoiceS","RptInvoiceS","invoiceToName","enableEDI310","InvoiceListToolbar","InvoiceListViewExtras","InvoiceListView","WHCrDbConfirmed","CrDbConfirmed","setCrdbConfirmed","settled","disableConfirmInCRDBList","paidAmt","useCrdbOperations","crdb","useSelectedCrdbOperations","isWarehouingList","AcctCrDbList","CrdbListCommands","CrDbBatch","RptCrDbBatch","CrdbListToolbar","CrdbListViewExtras","CrdbListView","TaxIdTypeRenderer","data-cell-actual-value","useSelectedCompanyOperations","getCheckCompanyIsUsed","canDelete","getCheckCompanyIsUsedIl3","FmsMOption","serversOption","il3LicID","canUseHybrid","pimsID","PimsID","CodeCompany","deleteCompany","CompanyListCommands","SendEmail","SendFax","shortName","CompanyListToolbar","CompanyListViewExtras","CompanyListView","DefaultContainerMilestoneStatus","editable","lastEventDateTime","toggleRow","selectedIndeces","StatusNameRenderer","onRowChange","datetime","TimeRenderer","changedTime","LocationRenderer","OceanUnPortLookupField","lookupId","locName","LastEventTimeRenderer","lastDate","MblMilestoneContainerStatus","applyToAll","setSelectedIndeces","indeces","currentTime","tempLocName","statusData","MblMilestoneImpl","containerInfo","onContainerInfoChange","executeApplyToAll","milestone","applyContainerStatusToAll","milestoneContainerSelectedIndex","update","statusUpdateWithIndices","changeProps","updatedProps","itemList","BlueTitleRow","vesselVoy","cntrIndex","omCntr","msitem","cntrDateToSet","genContainerList","locToSet","MblMilestone","prepareOtherOpForView","AddPimsCntrEvent","bookingId","pimsContainer","enumEvent","smitem","PimsCntrEvent","pimsCntrId","pickupNo","isVisible","CreateCargoEventLog","evtName","kvp","cntrDataWithSeq","keyArr","eventAt","CargoEventLog","DateTimeFormat","eventLogs","uniqueCntrSet","suntekID","srcEventType","loc","timezone","resolvedOptions","timeZone","locTime","FindIndexOfKeyStartsWith","dicEvent","startWith","vStart","eventMappings","prefix","mappingKey","setSavedEntity","setMbl","removeMbl","mblRef","removeBlStatus","loadedMbl","GenMain","getMblStatusViewModel","blApiResult","hiSqlInfo","blStatusInfoList","saveMblStatusViewModel","UpdateLogMblMilestone","CollectMblEvents","cmile","lastEvents","mapping","dindex","cargoEventLog","uniqueCmileSet","tempData","utcTime","trackingLogMblEvents","changeData","changeContainerData","findData","seqNum","cntr","evtCode","AddEventToNotice","MblMilestoneInitializedImpl","milestoneRef","ci","MblMilestonePopup","unFormatShipmentType","ot","ListView","otherShipmentList","receiptList","rcvStatus","isVoid","rcv","deleteReceiving","receiveDate","receivingList","shipStatus","shp","deleteShipping","shipDate","shippingList","WhInvenSumListItem","itemNo","itemDesc","upcCode","onHandQty","allQty","availQty","boxUnit","innerPcs","onHandPcs","allPcs","availPcs","fromOnHandQty","toOnHandQty","fromAllQty","toAllQty","fromAvailQty","toAvailQty","fromInnerPcs","toInnerPcs","fromOnHandPcs","toOnHandPcs","fromAllPcs","toAllPcs","fromAvailPcs","toAvailPcs","inventoryList","WhInvenDetailListItem","fromTo","poNo","box","fromQty","toQty","fromBox","toBox","fromLbs","toLbs","fromCft","toCft","inOutList","VoidRenderer","STInvConfirmed","canBeDel","storageInvoiceList","WhCustListItem","address","city","zip","phone","fax","attention","billGroup","boxRate","fromBoxRate","toBoxRate","pcsRate","fromPcsRate","toPcsRate","cftRate","fromCftRate","toCftRate","boxCharge","fromBoxCharge","toBoxCharge","labelCharge","fromLabelCharge","toLabelCharge","docCharge","fromDocCharge","toDocCharge","formU1Date","toU1Date","formU2Date","TypeRenderer","companyList","WhItemsListItem","prodCode","upc","innerPac","defaultLoc","fromInnerPac","toInnerPac","fromLBS","toLBS","fromLength","toLength","fromWidth","toWidth","fromHeight","toHeight","fromCFT","toCFT","fromU1Date","isUsed","WItemEDI","fileCount","scanItem","locResult","itemResult","WItem","dicFieldMap","EdiWebCenterDropDown","loadCodeData","fetchData","isConfirmed","ItemUploadImpl","itemStorage","setItemStorage","removeItemStorage","newItemModel","newModel","uploadDataCheck","getLookupItems","WareLocation","apiLocResult","WareRcvItems","apiItemResult","doRefresh","A","D","E","B","C","saveUpload","ItemUploadInitializedImpl","isPhysicalInven","wItemEDI","handleUploadFile","excelData","readExcel","cust","GreenButtonInputExcel","isText","handleFile","ItemUpload","WhLocationListItem","zone","locationList","CustomerPaymentListItem","receivedFrom","payment","depositDate","fromDepositDate","toDepositDate","chkPrint","voidDate","fromVoidDate","toVoidDate","firstCustomer","HistoryViewPaymentImpl","getPaymentHistory","HistoryViewPaymentInitializedImpl","historyViewPayment","historyViewPaymentRef","setHistoryViewPayment","detailList","selectPaymentHist","histDetailList","hdId","tempHistDetail","masterTableRef","getCustomerLabel","CPHistory","BPHistory","MPHistory","getTotalLabel","getRefNoLabel","mainTableOptions","paymentDetailTableOptions","etf","ccRefNo","bankName","total","creditCard","HistoryViewPayment","lPayment","allowViewJournalPayment","readSecDelHistory","AcctCPayDeleteHistory","CustomerPaymentMemoListItem","followUp","fromFollowUp","toFollowUp","lastPaidAmt","fromLastPaidAmt","toLastPaidAmt","terms","toTerms","fromTerms","avgAging","toAvgAging","fromAvgAging","curCnt","toCurCnt","fromCurCnt","pastDueCnt","toPastDueCnt","fromPastDueCnt","lastPaidDate","fromLastPaidDate","toLastPaidDate","salesRep","groupId","currentBal","fromCurrentBal","toCurrentBal","fromPastDue","toPastDue","days15","fromDays15","toDays15","days30","fromDays30","toDays30","days45","fromDays45","toDays45","days60","fromDays60","toDays60","days90","fromDays90","toDays90","over90","fromOver90","toOver90","fromBalance","toBalance","idAndCurrency","BatchStatementHd","overDue","excludeZeroTerm","emailSubject","emailBody","bccToMe","attachInvoices","invoiceDateFrom","invoiceDateTo","workWith","ProgressDialogStyle","inset","ProgressDialogContainerStyle","transform","actualDate","useEmail","ActionRenderer","previewReport","BatchStatementImpl","getBatchStatementStorageKeys","inStorageRef","readStatementData","BatchStatementInitializedImpl","batchStatement","batchStatementRef","setBatchStatement","loadList","progressRef","makeReportArgs","isPreiview","billToFName","bccmail","comInfo","billToSName","showProgressDialog","show","setProgressLabel","setStatus","actionRowCount","successRowCount","sendEMail","isDeselectAll","allButtonLabel","sendEmail","flexDirection","BatchStatementDetails","CustomerVendorImpl","removeCustomerVendorFromStorage","customerVendorRef","periodCombo","OI","OO","AI","AO","OT","WH","invoiceData","billData","billReceivedOnly","showPrevBalance","doNotShowOverpaidInvoices","CustomerVendorInitializedImpl","customerVendor","setCustomerVendor","disableBillReceivedOnly","invobillData","nameOnReport","isSelectAll","useMultipleNames","MultiNameDropDown","intValue","loadFromConfig","CompanyListNotAgentLookupField","CurrencyDropDown","allowEmpty","additionalElements","CustomerVendorDetails","BatchStatementProcessing","AgentPaymentListItem","firstAgent","VoidDateRenderer","AcctAgntPayment","AcctAPayDeleteHistory","BankEdiImpl","getBankEdiStorageKeys","removeBankEdiFromStorage","bankEdiRef","actualDateTo","BankEdiInitializedImpl","bankEdi","setBankEdi","changeLineItem","CheckNoRenderer","AmountRenderer","RemarkRenderer","addLineItem","totalAmount","Text","actualDateFrom","BankDropDown","autoSetDefault","bankId","bankAccountNo","ediFilename","updated","BankEdiDetails","CheckPrintImpl","checkRange","batchCheck","removeBatchPrintFromStorage","batchPrintRef","printCheck","printMessanger","slip","checkFrom","checkTo","CheckPrintInitializedImpl","checkPrint","checkPrintRef","setCheckPrint","draftOrVoid","checkPrintOptions","errflag","fromno","tono","getCheckFormName","CheckPrintDetails","newBatchCheckProcessingModel","accrualDate","expectDateFrom","expectDateTo","vendorDetails","checkDetails","BatchCheckProcessingImpl","getBatchCheckProcessingStorageKeys","removeBatchCheckProcessingFromStorage","batchCheckProcessingRef","BatchCheckProcessingInitializedImpl","batchCheckProcessing","setBatchCheckProcessing","reload","setOriginal","showIssueCheckPopup","setShowIssueCheckPopup","filterCheckData","payToOrderId","payToId","billIds","vendorTableOptions","checkTableOptions","getAutoCheckNo","setListCheckNo","nextCheckNo","loadApList","onCheckPopupClose","issueCheck","doNotAskPrintCheckInNewBillPayment","CheckPrint","CheckS","BatchCheckProcessingDetails","etfStr","AcctBPayDeleteHistory","firstVendor","Check","BatchCheckProcessing","BankEdi","CreditPaymentListItem","totalAmt","fromTotalAmt","toTotalAmt","acctSName","AcctCCPayment","AcctCCPayDeleteHistory","OtQuotationListItem","cargoDesc","pickupFrom","ctnrType","validDate","fromValidDate","toValidDate","salesperson","specialMemo","OTQuot","QuotationOT","otherShipmentQuotationList","useMawbOperations","mawb","switchToHawbFor","useSelectedMawbOperation","hblStat","switchToHawb","MawbListViewExtras","MawbListToolbar","HawbRenderer","MawbListCommands","MawbListView","airImportMawbList","MawbMilestonePopup","mawbId","useHawbOperations","switchToMawbFor","hawb","aiMblId","useSelectedHawbOperation","setSavedEntityAim","switchToMawb","HawbListViewExtras","HawbListToolbar","HawbListCommands","HawbListView","airImportHawbList","AihListType","showMilestoneInAihList","storageStatusKey","HawbMilestonePopup","hawbId","statusStorageKey","BlTypeRenderer","BlTypeFilterRenderer","airExportMawbList","formatAEBlType","HawbMilestone","blStatus","lCode","opClosedBy","HawbBlStatusImpl","departure","arrival","setBlStatus","blStatusRef","loadBlStatus","getHblStatusViewModel","HblStatusViewModel","setWhereFieldValueByFieldName","saveHblStatusViewModel","HawbBlStatusInitializedImpl","HawbBlStatusPopup","aeMblId","setSavedEntityAem","airExportHawbList","OeContainerListItem","sealNo","emptryReturn","fromEmptryReturn","toEmptryReturn","fromKgs","toKgs","toPkgs","fromPkgs","ccDate","ContainerStatusCommands","enableFlexiTank","FlexTank","oceanExportContainerStatusList","GInvGiveCredit","GInvCancelCredit","GInvConfirmed","AcctGInvoList","GeneralInvoiceListView","GBillGivCredit","GBillCancelCredit","GBillConfirmed","AcctGBillList","GeneralBillListView","BankRecActListItem","fDate","fromFDate","toFDate","bookValue","fromBookValue","toBookValue","bankValue","fromBankValue","toBankValue","difference","fromDifference","toDifference","inValue","fromInValue","toInValue","outValue","fromOutValue","toOutValue","curBalance","fromCurBalance","toCurBalance","pdCheck","fromPDCheck","toPDCheck","ppCheck","fromPPCheck","toPPCheck","BankReconActivityReportViewImpl","BankReconActivityReportViewInitImpl","reportOptionRef","setReportOption","BankReconHistory","noBadBank","BankReconActivityReportView","AcctBankRecon","BankReconListView","BankTransferListItem","fBankName","fCurrency","fAmount","fromFAmount","toFAmount","tBankName","tCurrency","tAmount","fromTAmount","toTAmount","transferFrom","transferTo","AcctBankTransfer","deleteEntity","BankTransferListView","AdjPrepaidExpenseListItem","postdate","fromPostdate","toPostdate","vendorname","gldescription","decription","AcctPrepaidAdjustment","PrepaidExpenseAdjustmentListView","PayrollSummaryListItem","payrollDate","fromPayrollDate","toPayrollDate","grossAmt","fromGrossAmt","toGrossAmt","payableFedTax","fromPayableFedTax","toPayableFedTax","paidAmtFedTax","fromPaidAmtFedTax","toPaidAmtFedTax","payableStateTax","fromPayableStateTax","toPayableStateTax","paidAmtStateTax","fromPaidAmtStateTax","toPaidAmtStateTax","payableNetSalary","fromPayableNetSalary","toPayableNetSalary","paidAmtNetSalary","fromPaidAmtNetSalary","toPaidAmtNetSalary","addTaxAmt","fromAddTaxAmt","toAddTaxAmt","addTaxPaidAmt","fromAddTaxPaidAmt","toAddTaxPaidAmt","addPayAmt","fromAddPayAmt","toAddPayAmt","addPayPaidAmt","fromAddPayPaidAmt","toAddPayPaidAmt","voidInputDate","fromVoidInputDate","toVoidInputDate","fromModifiedAt","toModifiedAt","blank","fedTaxPaid","stateTaxPaid","netSalaryPaid","addTaxPaid","addPayPaid","PaidFilterRenderer","AcctPayroll","canBeRead","PayrollSummaryListView","Payroll2ListItem","payrollNo","netPayAmt","fromNetPayAmt","toNetPayAmt","fedTaxAmt","fromFedTaxAmt","toFedTaxAmt","fedUnemployAmt","fromFedUnemployAmt","toFedUnemployAmt","stateTaxAmt","fromStateTaxAmt","toStateTaxAmt","stateUnemployAmt","fromStateUnemployAmt","toStateUnemployAmt","netPayPaid","fedUnemployPaid","stateUnemployPaid","allPaid","CheckboxIconRenderer","Payroll2ListView","AdjDepreciationListItem","AcctDepreciationAdjustment","DepreciationAdjustmentListView","AdjAmortizationListItem","AcctAmortizationAdjustment","AmortizationAdjustmentListView","BadDebtExpenseListItem","AcctBadDebtExpense","BadDebtProcessingListView","salesTaxReturnList","salesCostBatchRecogList","SalesTaxReturnListItem","accountType","fromPaidAmount","toPaidAmount","SalesTaxReturnListView","Type","IsfListCommands","moveToUsageReport","ISFHistory","getIsfLink","isIsfEnable","isfEnable","IsfListToolbar","IsfListViewExtras","IsfListView","DownloadListCommands","useSelectedDownloadItem","buttonCatpion","DownloadListToolbar","MasterDownloadListViewExtras","OiPims","MasterDownloadListView","HouseDownloadListViewExtras","HouseDownloadListView","PimsPoListItem","pimsPoId","pimsNo","pono","projectId","poDate","fromPoDate","toPoDate","supplier","totQty","fromTotQty","toTotQty","reqDeliveryDate","fromReqDeliveryDate","toReqDeliveryDate","pkgUnit","sellerName","sellerAddress","doordeliveryname","originAgentId","destAgentId","pimsID1","pimsID2","pimsID3","pimsUserID","isAir","isOcean","isImport","isMy","isAll","ShipmentListViewExtras","ShipmentListView","MemoAllListView","UTTaskMemoListItem","viewRelatedFor","viewRelated","AttachedFileListView","UTAttachedFileListItem","idex","EmailLogListView","UTEmailLogListItem","PrintLogListView","UTPrintLogListItem","FaxLogListView","UTFaxLogListItem","UTCommunicationListItem","logType","recipient","recCompanyName","sType","faxNo","LogTypeFilterRenderer","LogTypeRenderer","PaymentPrepListItem","paymentDate","fromPaymentDate","toPaymentDate","vendors","isPaid","printDate","fromPrintDate","toPrintDate","printBy","AcctPaymentPrep","faFileAlt","faPencilAlt","faTrashAlt","PaymentPrepListView","AciManifestListItem","transMode","blocked","aciStatus","matchStatus","dpStatus","actionDate","fromActionDate","toActionDate","responseAt","fromResponseAt","toResponseAt","primaryBill","primarySCAC","primaryCCN","houseSCAC","houseCCN","discPortDesc","changeListData","AciHistory","openHistoryReport","HouseBillListView","SCRecogBatchRecog","events","updateANSentInfo","mCntrId","mblCarrierRlsDate","updateContainerInfos","onDateCellClick","enableAN","anPastDays","Tracking_Y_Triangle","Tracking_B_Triangle","vesselArrivalDate","enableCarrierRls","carrierRlsPastDays","enableCarrierRlsFromEta","carrierRlsFromEtaPastDays","enableCustomsRls","customsRlsPastDays","enableCustomsRlsFromEta","customsRlsFromEtaPastDays","unloadVesselDate","enableDemurrage","demurragePastDays","enableDetention","detentionPastDays","emptyCntrRtnDate","enableBilling","billingPastDays","ExportEventDate","MyEventRender","eventStatus","MyEvent_AN","MyEvent_Carrier","MyEvent_Cust","MyEvent_Pickup","MyEvent_Return","MyEvent_Billings","HyperLinkTextRenderer","preparedBy","warning","searchItems","setSearchItems","filterOrderStorage","setSearchModel","extraSearch","MyEventListView","alignContent","anPrintedDate","clearDate","clearBy","rlsDateBy","refreshView","listJobNames","OIMB","OILD","OiLoadPlanListView","OICN","OiContainerStatusListView","OIVS","OiVesselInfoListView","AMSV","OiAmsAciVoyageListView","AMSM","OiAmsAciMblListView","AMSH","OiAmsAciHblListView","AMSU","OiAmsAciUsersListView","AMBR","OiAmsAciBranchListView","AMBI","OiAmsBillingCodeListView","AMHI","OiAmsAciHistoryListView","AMC1","OiAmsCrHistoryListView","ISFL","ACIEM","OIHB","oeMbl","OeMblListView","OEMB","CNTR","oeHbl","OeHblListView","OEHB","oeQuotation","OeQuotationListView","SQUOT","oiQuotation","aeQuotation","AeQuotationListView","AQUOT","aiQuotation","oeBooking","OeBookingListView","OEBK","oeLoadPlan","OeLoadPlanListView","OELD","oeContainerStatus","OeContainerStatusListView","OECN","BILL","OPBILL","INVO","OPINVOICE","OPCRDB","COMP","aiMawb","AIMB","aiHawb","AIHB","aeMawb","AeMawbListView","AEMB","aeHawb","AeHawbListView","AEHB","OtherShipmentListView","otQuotation","OtQuotationListView","OTQUOT","ReceiptListView","WHRC","whReceiving","ReceivingListView","WHRCV","whShipping","ShippingListView","WHSHP","whInventory","InventoryListView","WHIVS","whInOut","InOutListView","WHIVD","whInvoice","WHINVO","WHCRDB","whBill","WhBillListView","WHBILL","whStorageInvoice","StorageInvoiceListView","WHSTI","whCompany","WhCompanyListView","WHCUS","whItem","WhItemListView","WHIT","whLocation","LocationListView","WHLOC","acCustomerPayment","CustomerPaymentListView","CPAY","acAgentPayment","AgentPaymentListView","APAY","acBillPayment","BillPaymentListView","BPAY","acCCPayment","CCPaymentListView","CCPAY","acCustomerPaymentMemo","CustomerPaymentMemoListView","CPAYM","acGeneralInvoice","GINVE","acGeneralBill","GBILE","acBankRecon","BREC","acBankTransfer","BKTF","acPrepaidExpenseAdjustment","PEAM","acPayrollSummary","PRSM","acPayroll2","PAYROLL2","acDepreciationAdjustment","DPAM","acAmortizationAdjustment","AMAM","acBadDebtProcessing","BDEBT","acSalesTaxReturn","STRT","acJournal","JRNL","acPaymentPrep","PAYMTP","utMemotask","MEML","utAttachedfile","FATT","utEmail","LOGM","utPrint","LOGP","utFax","LOGF","utCommunication","CommunicationListView","LOGC","OIMMP","OIHMP","OIMP","OIHP","OISOP","OEMMP","OEHMP","OEMP","OEHP","OESOP","AIMMP","AIHMP","AIMP","AIHP","AISOP","AEMMP","AEHMP","AEMP","AEHP","AESOP","BRECG","BatchRecogListView","acBatchRecogHistoy","MYEVT","findKey","labelProps","controlProps","setTableSettings","CheckboxUncontrolled","valueChangeExternallySubscription","GlDescRenderer","sectionStart","isTotalLine","glDesc","getType","AcctBalanceByEntity2","NewGLBalanceDetail","isSameGroup","AccountBalanceImpl","groups","accountBalanceData","getAccountBalance","createHeader","mg","prs","mgi","GLDesc","createDetail","pr","amount1","Amount1","amount2","Amount2","amount3","Amount3","amountOld","AmountOld","amountTot","AmountTot","amountF1","AmountF1","amountF2","AmountF2","amountF3","AmountF3","amountFOld","AmountFOld","amountFTot","AmountFTot","getAmountHeader","subtract","sectionEnd","groupStart","groupEnd","groupNum","accountBalanceToTable","currentProps","AccountBalance","initialState","sideMenu","operationSlice","createSlice","reducers","clearOperation","changeOperation","payload","changeSideMenu","actions","ReplaceCrToCrLf","customStyle","nextValue","selectionEnd","noLine","ScreenMemory","purgeScreenFromMemory","moveScreenToTopForSection","section","moveItem","pushToStack","currentState","actionPayload","parentUrl","existingIndex","pushToStackForSection","popScreenFromSection","urlToRemove","urlsToDelete","query","q","deleteIndices","screenStackSlice","clearScreenStack","pushScreenToStack","replaceScreenUrlOnStack","oldUrl","replaceUrlOnStack","popScreenFromStack","replaceScreenStackMetadata","replaceUrlMetadata","moveScreenToTop","moveScreenToOperation","sourceOperation","destinationOperation","sourceSection","destinationSection","moveItemIndex","moveItems","doMoveScreenToOperation","replaceScreenUrlParentOpOnStack","findUrl","oldUrlOe","oldUrlAe","oldUrlAc","replaceUrlParentOpOnStack","dayList","monthList","yearList","PeriodClosing","endYearDate","lastCloseDate","canCreate","currDay","currMonth","currYear","isClose","closingList","closingDate","PeriodClosingImpl","removePeriodClosingFromStorage","periodClosingRef","checkDataAsync","bQuestOPClose","closeAccount","closeOperation","closeCheckAccount","myCompany","acctCloseBy","getFieldValueFromInitData","mpWord","nStartMonth","nEndMonth","dDate","PeriodClosingInitializedImpl","saveClose","saveReopen","periodClosing","setPeriodClosing","createMonthRange","createDayRange","dateIdx","PeriodClosingDetails","OrangeButton","fiscalYearSettingsTable","yearEndHistoryTable","fiscalYearSettingsDetailsTable","FYPeriod","fyDesc","beginDate","yearEnd","fiscalYear","oldBeginDate","oldEndDate","oldFiscalYear","editFlag","setFYPeriod","ChangeFYPeriod","fisvalYear","ManageFiscalYearEndImpl","refreshCnt","setRefreshCnt","delPIds","setDelPIds","keepStartDate","fyPeriods","prevId","delId","saveFiscalYearSetting","ManageFiscalYearEndInitializedImpl","setYearEnd","delPeriodIds","setDelPeriodIds","savePeriods","newPeriods","changeLevel","diffMonth","setStartDate","startYear","startMonth","delIds","newStartDate","lastPeriod","firstBeginDate","firstEndDate","firstfyDesc","newPeriod","getPreviousNo","pop","newNo","beginJournalCount","ChangeStartDate","yearEndProcessingSettings","fiscalMonthDesc","alignSelf","showSelectStartDate","globalOkDialog","endList","setEndList","fyData","setFyData","closeDialog","hideGlobalOkDialog","ListData","setStartYear","setstarMonth","setYearList","year1","year2","ManageFiscalYearEnd","Delay","delay","res","monthDesc","YearEndImpl","removeYearEndFromStorage","yearEndProcessingRef","readYearEndData","fiscalYearEnd","fiscalMonth","fyHistories","YearEndInitializedImpl","yearEndRef","checkReverse","setCheckReverse","doingYearEnd","setDoingYearEnd","resultMsg","setResultMsg","showManageFyEnd","setShowManageFyEnd","lastHistoryId","setLastHistoryId","onChangeSelectRow","showProgress","setProgressStatus","percentage","progress","setFYStatus","refreshHistory","readFYHistory","histories","checkFYPeriod","beginRow","checkRecogStatus","runYearEnd","earningGLNo","apiResult3","saveFiscalYearHistory","apiResult4","periodClose","apiResult5","reuslt","thisFiscalYear","nextFiscalYear","runReverse","defaultIndex","checkDefault","yearEndListSettings","yearEndHistorySettings","YearEndProcessingDetails","dashboardUrl","dashboardUrlDark","moreMenuJobName","topLineColor","textColor","AmsFiling","AMSRptUsage","AMSRptLifting","AMSRptTotalLifting","IsfFiling","isDirectPrint","OIRptANLog","OIRptInlandTransport","OIRptShipment","OIRptPendingCargo","OIRptRlsHistory","operationReport","preReport","moreMenu","OERptShipment","OERptBrokerage","AIRptPreAlert","AIRptEstProfit","AERptEstProfit","WHRptChargeItemSummary","WHRptCustomerInNOut","AcctBankBalance","AcctDailyAcctSummary","AcctCCClear","AcctCancelCCClear","AcctChkClearWithExcel","AcctCustStatement","AcctAgentStatement","AcctCustPaymentMemo","SCRecogDeferred","AcctBalByEntity","AcctLedger","AcctGeneralLedger","AcctIncomeStatement","AcctBalanceSheet","AcctTrialBalance","AcctPeriodClosing","popupTop","YearEndProcessing","AcctEndYearProc","OPRptCustomerActivity","OPRptDutyPendings","OPRptIssueReady","OPRptEstProfit","OPRptGrossProfit","OPRptVendorCost","OPRptVolume","OPRptProfitBySalesman","OPRptOpPerfom","UTCommunication","UTEmailLog","UTPrintLog","UTFaxLog","UTTaskMemoList","UTAttachedFile","moreMenuLocation","subMenuNonReport","OpenHistoryView","OpenDeleteHistoryView","AutoBillingView","NewCustomerPay","NewBillPay","CustomerPayList","topLineShort","BillPayList","ViewPaymenHistory","SwitchJournal","customizer","storageSlice","clearStorage","closeOnLogout","counter","noOperationSuffix","doAddJobMenuItemToSectionIfNotExists","removeJobItemFromSection","jobMenuSlice","clearJobMenu","addJobMenuItem","jobMode","addTypeSuffix","doAddJobMenuItemFromAction","replaceJobMenuItem","indexInOi","newLabel","indexInOe","indexInAi","indexInAe","indexInOs","indexInAc","indexInWa","indexInWhr","indexInCs","indexInUtil","indexInBillings","indexInMyEvent","indexInBIntell","doReplaceJobMenuItemFromAction","removeJobMenuItem","replaceJobMenuMetadata","indexInBusinessIntel","doReplaceJobMenuItemMetadata","doReplaceJobMenuItemTimestamp","moveJobMenuToTop","moveJobToOperation","doMoveJobToOperation","replaceJobMenuParentOp","orgUrl","doReplaceJobMenuParentOp","fromInvoiceDate","toInvoiceDate","fromDueDate","toDueDate","fromOverDue","toOverDue","vatAmount","fromVatAmount","toVatAmount","cAmount","fromCAmount","toCAmount","dutyAmount","fromDutyAmount","toDutyAmount","faxSentDate","fromFaxSentDate","toFaxSentDate","emailSentDate","fromEmailSentDate","toEmailSentDate","printedDate","fromPrintedDate","toPrintedDate","paidDate","fromPaidDate","toPaidDate","lastClearDate","fromLastClearDate","toLastClearDate","tempAmount","tempPaidAmount","tempBalance","customerRefNo","otherRefNo","shipToName","invoiceUserMemo","draftPaid","priod","InvoiceExportCollection","GInvoiceExportCollection","WHStorageInvoiceExportCollection","WHInvoiceExportCollection","verflowX","receiptContainerDetails","shippingTopContainerDetails","receivingTopContainerDetails","receivingBottomContainerDetails","sInvoiceLoadItem","storageInvoiceLineItemTable","receivingShippingChargeItemDetails","ModalDialogContentStyle","borderColor","estRecogDate","setEstRecogDate","firstAcctDate","setFirstAcctDate","setRecogDate","beforeClosing","getEstFinalizeDateEx","checkFinalizeData","saveRecognizeData","recogDateField","alignMargin","NoticeWarningIcon","customClass","buttons","onButton","defaultFocusIndex","addOr","prepareOiMblForView","BlEventName","FmsTracker","FmsHawbRcvd","FmsLastTrack","FmsPlRcvd","FmsAnPrt","FmsCommDoc","FmsEntryDoc","Fms7501","FmsEtaCfrmd","Fms3461","FmsAmsCfrmd","FmsInlandNtc","FmsPuSent","FmsExamOn","FmsExamOff","FmsDoConfirm","FmsDoSent","FmsDelAddr","FmsDelSched","FmsDelAct","FmsEmptyRet","FmsPod","FmsBill","FmsBillPacket","FmsDdp","BlEventLog","eventName","eventAtUtc","chechboxIconStyle","chechboxIconStyle2","faCheck","faMinus","updatedBy","updatedAt","csr","oblRcvd","rlsdBy","ror","oblBy","isRlsDate","customsStatus","isCClear","cClearDate","cClearBy","isCHold","cHoldDate","cHoldBy","isClear","cReleaseDate","cReleaseBy","fdaHold","fdaHoldDate","fdaHoldBy","fdaRls","fdaRlsDate","fdaRlsBy","issuedBy","isRcvDoc","rcvDocDate","rcvDocDateBy","isRcvCargo","rcvCargoDate","rcvCargoDateBy","isDlvrCarr","dlvrCarrDate","dlvrCarrDateby","fEta","isRls","firstTrackDate","firstTrackBy","firstTrackChk","cfsLocationName","_oihDicFieldMappings","_aihDicFieldMappings","_oehDicFieldMappings","_aehDicFieldMappings","closed","invStat","billStat","crDbStat","custFName","custSName","soNo","projectNo","shipmentId","cargoNo","itPlace","fromOblDate","toOblDate","fromRlsDate","toRlsDate","payStat","payDate","fromPayDate","toPayDate","anFax","fromAnFax","toAnFax","anEmail","fromAnEmail","toAnEmail","doorMove","cClear","cHold","fromCbm","toCbm","fromFEta","toFEta","aName","consigneeName","notifyName","brokerName","subMBl","amsBlNo","fWhse","dvnEdi","fromDvnEdi","toDvnEdi","rlsEdi","fromRlsEdi","toRlsEdi","doorDlvLoc","canShareFile","deliverToName","doorDlvETA","fromDoorDlvETA","toDoorDlvETA","anPrint","fromAnPrint","toAnPrint","lotNo","fromTrackerDate","toTrackerDate","trackerUser","lastTrackedDate","fromLastTrackedDate","toLastTrackedDate","lastTrackedUser","fromANPrintedDate","toANPrintedDate","anPrintedUser","cDocRcvdDate","fromCDocRcvdDate","toCDocRcvdDate","cDocRcvdUser","eDocSentDate","fromEDocSentDate","toEDocSentDate","eDocSentUser","f7501RcvdDate","from7501RcvdDate","to7501RcvdDate","f7501RcvdUser","f3461RcvdDate","from3461RcvdDate","to3461RcvdDate","f3461RcvdUser","inlandNoticeSentDate","fromInlandNoticeSentDate","toInlandNoticeSentDate","inlandNoticeSentUser","puInfoSentDate","fromPUInfoSentDate","toPUInfoSentDate","puInfoSentUser","doReceiptCfrmdDate","fromDoReceiptCfrmdDate","toDoReceiptCfrmdDate","doReceiptCfrmdUser","fromDOSentDate","toDOSentDate","doSentUser","dlvAddrCfrmdDate","fromDlvAddrCfrmdDate","toDlvAddrCfrmdDate","dlvAddrCfrmdUser","dlvSchdDate","fromDlvSchdDate","toDlvSchdDate","dlvSchdUser","actDlvDate","fromActDlvDate","toActDlvDate","actDlvUser","emptyRtnDate","fromEmptyRtnDate","toEmptyRtnDate","emptyRtnUser","podRcvdDate","fromPODRcvdDate","toPODRcvdDate","podRcvdUser","billingCpldDate","fromBillingCpldDate","toBillingCpldDate","billingCpldUser","mailDate","fromMailDate","toMailDate","mailUser","fromConfirmDate","toConfirmDate","fromFdaHoldDate","toFdaHoldDate","fromFdaRlsDate","toFdaRlsDate","fromClearDate","toClearDate","fromCHoldDate","toCHoldDate","fromExamOnDate","toExamOnDate","fromExamOffDate","toExamOffDate","fromDdpDate","toDdpDate","useAmsBlNo","useIsfNo","ltype","expCollection","ExportCollection_Can","showInfo","infoCols","hasCustomTooltip","cb","deps","signalRef","useDeepCompareMemoize","fromBillDate","toBillDate","appPaidDate","fromAppPaidDate","toAppPaidDate","updatedDate","fromUpdatedDate","toUpdatedDate","createdDate","fromCreatedDate","toCreatedDate","vendorRefNo","BillExportCollection","GBillExportCollection","WHBillExportCollection","LookupInputType","LoopupPopup","LookupContainer","LookupField","labelProp","searchMatchOnTab","hasLookupValue","activator","triggerLookupOnTab","showEmptyTable","customContent","noBorder","tableHeight","focusElementAfterSelect","userInputType","noRightBorder","typeQuery","setTypeQuery","oldSelectedValue","setOldSelectedValue","more","lastQuery","setLastQuery","_setSelectedIndex","showPopup","_setShowPopup","handleSelect","additionalSearchInput","selectedIndexRef","openLookupSubscription","setShowPopup","typeahead","newTypeQuery","handleCancel","executeQuery","onEnterWithActivator","queryResult","handleEscape","doSearchMatchOnTab","exactMatch","executeLookupOnTab","customTable","isMultipleHeader","referenceElementValue","tableProps","RollBackPrevValue","RollBackPrevValueAllowEmpty","ClearBlankValue","handleFilterMore","handleOk","addBlank","base","MoveType","credit","agentName","sMawbNo","feta","fromFETA","toFETA","broker","incoTerms","finalWhse","releaseBy","releaseDate","fromReleaseDate","toReleaseDate","poNumber","hawbRcvdDate","fromHawbRcvdDate","toHawbRcvdDate","hawbRcvdUser","plRcvdDate","fromPLRcvdDate","toPLRcvdDate","plRcvdUser","etaCfrmDate","fromETACfrmDate","toETACfrmDate","etaCfrmUser","amsCfrmDate","fromAMSCfrmDate","toAMSCfrmDate","amsCfrmUser","_7501RcvdDate","from_7501RcvdDate","to_7501RcvdDate","_7501RcvdUser","_3461RcvdDate","from_3461RcvdDate","to_3461RcvdDate","_3461RcvdUser","diSchdDate","fromDISchdDate","toDISchdDate","diSchdUser","actDeliveryDate","fromActDeliveryDate","toActDeliveryDate","actDeliveryUser","billingCmpIdDate","fromBillingCmpIdDate","toBillingCmpIdDate","billingCmpIdUser","issuer","gKgs","fromGKgs","toGkgs","smanID","anSent","atmeSent","fromanSentDate","toanSentDate","fromentryDocDate","toentryDocDate","fromdelActDate","todelActDate","fromemptyRetDate","toemptyRetDate","releaseDateForMilestoneAihList","fromReleaseDateForMilestoneAihList","toReleaseDateForMilestoneAihList","Home","lazy","BillView","InvoiceView","CrdbView","CustomerPaymentView","AgentPaymentView","BillPaymentView","CCPaymentView","GeneralInvoiceView","GeneralBillView","DepositCheckClearView","CreditCardClearView","BankReconView","BankTransferView","CheckClearWithExcelView","PrepaidExpenseAdjustmentView","PayrollSummaryView","Payroll2View","DepreciationAdjustmentView","AmortizationAdjustmentView","BadDebtProcessingView","SalesTaxReturnView","JournalView","PeriodInvoiceView","PeriodCrdbView","PaymentPrepView","BusinessIntelligenceView","DailyAccountingSummaryView","AgingReportView","IncomeStatementView","TrialBalanceView","BalanceSheetView","GeneralLedgerView","AccountLedgerByEntityView","AccountBalanceView","DeferredReportView","UndoDepositCheckClearView","CancelCreditCardClearView","routes","path","component","hblBlDetailsHblBody","hblBlDetailsDimensions","loadPlanDetails","oeQuotationBillingInfo","otQuotationBillingInfo","oeMblContainerDetails","oeMblContainerDetailsNoFlexiTank","containerLoadPlanTable","commercialInvoiceTable","packingListTable","findScreenNames","jobMenuSection","currentScreenUrl","CleanupMap","getLastOpenedRegularScreenOnWholeStack","showGlobalDialog","cleanupUrl","urlParam","cleanupFastStorage","foundKeys","foundKey","removeSingleJobMenu","urlOperation","operationToApplyChangesFor","operationJobMenu","operationScreenStack","urlsToSkip","backScreenOverride","storeScreenStack","backScreenUrl","backScreenMetadata","backScreenAfterScreenUrl","found","forEachRight","currentScreenOnStack","lastScreenQuery","canGoBackSingle","goBackSingle","showSingleDependantScreenMessage","hasSingleOpenedScreenStartingWithUrl","queryUrl","hasSingleOpenedScreenStartingWithUrlWithoutMe","ignoreUrl","hasSingleOpenedScreenInAnyOperationStartingWithUrl","hasSingleOpenedScreenInAnyOperationStartingWithUrlWithoutMe","getSingleOpenedScreenInAnyOperationStartingWithUrl","filterOper","oper","lastScreen","oepnRequestUrl","queryUrls","parentOp","op","requestEditView","opendeUrls","getOpenedScreenInAnyOperationContainWithUrl","replaceSingleCurrentJobItemWith","oldLabel","locationState","replaceSingleCurrentJobItemLabelWith","addSingleCleanupFunction","cleanupFnc","isFirstRun","cleanupAll","countCheck","useSideMenuHeightMonitor","onScreenResize","sideMenuNode","observerConfig","adjustTableHeight","infoAreaVisibleRef","scrollPos","captureTableScrollPosition","infoAreaWasOpened","restoreTableScrollPosition","tbRect","tobBars","IfmsSideMenuWidthNumber","IfmsSideMenuWidth","ArrowIconSvgDown","findOpendSideMenuIndexes","elements","uniqueClassLists","getMenuItemKey","menuName","hasSideMenu","StorageMap","injectSubMenu","containerId","submenuKey","submenu","opendOperationData","targetIndex","extendedSubMenuClassName","noClickEventSideMenuClassName","selectedSubMenuClassName","subMenuItemKey","operationMode","mapKeys","submenuDom","emptyMenu","hideMenu","submenuItems","sx","directPrintIconWhite","directPrintIcon","previewPrintIconWhite","previewPrintIcon","disableDirectPrintIcon","disablePreviewPrintIcon","onclick","handleClickSubMenu","insertAdjacentElement","topLineElement","operationInProgress","opened","injectMenu","changeTitleInAnMenu","ediForStGeorgeWarehouse","customLeftOffset","sideMenuClassName","emptySideMenuClassName","menuItemKey","menuItemName","getMenuItemName","disableOpertaionView","alreadyMenuOpend","menuDom","subMenuLKey","subMenuDom","topLineEle","noSetBackgoundColor","popupContainerId","existingPopup","popupDivElement","parent","IfmsSideMenu","noTitle","injectMenuId","hasJob","hasDownload","hasReport","hasPreReport","hasOperationReport","hasMoreMenu","appcontext","renderingMenuItems","setupMenu","processMouseMove","elementsFromPoint","reportPopup","links","flatMap","displayOperation","menuContainerStyle","BatchPrintImpl","sendTo","rangeType","readBatchPrintList","BatchPrintInitializedImpl","batchPrint","setBatchPrint","getArgs","cusID","cusName","cusContact","cusFax","cusEmail","cusFullName","isPreview","errorMsg2","selectList","useFax","tTitle","showPastDueDateOnInvoice","invoiceNoHeaderLabel","snameHeaderLabel","sendButtonLabel","send","BatchPrintDetails","groupOrder","accountNo","fDebit","fromFDebit","toFDebit","fCredit","fromFCredit","toFCredit","exRate","fromExRate","toExRate","seqOrder","debit","fromDebit","toDebit","fromCredit","toCredit","updateDate","fromUpdateDate","toUpdateDate","updateBy","lineColor","setIsTabPrevious","handleKeyDown","setCaretPositionToEnd","OmContainer","sealNo3","gLbs","netKgs","pickupLoc","inDateLoc","outDateLoc","emptyReturnLoc","ordLoc","loadDateLoc","atdLoc","ataLoc","unloadDateLoc","cfsDateLoc","rAtdLoc","rAtaLoc","puDateLoc","dcDateLoc","carrierRlsLoc","bookingLoc","customRlsLoc","amsLinkUserID","amsLinkDate","pimsLinkUserId","pimsLinkDate","order","isFlexiTank","tankSize","fitBy","fitByDate","loadAmount","puNo","ftLoadDate","ftLoadDay","ftLoadTime","gallon","capacity","serialNo","flexiAction","hasHblLink","oimBlId","dicFieldMappings4Import","agentRefNo","acctCarrier","eBl","pnlDate","fromPnlDate","toPnlDate","cyLocation","svccNo","oFrt","oFrtCfrm","sMblNo","disCharge","sname","oFrtHold","emptyRtnName","AcctHistoryType","isSetup","hqBranch","branchDetails","actualValue","ClearableSearch","textRef","searchButton","handleSearch","queryString","POLCode","queryTerm","getProps","filterText","HistoryViewImpl","setFromDate","setToDate","HistoryViewInitializedImpl","historyView","historyViewRef","setHistoryView","billingTableRef","getNoLabel","getDateLabel","getAcctTypeByJobName","InvoHistory","ApHistory","CrDbHistory","sRInvoID","vSubject","invoNo","billingDetailTableSettings","billingDetailTableOptions","revisionTableOptions","isRecogField","billName","dateTimePlaceHolder","HistoryViewDetails","authService","AuthService","loginSlice","loginUser","logoutUser","removeUser","changeUserIconUrl","iconUrl","userIcon","reset","hCntrId","cargo","pod","railDepartureDate","railArrivalDate","carrierRlsDate","customsRlsDate","pickupAvailableDate","billingsDate","fromEtaDate","toEtaDate","fromLfdDate","toLfdDate","fromVesselArrivalDate","toVesselArrivalDate","fromUnloadVesselDate","toUnloadVesselDate","fromRailDepartureDate","toRailDepartureDate","fromRailArrivalDate","toRailArrivalDate","fromANSentDate","toANSentDate","fromCarrierRlsDate","toCarrierRlsDate","fromCustomsRlsDate","toCustomsRlsDate","fromPickupAvailableDate","toPickupAvailableDate","fromPickupDate","toPickupDate","fromEmptyCntrRtnDate","toEmptyCntrRtnDate","fromBillingsDate","toBillingsDate","globalOkDialogSlice","inform","airId","estWeight","estWeightUnit","lastMSDesc","msBooking","msPickup","msOriginReceipt","msLoadedOnVessel","msShipDeparture","msCarrierReleased","msCustomsReleased","msShipArrival","msUpLoadedFromVessel","msDeliveryCFS","msRailDeparture","msRailArrival","msAvailablePickup","msPickupDelivery","msDeliveryCustomer","msEmptyCntrRtn","locBooking","locContainerDispatched","locInGate","locLoadedOnVessel","locVesselDeparture","locCarrierReleased","locCustomsReleased","locVesselArrival","locUpLoadedFromVessel","locDeliveryCFS","locRailDeparture","locRailArrival","locAvailablePickup","locOutGate","locDeliveryCustomer","locEmptyCntrRtn","shipQty","GlNoLookupField","companyItems","glType","subType","searchStartWith","others","glSubGroup","glGroup","filterName","carrierSName","pLofRec","lclfcl","bookCfrm","fromBookCfrm","toBookFrom","sedSent","fromSedSent","toSedSent","dlvrToCarr","fromDlvrToCarr","toDlvrToCarr","smanId","shipmentID","expRef","bookRemark","docRcptNo","acctCloseDate","pCloseDate","autoOpCloseBy","opCloseBy","OeMblView","OeHblView","OeQuotationView","OeLoadPlanView","OeBookingView","OeMblBillingsView","OeHblBillingsView","AesFilingView","CorrectionNoticeView","PickupDeliveryView","BatchPrintView","ContainerLoadPlanView","AgentDocumentPackageView","FolderLabelView","CargoManifestView","SendBlView","PrintHblView","BankDraftView","CertificateOfOriginView","DocumentPackageView","CommercialInvoiceView","ShippingAdviceView","AirLabelView","MemoListView","WhReceiptView","WhReceivingView","WhShippingView","WhStorageInvoiceView","WhCompanyView","WhItemView","WhLocView","ReceiptLabelView","ReceivedCargoStatusView","StraightBlView","QtyReportView","fsGetShortNameByChgType","vChgType","updateStatusInvoData","oldId","cmdType","CmdType","Credit","Void","CancelCredit","CancelVoid","matchAdvanceInPayment","newDate","hTbName","hFieldName","statusValue","viewName","checkDutyEntitiesFromDetail","indexExclude","dutyCustomer","dutyAgent","chgType","updateStatusOP","jobIds","invoiced","acctUpdateStatusOP","BadBankName","localBank","currencyBank","defaultBank","bankNameWithCur","toColumnName","exportDomTableIntoExcel","domId","listview","wb","XLSX","book_new","Props","Title","Subject","Author","CreatedDate","SheetNames","wsObjects","columnWidths","rowHeaderColumns","firstRow","excelColType","getExportRenderers","headerName","ri","rowObj","headerKey","firstElemet","ws","json_to_sheet","skipHeader","wpx","Sheets","fileTitle","compression","exportCodeDataIntoExcel","workBook","sheet_to_json","defval","ExcelCCReader","bankDate","bankAmount","ExcelWHPReader","billCode","billDesc","isVat","whType","whRefID","ExcelJournalReader","desc","readClearExcel","heading","dateformat","neg","readJournalExcel","readPeriodInvoiceExcel","taxReturnWithXLExport","addData","aoa_to_sheet","paymentToolWithXLExport","headerInfo","headerName1","headerName2","columnHorizontal","alignment","firstColHeader","secondColHeader","font","vertical","depositSlipWithXLExport","salesCostBatchRecogWithXLExport","closedColumnIndex","rIndex","firstElement","otherFilterOrdersStorageKey","otherStorageExternalSetKey","otherStorageExternalSetSourceKey","todayBefore3Month","dataStorageKey","expressSearchCol","filterOrdersObj","initialFilter","HblInven","inventId","showMemo","listScreenSettingsSlice","toggleMemo","resetListScreenSettings","receivedDate","fromReceivedDate","toReceivedDate","truckBLNo","hazGoods","maker","sName1","receivedBy","shipped","orderDate","palletRemark","fromReceiveDate","toReceiveDate","fromOrderDate","toOrderDate","shipToNo","totalQty","fromShipDate","toShipDate","fromTotalQty","toTotalQty","truckingCompanyName","puCargoLocationName","portCutOff","fromPortCutOff","toPortCutOff","railCutOff","fromRailCutOff","toRailCutOff","exPref","createDate","fromCreateDate","toCreateDate","usLCode","unLCode","usDCode","unDCode","bookEtd","bookEta","carrName","vesselCarrier","vCarrName","bookDate","fromBookDate","toBookDate","bookedBy","conTypeAndQty","fromBookEtd","toBookEtd","fromBookEta","toBookEta","puEmptyLoc","puEmptyLocId","rcveWhseId","rcveWhse","custContact","actionUser","periodFromDate","fromPeriodFromDate","ToPeriodFromDate","periodToDate","fromPeriodToDate","ToPeriodToDate","fromRecogDate","ToRecogDate","recogCount","fromRecogCount","ToRecogCount","estMargin","FromEstMargin","ToEstMargin","CheckLookup","labelName","sqlIndex","TextValue","Value","IntValue","ApHd","dutyCustomerId","dutyCustomerName","dutyAgentName","currencyDecimal","billAmt","advRecAmt","advRecDisplayAmt","displayPaidAmt","balanceDue","lastPaidChkNo","billReceived","prepaidExStatus","billMemo","tVatAmt","tlAmount","payGlNo","descript","dutyAmt","dutyLAmt","invCur3","invCur4","invCur1Decimal","invCur2Decimal","invCur3Decimal","invCur4Decimal","isCredit","hold","holdUser","holdReason","remarksYN","remarkUser","approved","approvedUser","isHybrid","originDepoId","originDepoDetailId","originAmt","orgPaidAmt","orgAdvRecAmt","creditBillingCode","isSalesTaxReturn","voidBy","blHdInfo","billDetail","opAccts","invDBCur1","invDBCur2","invDBCur3","invDBCur4","apInfoDetailList","pcurTotal","cur1Total","cur2Total","cur3Total","cur4Total","isLockCur1","isLockCur2","isLockCur3","isLockCur4","displayDraft","isTaxReturn","attentionTo","cannotDraft","lastPaymentId","lastPaymentType","lastPaymentETF","lastPaymentIsAgentPay","hdIsClosed","hdOpType","hdSubType","formType","creditDate","creditBy","enableDutyAgent","enableDutyCustomer","priCurTotal","maxBillNoLength","hdMaxCreditAmt","hdOriginPaidAmt","hdOriginInvAmt","hdOriginId","hdPreOriginId","hdPrePaymentId","usedDutyType","isDutyJob","useDutyItem","tableType","ccPay","creditCardPaidTo","creditCardId","ccPrefix","ccRefNo2","ccAmt","isUserAction","defaultCreditCardId","defaultCCEntity","applyInitDataExcludingNull","ApDetail","OpAcct","dicmap","PrintBillImpl","removePrintBillFromStorage","printBillRef","printOption","PrintBillInitializedImpl","printBill","setPrintBill","payto","CheckReq","defaultBranch","PrintBillDetails","firstEntry","entryDate","fromEntryDate","toEntryDate","smawbNo","cargoMode","customsRlsd","customsHold","fLocationName","grossWeight","fromGrossWeight","toGrossWeight","fromChgWeight","toChgWeight","fromLChgWeight","toLChgWeight","createBy","directBl","blEdi","shipperId","notifyId","blDate","fromBlDate","toBlDate","lGrossWeight","fromLGrossWeight","toLGrossWeight","carrierSpotNo","issuingCarrierName","payableToName","firstTo","to1","to2","hEtd","fromHEtd","toHEtd","lcNo","paidStat","expRefNo","chgKgs","fromChgKgs","toChgKgs","chgLbs","fromChgLbs","toChgLbs","issuingCarrier","pStatus","finalDestination","salesPerson","unit","creditLimit","toCreditLimit","fromCreditLimit","creditHold","bondNo","iataNo","companyRefNo","idType","taxId","fullName","zipCode","localName","localAddress","CreatedAt","fromId","toId","downloaded","pimsId","oAgent","dAgent","cutOff","fromCutOff","toCutOff","AirExportCollection","OIExportCollection","OEExportCollection","importer","paidTo","paidToId","chkPrtID","chkPrtDate","fromTotal","toTotal","fromPaidAmt","toPaidAmt","yourRef","sRefNo","creditTotal","toCreditTotal","fromCreditTotal","debitTotal","toDebitTotal","fromDebitTotal","CrDbExportCollection","WHCrDbExportCollection","disp","lastAction","impName","impNo","tariffNo","isfDate","fromIsfDate","toIsfDate","bondHolder","modifyDate","fromModifyDate","toModifyDate","AeMawbView","AeHawbView","AeQuotationView","AeMawbBillingsView","AeHawbBillingsView","AemPrintMawbView","AemBatchPrintView","AgentDocumentView","PouchAirLabelView","CertificationOriginView","TransferManifestView","SendBLtoPatnerView","DocumentView","AemPrintHawbView","PackageLabelView","PackingListView","AiMawbView","AiHawbView","AiQuotationView","AiMawbBillingsView","AiHawbBillingsView","MblArrivalNoticeView","IRC225View","HblArrivalNoticeView","DeliveryOrderView","ItTeNoticeView","PreliminaryClaimNoticeView","ProofOfDeliveryView","ReleaseOrderTurnoverView","CargoManifestStatusView","OiMblView","OiHblView","OiLoadPlanView","OiMblBillingsView","OiHblBillingsView","DevanningInstructionVIew","MblHoldNoticeView","MasterInvoiceView","ArrivalReleaseNoticeView","HoldNoticeView","SendShipmentStatusView","EmptyContainerReturnGuaranteeView","CancelNoticeView","LienNoticeView","ArrivalNoticeLogView","ShipmentReportView","ReleaseHistoryView","PendingCargoView","InlandTransportationView","LiftingReportView","UsageReportView","ButtonGroup","addSpace","buttonRefs","enterScheduledFor","setEnterScheduledFor","focusNext","focusIndex","focusPrevious","onButtonKeyDown","classNames","airExportVolumeWeight","hawbBlDetailsHawbBody","airExportChargeableItems","airExportFaceRate","airExportHawbFaceRate","hawbAeHblPoBodyLineItems","lastSavedJobSlice","clearLastSavedJobs","setLastSavedJob","apHdId","stbName","stbId","billingCode","amtDesc","lAmount","olAmount","supplyPrice","agtAmount","lAgtAmount","agtExRate","vatGlNo","curAmount","chgTypeDesc","ps","dBranch","entityName","posted","savePosted","iDate","entityTerms","agentTerms","isBillTypePartLock","isBillingCodePartLock","isDescriptionPartLock","isCurrencyPartLock","isRatePartLock","isQtyPartLock","isCurAmtPartLock","isAmountPartLock","isUseVatPartLock","isAgtCurPartLock","isAgtamtPartLock","isAgtNamePartLock","isPSPartLock","isKoreaVatLock","rowBackColor","isLock","isCreditLock","isGiveCreditLock","lock","billCodeInactive","toDeleteRowWhenCredit","additionallyAdded","lAmtDesc","billingCodeView","cleanupRoute","hasMode","parameterIndex","route","applicationRoutePaths","fullUrl","queryIndex","fullUrlWithoutQuery","IfmsAppRoutes","ModeAdd","ModeView","globalYesNoDialogSlice","hideGlobalYesNoDialog","asigned","fromRemindDate","toRemindDate","recNo","recCompanyId","detailId","whereCond","listTitle","curValue","srcEventId","locCode","ReportHyperKey","CompanyListExLookupField","fetchAddress","multiSelectValues","formPara","formPara2","additionalColumns","changeSelected","columnsForFullName","CompanyListEx","getAddressFromCompanyFile","addr","fileSize","fromFileSize","toFileSize","CompanyView","JobListView","ReportViewer2","AgentStatementView","CustomerVendorViews","ImporterBondQueryView","LastTransactionView","CompanyAddressLabelView","CustomerActivityView","InternetTrackingCustomerView","OtherShipmentView","OtherShipmentBillingsView","RateTableListItem","effectETD","fromEffectETD","toEffectETD","expireETD","fromExpireETD","toExpireETD","destination","doorBy","rate1","fromRate1","toRate1","rate2","fromRate2","toRate2","transit","fromTransit","toTransit","tBId","tBName","tBType","initSizes","originalX","originalWidth","originalAfterWidth","resizeIndex","originalFooterWidth","originalHeaderWidth","getHeaderElement","resizeFooter","resizeHeader","headerElement","footerElement","originalRowWidth","getHeaderRowElement","useFixResizer","initColSizes","columnSizes","_setColumnSizes","cRef","setColumnSizes","resize","pageX","newWidth","resizeHeaderRow","resizeTableRows","stopResize","finalWidth","getComputedStyle","getPropertyValue","newColSizes","cbValues","headerRowElement","HeaderFilterStyle","customModalStyles","getFilteredListByNumber","fromValue","toValue","listdata","isEmptyValue","getFilteredListByDate","getFilteredListByTextBegin","textType","lowerTextValue","TextSelectRenderer","filterOpenHeaderIndex","setFilteredHeaderIndex","getFilteredListData","filteredHeaderIndex","filterItemStorage","setFilterItemStorage","cellValues","filterItem","setFilterItem","displayFilterItem","setDisplayFilterItem","clearFilter","newFilterItem","filterCellId","filterCellTexts","filteredValues","newValues","uniqueValues","newFilteredList","filterHeaderIndex","newCellData","typedOriListData","filterCellText","filterCellTextType","filterToDate","filterFromDate","findFromValue","findToValue","filterFromNumber","filterToNumber","getFilterSelectList","updatedCellValues","cellLabel","addFilterCellId","addFilterText","checkAllItem","filterItemIndex","addTexts","updatedStorage","newItem","updatedFilterCellTexts","onFilterItemCheck","TextBeginRenderer","defaultFilterType","_setFilterItemStorage","filterTypeValue","setFilterTypeValue","newText","newTypeValue","findTextValue","findFilterTypeValue","targetValue","setFromValue","setToValue","filterFromText","filterToText","newFromValue","newToValue","NumberRenderer","flexGrow","fromNum","toNum","FilterDetails","childRef","targetList","TableHeaderFilters","modalPosition","closeModal","FilterDetailsRef","filterIconContainer","tempModalLeftPosition","deleteCurrentHeaderIndex","updatedSet","Styles","getCellProps","columnSize","getCellClasses","cellClass","wrap","getHeaderItemDraggableStyle","draggableStyle","isDragging","isDropAnimating","transitionDuration","Resizer","onResizeStart","TableHeader","provided","snapshot","isDraggableOverColumn","colorClass","isOrderByAscending","isOrderByDescending","hoverHeaderIndex","setHoverHeaderIndex","setFilterOpenHeaderIndex","mouseOverFilterIcon","setMouseOverFilterIcon","setHeaderFilterModalPosition","headerSizeClass","tableModeClass","getHeaderProps","data-column-id","hoverheaderindex","onMouseOver","draggableProps","dragHandleProps","innerRef","data-tooltip-position","render","buttonRect","modalTop","scrollY","modalLeft","scrollX","button","openModal","faFilter","Table","showPager","page","maxLinkCount","onPageSelect","additionalRowProps","additionalTableStyle","isVirtualTable","removeFilterItemStorage","dataRow","headerFilterModalPosition","startCellRef","endCellRef","selectingRef","hasMovedRef","clearheaderfilterwhenclick","displayRowIndex","calcDisplayRowIndex","tableStateRef","displayIdx","startIdx","endIndex","endIdx","setDisplayIdx","combinedIndexesSet","columnOverIndex","setColumnOverIndex","fixColumnSizes","onFixResizeStart","newAfterWidth","headerAfterElement","finalAfterWidth","customeHeaderElement","useFlexResizer","flexColumnSizes","onFlexResizeStart","defaultColumn","tableInstance","useTable","useBlockLayout","getTableProps","getTableBodyProps","headerGroups","rows","prepareRow","rowGroupTotalHeight","updateVisibleRows","currentTable","newStartIndex","newEndIndex","currentBody","passive","hr","updateCellSelection","cells","start","end","rowLength","visibleRows","computeFooterCellWidth","actualColumnIndex","computeFooterCellEndIndexRelatedToTable","computeHeaderCellWidth","computeHeaderCellEndIndexRelatedToTable","createRowClass","rowVal","addClass","nextRowOrder","previousRowOrder","PastDueCnt","getListRowClass","closeHeaderFilterModal","headerGroup","tableBodyProps","willChange","appliedHeight","displayRows","boxSizing","onDragEnd","onDragUpdate","newColumnOverIndex","droppableId","direction","droppableProvided","getHeaderGroupProps","draggableId","isDragDisabled","cIndex","columnOrderBy","findHeaderOrderByProps","getRowProps","renderedRowExtras","rowextras","Fragment","notSetTooltip","data-table-hover-col","onMouseUp","role","verticalAlign","endianness","_byteOffset","ArrayBuffer","dataView","Uint8Array","BYTES_PER_ELEMENT","Uint8ClampedArray","Uint16Array","Int16Array","Uint32Array","Int32Array","Float64Array","Blob","webkitURL","setAttribute","revokeObjectURL","BIG_ENDIAN","_dynamicSize","_trimAlloc","_byteLength","_buffer","_dataView","DataView","byteLength","_realloc","req","blen","buf","dst","pos","npos","isFinite","isEof","mapInt32Array","arrayToNative","mapInt16Array","mapInt8Array","mapUint32Array","mapUint16Array","mapUint8Array","mapFloat64Array","mapFloat32Array","Float32Array","memcpy","readInt16Array","readUint32Array","readUint16Array","readFloat64Array","readFloat32Array","writeInt32Array","writeInt32","writeInt16Array","writeInt16","writeInt8Array","writeInt8","writeUint32Array","writeUint32","writeUint16Array","writeUint16","writeUint8Array","writeUint8","writeFloat64Array","writeFloat64","writeFloat32Array","writeFloat32","getInt32","readInt16","getInt16","readInt8","getInt8","readUint32","getUint32","readUint16","getUint16","readUint8","getUint8","readFloat32","getFloat32","readFloat64","getFloat64","setInt32","setInt16","setInt8","setUint32","setUint16","setUint8","setFloat32","setFloat64","dstOffset","srcOffset","dstU8","srcU8","arrayIsLittleEndian","flipArrayEndianness","nativeToEndian","littleEndian","u8","tmp","createStringFromArray","failurePosition","readStruct","structDefinition","struct","readType","writeUCS2String","lengthOverride","encoding","writeString","len","TextEncoder","encode","readCString","writeCString","charset","tp","ta","tap","writeStruct","writeType","module","exports","parentUrlsArrayOverride","initialSelectedInputId","isLoading","tabIndexStorage","operationState","operationTabIndex","tabIndexInStorage","focusedElementIndexInStorage","focusedElementInStorage","setFocusedElementInStorage","setFocusedEleIndexCurPageInStorage","focusedElementIndex","monitorFocusChange","setFocusedElement","removeJobMenu","focusTabable","indexToUpdate","isTableElement","tableEles","handleShiftTabKey","handleTabKey","returnValue","tabableElementLastIndex","shiftTabKeyEvent","setdFocusElement","showDependantScreenMessage","canGoBack","replaceCurrentJobItemWith","replaceCurrentJobItemLabelWith","urlOperationKey","firstRun","CompanyLookupField","customColumn","lookupType","CompanyList","getAllowAgentsList","lookupParams","CompanyListAgntParial","columnsforWHP","columnsForDelivery","getCurrenciesFromAppContext","CurrencyDropdown","addItem","additionalElement","activeLabel","useJobMenuUrlQuery","selectorScreenStack","User","actualAmt","agentAmt","lActAmt","lAgtAmt","actExrate","agtExrate","cDate","crDbDate","dutyEntity","dutyEntityName","blCur1","blCur2","billPaidAmt","headCur","invId","cmdDesc","printDesc","locDesc","actualAmtDesc","billDateDesc","isChgTypeLock","isBillCodeLock","isDescLock","isEntityLock","isCur1Lock","isRateQtyLock","isAgentLock","isCur2Lock","isAgentAmtLock","isPsLock","isVatLock","isSelectLock","dirtyChgType","dirtyBillingCode","dirtyAgent","dirtyAgtCur","dirtyAgtAmount","cloudOnly","billingCodeName","detailSqlInfo","detail","invoiceToId","isBill","opAcctId","opAcctSqlInfo","getLocFromJobName","AeAcct","prepaid","collect","AeAcctRecord","name0","prepaid0","collect0","name1","prepaid1","collect1","name2","prepaid2","collect2","name3","prepaid3","collect3","name4","prepaid4","collect4","hblDicFieldMappings","CopyInvTargetBLLookupField","hblLabel","entityLabel","vesselLabel","CopyInvRefNos","MBLcolumns","HBLcolumns","CopyInvTargetAcctLookupFieldLookupField","dateLabel","noLabel","CopyInvFromAcct","invNo","CopyInvoiceImpl","isFromCopy","removeCopyInvoiceFromStorage","copyInvoiceRef","readBaseInfo","hdTbName","baseInfoDetail","scrJobId","getBLHDInfo","mainRefNo","mainMBLNo","mainHBLNo","fieldLabel","getPopupLabel","mblName","hblName","CopyInvoiceInitializedImpl","copyInvoice","setCopyInvoice","newLink","tempbaseInfo","CopyInvTargetAcctLookupField","otherShipmentContainerDetails","otherShipmentInvenDetails","prepareAiMawbModelForView","formatGrossWeight","formatChargeableWeight","setSize","useLayoutEffect","updateSize","BillInformationViewImpl","getBillInformationViewStorageKeys","getBillInformationData","histMsgArray","histSqlInfo","updateStatueOp","BillInformationViewInitializedImpl","billInformationView","billInformationViewRef","setBillInformationView","approveEnabled","setApproveEnabled","holdEnabled","setHoldEnabled","totalMargin","GenContainer","genMainId","hawbAiHblPoBodyLineItems","AemExtra2","gWeight","strGWeight","kgLb","cWeight","strCWeight","strRate","strTotal","dicFieldMapping","UserStorageKey","LastEmailStorageKey","UserPrintPreview","setUserPrintPreview","localStorage","getUserPrintPreview","printPreviewFromStorage","err","getUser","userFromStorage","rememberLastLoginEmail","isDifferentUserLogin","loginEmail","setUser","removeItem","isAuthenticated","expiresAt","getUserLoggedAtTimestamp","parsedJwt","iat","setInContext","resetForCurrentJob","isHome","JobSwitchingMenuContext","rootNodeId","onRowClick","itemDescription","pcsPerBox","wtPerBox","cftPerBox","dLocation","dLocationId","bill0","bill1","bill2","bill3","wrCount","RateTable","TooltipButton","jobMenuMetadata","resetSearch","getSearchTooltipLabel","tooltipButtonItems","CodeAirportListItem","usCode","cid","PortNameRenderer","CodeRenderer","CustomCodeRenderer","EditableCodeAirportInfoListItem","formatElement","Airports","saveBtn","refContext","savedDataRef","allData","setAllData","hasChanges","setHasChanges","listItemType","focusFirstCell","setFocusFirstCell","getDefaultOrderBy","callByFetchData","AirPort","clearAll","duplicateCell","checkData","duplicateFieldText","isDuplicate","insList","chgList","hasBeenChanged","focusRow","tempRow","checkDuplicatedKeys","applyToLineItem","validData","dataToSave","dataToDelete","saveListItem","cidData","secondSave","firstSave","saveList","faSync","deleteRow","newRow","CodeBLTypeListItem","mblType","OriginalBlTypes","newDataSearch","BLType","apiResultforAll","rowNumber","containerType","relatedType","isoCode","isoName","containerGrp","inactiveDate","inactiveBy","CodeContainerTypeListItem","isoType","containerGroup","LengthOptions","HeightOptions","GroupOptions","TypeOptions","RowSpacer","calculateIsoSizeAndType","ContainerTypeDetails","readonly","ContainerTypeComponent","cancelOperation","onRowSelect","_setContainerType","removeContainerTypeFromStorage","containerTypeRef","setContainerType","skipDirty","objContainer","CntrCheckData","chkdupContainer","executeAsyncFunc","setContainerTypeDetail","newCodeModel","CodeMoveTypeListItem","inactiveAlt","MoveTypeRenderer","DescriptionRenderer","MoveTypes","CodeScheduleDKListItem","cyName","cfsName","SdpDetails","sdp","CyLocationLookupField","ScheduleDkPort","setSdp","_setSdp","removeSdpFromStorage","OceanPort","fetchedTableData","filterNode","checkupDuplicateFieldValueIsDuplicate","comLks","checkCompanyLookupField","tempErrMsg","CodeVesselListItem","lloydsCode","groupName","EditableVesselName","tested","VesselNameRenderer","CountryRenderer","VesselFlagRenderer","LloydsRenderer","GroupRenderer","VesselNameComponent","Vessel","newrow","CodeOtherOPCategoryListItem","PrefixRenderer","NoRenderer","OtherShipmentTypes","CodeExportInfoListItem","EditableCodeExportInfoListItem","ExportInfos","CodeExportLicListItem","LicenseInfos","CodeScheduleBListItem","sdescription","unit1","unit2","Unit1Renderer","Unit2Renderer","Scheduleb","ScheduleB","BuyingRateDetail","buyingRate","BuyingRate","_setBuyingRate","removeBuyingRateFromStorage","setBuyingRate","searchTemp","tbid","objScac","setBuyingRateDetail","CodeAccountListItem","accountCode","subGroup1","subGroup2","iocalDesc","isDefault","CodeGlNo","glNo0","glNo1","glNo2","glNo3","glNo4","glNo5","glTypeText","glGroupText","glSubGroupText","glSubGroup3Text","glDescription","frontGlDesc","localDesc","frontLocalDesc","cashFlowType","cashFlowGroup","otherGlDesc","otherFrontGlDesc","otherLocalDesc","otherFrontLocalDesc","otherRemark","otherId","useOnBillPay","useOnCustPay","billPayShowOption","custPayShowOption","displayDesc","displayLocalDesc","otherdisplayDesc","otherdisplayLocalDesc","existingCode","otherExistingCode","otehrGlno","RowSpacer_30","RowSpacer_40","RowSpacer_60","Groups","forFront","SubGroups1","SubGroups2","AccountCodeInitializedImpl","getFrontDesc","checkSuntek","getSubGroup1Items","extraCode","getSubGroup2Items","setFrontDescription","frontDesc","setExistingCode","costCode","onlySuntekField","redioChanged","otherSalesCostView","isSalesDetail","glTypeKey","glGroupKey","glSubGroupKey","setLocalKey","setAccountCodeText","AccountCodeDetails","accountCodeT","ifmsSettingsSave","ifmsSettingsCancel","_setAccountCode","accountCodeRef","setAccountCode","saveAccountCode","isSuspenseCode","isAssetOrLiabilityCode","billPayOptionValue","custPayOptionValue","checkNonExistAcctCode","checkApiResult","userDesc","isInitialize","splitDesc","AccountCode","selectAccountCodeForView","removeAccountCodeFromStorage","setAccountCodeDetail","readAccountCode","otherFrontDesc","accountCodeTableOptions","CodeAccountSubListItem","desc1","AccountSubCodeRenderer","AccountSubCode","setReadyForEdit","newIdRef","getNextReferenceId","SubGLCode","deleteData","accountSubCodeTableOptions","newAllData","isCancel","CodeBillingListItem","salesGLNo","salesGLNoDesc","costGLNo","costGLNoDesc","billingCodeIndex","NCodeCharge","codeName","oi","oo","ai","ao","wh","oiForView","ooForView","aiForView","aoForView","whForView","otForView","sales1","cost1","chgType1","sales2","cost2","chgType2","sales3","cost3","chgType3","sales4","cost4","chgType4","sales5","cost5","chgType5","sales6","cost6","chgType6","inActive","jobNumber","useSuntek","isUseInInvoice","isUseInBill","isUseInWithhold","isUseInCorporate","sales1Name","sales3Name","sales5Name","sales6Name","cost1Name","cost3Name","cost5Name","cost6Name","billingCodeSub","validCost1","validCost3","validCost5","validCost6","validSales1","validSales3","validSales5","validSales6","isOperation","billingCodeOthers","salesCostList","SalesCostCode","opTypeLabel","sCode","sCodeName","cCode","cCodeName","NCodeChargeOthers","changedMainprop","RowSpacer2","salesCodeRenderer","setCostSalesCode","BillingCodeDetails","showAccountCode","setShowAccountCode","canBedel","allBillingCode","selectCode","copyModel","typeArray","checkOperation","groupedByOp","checkIsAll","curRowData","resetCode","uncheckOP","chkBCodeDelete","apiResultCheck","newAccountCode","selectBillingCodeForView","_setBillingCode","removeBillingCodeFromStorage","billingCodeRef","FmsGlobal","setBillingCode","setBillingCodeDetail","sepIndex","errors","chkBCodeDup","getSQLFromList","AgentAPGLNo","AgentGLNo","saveBillingCode","ctrackableAdd","addItems","CodeANTitleListItem","antitle","antitle1","antitle1Alt","antitle2","antitle2Alt","AnTitleRenderer","AnTitles","cellValueChanged","Checkbox","CodeCommodityListItem","CommodityCodes","CodeCommodity","Commodity","CodeCurrencyListItem","fromDecimal","toDecimal","bankinfo","localSymbol","cid2","EditableCodeCurrencyInfoListItem","symbol","DecimalRenderer","SymbolRenderer","LocalSymbolRenderer","CurrencyCodes","validCurrencyData","errorMsg1","currencyTableOptions","nonSelectable","data-nocellvalidate","CodeExchangeRateListItem","exchageDate","fromExchageDate","toExchageDate","fromRate","toRate","EditableDateRenderer","CurRenderer","RateRenderer","ExchangeRateComponent","ExchangeRate","loadCurrencies","additionalEmptyValuesAndProperties","OtherCompareProperties","CodeCountryListItem","countryName","EditableCodeCountryInfoListItem","IsoCodeRenderer","CountryNameRenderer","UsCodeRenderer","CountryComponent","Country","CodeStateListItem","stateName","StateRenderer","EditableCodeStateInfoListItem","StateComponent","CodeUNLocationListItem","unCode","unPortName","unCountry","CodeOceanUnPort","unCodeSub","unCountryName","unCityName","subDiv","UnLocDetails","unLoc","IsoCountryDropDown","UnCodeRenderer","UnPortNameRenderer","UnCountryRenderer","UnLocationCode","selectUnLocForView","unLocationCode","_setUnLocationCode","removeUnLocationCodeFromStorage","unLocationCodeRef","setUnLocationCode","UNLocation","setUnLocDetail","detailData","unl","selectUnPort","insresult","newList","editItem","insIndex","CodeEDI315ListItem","equipment","ediOrder","toEdiOrder","fromEdiOrder","EventDescriptionRenderer","StatusRenderer","EquipRenderer","OrderRenderer","Edi315Component","EDI310Code","MemoTitleComponent","CodesFactory","OriginalBlType","ContainerType","VesselName","Airline","Airport","OtherShipmentType","LicenseInfo","Carrier","AnTitle","CommodityCode","CurrencyCode","Edi315","InvalidOperation","NotFound","DutyPendingsView","VolumeReportView","VendorCostView","ExpenseView","OperationPerformanceView","BranchPerformanceView","ProfitAndVolumeSummaryView","commonRoutes","memoListRoutes","referenceFilesRoutes","utilitiesRoutes","setupRoutes","accountingRoutes","airExportRoutes","airImportRoutes","oceanExportRoutes","oceanImportRoutes","otherShipmentRoutes","warehousingRoutes","opReportRoutes","homeRoutes","exact","AiMbl","manifestNo","fLocation","departureCode","departureName","etdTime","etaTime","agentCreditHold","completeBill","completeCrdb","firstPortETA","firstPortETATime","toAgent","manifestfrom","directBL","profitShare","line","agent2","agent3","msManId","mblCustomer","mblCustomerName","agentName2","agentName3","blVendor","blVendorId","dCodeName","fCodeName","agentPimsId","aaid","cfsAddress","cfsContact","amsLinkUserId","confirmedBy","isCustomsRls","customsRlsBy","isCustomsHold","customsHoldBy","mblCustomer2","mblCustomer2Name","customsRlsLoc","delvLoc","deliveryBy","avail","availLoc","bTel","bFax","bContact","bEmail","finalDest2","fEta2","amsblNo","opeartor","itDate","mark","multinameId","iMemo","hPkgs","hGross","hlGross","hChg","hlChg","statusInvo","statusBill","statusCrDb","hblList","invoiceBill","readonlyCrdbLineItems","relatedCrdbDefinitions","newEvents","toggledEvents","carrierChanged","lockAgent1","allowedStatuses","h","fileLockEnableProps","messageBase","AeMbl","modelName","by1","by2","iataCode","carVal","cusVal","bCurr","iataCurr","etdDate","etaDate","blTypeCheck","ppCc","bKl","iataKl","kl","iAmount","bRate","bAmount","iataRate","iataAmount","handInfo","accountInfo","otherInfo","pWtChg","cWtChg","pValChg","cValChg","pTaxChg","cTaxChg","pAgtChg","cAgtChg","pCarChg","cCarChg","pTotal","cTotal","rateClass","cutOffTime","completeCrDb","mSmanId","payableTo","sAddr","cAddr","nAddr","sci","chkEdit","etd1","etd2","dimension","notifyPartyName","agent2Name","agent3Name","descList","invList","acctList","abbr","firstToName","isDomestic","labelRemark","AEFscRate","AESscRate","AEFscMin","AESscMin","byFSCGrossWT","bySSCGrossWT","AEFscAmount","AESscAmount","showCharged","showCharged0","showCharged1","showOther","showOther0","showOther1","showOtherAmt","showOtherAmt0","showOtherAmt1","showToBy","showToBy0","showToBy1","aeAcctData","OiMbl","steamShip","steamShipName","cyLocationName","emptyRtn","unlCode","uslCode","undCode","usdCode","unfCode","usfCode","finalDestName","ebl","manifestFrom","itCarrier","itClass","showAgent","devanRemark","cyAddress","cyContact","markPkg","markGross","markMeasure","rcvCrDbBy","oblDateBy","arrivedCFSDate","devanDate","OeMbl","agentCHold","rstationName","brokerage","cutoffDate","codeDesc","coLoad","msManID","forwardAgent","forwardAgentName","mxtnNo","domesticInfo","hblNoCnt","markOnboard","fName","exrate1","exrate2","sentAgentEdi","statusInfo","scac","rrid","truckCom","truckComName","cBookDate","sedCutoff","emptyPuLocId","emptyPuLoc","sendDocPkg","fileLockMessage","salespersonId","internalMemo","oldVer_Shipper","oldVer_Consignee","oldVer_Location","oldVer_ContainerInfo","multiNameID","invenList","volCM","alignRightText","redTextBox","stroke","strokeWidth","strokeMiterlimit","SvgConfigure04","enableBackground","xmlSpace","SvgConfigure04Green","Screen","ScreenTitleBar","initializeColumnsDialog","rightBeforeConfigureButton","rightAfterConfigureButton","beforePager","beforeRefreshButton","commandsAfterMemoLogBtn","refresh","resizeTitleLabel","ifmsListScreenRightStyle","Children","useListHeightMonitor","appContentNode","attributeFilter","AllowedOpTypes","getOperationNameFromOpType","ListJobNames","sortListData","columnSettings","sorted","sortCol","getColumnDataType","rightString","JobListViewImpl","getSavedEntity","editedObj","useGetEditedId","getListViewTitle","listDomId","getTableDomIdSuffix","listDomWrapperId","getTableSettings","getCustomFilterRenderers","setEscScheduled","parentOpName","noOperationSuffixMenu","deleteHideLogHistory","clearListData","deleteListOrderBy","externalReloadRequest","setExternalReloadRequest","headerClickRef","rightClickContext","setRightClickContext","menuPositionRef","isRightContextVisibleRef","contextContainerRef","listViewRef","handleClickOutsideContextMenu","calculateMenuPosition","menuHeight","windowWidth","windowHeight","hasRightClickContext","prev","RightClickContextMenu","portalRoot","boxShadow","renderRightClickContext","offsetHeight","useContextMenu","setListDataWhenCellClick","currentCount","dataKeySufix","removeDataFromStorage","selectedId","_setSelectedId","removeSelectedIdFromStorage","selectedIdRef","onRowSelected","applyIdSelectionAlgorithm","setSelectedId","getSelectedIndex","useListData","hideLogHistoryModelKey","listOrderBy","setListOrderBy","escScheduled","clickedCellRef","setViewPopupRow","isMouseOverRef","reloadSubscription","jobListViewContext","hasMemo","insertIfNotExist","hasViewPopup","loadDataWithCurrentFilterSettings","editedEntity","dataFetchResult","closeScreen","getOrderBy","viewParams","getViewUrlFor","openParams","getOpenUrlFor","exportIntoExcel","jobname","refreshUpdatedEntity","isEmptyFilter","getRowRenderers","newOrder","sortResult","additionalCommands","renderAdditionalCommands","serachMargin","transactionImpactBtn","resizetitleLabel","ToggleButton","isHovered","renderBeforeConfigureButton","excelIconGreen","excelIcon","renderCommands","renderExtras","renderRowExtras","useLocation","useParams","toggleOffDisabled","toggleOn_blue","HblPoNo","skuNo","htsCode","styleNo","cKgs","cLbs","shipUnit","coo","uPrice","pimsPoHdLinkId","pimsPoDetLinkId","cntrLinkId","orderQty","orderUnit","oihblId","aihblid","dicFieldMappings2","dicFieldMappings3","dicFieldMappings4","clearable","hideClear","selectedItem","inputIdRef","hide","preselect","AllTypes","1","2","3","4","5","6","7","27","11","12","13","14","15","16","17","37","8","10","18","20","40","AllTypesShort","OhContainer","mCntId","pimsLinkUserID","mPkgs","mUnit","agentShow","oihBlId","oimCntID","dicFieldMappings1","CompanyListNotAgnt","saveAcctHistory","actionType","CountryIsoCodeDropDown","checkPoInfoLineItems","containerInfoLineItems","poInfoLineItems","coItems","requiredAmount","notAppliedAmount","poElements","poItems","po","coIndex","totalsQty","curQty","calculateBodyContent","isIntnl","packagesUnit","punit","numberOfPackages","tempMarkPkg","containerSummary","measurment","isBlue","isPrimary","accept","handleChangeUpload","ContainerTypeDropDown","isShort","CntrType","tempWidth","FlexiTank","getWidth","CodeSCACListItem","customerCode","oiAcctCom","oiAcctComName","ooAcctCom","ooAcctComName","CarrierDetails","freightVendorOi","freightVendorOe","Carriers","_setCarrier","removeCarrierFromStorage","setCarrier","setCarrierCodeDetail","abbr2","abbr3","nextBLno","endBLno","aefscRate","aesscRate","aefscMin","aesscMin","tsaRate","tsaMin","fscgWt","sscgWt","tsagWt","countryUnCode","CodeAirlineListItem","nextblNo","endblNo","fromAefscRate","toAefscRate","fromAesscRate","toAesscRate","fromAefscMin","toAefscMin","fromAesscMin","toAesscMin","freightVendorName","AirlineDetails","airline","countries","freightVendor","fscRate","fscRateMin","fscRateGross","sscRate","sscRateMin","sscRateGross","tsaScreenChargeRate","tsaScreenChargeRateMin","tsaScreenChargeRateGross","Airlines","_setAirline","removeAirlineFromStorage","setAirline","AirLineEx","objAirline","setAirlineDetail","objAir","oceanImportLoadPlanDetailsList","prepareOeMblForView","FlexTankImpl","removeFlexTankFromStorage","fsClearFlexiTankData","saveFunc","para","FlexTankInitializedImpl","flexTank","isSeparate","setFlexTank","createInitialFlexiTankFrom","editableFlexTank","setEditableFlexTank","eft","processSave","netWeight","FlexTankDetails","IcoCountryDropDown","initializedFromOperation","useMemoListOperationStorage","hasViewIndex","viewIndex","getViewIndex","setViewIndex","deleteViewIndex","activeDutyTrackingSlice","loadScreen","parentIndex","activeScreens","hasDutyAgentInLineItems","hasDutyCustomerInLineItems","dutyAgentHolders","dutyCustomerHolders","dutyAgentInParent","dutyCustomerInParent","screenIndex","unloadScreen","isOtherShipment","pimsCntr","prevCntrId","prevCarrierRlsDate","MawbAirLineStatus","findProp1","findProp2","MawbMilestone","MawbMilestoneImpl","setMawb","removeMawb","mawbRef","RefreshDetailView","loadedMawb","UpdateLogMawbMilestone","CollectMawbEvents","MawbMilestoneInitializedImpl","HblMilestone","isEdit","HblBlStatusImpl","hasWhereFieldOfPropertyWithValue","UpdateLogHblMilestone","trackingLogHblMilestone","HblBlStatusInitializedImpl","setHbl","getStorageKey","HblMilestoneImpl","HblMilestoneInitializedImpl","HawbMilestoneImpl","UpdateLogHawbMilestone","HawbMilestoneInitializedImpl","Reporters","CntrTypes","markValidationFieldsAsDirty","dirtyElements","dirtyElementsForProperty","focusApplied","formatValidationErrors","errorHtml","apiCallResolver","apiCall","silent","loadingMsg","responseStatus","errorTitle","errorText","errorPayload","errorType","createIfmsApi","apiClient","axios","apiUrl","setAccessToken","defaults","common","Authorization","login","urlPrefix","post","errorMessage","autologin","info","authenticate","parms","authenticateLogoff","getSystemSettings","getNextItNo","put","checkDupData","checkAgentRefData","checkCancel","getAccountCodeInfo","getSourceJobInfo","getMblData","readCont","readContainer","getAdjBalance","getBillingTplInfoList","getAutoBillingInfoList","saveBillInformationData","getLoadBilling","isCancelGiveCredit","invDate","taxReturnCheck","saveOrUpdateBill","getBill","apiRoute","creditBill","voidBill","saveOrUpdateInvoice","getInvoice","creditInvoice","voidInvoice","saveOrUpdateCrdb","saveRCrDbData","getCrdb","agentCur","voidCrdb","cmdCopyBodyQuery1","cmdCopyBodyQuery2","canOceanImportMblContainerBeDeleted","getOceanImportBillNoExists","isCancelReceiveCredit","lookupOiQuotations","sDate","sLoginID","byAcct","bOp","bUseTrans","com2Id","histType","DInvoHistory","DApHistory","DCrDbHistory","getPaymentHistoryForAcct","getDeleteHistory","getDeletePaymentHistory","getTaskReminder","showAll","limit","lookupIndex","searchText","formPara3","maxRecords","getSettingsSubscriberIdList","changeSettingsSubscriberId","getCntrTypes","getReporters","getTestDates","dateTimeParam","sentDate","getProfitResults","getJobSalesCost","getFieldValueQuery","getFieldValueInt","getFieldValueDate","getCompanyNameFromCompanyFile","getAddressFromMyCompany","includeCompanyName","includeAddress","includeTEL","includeFAX","includeURL","extrName","includeTaxID","getContactFromCompanyFile","checkAutoNo","autoNo","kValue","kFName","allowDupInvNo","checkSettingAutoNo","autoType","checkupFYDate","checkupFiscalYear","isOpClose","getCityCountryByPortCode","portCode","sFieldName","getUNCodeInfo","getCountCreditData","existCreditItem","invoiceOkDate","keyFieldName","exceptKeyValue","isUseOperationAgent","blId","lineAgents","dutyEntityExist","dcLine","daLine","readLevel","prevDBValue","CheckCloseDateNew","CheckCloseDate","sId","errMsgType","useToday","getEstFinalizeDate","setRecognizeBLForm","flag","newEta","oldEta","setReminder","getBillingCodeValue","billingDept","billingType","getESupportURL","acmeId","setDataFromCompanyFile","companyFlagCheck","lkComs","getBeginDateFY","getCloseDate","getNextSlipSeqNo","checkAirMblNo","amblNo","carrierId","bIncludeCompanyName","bIncludeContactName","bInclueTEL","bIncludeFAX","bIncludeEmail","bIncludeCountry","bDeliveryAddress","bIncludeTaxID","getCustomerInfo","getInvoiceCount","fieldNames","idFieldName","checkItNo","inBondNo","entryCheckNumber","cparams","oimblId","getJobSalesCostPendingItems","getJobSalesCostSummary","getBicBillingTemplate","templatePrefix","getUsedAgents","readAccountData","depoHd","getRate","bankCur","paymentType","getAccumulatedBalance","originDate","entityId","updatePayment","getPaymentDetail","isCanUseHybrid","setVoidFieldByDepoData","isDeposit","isJournal","invIds","crdbIds","taxRtnIds","payrollIds","ccPayIds","getAutoNo","eNoType","sBranch","sTableID","abinvDetailSelect","saveBillingDetailList","selectAotherTemp","ids","getCargoTypeVolume","selectedYear","getCargoTypeProfit","GetEstProfit5Years","getGrossProfit5Years","getTop15SalesData","getVolumebyCargoTypeYears","loadHouseList","loadBatchHouseList","getMasterArrivalNoticeRemark","readArrivalNoticeInvoiceList","getDicPPCCbyCustomer","custIds","getArrivalNoticeConfirm","saveArrivalNoticePublicMemo","readPickupDeliveryInstructionData","readPickupHistoryList","readMultiDeliveryList","custId","delName","delAddr","readOtherOiHblNoList","readAwbViewData","readAwbViewDataEx","saveAwbViewData","sigShipper","sigCarrier","readTrasferManifestViewData","saveTransferManifestData","cutoff","readWhLabelViewData","readAirLabelData","readArrivalReleaseNoticeDate","readDeliveryOrderShortFormData","readEmptyContainerReturnGuaranteeData","readOemBatchPrintData","readCancelNoticeData","readMemoListData","readPreliminaryClaimNoticeData","readMblArriavalNoticeData","readMblHoldNoticeData","readPackageLabelViewData","readProofOfDeliveryData","readReleaseOrderTurnoverData","saveReleaseOrderTurnoverData","by","readItTeViewData","readStraightBLViewData","readPrintOeHblData","saveOeHblViewData","optTitle","seller","buyer","readDocumentPackageData","readAgnetDocData","readCargoMViewData","readShippingAViewData","readBatchPViewData","readBankDraftData","readBankDraftBLData","readDeliveryOrderCompanyList","priName","priDelAddr","readArrivalNoticeHBLData","getArrivalNoticeLogHistory","getFYPeriodInfo","getLoadHouseAgentList","getLoadContactUserList","readMemoListModel","fromNumber","toNumber","readCargoManifestSQ","queryCargoStatus","savePickupDeliveryInstructionData","saveBankDraftData","loadBLData","recordCnt","readBaseInfoCompany","readBaseInfoHistory","readCompanyAddressLabelList","getAbiRspDataByReqId","abiReqId","queryImporterBond","readPouchAirLabelData","getQuoteData","getAutoHblNo","getOnHandList","getItemCount","getLastFiscalDate","getOpAccts","getCountFYPeriod","aOType","withSep","checkSamePeriod","dbCheck","cmd","onMessage","onComplete","urlParams","eventSource","EventSource","withCredentials","onmessage","cancelDbCheck","recreateSetupCode","getBadARBankInfo","getDepositClearData","getCheckClearData","getCheckClearExcelData","getCreditCardClearData","saveDepositCheckCelar","depositCheckCelarCheckData","creditCardCelarCheckData","getCodesAirlineNextAwbNo","fsGetScRate","carrierCode","getDimensionInfo","getPayrollSetup","getLoadStorage","getLatestExchangeRate","curr","getExchangeRate","dt","getOOHBLFormName","formTypeIsCopy","crdbSelectDetail","opAgentId","readStorageBillingList","billingGroup","getItnNo","checkfileserver","readRecognizeData","searchTbName","readRecogHistoryData","saveRecogHistoryData","checkMissingField","makeEDIFile","makeACEFile","getSecTasks","getSecGroups","getSecurityControlList","getMaxIden","saveUser","getAmsUserPort","getAmsUserScac","getAmsGroupId","getAmsGroups","getAmsAccountTypeList","checkAttachment","pimsSaveCustomer","_AcctTableName","_AdjType","EndYearProc","fyNo","getEmailRecipient","deletePimsItem","voidBktf","getBalance","voidAdjustment","getSecControlList","showTaxReturnList","voidTaxReturn","selectDraftList","paymentprepdelete","readAEMData","getBankBalanceInfo","getBegDate","getAcctStartDate","selectBankBalList","begDate","priCurr","readCustomerNameData","checkReconDate","reconDate","inventoryCount","getInventoryCount","checkupHQBranch","depart","logs","eventLog","recreateJournal","getReceivingItem","signUpload","clearSign","saveJournalHistoryByTask","getFiscalYear","voidJournal","readBadARExpense","updateBadARExpense","paymentInfo","updateSTBID","deletePKey","skey","insertPKey","updateHeadTbId","selectSeq","selectFormParaId","saveMinutes","enterMin","getReminderTaskTime","exportToExcel","hdTBId","opAcctIds","getAIMInfo","getAemMain","getDefaultCharge","aehOtherCharge","getCarrierRate","getIsfno","amsblno","getExistedAmsIsfNo","amsIds","isfIds","itemId","invoId","jobtype","tempDir","getAcctInfo","readAcctDetailData","tbname","acctupdateStatusOP","checkFileClosed","checkUsePayroll","getDefaultPayrollCode","getPayrollGroupSummary","payGroupId","active2FA","suntekAdminAuth","readLabelFolderList","getSearchAllTableFromType","searchType","getSearchAllTable","updateHBLs","getDownloadList","getManifestProducts","useeManifest","actionNotIssuedBillings","getAesLink","getInbondLink","getSupportLink","createApi","OkButton","onOk","okRef","Spinner","LoadingStyle","ApplicationLoading","LoginScreen","bgImages","bg1","bg2","bg3","bg4","bg5","bg6","bg7","bg8","bg9","bg10","ModalContentStyle2","Login","onLogin","fineOtherTabLogin","suntekUser","suntekAdmin2FAActive","do2FAActive","suntekAdminVerify","doSuntekAdminAuth","on2FAActiveCancel","onSuntekAdminAuthCancel","doLogin","random","bgIndex","_setEmail","_setPassword","rememberMe","_setRememberMe","setErrorMessage","emailRef","passwordRef","rememberRef","setMarginTop","boxMarginTop","setBoxMarginTop","setIconMarginTop","iconBoxMarginTop","seticonBoxMarginTop","handleResize","throttle","verifycode","_setVerifycode","veriftErrorMsg","setVeriftErrorMsg","authcode","_setAuthcode","authErrorMsg","setAuthErrorMsg","preIndex","host","on2FAActive","onSuntekAdminAuth","bgImage","backgroundImage","backgroundSize","backgroundRepeat","backgroundPosition","ifmsLogo","data-msg-containerid","logo","rel","authenticatorUri","sharedKey","testJobMenu","JobSwitchingMenu","testMode","resetJobMenuContextState","chkChannel","mouseOverBtnNum","setMouseOverBtnNum","screenWidth","currentScrollPosition","setCurrentScrollPosition","menuHelperVisible","_setMenuHelperVisible","visibleWidth","setVisibleWidth","beforeActualWidth","setBeforeActualWidth","beforeTotalWidth","setBeforeTotalWidth","currentLeft","setCurrentLeft","isStandaloneOperation","operationKey","jobMenuItems","opKey","suffixlabel","isScreenDirty","checkStandaloneDirty","executeJobMenu","allItems","renderingJobMenuItems","menuItemCount","setMenuItemCount","buttonsRef","sizes","renderingButtonCount","buttonCount","actualWidth","buttonWidth","scrollControlsWidth","getActualWidths","visibleTabWidth","batchSize","btnList","clientWidth","maxScrollPositions","standaloneTitle","activeIndexInView","setMenuHelperVisible","scrollJobMenuItemIntoView","totalTabWidth","sumBy","indexInScrollView","visibleIndexFrom","visibleIndexTo","scrollDelta","currentVisibleTabWidth","newScrollPosition","newLeft","purgeLocalStorage","toDelete","distinct","self","allJobMenuItems","jobMenuItemsToClose","closeJobMenuTab","exceptedJobMenuItems","getJobMenuLabel","getJobMenuClass","getJobMenuInactiveClass","getJobMenuActiveClass","needGoBack","jobSwitchingMenuClassName","resetScreens","tabListIcon","MenuItemText","selectedOperation","itemIcon","darkModeIcon","disableIcon","selectedIcon","displayIcon","setDisplayIcon","setIsHovered","containerStyle","commonTextStyle","isSubmenuSelected","customMenuClass","customPopupClass","data-submenuselected","carretIcon","popupClassName","customId","DashboardMenu","tempCustomMenuClass","multiple","DashboardCustomButton","clickForMenuCloseRef","userState","getUserIcon","disabeld","userEmail","visibleTooltips","deleteAllTooltipsFromDom","objectFit","userImageSelected","userImage","textOverflow","defaultDatabase","getDbNameWithSuntekId","YesNoCancelResult","createMenuItem","menuOp","getIconStyle","OceanImportMenu","OceanImportNotSelectedSkyBlue","OceanExportMenu","OceanExportNotSelectedSkyBlue","AirImportMenu","AirImportNotSelected","AirImportNotSelectedSkyBlue","AirExportMenu","AirExportNotSelected","AirExportNotSelectedSkyBlue","OtherShipmentMenu","TruckingOthersNotSelectedSkyBlue","FreightReceiptMenu","FreightReceiptNotSelected","FreightReceiptNotSelectedSkyBlue","WarehousingMenu","WarehousingNotSelected","WarehousingNotSelectedSkyBlue","OPReportMenu","ReportManagerNotSelectedSkyBlue","BillingsMenu","BillingsNotSelected","BillingsNotSelectedSkyBlue","AccountingMenu","AccountingNotSelected","AccountingNotSelectedSkyBlue","customerListMenu","CustomerListNotSelectedIcon","CustomerListSkyBlue","referenceFilesMenu","ReferenceFilesNotSelectedIconSkyBlue","ContainerTrackingItems","ContainerTrackingIcon","ContainerTrackIconSkyBlue","UtilMenu","utilitiesIcon","utilitiesIconSkyBlue","SetupMenuItems","SettingsNotSelectedIconSkyBlue","InbondMenu","inbondMenuIconBlue","inbondMenuIconSkyBlue","supportMenu","supportIcon","supportIconSkyBlue","BusinessIntelligenceMenu","businessIntelligenceNotSelected","businessIntelligenceNotSelectedSkyBlue","AMSMenu","amsNotSelected","amsNotSelectedSkyBlue","AESMenu","aesNotSelected","aesNotSelectedSkyBlue","ISFMenu","isfNotSelected","isfNotSelectedSkyBlue","IfmsTopBar","homeMenu","logout","showMainPop","isLicenseeList","setShowMainPop","setDisplayOperation","standaloneTitleChangeSubscription","setSearchText","isHoverSearchInput","setIsHoverSearchInput","isFocusSearchInput","setIsFocusSearchInput","versionCount","configMenu","compSec","businessIntelligenceSec","BusinessIntelligence","enableMyEvent","MyTaskMenu","myjobNotSelected","myjobNotSelectedSkyBlue","topMenus","submenuselected","searchData","showList","hdType","detailUrl","getDetailUrlByJobName","NavOpenNewPage","dopr","filterMenuItems","opSide","cm","filteredOceanImportMenu","filteredOceanExportMenu","filteredAirImportMenu","filteredAirExportMenu","filteredOtherShipmentMenu","filteredFreightReceiptMenu","filteredWarehousingMenu","filteredOPReportMenu","filteredBillingsMenu","filteredAccountingMenu","filteredUtilMenu","ifmsLogoWhite","taskReminderIcon","UserButton","RunnerIcon","ExitIcon","globalYesNoCancelDialogSlice","showGlobalYesNoCancelDialog","hideGlobalYesNoCancelDialog","MyMemoImpl","taskReminderList","dueData","MyMemoInitializedImpl","taskReminder","onClickEdit","snooze","setSnooze","setshowAll","enterTime","mId","mTitle","mContents","MyMemoDetails","VolumebyCargoTypeYearsImpl","volumeCargoTypeData","createTable","amount5","Teu20_5","amount4","Teu20_4","Teu20_3","Teu20_2","Teu20_1","Teu40_5","Teu40_4","Teu40_3","Teu40_2","Teu40_1","Teu45_5","Teu45_4","Teu45_3","Teu45_2","Teu45_1","TeuHQ_5","TeuHQ_4","TeuHQ_3","TeuHQ_2","TeuHQ_1","CargoType","FreeCbm5","FreeCbm4","FreeCbm3","FreeCbm2","FreeCbm1","NomiCbm5","NomiCbm4","NomiCbm3","NomiCbm2","NomiCbm1","ColoadCbm5","ColoadCbm4","ColoadCbm3","ColoadCbm2","ColoadCbm1","labels","typeColumn","gridHeight","VolumebyCargoTypeYears","AutoBillingHD","invoiceRemarks","billingDetailList","invoiceDetailList","aotherTempList","AutoBillingImpl","removeInStorage","autoBillingRef","newAutoBillingHD","AutoBillingInitializedImpl","autoBilling","setAutoBilling","calculateAmount","QtyRenderer","issueBillingDisable","subInvoList","nSeqNo","nPrevComId","originalInvoiceSeq","invoiceSeq","issue","detailIds","issuedRow","invoiceDetail","billingItem","autoBillingDetailTableOptions","lastAmount","ar","autoInvoiceDetailTableOptions","GeneralInvoNo","filteredList","billingDetail","getInvoiceDate","UseBranch","subSaveAutoBilling","allIds","aotherTemp","invoInsertId","invoDetailIds","curAotherTemp","addNonNull","ARGLNo","aothertemp","c2","f1","f2","f3","apiSaveResult","setIssueBilling","AutoBillingDetails","navigationSubscription","ajaxErrorSubscription","ajaxStartSubscription","ajaxEndSubscription","loadingStartSubscription","loadingEndSubscription","viewReportSubscription","tableEditSubscription","broadcastChannel","movetologinSubscription","tooltipElement","createFragment","htmlStr","frag","createDocumentFragment","firstChild","IfmsMain","memoStorage","jobMenuContextState","setJobMenuContextState","userLogin","globalYesNoCancelDialog","globalYesNoDialog","focusEleAfterModalOkBtnClick","setFocusEleAfterModalOkBtnClick","apiLoading","setApiLoading","apiLoadingMessage","setApiLoadingMessage","selectedReportMenuItem","setSelectedReportMenuItem","selectedReportPopupMenuItem","setSelectedReportPopupMenuItem","autoLogoutTimerId","autoLogoutRemainTimerId","isStayLoggin","autoLogoutCheck","setAutoLogoutCheck","autoLogoutRemain","setAutoLogoutRemain","currentListJobName","currentListItemModel","defaultUrls","setIsHome","isHomeRef","activeUrlRef","resultArray","copyIndex","routePath","routeData","useRouteMatch","isOpenOperationView","jobParams","warehousingRotues","customerRotues","accountingRotues","FindOpendOperationView","filterChannel","listSelectedId","_isRunning","bcMessageHandler","Target","postMessage","listUrl","hlinkData","DutyPendings","NewProfitDetail1","NewProfitDetail2","NewProfitDetail2GP","EmpPerformanceDetail","getReminderTime","resultTime","tempInfoContent","reminderTime","reminderDueTime","timeLogout","alreadySideMenuOpend","alreadySubMenuOpend","findOpendSideMenuIndex","findOpendSideMenu","img","opendParentIndexes","setBackGroundSubMenuIndex","findOpendSubMenu","moreMenuIndex","ish","onApiError","moveToLoginPage","BroadcastChannel","go","newOperation","initializationPath","userDefaultOperation","matchFromUrl","operationFactory","tooltipMonitor","globalDirtyMarkCleaner","unsubscribeAll","moveToAutoLogin","moveInfo","moveToAotherPage","redirectToUserDefaultUrl","savedCallback","setInterval","clearInterval","useInterval","editButton","ediForFS3Index","ediForFS3","ediblSuntekCustomsIndex","ediblSuntekCustoms","moreMenuInjectBottom","moreMenuList","CheckMoreMenuJobName","textA","textB","menuIndexArr","jobNameIndex","GetMoreMenuJobName","findParentMenuIndex","findOpendDetailMenuIndex","afterReport","notShowOldPayroll","terminate","validationfor","hoverElements","isHTMLElement","processTooltip","SVGElement","tooltipOnlywhencutoff","tooltipText","firstChildNode","fragmentPosition","tooltipNode","rectParent","tRect","getAttribute","tooltipPosition","getTooltipPosition","childInfo","faExclamationTriangle","showLogoutAlert","authLogoff","allJobMenuItemsToCloseOnLogout","doLogout","prepareMemoListView","requestingOperation","openedOperation","openESupportPage","openURL","checkFileServer","setMilestoneOption","SystemSetup","lastSelectedId","getSelectedElement","fullLink","deleteTitle","AutoBilling","RptIssueReady","AesOcean","AesAir","AesOtherOP","tempJobName","onReportPopupClose","updateSelectedPopupMenuItemWidth","noMenus","newJobMenuContextState","Suspense","fallback","Yes","No","Cancel","NoticeYesNoIcon","NoticeOKIcon","NoticeErrorIcon","currentCellSelection","menuModel","getPopUpCompent","onReportMenuClick","MyMemo","parentOpType","padStart","stayLoggedin","AutoLogin","autoLoginCall","Modal","setAppElement","workerFunction","autoLogoutTime","clearTimeout","timerId","timerId2","nextInterval","remainTimerId","App","loaded","setLoaded","userBranchMissingDialog","setUserBranchMissingDialog","authenticateDialog","setAuthenticateDialog","authenticateMsg","setAuthenticateMsg","_setSystemSettings","setSecurityGrants","setSuntekAdmin2FAActive","setSuntekAdminVerify","suntekAdminAuthFin","setSuntekAdminAuthFin","setSuntekUser","isLoggedIn","anotherUserId","loginUserId","Worker","useMemoListByDefault","initializeUserSession","userSession","adjustDateFormats","datePlaceHolder","loadSystemSettings","userBranchMissing","users","loadSuntekSettings","ss","server","charge","agentGLNo","arglNo","APGLNo","apglNo","IssuePlace","issuePlace","HeadType","headType","UseKorVat","EarningGLNo","AGR1","agR1","AGR2","agR2","AGR3","agR3","HawbPSize","hawbPSize","BlRemarks","blRemarks","FCountry","fCountry","OohOfrtCode","oohOfrtCode","OihFrtChg","oihFrtChg","OihChg","oihChg","BrokerGroup","brokerGroup","PsShareRatio","psShareRatio","ShowChargesConfirmedAN","showChargesConfirmedAN","UseABIDB","useABIDB","ShareDocWIthABI","shareDocWithABI","EnableSTKMemo","enableSTKMemo","UseITNew","a20FC10","CashInBankGLNo","cashInBankGLNo","SavingsGLNo","savingsGLNo","OtherSavingsGLNo","otherSavingsGLNo","CheckReceivableGLNo","checkReceivableGLNo","CheckPayableGLNo","checkPayableGLNo","agentAPGLNo","PayGLNo","payGLNo","RcvGLNo","rcvGLNo","advPayGLNo","advRecGLNo","VatGLNo","vatGLNo","VatRcvGLNo","vatRcvGLNo","ShowAmend","showAmend","ViewETA","viewETA","PimsUserID","PimsUserPwd","pimsUserPwd","ChargeFscAE","chargeFscAE","ChargeSscAE","chargeSscAE","ChargeTsaAE","chargeTsaAE","ChargeHandlingCAE","chargeHandlingCAE","AmsMode","detectPlatform","osName","browser","userAgent","ua","browserTest","safariVersion","saVersion","browserOffset","browserResult","edgeMatch","browserInfo","authenticateAsync","forceLogout","branchMissing","suntekAdmin2FAStart","twoFactorEnabled","focusPassword","bcMessageHandler2","currentLoginId","toLocaleLowerCase","applicationCtx","prevSettings","conName","fromTypeStr","ModeCopy","arrSecCntr","globalInputDialogSlice","showGlobalInputDialog","hideGlobalInputDialog","combinedReducer","combineReducers","globalOkDialogReducer","globalYesNoDialogReducer","globalYesNoCancelDialogReducer","loginReducer","jobMenuReducer","operationReducer","screenStackReducer","storageReducer","activeDutyTracking","activeDutyTrackingSliceReducer","lastSavedJob","lastSavedJobReducer","listScreenSettings","listScreenSettingsReducer","globalInputDialog","globalInputDialogReducer","rootReducer","allReducers","configureStore","reducer","middleware","getDefaultMiddleware","serializableCheck","persistStore","ReactDOM"],"mappings":"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,8BAAAA,E,4BAAAA,E,eAAAA,E,eAAAA,E,eAAAA,E,sBAAAA,E,eAAAA,E,oBAAAA,E,iBAAAA,E,kBAAAA,E,gBAAAA,E,uBAAAA,E,wBAAAA,E,qBAAAA,E,iBAAAA,E,cAAAA,E,kBAAAA,E,cAAAA,E,eAAAA,E,uBAAAA,E,sBAAAA,E,qBAAAA,E,mBAAAA,E,gBAAAA,E,gBAAAA,E,mBAAAA,E,cAAAA,E,cAAAA,E,gBAAAA,E,gBAAAA,E,kBAAAA,E,iBAAAA,E,iBAAAA,E,eAAAA,E,mBAAAA,E,wBAAAA,E,cAAAA,E,cAAAA,E,cAAAA,E,gBAAAA,E,mBAAAA,E,gBAAAA,E,eAAAA,E,eAAAA,E,eAAAA,E,iBAAAA,E,eAAAA,E,eAAAA,E,eAAAA,E,iBAAAA,E,eAAAA,E,eAAAA,E,eAAAA,E,iBAAAA,E,eAAAA,E,eAAAA,E,eAAAA,E,iBAAAA,E,eAAAA,E,cAAAA,E,gBAAAA,E,cAAAA,E,sBAAAA,E,oBAAAA,E,qBAAAA,E,eAAAA,E,mBAAAA,E,kBAAAA,E,mBAAAA,E,qBAAAA,E,eAAAA,E,qBAAAA,E,aAAAA,E,eAAAA,E,yBAAAA,E,sBAAAA,E,WAAAA,E,cAAAA,E,gBAAAA,E,oBAAAA,E,aAAAA,E,cAAAA,E,eAAAA,E,cAAAA,E,eAAAA,E,aAAAA,E,gBAAAA,E,kBAAAA,E,yBAAAA,E,sBAAAA,E,mBAAAA,E,qBAAAA,E,yBAAAA,E,wBAAAA,E,yBAAAA,E,qBAAAA,E,0BAAAA,E,wBAAAA,E,iBAAAA,E,iBAAAA,E,iBAAAA,E,gBAAAA,E,eAAAA,E,iBAAAA,E,gBAAAA,E,kBAAAA,E,kBAAAA,E,oBAAAA,E,iBAAAA,E,iBAAAA,E,eAAAA,E,mBAAAA,E,oBAAAA,E,WAAAA,E,mBAAAA,E,eAAAA,E,iBAAAA,E,gBAAAA,E,aAAAA,E,eAAAA,E,iBAAAA,E,kBAAAA,E,oBAAAA,E,iBAAAA,E,iBAAAA,E,iBAAAA,E,kBAAAA,E,oBAAAA,E,kBAAAA,E,kBAAAA,E,4BAAAA,E,0BAAAA,E,oBAAAA,E,mBAAAA,E,iBAAAA,E,sBAAAA,E,kBAAAA,E,yBAAAA,E,oBAAAA,E,kBAAAA,E,gBAAAA,E,2BAAAA,E,UAAAA,E,yBAAAA,E,iBAAAA,E,oBAAAA,E,kBAAAA,E,kBAAAA,E,kBAAAA,E,kBAAAA,E,gBAAAA,E,kBAAAA,E,kBAAAA,E,kBAAAA,E,kBAAAA,E,eAAAA,E,iBAAAA,E,mBAAAA,E,mBAAAA,E,mBAAAA,E,oBAAAA,E,qBAAAA,E,oBAAAA,E,sBAAAA,E,oBAAAA,E,oBAAAA,E,oBAAAA,E,8BAAAA,E,oBAAAA,E,sBAAAA,E,mBAAAA,E,eAAAA,E,mBAAAA,E,eAAAA,E,mBAAAA,E,gBAAAA,E,mBAAAA,E,sBAAAA,E,oBAAAA,E,mBAAAA,E,oBAAAA,E,uBAAAA,E,qBAAAA,E,qBAAAA,E,0BAAAA,E,iBAAAA,E,kBAAAA,E,wBAAAA,E,oBAAAA,E,0BAAAA,E,kBAAAA,E,wBAAAA,E,wBAAAA,E,uBAAAA,E,sBAAAA,E,6BAAAA,E,mBAAAA,E,0BAAAA,E,wBAAAA,E,sBAAAA,E,uBAAAA,E,sBAAAA,E,uBAAAA,E,uBAAAA,E,oBAAAA,E,6BAAAA,E,sBAAAA,E,2BAAAA,E,+BAAAA,E,6BAAAA,E,4BAAAA,E,oBAAAA,E,YAAAA,E,0BAAAA,E,iBAAAA,E,qBAAAA,E,uBAAAA,E,sBAAAA,E,mBAAAA,E,kBAAAA,E,4BAAAA,E,4BAAAA,E,wBAAAA,E,sBAAAA,E,mBAAAA,E,oBAAAA,E,yBAAAA,E,uBAAAA,E,oBAAAA,E,sBAAAA,E,qBAAAA,E,2BAAAA,E,+BAAAA,E,wBAAAA,E,uBAAAA,E,oBAAAA,E,wBAAAA,E,0BAAAA,E,sBAAAA,E,iBAAAA,E,uBAAAA,E,uBAAAA,E,eAAAA,E,kBAAAA,E,uBAAAA,E,0BAAAA,E,wBAAAA,E,sBAAAA,E,aAAAA,E,aAAAA,E,qBAAAA,E,eAAAA,E,qBAAAA,E,6BAAAA,E,6BAAAA,E,uBAAAA,E,eAAAA,E,iBAAAA,E,oBAAAA,E,4BAAAA,E,yBAAAA,E,8BAAAA,E,4BAAAA,E,iBAAAA,E,yBAAAA,E,iBAAAA,E,qBAAAA,E,uBAAAA,E,sBAAAA,E,0BAAAA,E,wBAAAA,E,8BAAAA,E,sBAAAA,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,sCAAAA,E,oCAAAA,E,iCAAAA,E,uBAAAA,E,iBAAAA,E,iBAAAA,E,yDAAAA,E,+CAAAA,E,iCAAAA,E,yBAAAA,E,4BAAAA,E,+BAAAA,E,iDAAAA,E,+CAAAA,E,+BAAAA,E,+BAAAA,E,4BAAAA,E,4BAAAA,E,kCAAAA,E,gCAAAA,E,kCAAAA,E,wCAAAA,E,qCAAAA,E,oCAAAA,E,wCAAAA,E,8CAAAA,E,2CAAAA,E,sDAAAA,E,mDAAAA,E,8DAAAA,E,mDAAAA,E,+DAAAA,E,iEAAAA,E,qDAAAA,E,mCAAAA,E,+BAAAA,E,iDAAAA,E,8CAAAA,E,+CAAAA,E,mDAAAA,E,8CAAAA,E,gCAAAA,E,uCAAAA,E,2DAAAA,E,qDAAAA,E,qDAAAA,E,4CAAAA,E,0CAAAA,E,+CAAAA,E,yCAAAA,E,6CAAAA,E,yCAAAA,E,2BAAAA,E,+CAAAA,E,yDAAAA,E,yDAAAA,E,mDAAAA,E,kDAAAA,E,8CAAAA,E,iDAAAA,E,uCAAAA,E,gDAAAA,E,gDAAAA,E,kDAAAA,E,gDAAAA,E,gDAAAA,E,8CAAAA,E,oCAAAA,E,wCAAAA,E,sCAAAA,E,gCAAAA,E,8BAAAA,E,4CAAAA,E,oCAAAA,E,oCAAAA,E,0CAAAA,E,uCAAAA,E,gDAAAA,E,kDAAAA,E,2BAAAA,E,yBAAAA,E,yBAAAA,E,4BAAAA,E,2BAAAA,E,yBAAAA,E,6CAAAA,E,gCAAAA,E,mCAAAA,E,yCAAAA,E,+CAAAA,E,0BAAAA,E,mCAAAA,E,2CAAAA,E,6CAAAA,E,sCAAAA,E,iCAAAA,E,qCAAAA,E,+BAAAA,E,+BAAAA,E,2BAAAA,E,sCAAAA,E,0BAAAA,E,mCAAAA,E,uCAAAA,E,+BAAAA,E,6BAAAA,E,0CAAAA,E,6BAAAA,E,2BAAAA,E,iCAAAA,E,4CAAAA,E,uCAAAA,E,+BAAAA,E,uBAAAA,E,yBAAAA,E,qCAAAA,E,+CAAAA,E,qCAAAA,E,gDAAAA,E,yBAAAA,E,qBAAAA,E,yBAAAA,E,+BAAAA,E,iCAAAA,E,iCAAAA,E,mCAAAA,E,mCAAAA,E,qBAAAA,E,uBAAAA,E,mCAAAA,E,2BAAAA,E,uCAAAA,E,2BAAAA,E,uC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A,I,+BAAAA,I,mCAAAA,I,6BAAAA,I,yBAAAA,I,6BAAAA,I,2CAAAA,I,yCAAAA,I,iCAAAA,I,uCAAAA,I,6BAAAA,I,qBAAAA,I,qCAAAA,I,mCAAAA,I,2CAAAA,I,yCAAAA,I,mCAAAA,I,+CAAAA,I,qCAAAA,I,+BAAAA,I,yCAAAA,I,uBAAAA,I,6BAAAA,I,mCAAAA,I,yCAAAA,I,uBAAAA,I,6BAAAA,I,mCAAAA,I,yCAAAA,I,iCAAAA,I,6CAAAA,I,iCAAAA,I,uCAAAA,I,6CAAAA,I,mDAAAA,I,iCAAAA,I,uCAAAA,I,6CAAAA,I,mDAAAA,I,6BAAAA,I,mCAAAA,I,yCAAAA,I,+CAAAA,I,2CAAAA,I,uCAAAA,I,uDAAAA,I,mDAAAA,I,iDAAAA,I,6CAAAA,I,6DAAAA,I,yDAAAA,I,2CAAAA,I,+CAAAA,I,uDAAAA,I,yDAAAA,I,2CAAAA,I,6CAAAA,I,+BAAAA,I,2CAAAA,I,+BAAAA,I,2CAAAA,I,+BAAAA,I,iCAAAA,I,6CAAAA,I,mDAAAA,I,6BAAAA,I,yCAAAA,I,2DAAAA,I,qCAAAA,I,yDAAAA,I,yDAAAA,I,yDAAAA,I,yDAAAA,I,qEAAAA,I,qEAAAA,I,yCAAAA,I,2CAAAA,I,uCAAAA,I,2CAAAA,I,qCAAAA,I,6BAAAA,I,+CAAAA,I,qCAAAA,I,uBAAAA,I,mCAAAA,I,qDAAAA,I,2CAAAA,I,uCAAAA,I,uCAAAA,I,uCAAAA,I,6CAAAA,I,yBAAAA,I,yCAAAA,I,yCAAAA,I,+CAAAA,I,2CAAAA,I,yDAAAA,I,2DAAAA,I,+CAAAA,I,2DAAAA,I,6DAAAA,I,iDAAAA,I,2CAAAA,I,qCAAAA,I,qCAAAA,I,+BAAAA,I,iDAAAA,I,uCAAAA,I,+CAAAA,I,+CAAAA,I,2CAAAA,I,uDAAAA,I,yCAAAA,I,yCAAAA,I,mCAAAA,I,qDAAAA,I,qDAAAA,I,qCAAAA,I,yCAAAA,I,iDAAAA,I,+CAAAA,I,iDAAAA,I,uCAAAA,I,iDAAAA,I,uDAAAA,I,+CAAAA,I,2CAAAA,I,iCAAAA,I,6CAAAA,I,yCAAAA,I,iCAAAA,I,6CAAAA,I,2BAAAA,I,+BAAAA,I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","file":"static/js/main.7abccb98.chunk.js","sourcesContent":["/**\r\n * Revision History\r\n * \r\n * 12/13/2021 ptkim Add for ListView column definition, which will be used in ???ListItem.getExportCollection (static)\r\n */\r\nexport enum XCellType {\r\n None = -1,\r\n String = 0,\r\n Date = 1,\r\n Double = 2,\r\n Bool = 3,\r\n StrBool = 4,\r\n DateTime = 5,\r\n Password = 6,\r\n CurAmt, // adjust decimal based currency of 'cur' column\r\n};\r\n\r\nexport enum XAlignType {\r\n Left = 0,\r\n Center = 1,\r\n Right = 2\r\n};\r\n\r\nexport const XRowNo: string = \"XRowNo\";\r\nexport const XEmpty: string = \"XEmpty\";\r\nexport interface XExportColumn {\r\n text:string;\r\n width:number;\r\n align:XAlignType;\r\n type:XCellType;\r\n dataIndex:string;\r\n formatString: string;\r\n\r\n col: number;\r\n visible: boolean;\r\n moveable: boolean;\r\n searchIndex: number;\r\n mandatory: boolean;\r\n maxLenth: number;\r\n defaultFocus: boolean; //pt211103: add\r\n canBeHidden: boolean;\r\n resizable: boolean;\r\n sortable: boolean;\r\n filterable: boolean;\r\n filterType: string;\r\n hiddenInColumnSetup: boolean;\r\n tooltip: string;\r\n noNullOrEmptySearch: boolean,\r\n hasCustomTooltip:boolean,\r\n};\r\n\r\nexport function Create(obj: any) : XExportColumn {\r\n return {...{ \r\n text: '', \r\n width: 100, \r\n align: XAlignType.Left, \r\n type: XCellType.String, \r\n dataIndex: '', \r\n formatString: '', \r\n col: 0, \r\n visible: true, \r\n moveable: true, \r\n searchIndex: 0, \r\n mandatory: false,\r\n maxLength: 0,\r\n \r\n defaultFocus: false,\r\n canBeHidden: true,\r\n resizable: true,\r\n sortable: true,\r\n filterable: true,\r\n hiddenInColumnSetup: false,\r\n noNullOrEmptySearch: false,\r\n }, ...obj};\r\n};\r\n\r\nexport function CopyList(srcList: XExportColumn[]):XExportColumn[] {\r\n let result: XExportColumn[] = [];\r\n if(srcList) {\r\n srcList.forEach(x => {\r\n let newCol = Object.assign({} as XExportColumn, x);\r\n result.push(newCol);\r\n });\r\n }\r\n return result;\r\n};","import constants from '../constants';\r\n\r\nexport enum JobNames {\r\n None = \"\",\r\n Main = \"Main\",\r\n\r\n OceanImport = \"SEAI\",\r\n OceanExport = \"SEAE\",\r\n OIMbl = \"OIMB\", // 1\r\n OIHbl = \"OIHB\",\r\n OEMbl = \"OEMB\",\r\n OEHbl = \"OEHB\",\r\n OE_QUOTATION = \"OE_QUOTATION\",\r\n AirImport = \"AIRI\",\r\n AirExport = \"AIRE\",\r\n AIMbl = \"AIMB\",\r\n AIHbl = \"AIHB\",\r\n AEMbl = \"AEMB\",\r\n AEHbl = \"AEHB\",\r\n Company = \"COMP\",\r\n\r\n Broker = \"BRKR\", // 10\r\n CodeGroup = \"CGRP\",\r\n Sales = \"SALE\",\r\n Charge = \"BILL\",\r\n\r\n BillingCode = \"BCODE\", //\r\n BillingTemplate = \"BTEMP\", //\r\n\r\n OceanPort = \"SPRT\",\r\n Container = \"CNTR\",\r\n MoveType = \"MVTY\",\r\n Vessel = \"VSSL\",\r\n BLType = \"BLTY\",\r\n User = \"USER\", //UDetail,\r\n\r\n GLNo = \"GLNO\", // 20\r\n AirLine = \"ALIN\",\r\n AirLineEx = \"ALIE\",\r\n OtherType = \"OTYP\",\r\n AirPort = \"APRT\",\r\n Country = \"CTRY\",\r\n State = \"STAT\",\r\n ScheduleB = \"SCHB\",\r\n Scac = \"SCAC\",\r\n //public const string Eic: \"EXIC\", // Export information code\r\n ExportInfo = \"EXIC\", //\r\n\r\n ExportLic = \"EXLC\", // 30 - Export license code\r\n Bank = \"BANK\",\r\n BankRecon = \"BREC\",\r\n InternetUser = \"IUSR\",\r\n LogFax = \"LOGF\",\r\n LogMail = \"LOGM\",\r\n LogPrint = \"LOGP\",\r\n LogFaxErr = \"LGFE\",\r\n LogCommunication = 'LOGC',\r\n BatchFax = \"BATF\",\r\n BatchEmail = \"BATM\",\r\n BatchMemo = \"BMEM\", //\r\n // UInfo,\r\n\r\n Commodity = \"CMDT\", // 40\r\n Currency = \"CURR\",\r\n MemoTitle = \"MEMT\",\r\n ANTitle = \"ANTT\",\r\n OITeu = \"OTEU\",\r\n Memo = \"MEMO\",\r\n FileAttach = \"FATT\",\r\n SubGLCode = \"SBGL\",\r\n EndYearProc = \"EYPR\",\r\n\r\n Lines = \"LINES\",\r\n Salesperson = \"CSMAN\",\r\n\r\n //#region Accounting\r\n\r\n AcctDashboard = \"ACCDB\", //\r\n Invoice = \"INVO\", // 50\r\n //public const string InvoiceList: \"INVOL\", //\r\n CrDb = \"CRDB\",\r\n //public const string CrDbList: \"CRDBL\", //\r\n //public const string Payable: \"BILL\", // Old \"APAY\"\r\n Bill = \"BILL\", //\r\n //public const string BillList: \"BILLL\", //\r\n //public const string GInvoiceList: \"GINVL\", //\r\n GInvo = \"GINVE\", //\r\n //public const string GBillList: \"GBILL\", //\r\n GBill = \"GBILE\", //\r\n\r\n //\r\n\r\n //public const string Deposit: \"CPAY\", // Deposit Journal --> Customer Payment // Chuck 2014-04-02\r\n CustPayment = \"CPAY\", //\r\n AgntPayment = \"APAY\", //241211 mskim add\r\n DepositBag = \"DEPO\", // Deposit Bag //Lin 2014-04-04\r\n //public const string Check: \"BPAY\", // Check Journal --> Bill Payment // Old : \"CHEK\"\r\n BillPayment = \"BPAY\", //\r\n CCPayment = \"CCPAY\", //\r\n\r\n CheckDeposit = \"CHDP\", // Check Deposit\r\n UndoDeposit = \"UNDPS\", //\r\n CheckClear = \"CHCR\", // Check Clear\r\n CCClear = \"CCCLR\", //\r\n CancelCCClear = \"CANCC\", //\r\n ChkClearWithExcel = \"CCEXL\", //\r\n BankBalRec = \"BNKB\", // Bank Recon\r\n\r\n SlipJournal = \"JRNL\",\r\n //public const string SlipList: \"SLPL\",\r\n //public const string AdjJournalEntry: \"AJRNL\", //\r\n SearchJournal = \"SJRNL\", //\r\n\r\n Settle = \"SETL\",\r\n ComChg = \"CCHG\",\r\n Branch = \"BRAN\",\r\n MergePort = \"MRGP\",\r\n ChkMessenger = \"CHMS\",\r\n\r\n RptAgingAr = \"RAGAR\", //\r\n RptAgingAp = \"RAGAP\", //\r\n RptAgingArAgent = \"RAARA\", //\r\n RptAgingApAgent = \"RAAPA\", //\r\n RptAgingAgent = \"RAAGT\", //\r\n RptAgingChkRcvable = \"RACKR\", //\r\n RptAgingChkPayable = \"RACKP\", //\r\n RptAgingRcvable = \"RARCV\", //\r\n RptAgingPayable = \"RAPAY\", //\r\n RptAgingCCPayable = \"RACCP\", //\r\n\r\n RptDailyAcctSummary = \"RDACS\", //\r\n RptAcctBalByEntity = \"RACBE\", //\r\n RptAcctLedger = \"RACLG\", //\r\n RptAcctLedgerByEntity = \"RACLE\", //\r\n RptGeneralLedger = \"RGLDG\", //\r\n RptIncomeStatement = \"RICST\", //\r\n RptBalanceSheet = \"RBLST\", //\r\n RptTrialBalance = \"RTRBL\", // \r\n RptCustStatement = \"RCSTM\", //\r\n RptAgentStatement = \"RASTM\", //\r\n\r\n //sjcho 20200909 - Add Financial Report (Consolidated)\r\n RptIncomeStatementM = \"RICSTM\",\r\n RptBalanceSheetM = \"RBLSTM\",\r\n RptTrialBalanceM = \"RTRBLM\",\r\n //sjcho end\r\n\r\n RptBatchStatement = \"RBSTMT\",\r\n\r\n //\r\n //public const string YearEndProcessing: \"YEPD\", //\r\n //pt200320>\r\n\r\n ReportQuery = \"REPQ\", //10062= Report Query List\r\n BankTransfer = \"BKTF\", //10065= Bank Transfer List\r\n BankRecActivity = \"BKRCA\", //10066= Bank Rec. Activity List\r\n CustPaymentMemo = \"CPAYM\", //10083= Customer Pay Memo\r\n\r\n //19.07.09 hykim 추가\r\n PayrollSummary = \"PRSM\",\r\n // \r\n Payroll2 = \"PAYROLL2\",\r\n\r\n //public const string AgentPayment: \"AGPM\", //sjcho 20210128 - remove (not used jobname)\r\n\r\n //public const string AcctAdjustment: \"ACADJ\", //<200320: Not action binding menu>\r\n PrepaidExpenseAdjustment = \"PEAM\",\r\n DepreciationAdjustment = \"DPAM\",\r\n AmortizationAdjustment = \"AMAM\",\r\n IncomeTaxAdjustment = \"ICTAX\", //\r\n\r\n InvoAdj = \"IVAJ\", // 10040\r\n CrDbAdj = \"CDAJ\",\r\n APayAdj = \"APAJ\",\r\n\r\n SalesTaxReturn = \"STRT\",\r\n //public const string SalesTaxReturnList: \"STRTL\", //\r\n\r\n // Expense Claim\r\n EmClaim = \"ECLM\",\r\n EmClaimList = \"ECLML\",\r\n\r\n EmReceipt = \"ERCT\",\r\n XpenseAll = \"XPALL\",\r\n\r\n /// \r\n /// Probably GBill\r\n /// \r\n Expense = \"EXPNS\", //170306 General Expense Entry\r\n\r\n BadDebtExpense = \"BDEBT\", //\r\n PaymentHistory = \"PAYMTH\",\r\n //#endregion\r\n PaymentPrep = \"PAYMTP\",\r\n\r\n //[MapValue(\"GENL\")]General, //60\r\n Warehouse = \"WHSE\",\r\n WHRcpt = \"WHRC\", // FMS Other - Warehouse Receipt\r\n WHRcptPanP = \"WHRP\",\r\n WHRcv = \"WHRCV\", //170303: FMS Warehouse - Receiving\r\n WHShip = \"WHSHP\",\r\n //\r\n WHStorageInv = \"WHSTI\", //170303: Wahrehouse Storage Invoice\r\n WHInvoice = \"WHINVO\", // jejeon 220726 - Add\r\n WHBill = \"WHBILL\", // jejeon 220726 - Add\r\n WHCrDb = \"WHCRDB\", // jejeon 220726 - Add\r\n WHCustomer = \"WHCUS\", // jejeon 220726 - Change field name (Company)\r\n WHItem = \"WHIT\",\r\n WHLoc = \"WHLOC\", //170303\r\n\r\n MemoList = \"MEML\",\r\n RecentBL = \"RCBL\",\r\n AutoCharge = \"AUTC\",\r\n CfsCharge = \"CFSC\",\r\n\r\n // For Settings > Ocean Buying\r\n //BuyRate = \"BUYR\", \r\n OceanRate = \"OCER\",\r\n\r\n AirRate = \"AIRR\", // For Settings > Air Buying\r\n\r\n // For Settings > Selling Rate\r\n //RateTable = \"RATE\", \r\n SellingRate = \"SELR\",\r\n\r\n CreditCardSetup = \"CCARD\", //\r\n\r\n OEBook = \"OEBK\", // 70\r\n OELoad = \"OELD\",\r\n OILoad = \"OILD\",\r\n Security = \"SECU\", // 77\r\n OIContainer = \"OICN\",\r\n OIVessel = \"OIVS\",\r\n\r\n OIMPims = \"OIMP\", // 80\r\n OIHPims = \"OIHP\",\r\n OiPims = \"OIPIM\", //170303 : OI Shipment\r\n OiSoPims = \"OISOP\", //170303: OI Shipment/Shipping Order\r\n\r\n OEMPims = \"OEMP\",\r\n OEHPims = \"OEHP\",\r\n OePims = \"OEPIM\", //170303: OE Shipment\r\n OeSoPims = \"OESOP\", //170303: OE Shipment/Shipping Order\r\n\r\n AIMPims = \"AIMP\",\r\n AIHPims = \"AIHP\",\r\n AiPims = \"AIPIM\", // 170303: AI Shipment\r\n AiSoPims = \"AISOP\", // 170303: AI Shipment/Shipping Order\r\n\r\n AEMPims = \"AEMP\",\r\n AEHPims = \"AEHP\",\r\n AePims = \"AEPIM\", // 170303: AE Shipment\r\n AeSoPims = \"AESOP\", //170303: AE Shipment/Shipping Order\r\n\r\n // PimsUser = \"PUSR\",\r\n // PimsCustomer = \"PCUS\",\r\n \r\n WebNews = \"WNEW\", // 90\r\n WebKCS = \"WKCS\",\r\n WebCargo = \"WCAR\",\r\n WebMap = \"WMAP\",\r\n WebDeniedParty = \"WDNP\",\r\n WebAESDirect = \"WAES\",\r\n WebLoginTrack = \"WLTR\",\r\n WebPims = \"WPIM\",\r\n WebPierPass = \"WPPS\",\r\n WebFaxCore = \"WFXC\",\r\n WebFaxCoreB = \"WFCB\",\r\n\r\n //[MapValue(\"OIQT\")]OIQuotation, // 100\r\n //[MapValue(\"OOQT\")]OOQuotation,\r\n SeaQuotation = \"SQUOT\", // Security Control\r\n //\r\n OtherOP = \"OTOP\",\r\n AirQuotation = \"AQUOT\",\r\n //[MapValue(\"AIQT\")]AIQuotation,\r\n //[MapValue(\"AOQT\")]AOQuotation,\r\n //\r\n\r\n //170303: Use OtherOP\r\n //public const string ForwardingOtherOP: \"OTOP\", // \"FOT\"\r\n\r\n //#region CHB\r\n Entry = \"ETRY\", // 100\r\n EntryBl = \"ETRB\", //\r\n ElectronicInvoice = \"EINV\",\r\n DailyStatement = \"DSTM\",\r\n PMS = \"PMST\",\r\n Inbond = \"IBND\",\r\n Drawback = \"DRBK\",\r\n Drawback7553 = \"7553\",\r\n Recon = \"RCON\",\r\n OGAFDA = \"OFDA\",\r\n OGAUSDT = \"OUDT\",\r\n OGAFCC = \"OFCC\",\r\n OGAUSDA = \"OUDA\",\r\n F7533 = \"7533\",\r\n //pt150508begin\r\n CargoRls = \"ERLS\",\r\n FdaProduct = \"FDAP\",\r\n PeriodicDailyStmt = \"PDST\",\r\n //pt150508end\r\n BatchDailyStmt = \"BDST\",\r\n //pt210319\r\n ChbOtherOp = \"COTOP\",\r\n //#endregion\r\n\r\n InventoryItem = \"INVI\", // 10001\r\n InventoryLocation = \"INVL\",\r\n InventoryReceive = \"INVR\",\r\n InventoryCustomer = \"INVC\",\r\n InventoryShip = \"INVS\",\r\n InventoryShipItem = \"INVSI\",\r\n InventoryHistory = \"INVH\",\r\n Inventory = \"INVT\",\r\n\r\n AMSVoyage = \"AMSV\", // 10011\r\n AMSMaster = \"AMSM\",\r\n AMSHouse = \"AMSH\",\r\n AMSUser = \"AMSU\",\r\n AMSBranch = \"AMBR\",\r\n AMSGroup = \"AMGR\",\r\n AMSBilling = \"AMBI\",\r\n AMSHistory = \"AMHI\",\r\n AMSC1History = \"AMC1\",\r\n\r\n ACIVoyage = \"ACIV\", // 10021\r\n ACIMaster = \"ACIM\",\r\n ACIUser = \"ACIU\",\r\n ACIUsageRpt = \"ACIR\",\r\n ACIManifest = \"ACIEM\",\r\n \r\n //sjcho 20210128 - use GInvo\r\n //public const string OtherInvoice: \"OINV\", // 10031\r\n //sjcho end\r\n //\r\n //public const string StorageInvoice: \"SINV\",\r\n\r\n ISF = \"ISFL\", // 10051\r\n ISFImporter = \"ISFI\",\r\n ISFUser = \"ISFU\",\r\n ISFBranch = \"ISFB\",\r\n ISFGroup = \"ISFG\",\r\n\r\n Query = \"QURY\",\r\n\r\n Protest = \"PROT\",\r\n\r\n\r\n // ABI related\r\n ABIWorkIn = \"ABWI\", // My ABI Transaction 메뉴로 사용함. (kskim)\r\n ABIAllList = \"ABAL\", // All ABI Transaction 메뉴로 사용함. (kskim)\r\n ABIWPHistory = \"ABWP\",\r\n\r\n FIRMSCode = \"FIRM\",\r\n ScheduleD = \"SCHD\",\r\n ScheduleK = \"SCHK\",\r\n\r\n UNLocation = \"UNLO\",\r\n ARCollection = \"ARCO\",\r\n\r\n EDI315Code = \"315C\",\r\n EDI310Code = \"310C\",\r\n SendBl2PartnerOcean = \"SB2PO\",\r\n SendBl2PartnerAir = \"SB2PA\",\r\n\r\n ExchangeRate = \"EXCH\",\r\n\r\n CommInvoice = \"CINV\",\r\n\r\n //[MapValue(\"EXTR\")]Extra: 40000,\r\n //[MapValue(\"SPCL\")]Special: 50000,\r\n\r\n PUInvoice = \"PINV\",\r\n\r\n AccountGeneral = \"AGEN\",\r\n\r\n // Fulfillment\r\n Fulfillment = \"FFM\", //170303 Security Control from FMS\r\n FfmOrderFulfilling = \"FOE\", //Fulfillment Shipping.\r\n FfmReceiving = \"FRCV\", //Fulfillment Receiving Invoicing. \r\n FfmStorage = \"FSTG\", //Fulfillment Storage Invoicing.\r\n FfmAll = \"FFMALL\", //Fulfillment RCV, FOE, FSTG.\r\n FfmCarrierLabel = \"FFMCRLBL\", //Fulfillment Carrier(UPS/USPS/FedEX) Lable files.\r\n // CRM\r\n Crm = \"CRM\", //170303\r\n CrmCommunication = \"CRMCM\",\r\n // CHB\r\n //public const string ChbEntry: \"ETRY\", \r\n\r\n LogisTask = \"TASK\",\r\n\r\n // DIS\r\n DisDocFile = \"DISDOC\", //++2016.05.24 by 유석(s.yoo) DIS 전송 Document File Preview 기능 지원.\r\n\r\n // iFMS Cloud\r\n OIHMyPims = \"OIHMP\", //++ 2017.02.02 by 신다원\r\n OEHMyPims = \"OEHMP\", //++ 2017.02.03 by 신다원\r\n\r\n OIMMyPims = \"OIMMP\", //추가 by 양재환 2017.02.06\r\n OEMMyPims = \"OEMMP\", //추가 by 양재환 2017.02.06\r\n\r\n OIPoPims = \"OIPO\", //추가 by 양재환 2017.02.02\r\n\r\n AIMMyPims = \"AIMMP\", //추가 by 양재환 2017.02.13\r\n AEMMyPims = \"AEMMP\", //추가 by 양재환 2017.02.13\r\n\r\n AIHMyPims = \"AIHMP\", //추가 by 양재환 2017.02.13\r\n AEHMyPims = \"AEHMP\", //추가 by 양재환 2017.02.13\r\n\r\n // PimsOceanBooking = \"POBOOK\", //추가 by 신다원 2017.02.16\r\n // PimsOceanVanning = \"POVANN\", //추가 by 신다원 2017.02.16\r\n\r\n // PimsAirBooking = \"PABOOK\", //추가 by 양재환 2017.03.03\r\n // PimsAirVanning = \"PAVANN\", //추가 by 양재환 2017.03.03\r\n\r\n // PimsOrder = \"PORDR\", //\r\n // PimsPartnerLogin = \"PPLGN\", //\r\n\r\n //170303begin\r\n CfsEdi = \"CFSED\", // Security Control\r\n CfsEdiTo = \"CFSEO\",\r\n CfsEdiFrom = \"CFSEI\",\r\n\r\n OiAgentEdi = \"OIAGE\", // OI - B/L From Partner\r\n AiAgentEdi = \"AIAGE\", // OI - B/L From Partner\r\n\r\n ChgBillCode = \"CNGBL\", // Utility - Change Billing Code\r\n CmpAddrPrint = \"CMPPR\", // Utillity - Company Address Label Printing\r\n\r\n //pt170306begin: SecurityCode already defined in Constants.SecurityCodeType\r\n //public const string SystemSetup: \"SYSET\",\r\n //public const string AdvancedSetup: \"ADSET\",\r\n //pt170306end\r\n //170303end\r\n\r\n // 2017.05.15 정우영 추가\r\n AIMRefNo = \"AIMRefNo\",\r\n AIMMawbNo = \"AIMMawbNo\",\r\n // 2017.05.15 정우영 추가 끝\r\n\r\n // 2017.05.19 정우영 추가\r\n OEMRefNo = \"OEMRefNo\",\r\n OEMMblNo = \"OEMMblNo\",\r\n // 2017.05.19 정우영 추가 끝\r\n\r\n OIMRefNo = \"OIMRefNo\",\r\n OIMMasterBlNo = \"OIMMasterBlNo\",\r\n\r\n AEMRefNo = \"AEMRefNo\",\r\n AEMMawbNo = \"AEMMawbNo\",\r\n\r\n //2017 07.12 정우영 추가\r\n OEContainer = \"OECN\",\r\n OEHPoNo = \"OEPO\",\r\n //2017.07.12 김형진 추가 \r\n AIContainer = \"AICN\",\r\n AIHPoNo = \"AIPO\",\r\n\r\n //2017.07.27 이태현 추가\r\n OITruckLoad = \"OITL\",\r\n\r\n\r\n OECBook = \"OECBK\", //\r\n OEJapanEdi = \"OENAC\", //\r\n AEEAirWayBill = \"AEEAW\", //\r\n\r\n SwitchToAci = \"TOACI\", //\r\n\r\n BatchRecog = \"BRECG\", //\r\n\r\n SystemSetup = \"SSETU\", //\r\n AdvancedSetup = \"ADSETU\", //\r\n ClientSetup = \"CLSETU\", //\r\n SuntekSetup = \"STSETU\", //\r\n SubscriberManager = \"SUBSM\", //\r\n ToolMemo = \"TMEMO\", //\r\n ToolBlock = \"TBLCK\", //\r\n ToolCancelBlock = \"TCBLK\", //\r\n ToolOpClose = \"TOPCL\", //\r\n ToolCancelOpClose = \"TCOPC\", //\r\n ToolRecog = \"TRECG\", //\r\n ToolCancelRecog = \"TCREC\", //\r\n\r\n // Home\r\n RptAgentBalance = \"RAGTB\",\r\n RptCustBalance = \"RCSTB\",\r\n //RptVendBalance: \"RVENB\",\r\n//\r\n //#region Reports \r\n\r\n RptOiShipment = \"ROISH\",\r\n RptOiInlandTransport = \"ROIIT\",\r\n RptOiANLog = \"ROIAL\",\r\n RptOiPendingCargo = \"ROIPC\",\r\n RptOiRlsHistory = \"ROIRH\",\r\n\r\n RptOeShipment = \"ROESH\",\r\n RptOeBrokerage = \"ROEBR\",\r\n\r\n RptAiPreAlert = \"RAIPA\",\r\n RptAiEstProfit = \"RAIEP\",\r\n\r\n RptAeEstProfit = \"RAEEP\",\r\n\r\n RptAmsUsage = \"RAMUS\",\r\n RptAmsContainerTrack = \"RAMCT\",\r\n RptAmsLifting = \"RAMLF\",\r\n RptTotalAmsLifting = \"RAMTL\",\r\n\r\n RptWhChargeItemSummary = \"RWHCS\",\r\n RptWhActivitySummary = \"RWHAS\",\r\n RptWhActivityDetail = \"RWHAD\",\r\n\r\n RptDeferred = \"RDEFD\",\r\n\r\n USDA = \"USDA\",\r\n\r\n // Accounting\r\n RptJournalVoucher = \"RVOCH\",\r\n AcctInfo = \"ACTIF\", // Add 2020-07-10 jhchoi : Ocean Import > P Column > \"Invoice Bill Cr/Db Note\"\r\n\r\n // OP Report\r\n RptEstProfit = \"RESTP\",\r\n RptGrossProfit = \"RGRSP\",\r\n RptVendorCost = \"RVECO\",\r\n RptExpense = \"REXCO\",\r\n RptVolume = \"RVOLM\",\r\n RptProfitBySalesman = \"RPBSM\",\r\n RptCustomerActivity = \"RCACT\",\r\n RptDutyPendings = \"RDPND\",\r\n RptIssueReady = \"RIRDY\",\r\n RptSpecial = \"RSPEC\",\r\n RptOpPerfom = \"ROPPE\",\r\n RptBranchPerform = \"RBRPE\",\r\n\r\n //#endregion\r\n\r\n // Hybrid\r\n HybridInvoice = \"HYINVO\",\r\n HybridBill = \"HYBILL\",\r\n//\r\n //#region NavMenu \r\n\r\n RptJournalBook = \"RPJB\",\r\n RptISFUsage = \"RPISFU\",\r\n RptMasterInvoice = \"RPMINVO\",\r\n RptMasterArrivalNotice = \"RPMAN\",\r\n RptTSASecurity = \"RPTSAS\",\r\n RptTSAUnknown = \"RPTSAU\",\r\n RptTransfer = \"RPTRA\",\r\n RptArrivalNotice = \"RPAN\",\r\n RptEmptyCntrRtn = \"EMPTYCR\",\r\n RptMAuthEntry = \"RPMAE\",\r\n RptUSDA = \"RPUSDA\",\r\n RptReleaseOrder = \"RPRO\",\r\n RptLienNotice = \"RPLIEN\",\r\n RptPOD = \"RPPOD\",\r\n RptPickup = \"RPPIC\",\r\n RptStraightBL = \"RPSTBL\",\r\n RptPickupGermany = \"RPPICG\",\r\n RptPickupItaly = \"RPPICI\",\r\n RptPrePickup = \"RPPPIC\",\r\n RptDO = \"RPDO\",\r\n RptIT = \"RPIT\",\r\n RptOIHouseBl = \"RPOIH\",\r\n RptAWB = \"RPAWB\",\r\n RptOOHouseBL = \"RPOOH\",\r\n RptAO_CargoManifest = \"RPAOCM\",\r\n RptOO_CargoManifest = \"RPOOCM\",\r\n RptCorrection = \"RPCORR\",\r\n RptAES = \"RPAES\",\r\n RptExDec = \"RPEXD\",\r\n RptBankDraft = \"RPBD\",\r\n RptOriginCertificate = \"RPOC\",\r\n RptShippingAdvice = \"RPSA\",\r\n RptShippingInstruction = \"RPSI\",\r\n RptDocumentPackage = \"RPDOPA\",\r\n RptAging = \"RPAGI\",\r\n RptAgentPackage = \"RPAGPA\",\r\n RptLabel = \"RPLAB\",\r\n RptLabelAir = \"RPLABA\",\r\n RptLabelPouch = \"RPLABP\",\r\n RptLabelBook = \"RPLABB\",\r\n RptLabelFolder = \"RPLABELF\", \r\n RptMasterUSDA = \"RPMUSDA\",\r\n RptDeliveryOrderShort = \"RPDOS\",\r\n RptPendingList = \"RPPL\",\r\n RptC_ExDec = \"RPCEXD\",\r\n RptWhseLabelOher = \"WRLABEL\",\r\n RptMBatchHouseBL = \"RPMBHBL\",\r\n RptMBatchAWB = \"RPMBAWB\",\r\n RptHBatchAWB = \"RPHBAWB\",\r\n RptPIMS_EDI_OI = \"RPPEOI\",\r\n RptPIMS_EDI_OE = \"RPPEOE\",\r\n RptPIMS_EDI_AI = \"RPPEAI\",\r\n RptPIMS_EDI_AE = \"RPPEAE\",\r\n RptACIImport = \"RPACI\",\r\n RptAms2OI = \"RPAMSOI\",\r\n UpdateCheckApproved = \"UCAPP\",\r\n AutoBillingInvoice = \"ABINV\",\r\n PostInvACCT2000 = \"PINA\",\r\n PostDepoACCT2000 = \"PDEA\",\r\n PostClearDepoACCT2000 = \"PCDA\",\r\n PostCheckACCT2000 = \"PCHA\",\r\n PostClearCheckACCT2000 = \"PCCA\",\r\n AutoBillingStorage = \"ABSTR\",\r\n ARPEDI = \"ARPE\",\r\n RptIPI = \"RPIPI\",\r\n RptANandROrder = \"RPANRO\",\r\n RptCargoAvailableNotice = \"RPCANO\",\r\n RptCancelIT = \"RPCIT\",\r\n RptUploadPOList = \"RPUPO\",\r\n RptPOItemList = \"RPPOIL\",\r\n RptPOendingBalance = \"RPPOB\",\r\n RptPOList = \"RPPOL\",\r\n RptInvoiceS = \"RPINVOS\",\r\n RptCrDbBatch = \"RPCRB\",\r\n RptPreliminaryClaim = \"RPPREC\",\r\n UpdateCRDBshare = \"UCRS\",\r\n EDIascX12_214 = \"EDIAS\",\r\n EDIuscom = \"EDIUS\",\r\n RptDGdoc = \"RPDGD\",\r\n RptBankReconHistory = \"RPBRH\",\r\n RptDailyBankBalance = \"RPDBB\",\r\n \r\n //#endregion\r\n\r\n RptDevann = \"RPDEV\",\r\n RptLoadPlan = \"RPLDP\",\r\n RptCommercialInvoice = \"RPCOINV\",\r\n RptPackingList = \"RPPACKL\",\r\n\r\n //\r\n CompanyContact = \"COMCT\",\r\n CompanyGroup = \"COMGR\",\r\n\r\n //\r\n SecurityGroup = \"SECGR\",\r\n SecurityControl = \"SECCT\",\r\n\r\n //\r\n //AdjustJournalEntry: \"ADJE\",\r\n\r\n FlexiTank = \"FLXTNK\",\r\n\r\n // ----------------------------------------------\r\n // Additionally added properties in cloud version\r\n // ----------------------------------------------\r\n //\r\n\r\n Department = \"DEPT\", // 2022-08-22 jhchoi : Add iFMS Cloud\r\n\r\n OpInvoice = \"OPINVOICE\", // OP > Invoice \r\n OpBill = \"OPBILL\", // OP > Bill\r\n OpCrDb = \"OPCRDB\", // OP > CrDb\r\n\r\n OtQuotation = \"OTQUOT\", //2023-12-12 eytak: Add iFMS Cloud > Other Shipment - Quotation\r\n MyEvent = \"MYEVT\", // 2024-10-16 jhchoi : Add My Event\r\n BusienssIntell = \"BINTEL\",\r\n}\r\n\r\nexport function getOpConstant(jobName: string, opType: string) {\r\n let opName: string = jobName.substring(0, 2);\r\n if(['OI', 'OE', 'AI', 'AE', 'OT', 'WH'].indexOf(opName) < 0)\r\n opName = opType.toUpperCase();\r\n switch(opName) {\r\n case \"OI\": return constants.operations.oceanImport;\r\n case \"OE\": return constants.operations.oceanExport;\r\n case \"AI\": return constants.operations.airImport;\r\n case \"AE\": return constants.operations.airExport;\r\n case \"OT\": return constants.operations.otherShipment;\r\n case \"WH\": return constants.operations.warehousing;\r\n case \"AC\": return constants.operations.accounting;\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\nexport function getOpTypeConstant(jobName:string, opType?:string) {\r\n let opName: string = jobName.substring(0, 2);\r\n if(['OI', 'OE', 'AI', 'AE', 'OT', 'WH'].indexOf(opName) < 0)\r\n opName = opType?.toUpperCase() ?? '';\r\n switch(opName) {\r\n case \"OI\": return constants.opTypes.oceanImport;\r\n case \"OE\": return constants.opTypes.oceanExport;\r\n case \"AI\": return constants.opTypes.airImport;\r\n case \"AE\": return constants.opTypes.airExport;\r\n case \"OT\": return constants.opTypes.otherShipment;\r\n case \"WH\": return constants.opTypes.warehousing;\r\n case \"AC\": return constants.opTypes.accounting;\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\nexport function getJobNameFromInvBillCrDbJobType(fType:string): JobNames {\r\n switch(fType) {\r\n case \"OIH\": return JobNames.OIHbl;\r\n case \"OIM\": return JobNames.OIMbl;\r\n case \"OOH\": return JobNames.OEHbl;\r\n case \"OOM\": return JobNames.OEMbl;\r\n case \"AIH\": return JobNames.AIHbl;\r\n case \"AIM\": return JobNames.AIMbl;\r\n case \"AOH\": return JobNames.AEHbl;\r\n case \"AOM\": return JobNames.AEMbl;\r\n case \"GEN\":\r\n case \"OTH\": \r\n return JobNames.OtherOP;\r\n case \"WHR\": return JobNames.WHRcv;\r\n case \"WRE\": return JobNames.WHRcv;\r\n case \"WSH\": return JobNames.WHShip;\r\n case \"WHS\": return JobNames.WHShip; // Typo??\r\n case \"STO\": return JobNames.WHRcpt;\r\n default: return JobNames.None;\r\n }\r\n}\r\n\r\nexport function isMasterJob(jobName: JobNames|string, includeOP: boolean = false ) {\r\n let ret = false;\r\n switch(jobName) {\r\n case JobNames.OIMbl:\r\n case JobNames.OEMbl:\r\n case JobNames.AIMbl:\r\n case JobNames.AEMbl:\r\n ret = true;\r\n break;\r\n case JobNames.OtherOP:\r\n ret = includeOP;\r\n break;\r\n }\r\n return ret;\r\n}\r\n\r\n//\r\nexport function isHouseJob(jobName: JobNames|string): boolean {\r\n return [JobNames.OIHbl, JobNames.OEHbl, JobNames.AIHbl, JobNames.AEHbl].indexOf(jobName as JobNames) >= 0;\r\n}\r\n\r\nexport function getOpByjobName(jobName: string) {\r\n switch (jobName) {\r\n case JobNames.OIMbl: case JobNames.OIHbl: return constants.opTypes.oceanImport;\r\n case JobNames.OEMbl: case JobNames.OEHbl: return constants.opTypes.oceanExport;\r\n case JobNames.AIHbl: case JobNames.AIMbl: return constants.opTypes.airImport;\r\n case JobNames.AEHbl: case JobNames.AEMbl: return constants.opTypes.airExport;\r\n case JobNames.OtherOP: return constants.opTypes.otherShipment;\r\n case JobNames.WHRcv: case JobNames.WHShip: return constants.opTypes.warehousing;\r\n case JobNames.Company: return constants.opTypes.customer;\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\nexport function getOpByName(jobName: string) {\r\n switch(jobName) {\r\n case constants.opTypes.oceanImport: return \"OI\";\r\n case constants.opTypes.oceanExport: return \"OE\";\r\n case constants.opTypes.airImport: return \"AI\";\r\n case constants.opTypes.airExport: return \"AE\";\r\n case constants.opTypes.otherShipment: return \"OT\";\r\n case constants.opTypes.warehousing: return \"WH\";\r\n case constants.opTypes.accounting: return \"AC\";\r\n case constants.opTypes.myEvent: return \"OI\";\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\nexport function getJobNameByTbName(tbName:string): JobNames {\r\n switch(tbName.toLowerCase()) {\r\n case 't_oimmain': return JobNames.OIMbl;\r\n case 't_oihmain': return JobNames.OIHbl;\r\n case 't_oommain': return JobNames.OEMbl;\r\n case 't_oohmain': return JobNames.OEHbl;\r\n case 't_aimmain': return JobNames.AIMbl;\r\n case 't_aihmain': return JobNames.AIHbl;\r\n case 't_aommain': return JobNames.AEMbl;\r\n case 't_aohmain': return JobNames.AEHbl;\r\n case 't_genmain': return JobNames.OtherOP;\r\n case 't_wreceive': \r\n case 't_wreceivehd': \r\n return JobNames.WHRcv;\r\n case 't_wshiphd': return JobNames.WHShip;\r\n case 't_whperiod': return JobNames.Warehouse;\r\n case 't_storage': return JobNames.Inventory;\r\n case 't_company': return JobNames.Company;\r\n case 'v_arcollect': return JobNames.CustPaymentMemo; \r\n case 't_oohquotation': return JobNames.SeaQuotation;\r\n default:\r\n // Not source of invoice, bill, crdb\r\n return JobNames.None;\r\n }\r\n}\r\nexport function getTbNameByJobName(jobName: string) {\r\n switch(jobName) {\r\n case JobNames.OIMbl: return 'T_OIMMAIN';\r\n case JobNames.OEMbl: return 'T_OOMMAIN';\r\n case JobNames.OIHbl: return 'T_OIHMAIN';\r\n\r\n case JobNames.OEBook: \r\n case JobNames.OEHbl: return 'T_OOHMAIN';\r\n\r\n case JobNames.AIMbl: return 'T_AIMMAIN';\r\n case JobNames.AEMbl: return 'T_AOMMAIN';\r\n case JobNames.AIHbl: return 'T_AIHMAIN';\r\n case JobNames.AEHbl: return 'T_AOHMAIN';\r\n case JobNames.OtherOP: return 'T_GENMAIN';\r\n case JobNames.WHRcv: return 'T_WRECEIVEHD';\r\n case JobNames.WHShip: return 'T_WSHIPHD';\r\n case JobNames.Company: return 'T_COMPANY';\r\n case JobNames.AMSHouse: return 'T_AMSHOUSE';\r\n case JobNames.AMSMaster: return 'T_AMSMASTER';\r\n case JobNames.ACIManifest: return 'ACIHOUSE';\r\n case JobNames.ISF: return 'T_ISFHEADER';\r\n case JobNames.CommInvoice: return 'T_COMM';\r\n case JobNames.FfmOrderFulfilling: return 'FFMREQUEST';\r\n case JobNames.FfmReceiving: return 'FFMRECEIVING';\r\n case JobNames.OITruckLoad: return 'T_TLOADHD';\r\n\r\n case JobNames.InventoryItem: \r\n case JobNames.WHRcpt: \r\n case JobNames.WHRcptPanP: return 'T_INVENHD';\r\n\r\n case JobNames.SellingRate: \r\n case JobNames.OceanRate: return 'T_AOTHERINFO';\r\n\r\n case JobNames.Invoice: \r\n case JobNames.InvoAdj: \r\n case JobNames.GInvo: \r\n case JobNames.WHStorageInv: \r\n case JobNames.AutoBillingStorage: \r\n case JobNames.AutoBillingInvoice: return 'T_INVOHD';\r\n\r\n case JobNames.CrDb: \r\n case JobNames.CrDbAdj: return 'T_CRDBHD';\r\n\r\n case JobNames.Bill: \r\n case JobNames.APayAdj: \r\n case JobNames.GBill: return 'T_APHD';\r\n\r\n case JobNames.BillPayment: \r\n case JobNames.CustPayment: \r\n case JobNames.AgntPayment: \r\n case JobNames.CheckDeposit: \r\n case JobNames.UndoDeposit: \r\n case JobNames.CCPayment: \r\n case JobNames.Settle: return 'T_DEPOHD';\r\n\r\n case JobNames.BankTransfer: return 'T_BANKTRANSFER';\r\n case JobNames.BankRecActivity: return 'T_BANKRECON';\r\n case JobNames.OIContainer: return 'T_OIMCONTAINER';\r\n case JobNames.OEContainer: return 'T_OOMCONTAINER';\r\n case JobNames.AMSVoyage: return 'T_AMSVOYAGE';\r\n\r\n case JobNames.AMSHistory: \r\n case JobNames.AMSC1History: return 'T_AMSHISTORY';\r\n\r\n case JobNames.SeaQuotation: return 'T_OOHQUOTATION';\r\n case JobNames.AirQuotation: return 'T_AOHQUOTATION';\r\n case JobNames.OtQuotation: return 'T_GENQUOTATION';\r\n case JobNames.SlipJournal: return 'T_SLIPHD';\r\n case JobNames.CustPaymentMemo: return 'V_ARCOLLECT';\r\n\r\n case JobNames.OIMPims: \r\n case JobNames.OEMPims: \r\n case JobNames.AIMPims: \r\n case JobNames.AEMPims: return 'BOOKING';\r\n\r\n case JobNames.OIHPims: \r\n case JobNames.OEHPims: \r\n case JobNames.AIHPims: \r\n case JobNames.AEHPims: return 'VANNING';\r\n\r\n case JobNames.OIMMyPims: \r\n case JobNames.OEMMyPims: \r\n case JobNames.AIMMyPims: \r\n case JobNames.AEMMyPims: return 'BOOKING';\r\n\r\n case JobNames.OIHMyPims: \r\n case JobNames.OEHMyPims: \r\n case JobNames.AIHMyPims: \r\n case JobNames.AEHMyPims: return 'VANNING';\r\n\r\n case JobNames.OiSoPims: \r\n case JobNames.OeSoPims: \r\n case JobNames.AiSoPims: \r\n case JobNames.AeSoPims: return 'PO';\r\n\r\n // case JobNames.PimsCustomer: return 'CUSTOMER';\r\n // case JobNames.PimsUser: return 'USER';\r\n case JobNames.Bank: return 'T_CODEBANK';\r\n case JobNames.BillingCode: return 'T_NCODECHARGE';\r\n case JobNames.GLNo: return 'T_CODEGLNO';\r\n case JobNames.CreditCardSetup: return 'T_CREDITCARD';\r\n case JobNames.SalesTaxReturn: return 'T_TAXRETURNHD';\r\n case JobNames.PayrollSummary: return 'T_PAYROLL';\r\n case JobNames.Payroll2: return 'T_PAYROLL2';\r\n case JobNames.BatchMemo: return 'T_BATCHMAINHD';\r\n\r\n case JobNames.PrepaidExpenseAdjustment: \r\n case JobNames.DepreciationAdjustment: \r\n case JobNames.AmortizationAdjustment: \r\n case JobNames.BadDebtExpense: return 'T_ADSLIPHD';\r\n\r\n case JobNames.Scac: return 'T_CODESCAC';\r\n \r\n default: return '';\r\n }\r\n}\r\n\r\nexport function getMasterJob(subJob:string, dbType:string = 'FMS3') {\r\n let masterJob = subJob;\r\n if(dbType === 'FMS3') {\r\n switch(subJob) {\r\n case JobNames.OIHbl: masterJob = JobNames.OIMbl; break;\r\n case JobNames.OEHbl: masterJob = JobNames.OEMbl; break;\r\n case JobNames.AIHbl: masterJob = JobNames.AIMbl; break;\r\n case JobNames.AEHbl: masterJob = JobNames.AEMbl; break;\r\n }\r\n }\r\n return masterJob;\r\n}\r\n\r\n/**\r\n * pt220912\r\n * @param job \r\n * @returns \r\n */\r\nexport function isAirJob(job: JobNames|string) {\r\n return [JobNames.AIMbl, JobNames.AIHbl, JobNames.AEMbl, JobNames.AEHbl].indexOf(job as JobNames) >= 0;\r\n}\r\n\r\nexport function isExportJob(job: JobNames|string) {\r\n return [JobNames.OEMbl, JobNames.OEHbl, JobNames.AEMbl, JobNames.AEHbl].indexOf(job as JobNames) >= 0;\r\n}\r\n\r\nexport function getJobNameFromInvBillCrdbTbName(tbName: string, acctTbName: string){\r\n switch(tbName){\r\n case \"T_INVOHD\":\r\n if(acctTbName === \"T_STORAGE\") \r\n return JobNames.WHStorageInv;\r\n else if (acctTbName === \"\")\r\n return JobNames.GInvo;\r\n else \r\n return JobNames.Invoice;\r\n case \"T_APHD\": \r\n if(acctTbName)\r\n return JobNames.Bill;\r\n else \r\n return JobNames.GBill;\r\n case \"T_CRDBHD\": return JobNames.CrDb; \r\n default: return JobNames.None;\r\n } \r\n}\r\n\r\nexport function getOpTypeFromInvBillCrdbTbName(tbName: string){\r\n switch(tbName){\r\n case \"T_WHPERIOD\":\r\n case \"T_WRECEIVE\":\r\n case \"T_WSHIPHD\":\r\n case \"T_WRECEIVEHD\":\r\n return constants.opTypes.warehousing;\r\n default: \r\n return constants.opTypes.accounting;\r\n }\r\n}\r\n","/**\r\n * Revision History\r\n * \r\n * 211124 ptkim Create\r\n */\r\nimport { SQLField } from \"./SQLInfo\";\r\n\r\nexport interface IDBMappingInfo {\r\n field: string,\r\n table: string,\r\n tbName?: string,\r\n tbId?: string,\r\n type?: number,\r\n c1?: string,\r\n name?: string\r\n}\r\nexport class DBMappingInfo {\r\n dbField: string = '';\r\n dbTable: string = '';\r\n dbParams: SQLField[] = [];\r\n\r\n constructor(init?: IDBMappingInfo) {\r\n //Object.apply(this, init);\r\n if(init) {\r\n this.dbField = init.field;\r\n this.dbTable = init.table;\r\n\r\n if(init.name) {\r\n this.dbParams.push(new SQLField({ fieldName: \"F_Name\", value: init.name }));\r\n } else if(init.tbName && init.tbId) {\r\n this.dbParams.push(\r\n new SQLField({fieldName: \"F_TBName\", value: init.tbName }),\r\n new SQLField({fieldName: \"F_TBId\", value: init.tbId})\r\n );\r\n\r\n if(init.type !== undefined)\r\n this.dbParams.push(new SQLField({ fieldName: \"F_Type\", value: init.type }));\r\n if(init.c1)\r\n this.dbParams.push(new SQLField({ fieldName: \"F_C1\", value: init.c1 }));\r\n }\r\n \r\n }\r\n }\r\n}","/**\r\n * Revision History\r\n * \r\n * 11/09/2021 ptkim Add PasswordRenderer\r\n */\r\nimport numeral from 'numeral';\r\nimport React from 'react';\r\n\r\nimport CheckBox from '../ui/CheckBox';\r\nimport CheckBoxIcon from '../ui/CheckBoxIcon';\r\nimport {formatDate, formatDateTime} from '../dateUtils';\r\n\r\n\r\nimport {getDecimal, stringsEqualIgnoreCase} from '../util';\r\nimport PrimaryInverseButton from \"../ui/PrimaryInverseButton\";\r\nimport useSuntekSettings from '../hooks/useSuntekSettings';\r\n\r\ninterface IndexByType {\r\n [key: string]: number,\r\n};\r\n\r\nfunction NumberedIndicatorRendererImpl({row}:any) {\r\n return
{row.index + 1}
;\r\n}\r\n\r\nfunction IndicatorRendererImpl() {\r\n return
 
;\r\n}\r\n\r\nfunction TableIndicatorRendererImpl({rowIndex}:any) {\r\n return
{rowIndex + 1}
;\r\n}\r\n\r\nfunction TableCheckBoxRendererImpl({ rowIndex, columnId, value, disabled, onChangeFunc }: any) {\r\n return (\r\n
\r\n onChangeFunc(chk)} />\r\n
\r\n );\r\n}\r\n\r\nfunction TableNumberRendererImpl({ rowIndex, columnId, value, disabled, align, decimal, showZero }: any) {\r\n const formatNumber = (value: number | null): string | null => {\r\n if (value === null) return null;\r\n\r\n const format = `0,0.${'0'.repeat(decimal)}`;\r\n const formattedValue = numeral(value).format(format);\r\n\r\n return (!showZero && Number(formattedValue) === 0 && disabled) ? null : formattedValue;\r\n };\r\n\r\n const formattedValue = formatNumber(value);\r\n\r\n let className = `ifms-table-align-${align} ifms-table-number`;\r\n if (disabled) {\r\n className += \" table-cell-disabled\"\r\n }\r\n\r\n return (\r\n
\r\n {formattedValue}\r\n
\r\n );\r\n}\r\n\r\nfunction TableTextRendererImpl({ rowIndex, columnId, value, disabled, align, onLabelClick }: any) {\r\n let className = `ifms-table-align-${align}`;\r\n if (disabled) {\r\n className += \" table-cell-disabled\"\r\n }\r\n\r\n const clickProps = onLabelClick\r\n ? {\r\n onClick: onLabelClick,\r\n style: {\r\n cursor: 'pointer',\r\n color: 'blue',\r\n fontWeight: 600,\r\n }\r\n }\r\n : {};\r\n\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n}\r\n\r\nfunction TableDateRendererImpl({ rowIndex, columnId, value, disabled, dateType }: any) {\r\n const suntekSettings = useSuntekSettings();\r\n const dateFormat = suntekSettings.company?.dateFormat.toUpperCase() || '';\r\n\r\n let className = 'ifms-table-align-center';\r\n if (disabled) {\r\n className += \" table-cell-disabled\"\r\n }\r\n\r\n let renderValue = null;\r\n if (dateType === 'dateonly') {\r\n renderValue = formatDate(value, dateFormat);\r\n className += \" ifms-table-date\"\r\n }\r\n else if (dateType === 'datetime') {\r\n renderValue = formatDateTime(value, dateFormat, false, true);\r\n className += \" ifms-table-datetime\"\r\n }\r\n else if (dateType === 'datetimesec') {\r\n renderValue = formatDateTime(value, dateFormat, true, true);\r\n className += \" ifms-table-datetimesec\"\r\n }\r\n\r\n return (\r\n \r\n {renderValue}\r\n \r\n );\r\n}\r\n\r\nfunction TextRendererImpl({row, cell}:any) {\r\n return
{cell.value}
;\r\n}\r\n\r\nfunction TextAlignLeftRendererImpl({row, cell, accountName}:any) {\r\n const displayValue = accountName ? accountName : cell.value;\r\n return (\r\n
\r\n {displayValue}\r\n
\r\n );\r\n}\r\n\r\nfunction TextAlignLeftWithBordersRendererImpl({cell}:any) {\r\n return (\r\n
\r\n {cell.value}\r\n
\r\n );\r\n}\r\n\r\nfunction TextAlignLeftWithAddressTooltipRendererImpl({ cell }: any) {\r\n let tempAddressText = '';\r\n switch (cell.column.Header) {\r\n case 'Shipper':\r\n //Air house = original.shipper / Ocean house = original.sName\r\n tempAddressText = cell.row.original.sName ? cell.row.original.sName : cell.row.original.shipper; \r\n break;\r\n case 'Consignee':\r\n //Air house = original.consignee / Ocean house = original.cName\r\n tempAddressText = cell.row.original.cName ? cell.row.original.cName : cell.row.original.consignee;\r\n break;\r\n case 'Notify':\r\n //Air house = original.notify / Ocean house = original.nName\r\n tempAddressText = cell.row.original.nName ? cell.row.original.nName : cell.row.original.notify;\r\n break;\r\n case 'Customs Broker': //OEH\r\n tempAddressText = cell.row.original.bName;\r\n break;\r\n case 'P/U Cargo Location': //OE Booking\r\n tempAddressText = cell.row.original.puCargoLocation;\r\n break;\r\n case 'Trucking Vendor': //OE Booking\r\n tempAddressText = cell.row.original.truckingCompany;\r\n break;\r\n }\r\n return
{cell.value}
;\r\n}\r\n\r\nfunction TextAlignRightRendererImpl({cell, row}:any) {\r\n return (\r\n
{cell.value}
\r\n );\r\n}\r\n\r\nfunction CheckboxRendererImpl({cell}:any) {\r\n return
\r\n \r\n
;\r\n}\r\n\r\nfunction CheckboxIconRendererImpl({cell}:any) {\r\n return
\r\n \r\n
;\r\n}\r\n\r\nfunction NullableCheckboxIconRendererImpl({row, cell}:any) {\r\n if (cell && cell.value) {\r\n return
\r\n \r\n
; \r\n }\r\n\r\n return
;\r\n}\r\n\r\nfunction NullableCheckboxRedIconRendererImpl({cell}:any) {\r\n if (cell && cell.value) {\r\n return
\r\n \r\n
; \r\n }\r\n\r\n return
;\r\n}\r\n\r\nfunction NullableDangerCheckboxIconRendererImpl({cell}:any) {\r\n if (cell && cell.value) {\r\n return
\r\n \r\n
; \r\n }\r\n\r\n return
;\r\n}\r\n\r\nfunction NullableBlackCheckboxIconRendererImpl({cell}:any) {\r\n if (cell && cell.value) {\r\n return
\r\n \r\n
; \r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction DateRendererImpl({cell, row}:any) {\r\nconst suntekSettings = useSuntekSettings();\r\n return (\r\n
\r\n {formatDate(cell.value, suntekSettings.company?.dateFormat.toUpperCase() || '')}\r\n
\r\n );\r\n}\r\n\r\nfunction DateTimeRendererImpl({cell, format}:any) {\r\n const suntekSettings = useSuntekSettings();\r\n return (\r\n
\r\n {formatDateTime(cell.value, suntekSettings.company?.dateFormat.toUpperCase() || '', false, true)}\r\n
\r\n );\r\n}\r\n\r\nfunction DateTimeIncludeSecRendererImpl({cell, format}:any) {\r\n const suntekSettings = useSuntekSettings();\r\n return (\r\n
\r\n {formatDateTime(cell.value, suntekSettings.company?.dateFormat.toUpperCase() || '', true, true)}\r\n
\r\n );\r\n}\r\n\r\nfunction CurrencyRendererImpl({data, row, cell}:any) {\r\n const value = cell.value ? cell.value.currencyCode : '';\r\n return (\r\n
\r\n {value}\r\n
\r\n );\r\n}\r\n\r\nfunction CurrencyAmountRendererImpl({currencyAccessor, data, row, cell}:any) {\r\n const currency = currencyAccessor(data[row.index]);\r\n let amount = '';\r\n const cellValue = cell.value;\r\n const decimals = getDecimal(currency);\r\n if (cellValue !== null && cellValue !== undefined && cellValue !== '') {\r\n const format = `0,0.${'0'.repeat(decimals)}`;\r\n amount = numeral(cellValue.toFixed(decimals)).format(format);\r\n }\r\n\r\n return (\r\n
\r\n {amount}\r\n {/* */}\r\n
\r\n );\r\n}\r\n\r\n// 22.12.27 hykim - 정수의 자리 구분이 필요 없는 경우를 추가하기 위해 useComma를 추가함\r\n// function FloatRendererImpl({decimals = 2, cell}:any) {\r\nfunction FloatRendererImpl({useComma = true, decimals = 2, disabled, row, cell}:any) {\r\n let amount = '';\r\n let formattedNumber = '';\r\n const cellValue = cell.value;\r\n if (cellValue !== null && cellValue !== undefined && cellValue !== '') {\r\n // const format = `'0,0'.${'0'.repeat(decimals)}`;\r\n const format = `${useComma ? '0,0' : '0'}.${'0'.repeat(decimals)}`;\r\n formattedNumber = new Intl.NumberFormat('en-US', { minimumFractionDigits: decimals, maximumFractionDigits: decimals, useGrouping: useComma }).format(cellValue);\r\n amount = numeral(cellValue).format(format);\r\n }\r\n let className = \"ifms-table-align-right ifms-table-float\"\r\n if(disabled) className += \" table-cell-disabled\"\r\n return (\r\n
{amount === 'NaN' ? formattedNumber : amount}
\r\n );\r\n}\r\n\r\nfunction FloatCurRendererImpl({row, cell, useComma = true, currency = 'USD'}:any) {\r\n let amount = '';\r\n let formattedNumber = '';\r\n const decimals = getDecimal(currency);\r\n const cellValue = cell.value;\r\n if (cellValue !== null && cellValue !== undefined && cellValue !== '') {\r\n const format = `${useComma ? '0,0' : '0'}.${'0'.repeat(decimals)}`;\r\n formattedNumber = new Intl.NumberFormat('en-US', { minimumFractionDigits: decimals, maximumFractionDigits: decimals, useGrouping: useComma }).format(cellValue);\r\n amount = numeral(cellValue).format(format);\r\n }\r\n return (\r\n
{amount === 'NaN' ? formattedNumber : amount}
\r\n );\r\n}\r\n\r\nfunction FloatWithBorderRendererImpl({decimals = 2, cell}:any) {\r\n let amount = '';\r\n let formattedNumber = '';\r\n const cellValue = cell.value;\r\n if (cellValue !== null && cellValue !== undefined && cellValue !== '') {\r\n const format = `0,0.${'0'.repeat(decimals)}`;\r\n formattedNumber = new Intl.NumberFormat('en-US', { minimumFractionDigits: decimals, maximumFractionDigits: decimals }).format(cellValue);\r\n amount = numeral(cellValue).format(format);\r\n }\r\n return (\r\n
{amount === 'NaN' ? formattedNumber : amount}
\r\n );\r\n}\r\n\r\nfunction BlueTextRendererImpl({cell, tooltip = 'Click for Detail', bold = true, onClick}:any) {\r\n // return {cell.value}\r\n return {cell.value}\r\n}\r\n\r\n//\r\nfunction PasswordRendererImpl({cell}: any) {\r\n return
{'*'.repeat(cell.value.length)}
;\r\n}\r\n\r\nexport const NumberedIndicatorRenderer = React.memo(NumberedIndicatorRendererImpl);\r\nexport const IndicatorRenderer = React.memo(IndicatorRendererImpl);\r\nexport const TextRenderer = React.memo(TextRendererImpl);\r\nexport const TableTextRenderer = React.memo(TableTextRendererImpl);\r\nexport const TableDateRenderer = React.memo(TableDateRendererImpl);\r\nexport const TableNumberRenderer = React.memo(TableNumberRendererImpl)\r\nexport const TableCheckBoxRenderer = React.memo(TableCheckBoxRendererImpl)\r\nexport const TableIndicatorRenderer = React.memo(TableIndicatorRendererImpl)\r\nexport const CheckboxRenderer = React.memo(CheckboxRendererImpl);\r\nexport const CheckboxIconRenderer = React.memo(CheckboxIconRendererImpl);\r\nexport const NullableCheckboxIconRenderer = React.memo(NullableCheckboxIconRendererImpl);\r\nexport const NullableDangerCheckboxIconRenderer = React.memo(NullableDangerCheckboxIconRendererImpl);\r\nexport const NullableBlackCheckboxIconRenderer = React.memo(NullableBlackCheckboxIconRendererImpl);\r\nexport const DateRenderer = React.memo(DateRendererImpl);\r\nexport const DateTimeRenderer = React.memo(DateTimeRendererImpl);\r\nexport const DateTimeIncludeSecRenderer = React.memo(DateTimeIncludeSecRendererImpl);\r\nexport const CurrencyRenderer = React.memo(CurrencyRendererImpl);\r\nexport const TextAlignLeftRenderer = React.memo(TextAlignLeftRendererImpl);\r\nexport const TextAlignLeftWithBordersRenderer = React.memo(TextAlignLeftWithBordersRendererImpl);\r\nexport const TextAlignRightRenderer = React.memo(TextAlignRightRendererImpl);\r\nexport const CurrencyAmountRenderer = React.memo(CurrencyAmountRendererImpl);\r\nexport const TextAlignLeftWithAddressTooltipRenderer = React.memo(TextAlignLeftWithAddressTooltipRendererImpl);\r\nexport const FloatRenderer = React.memo(FloatRendererImpl);\r\nexport const FloatCurRenderer = React.memo(FloatCurRendererImpl);\r\nexport const FloatWithBorderRenderer = React.memo(FloatWithBorderRendererImpl);\r\nexport const PasswordRenderer = React.memo(PasswordRendererImpl); //\r\nexport const BlueTextRenderer = React.memo(BlueTextRendererImpl); //\r\nexport const NullableCheckboxRedIconRenderer = React.memo(NullableCheckboxRedIconRendererImpl);\r\n","\r\nexport class SecurityGrant {\r\n id: number = 0;\r\n securityGroupId: number = 0;\r\n securityTaskId: number = 0;\r\n securityTaskCode: string = '';\r\n grantAdd: boolean|null = null;\r\n grantActive: boolean = false;\r\n grantType: boolean = false;\r\n grantRead: boolean|null = null;\r\n grantEdit: boolean|null = null;\r\n grantDel: boolean|null = null;\r\n grantPrint: boolean|null = null;\r\n grantYesNo: boolean|null = null;\r\n createdBy: string = '';\r\n createdAt: string | null = null;\r\n modifiedBy: string = '';\r\n modifiedAt: string | null = null;\r\n\r\n constructor(init?:Partial) {\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n","/**\r\n * Revision History\r\n * \r\n * 12/01/2021 ptkim Add appendLine\r\n */\r\nimport _ from 'lodash';\r\nimport {History} from 'history';\r\nimport React from 'react';\r\n\r\nimport constants from '../constants';\r\nimport {getCurrencies, getFmsGlobal} from '../globals';\r\n\r\nimport {BillInvoiceLineItem, CompanyPreview } from '../ifmsTypes';\r\nimport {round as mathRound} from 'mathjs';\r\nimport {InvoDetail} from \"../fms.core/InvoDetail\";\r\nimport {ApDetail} from \"../fms.core/ApDetail\";\r\nimport { IfmsConfigMenuItem } from '../config/types';\r\nimport { SecurityGrant } from '../framework.core/SecurityGrant';\r\nimport { FmsSecTask } from '../fms.core/constants';\r\nimport { JobNames } from '../framework.core/JobNames';\r\nimport { SecType } from '../fms.enum';\r\nimport { IApplicationContext } from '../ApplicationContext';\r\n\r\nimport { OiMblListItem } from '../fms.data/models/OiMblListItem';\r\nimport { OiHblListItem } from '../fms.data/models/OiHblListItem';\r\nimport { AiMblListItem } from '../fms.data/models/AiMblListItem';\r\nimport { AiHblListItem } from '../fms.data/models/AiHblListItem';\r\nimport { OeMblListItem } from '../fms.data/models/OeMblListItem';\r\nimport { OeHblListItem } from '../fms.data/models/OeHblListItem';\r\nimport { AeMblListItem } from '../fms.data/models/AeMblListItem';\r\nimport { AeHblListItem } from '../fms.data/models/AeHblListItem';\r\nimport { OtherOperationListItem } from '../fms.data/models/OtherOperationListItem';\r\nimport { WhReciptsListItem } from '../fms.data/models/WhReciptsListItem';\r\nimport { WhRcvListItem } from '../fms.data/models/WhRcvListItem';\r\nimport { WhShipListItem } from '../fms.data/models/WhShipListItem';\r\nimport { CodeCompanyListItem } from '../fms.data/models/CodeCompanyListItem';\r\nimport { PimsBookingListItem } from '../fms.data/models/PimsBookingListItem';\r\nimport { PimsVanningListItem } from '../fms.data/models/PimsVanningListItem';\r\nimport { OeBookingListItem } from '../fms.data/models/OeBookingListItem';\r\nimport { BillPaymentListItem } from '../fms.data/models/BillPaymentListItem';\r\nimport { BatchRecogListItem } from '../fms.data/models/BatchRecogListItem';\r\nimport { InvoiceListItem } from '../fms.data/models/InvoiceListItem';\r\nimport { BillListItem } from '../fms.data/models/BillListItem';\r\nimport { CrDbListItem } from '../fms.data/models/CrDbListItem';\r\nimport { JournalLedgerListItem } from '../fms.data/models/JournalLedgerListItem';\r\nimport { MyEventListItem } from '../fms.data/models/MyEventListItem';\r\nimport { IsfListItem } from '../fms.data/models/IsfListItem';\r\n\r\nexport const OperationsMap = _.map(constants.operations, (value, key) => ({\r\n key,\r\n value,\r\n}));\r\n\r\n/**\r\n * @deprecated - Utility function to get layout sizes based on browser size.\r\n * It was used in old 'responsive' design\r\n *\r\n * @export\r\n * @param {number} viewportWidth - browser width\r\n */\r\n export const getLayoutSizes = (viewportWidth:number) => {\r\n if (viewportWidth < 1360) {\r\n return constants.layout.break4;\r\n }\r\n else if (viewportWidth < 1440) {\r\n return constants.layout.break3;\r\n }\r\n else if (viewportWidth < 1680) {\r\n return constants.layout.break2;\r\n }\r\n else if (viewportWidth < 1920) {\r\n return constants.layout.break1;\r\n } else {\r\n return constants.layout.large;\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Utility function to get operation key from name.\r\n * ocean Import -> oceanImport return.\r\n *\r\n * @export\r\n * @param {string} operationName\r\n * @return {*} {(string|null)}\r\n */\r\nexport function getOperationKey(operationName:string):string|null {\r\n const match = OperationsMap.find(x => x.value === operationName);\r\n return match ? match.key : null;\r\n}\r\n\r\n/**\r\n * to get Opertaion Name from JobName \r\n * OIMB or OIHB > Ocean Import return.\r\n * @param parent \r\n * @returns \r\n */\r\nexport function getOperationNameFromJobName(jobName: JobNames): string {\r\n if (jobName === JobNames.OIHbl || jobName === JobNames.OIMbl) {\r\n return constants.operations.oceanImport;\r\n } else if (jobName === JobNames.OEHbl || jobName === JobNames.OEMbl) {\r\n return constants.operations.oceanExport;\r\n } else if (jobName === JobNames.AIHbl || jobName === JobNames.AIMbl) {\r\n return constants.operations.airImport;\r\n } else if (jobName === JobNames.AEHbl || jobName === JobNames.AEMbl) {\r\n return constants.operations.airExport;\r\n } else if (jobName === JobNames.OtherOP) {\r\n return constants.operations.otherShipment;\r\n } else if (jobName === JobNames.WHRcv || jobName === JobNames.WHShip) {\r\n return constants.operations.warehousing;\r\n }\r\n\r\n throw new Error('Unexpected parent type');\r\n}\r\n\r\n\r\n/**\r\n * Utility function to check if str1 contains str2 - ignore case\r\n *\r\n * @export\r\n * @param {(string|null|undefined)} str1\r\n * @param {(string|null|undefined)} str2\r\n * @return {*} \r\n */\r\nexport function stringsContainsIgnoreCase(str1:string|null|undefined, str2:string|null|undefined) {\r\n if (str1 === null || str1 === undefined || str1 === '' || str2 === null || str2 === undefined || str2 === '') {\r\n return false;\r\n }\r\n\r\n return str1.toLowerCase().includes(str2.toLowerCase());\r\n}\r\n\r\n/**\r\n * Utility function to check if str1 equals str2 - ignore case\r\n *\r\n * @export\r\n * @param {(string|null|undefined)} str1\r\n * @param {(string|null|undefined)} str2\r\n * @return {*} \r\n */\r\nexport function stringsEqualIgnoreCase(str1:string|null|undefined, str2:string|null|undefined) {\r\n if (str1 === null) {\r\n return str2 === null;\r\n }\r\n if (str1 === undefined) {\r\n return str2 === undefined;\r\n }\r\n if (str2 === null) {\r\n return str1 === null;\r\n }\r\n if (str2 === undefined) {\r\n return str1 === undefined;\r\n }\r\n\r\n return str1.toLowerCase() === str2.toLowerCase();\r\n}\r\n\r\n/**\r\n * Utility function to check if str1 starts with str2 - ignore case\r\n *\r\n * @export\r\n * @param {(string|null|undefined)} str1\r\n * @param {(string|null|undefined)} str2\r\n * @return {*} \r\n */\r\nexport function stringsStartsWithIgnoreCase(str1:string|null|undefined, str2:string|null|undefined) {\r\n if (str1 === null || str2 === null || str1 === undefined || str2 === undefined) {\r\n return false;\r\n }\r\n\r\n return str1.toLowerCase().startsWith(str2.toLowerCase());\r\n}\r\n\r\n/**\r\n * Convert length, width, height to kgs and lbs\r\n *\r\n * @export\r\n * @return {*}\r\n * @param calculation\r\n */\r\nexport function dimensionsToKgsLbs({length, width, height, pcs, volCm}: {\r\n length: number,\r\n width: number,\r\n height: number,\r\n pcs: number,\r\n volCm: boolean\r\n}) {\r\n\r\n const weightCalculationBase = (length ?? 0) * (width ?? 0) * (height ?? 0) * (pcs ?? 0);\r\n\r\n const change = {chgWeight: 0, lChgWeight: 0}\r\n\r\n if (weightCalculationBase > 0) {\r\n if (volCm) {\r\n change.chgWeight = mathRound(weightCalculationBase / 6000.0, 2);\r\n change.lChgWeight = mathRound(kgToLbs(change.chgWeight) ?? 0, 2);\r\n } else {\r\n change.lChgWeight = mathRound(weightCalculationBase/166.0, 2);\r\n change.chgWeight = lbsToKg(change.lChgWeight) ?? 0;\r\n }\r\n }\r\n\r\n return change;\r\n}\r\n\r\n/**\r\n * Convert length, width, height to cbm and lbs\r\n *\r\n * @export\r\n * @return {*}\r\n * @param calculation\r\n * @param includeLbs\r\n */\r\nexport function dimensionsToCbmKgs({length, width, height, pcs, volCm}: {\r\n length: number,\r\n width: number,\r\n height: number,\r\n pcs: number,\r\n volCm: boolean\r\n}, includeLbs = false): {chgWeight: number, lChgWeight?: number} {\r\n\r\n const weightCalculationBase = (length ?? 0) * (width ?? 0) * (height ?? 0) * (pcs ?? 0);\r\n\r\n const change = {chgWeight: 0, lChgWeight: 0}\r\n\r\n if (weightCalculationBase > 0) {\r\n if (volCm) {\r\n change.chgWeight = mathRound(weightCalculationBase/1000000, 3);\r\n if(includeLbs) {\r\n change.lChgWeight = mathRound(weightCalculationBase/6000 * 2.2046, 2);\r\n }\r\n } else {\r\n change.chgWeight = mathRound((weightCalculationBase / 1728) / 35.3147, 3);\r\n if(includeLbs) {\r\n change.lChgWeight = mathRound(weightCalculationBase/166.0, 2);\r\n }\r\n }\r\n }\r\n if(!includeLbs) {\r\n return {chgWeight: change.chgWeight}\r\n }\r\n return change;\r\n}\r\n\r\n/**\r\n * Convert kg to lbs\r\n *\r\n * @export\r\n * @param {(number|null|undefined)} n\r\n * @return {*} \r\n */\r\nexport function kgToLbs(n:number|null|undefined) {\r\n if (n === null || n === undefined || isNaN(n)) {\r\n return null;\r\n }\r\n\r\n return n * 2.2046;\r\n}\r\n\r\n/**\r\n * Convert lbs to kg\r\n *\r\n * @export\r\n * @param {(number|null|undefined)} n\r\n * @return {*} \r\n */\r\nexport function lbsToKg(n:number|null|undefined) {\r\n if (n === null || n === undefined || isNaN(n)) {\r\n return null;\r\n }\r\n\r\n return Math.round(n / 2.2046 * 100) / 100;\r\n}\r\n\r\n/**\r\n * Convert CFT to CBM\r\n *\r\n * @export\r\n * @param {(number|null|undefined)} n\r\n * @return {*} \r\n */\r\nexport function cftToCbm(n:number|null|undefined) {\r\n if (n === null || n === undefined || isNaN(n)) {\r\n return null;\r\n }\r\n\r\n return n / 35.3147;\r\n}\r\n\r\n/**\r\n * Check if keyboard event is key press (not function or special key)\r\n *\r\n * @export\r\n * @param {KeyboardEvent} evt\r\n * @return {*} \r\n */\r\nexport function isCharacterKeyPress(evt:KeyboardEvent|React.KeyboardEvent) {\r\n return (!evt.keyCode) ||\r\n (\r\n !(evt.keyCode <= 29 ) &&\r\n !(evt.keyCode >= 33 && evt.keyCode <= 47) &&\r\n !(evt.keyCode >= 91 && evt.keyCode <= 95) &&\r\n !(evt.keyCode >= 112 && evt.keyCode <= 151) &&\r\n !(evt.keyCode >= 166 && evt.keyCode <= 169) &&\r\n !(evt.keyCode >= 172 && evt.keyCode <= 183) &&\r\n !(evt.keyCode >= 224 && evt.keyCode <= 235)\r\n );\r\n}\r\n\r\n/**\r\n * Round number to 3 decimal places\r\n *\r\n * @export\r\n * @param {(number|null|undefined)} n\r\n * @return {*} \r\n */\r\nexport function round(n:number|null|undefined) {\r\n if (n === null || n === undefined) {\r\n return n;\r\n }\r\n\r\n return Math.round(n * 10000) / 10000;\r\n}\r\n\r\n/**\r\n * Utility function to process Bill or Invoice line item delete. It makes sure that if line item with extra currency has been deleted\r\n * unused currencies and exchange rates are deleted\r\n *\r\n */\r\n\r\nexport function handleBillOrInvoiceLineItemDelete(\r\n cur1Param:string|null|undefined,\r\n cur2Param:string|null|undefined,\r\n exRate1Param:number|null|undefined,\r\n exRate2Param:number|null|undefined,\r\n lineItems:Array\r\n):{\r\n cur1: string,\r\n cur2: string,\r\n exRate1: number|null,\r\n exRate2: number|null,\r\n} {\r\n let cur1 = cur1Param ?? '';\r\n let cur2 = cur2Param ?? '';\r\n let exRate1 = exRate1Param ?? null;\r\n let exRate2 = exRate2Param ?? null;\r\n\r\n if (cur2) {\r\n const used = lineItems.some(x => x.cur === cur2 || x.agtCur === cur2);\r\n if (!used) {\r\n cur2 = '';\r\n exRate2 = null;\r\n }\r\n }\r\n\r\n if (cur1) {\r\n const used = lineItems.some(x => x.cur === cur1 || x.agtCur === cur1);\r\n if (!used) {\r\n cur1 = '';\r\n exRate1 = null;\r\n\r\n // if cur 2 is used - move it to cur1\r\n if (cur2) {\r\n cur1 = cur2;\r\n exRate1 = exRate2;\r\n cur2 = '';\r\n exRate2 = null;\r\n }\r\n }\r\n }\r\n\r\n return {cur1, cur2, exRate1, exRate2};\r\n}\r\n/**\r\n * Utility function to process Bill or Invoice currency change. It keeps track of all currencies in line items to make sure max 3 currencies are used\r\n * After analyzing all line items it returns which are the currencies in use, which is currency 1 and 2 and matching exchange rate\r\n * In case currency 1 is removed (not used any more) it moves currency 2 to currency 1\r\n *\r\n * @export\r\n * @param {(string|null|undefined)} newCur\r\n * @param {(string|null|undefined)} oldCur\r\n * @param {Array} availableCurrenciesParam\r\n * @param {(string|null|undefined)} cur1Param\r\n * @param {(string|null|undefined)} cur2Param\r\n * @param {(number|null|undefined)} exRate1Param\r\n * @param {(number|null|undefined)} exRate2Param\r\n * @param {(string|null|undefined)} primaryCurrency\r\n * @param {Array} lineItems\r\n * @return {*} \r\n */\r\nexport function handleBillOrInvoiceCurrencyChange(\r\n newCur:string|null|undefined,\r\n oldCur:string|null|undefined,\r\n availableCurrenciesParam:Array,\r\n cur1Param:string|null|undefined,\r\n cur2Param:string|null|undefined,\r\n exRate1Param:number|null|undefined,\r\n exRate2Param:number|null|undefined,\r\n primaryCurrency:string|null|undefined,\r\n lineItems:Array) {\r\n let cur = newCur;\r\n let cur1 = cur1Param;\r\n let cur2 = cur2Param;\r\n let exRate1 = exRate1Param;\r\n let exRate2 = exRate2Param;\r\n let availableCurrencies = availableCurrenciesParam;\r\n\r\n if (!!oldCur && oldCur !== primaryCurrency) {\r\n const othersUseOldCurrency = lineItems.some(\r\n x => x.cur === oldCur || (x as BillInvoiceLineItem)?.agtCur === oldCur || (x as InvoDetail)?.agtCur === oldCur\r\n );\r\n if (!othersUseOldCurrency) {\r\n availableCurrencies = availableCurrencies.filter(x => x !== oldCur);\r\n if (cur1 === oldCur) {\r\n cur1 = cur2;\r\n exRate1 = exRate2;\r\n cur2 = null;\r\n exRate2 = 0;\r\n }\r\n if (cur2 === oldCur) {\r\n cur2 = null;\r\n exRate2 = 0;\r\n }\r\n }\r\n }\r\n\r\n if (!!newCur && newCur !== primaryCurrency) {\r\n if (!availableCurrencies.some(x => x === newCur)) {\r\n availableCurrencies.push(newCur);\r\n }\r\n\r\n if (cur1 !== newCur && cur2 !== newCur) {\r\n if (_.isEmpty(cur1)) {\r\n cur1 = newCur;\r\n exRate1 = 0;\r\n } else {\r\n cur2 = newCur;\r\n exRate2 = 0;\r\n }\r\n }\r\n }\r\n\r\n return { currency: cur ?? '', invCur1: cur1 ?? '', invCur2: cur2 ?? '', exRate1: exRate1 || 0, exRate2: exRate2 || 0, availableCurrencies };\r\n}\r\n\r\nfunction applyLineItemCurrencyChange(l:BillInvoiceLineItem, cur:string|null|undefined) {\r\n l.cur = cur ?? '';\r\n return l;\r\n // const r = _.cloneDeep(l);\r\n // r.cur = cur ?? '';\r\n // return r;\r\n}\r\n\r\nfunction applyLineItemAgentCurrencyChange(l:BillInvoiceLineItem, agentCur:string|null|undefined) {\r\n l.agtCur = agentCur ?? '';\r\n return l;\r\n // const r = _.cloneDeep(l);\r\n // r.agentCur = agentCur ?? '';\r\n // return r;\r\n}\r\n\r\ntype BicChangeFunction = (x:BillInvoiceLineItem, c:string|null|undefined) => BillInvoiceLineItem;\r\n\r\nfunction billOrInvoiceCurrencyChangeWorker(\r\n cur:string|null|undefined,\r\n newCur:string|null|undefined,\r\n oldCur:string|null|undefined,\r\n i:number,\r\n availableCurrenciesParam:Array,\r\n cur1Param:string|null|undefined,\r\n cur2Param:string|null|undefined,\r\n exRate1Param:number|null|undefined,\r\n exRate2Param:number|null|undefined,\r\n primaryCurrency:string|null|undefined,\r\n lineItemsParam:Array,\r\n curChangeFnc: BicChangeFunction\r\n) {\r\n let cur1 = cur1Param;\r\n let cur2 = cur2Param;\r\n let exRate1 = exRate1Param;\r\n let exRate2 = exRate2Param;\r\n let availableCurrencies = availableCurrenciesParam;\r\n\r\n const lineItems = lineItemsParam;\r\n lineItems.forEach((x, ind) => {\r\n if (ind !== i) {\r\n return;\r\n }\r\n\r\n curChangeFnc(x, newCur);\r\n });\r\n\r\n if (!!oldCur && oldCur !== primaryCurrency) {\r\n const othersUseOldCurrency = cur === oldCur || lineItems.some((x, ind) => x.cur === oldCur || x.agtCur === oldCur);\r\n\r\n if (!othersUseOldCurrency) {\r\n availableCurrencies = availableCurrencies.filter(x => x !== oldCur);\r\n if (cur1 === oldCur) {\r\n cur1 = cur2;\r\n exRate1 = exRate2;\r\n cur2 = null;\r\n exRate2 = 0;\r\n }\r\n if (cur2 === oldCur) {\r\n cur2 = null;\r\n exRate2 = 0;\r\n }\r\n }\r\n }\r\n\r\n if (!!newCur && newCur !== primaryCurrency) {\r\n if (!availableCurrencies.some(x => x === newCur)) {\r\n availableCurrencies.push(newCur);\r\n }\r\n\r\n if (cur1 !== newCur && cur2 !== newCur) {\r\n if (_.isEmpty(cur1)) {\r\n cur1 = newCur;\r\n exRate1 = 0;\r\n } else {\r\n cur2 = newCur;\r\n exRate2 = 0;\r\n }\r\n }\r\n }\r\n\r\n return { invCur1: cur1 ?? '', invCur2: cur2 ?? '', exRate1: exRate1??0, exRate2: exRate2??0, availableCurrencies, lineItems };\r\n}\r\n\r\n/**\r\n * Utility function to process Bill or Invoice line item currency change. It keeps track of all currencies in line items to make sure max 3 currencies are used\r\n * After analyzing all line items it returns which are the currencies in use, which is currency 1 and 2 and matching exchange rate\r\n * In case currency 1 is removed (not used any more) it moves currency 2 to currency 1\r\n *\r\n * @export\r\n * @param {(string|null|undefined)} cur\r\n * @param {(string|null|undefined)} newCur\r\n * @param {(string|null|undefined)} oldCur\r\n * @param {number} i\r\n * @param {Array} availableCurrencies\r\n * @param {(string|null|undefined)} cur1Param\r\n * @param {(string|null|undefined)} cur2Param\r\n * @param {(number|null|undefined)} exRate1Param\r\n * @param {(number|null|undefined)} exRate2Param\r\n * @param {(string|null|undefined)} primaryCurrency\r\n * @param {Array} lineItems\r\n * @return {*} \r\n */\r\nexport function handleBillOrInvoiceLineItemCurrencyChange(\r\n cur:string,\r\n newCur:string|null|undefined,\r\n oldCur:string|null|undefined,\r\n i:number,\r\n availableCurrencies:Array,\r\n cur1Param:string|null|undefined,\r\n cur2Param:string|null|undefined,\r\n exRate1Param:number|null|undefined,\r\n exRate2Param:number|null|undefined,\r\n primaryCurrency:string|null|undefined,\r\n lineItems:Array\r\n) {\r\n return billOrInvoiceCurrencyChangeWorker(cur, newCur, oldCur, i, availableCurrencies, cur1Param, cur2Param, exRate1Param, exRate2Param, primaryCurrency, lineItems, applyLineItemCurrencyChange);\r\n}\r\n\r\n/**\r\n * Utility function to process Bill or Invoice line item Agent currency change. It keeps track of all currencies in line items to make sure max 3 currencies are used\r\n * After analyzing all line items it returns which are the currencies in use, which is currency 1 and 2 and matching exchange rate\r\n * In case currency 1 is removed (not used any more) it moves currency 2 to currency 1\r\n *\r\n * @export\r\n * @param {(string|null|undefined)} cur\r\n * @param {(string|null|undefined)} newCur\r\n * @param {(string|null|undefined)} oldCur\r\n * @param {number} i\r\n * @param {Array} availableCurrencies\r\n * @param {(string|null|undefined)} cur1Param\r\n * @param {(string|null|undefined)} cur2Param\r\n * @param {(number|null|undefined)} exRate1Param\r\n * @param {(number|null|undefined)} exRate2Param\r\n * @param {(string|null|undefined)} primaryCurrency\r\n * @param {Array} lineItems\r\n * @return {*} \r\n */\r\nexport function handleBillOrInvoiceLineItemAgentCurrencyChange(\r\n cur:string|null|undefined,\r\n newCur:string|null|undefined,\r\n oldCur:string|null|undefined,\r\n i:number,\r\n availableCurrencies:Array,\r\n cur1Param:string|null|undefined,\r\n cur2Param:string|null|undefined,\r\n exRate1Param:number|null|undefined,\r\n exRate2Param:number|null|undefined,\r\n primaryCurrency:string|null|undefined,\r\n lineItems:Array\r\n) {\r\n return billOrInvoiceCurrencyChangeWorker(cur, newCur, oldCur, i, availableCurrencies, cur1Param, cur2Param, exRate1Param, exRate2Param, primaryCurrency, lineItems, applyLineItemAgentCurrencyChange);\r\n}\r\n\r\n/**\r\n * Utility function for Bills and Invoices. Calculates amount in header currency\r\n *\r\n * @export\r\n * @param {(number|null|undefined)} rate\r\n * @param {(number|null|undefined)} qty\r\n * @param {(string|null|undefined)} cur\r\n * @param {(string|null|undefined)} headerCurrency\r\n * @param {(string|null|undefined)} primaryCurrency\r\n * @param {(string|null|undefined)} cur1\r\n * @param {(string|null|undefined)} cur2\r\n * @param {(string|null|undefined)} cur3\r\n * @param {(string|null|undefined)} cur4\r\n * @param {(number|null|undefined)} exRate1\r\n * @param {(number|null|undefined)} exRate2\r\n * @param {(number|null|undefined)} exRate3\r\n * @param {(number|null|undefined)} exRate4\r\n * @return {*} \r\n */\r\nexport function calculateHeaderCurrencyAmount(\r\n rate:number|null|undefined,\r\n qty:number|null|undefined,\r\n cur:string|null|undefined,\r\n headerCurrency:string|null|undefined,\r\n primaryCurrency:string|null|undefined,\r\n cur1:string|null|undefined,\r\n cur2:string|null|undefined,\r\n cur3:string|null|undefined,\r\n cur4:string|null|undefined,\r\n exRate1:number|null|undefined,\r\n exRate2:number|null|undefined,\r\n exRate3:number|null|undefined,\r\n exRate4:number|null|undefined,\r\n) {\r\n let amount = null;\r\n if (!qty || !rate || !cur) {\r\n return amount;\r\n }\r\n\r\n if (cur === headerCurrency) {\r\n amount = qty * rate;\r\n } else {\r\n if (headerCurrency === primaryCurrency) {\r\n if (cur === cur1 && !!exRate1) {\r\n amount = qty * rate * exRate1;\r\n }\r\n if (cur === cur2 && !!exRate2) {\r\n amount = qty * rate * exRate2;\r\n }\r\n if (cur === cur3 && !!exRate3) {\r\n amount = qty * rate * exRate3;\r\n }\r\n if (cur === cur4 && !!exRate4) {\r\n amount = qty * rate * exRate4;\r\n }\r\n } else {\r\n // const headerToPrimaryRate = headerCurrency === cur1 ? exRate1 : exRate2;\r\n let headerToPrimaryRate = 1;\r\n if (headerCurrency === cur1) headerToPrimaryRate = exRate1??0;\r\n if (headerCurrency === cur2) headerToPrimaryRate = exRate2??0;\r\n if (headerCurrency === cur3) headerToPrimaryRate = exRate3??0;\r\n if (headerCurrency === cur4) headerToPrimaryRate = exRate4??0;\r\n\r\n if (headerToPrimaryRate !== 0) {\r\n const amountInPrimary = calculatePrimaryCurrencyAmount(rate, qty, cur, primaryCurrency, cur1, cur2, exRate1, exRate2);\r\n if (amountInPrimary) {\r\n amount = amountInPrimary / headerToPrimaryRate;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return amount;\r\n}\r\n\r\n/**\r\n *Utility function for Bills and Invoices. Calculates amount in primary currency\r\n *\r\n * @export\r\n * @param {(number|null|undefined)} rate\r\n * @param {(number|null|undefined)} qty\r\n * @param {(string|null|undefined)} cur\r\n * @param {(string|null|undefined)} primaryCurrency\r\n * @param {(string|null|undefined)} cur1\r\n * @param {(string|null|undefined)} cur2\r\n * @param {(number|null|undefined)} exRate1\r\n * @param {(number|null|undefined)} exRate2\r\n * @return {*} \r\n */\r\nexport function calculatePrimaryCurrencyAmount(\r\n rate:number|null|undefined,\r\n qty:number|null|undefined,\r\n cur:string|null|undefined,\r\n primaryCurrency:string|null|undefined,\r\n cur1:string|null|undefined,\r\n cur2:string|null|undefined,\r\n exRate1:number|null|undefined,\r\n exRate2:number|null|undefined\r\n) {\r\n let amount = null;\r\n\r\n if (!!qty && !!rate && !!cur) {\r\n if (cur === primaryCurrency) {\r\n return qty * rate;\r\n }\r\n if (cur === cur1 && !!exRate1) {\r\n amount = qty * rate * exRate1;\r\n }\r\n if (cur === cur2 && !!exRate2) {\r\n amount = qty * rate * exRate2;\r\n }\r\n }\r\n\r\n return amount;\r\n}\r\n\r\n\r\n/**\r\n * Utility function to calculate amount for currency in primary currency. It is used for calculation for Bills and Invoices\r\n *\r\n * @export\r\n * @param {(number|null|undefined)} amountParam\r\n * @param {(string|null|undefined)} cur\r\n * @param {(string|null|undefined)} primaryCurrency\r\n * @param {(string|null|undefined)} cur1\r\n * @param {(string|null|undefined)} cur2\r\n * @param {(string|null|undefined)} cur3\r\n * @param {(string|null|undefined)} cur4\r\n * @param {(number|null|undefined)} exRate1\r\n * @param {(number|null|undefined)} exRate2\r\n * @param {(number|null|undefined)} exRate3\r\n * @param {(number|null|undefined)} exRate4\r\n * @return {*} \r\n */\r\nexport function calculatePrimaryCurrencyAmountFor(\r\n amountParam:number|null|undefined,\r\n cur:string|null|undefined,\r\n primaryCurrency:string|null|undefined,\r\n cur1:string|null|undefined,\r\n cur2:string|null|undefined,\r\n cur3:string|null|undefined,\r\n cur4:string|null|undefined,\r\n exRate1:number|null|undefined,\r\n exRate2:number|null|undefined,\r\n exRate3:number|null|undefined,\r\n exRate4:number|null|undefined,\r\n): number {\r\n let amount = null;\r\n\r\n if (!!amountParam && !!cur) {\r\n if (cur === primaryCurrency) {\r\n return amountParam;\r\n }\r\n if (cur === cur1 && !!exRate1) {\r\n amount = amountParam * exRate1;\r\n }\r\n if (cur === cur2 && !!exRate2) {\r\n amount = amountParam * exRate2;\r\n }\r\n if (cur === cur1 && !!exRate3) {\r\n amount = amountParam * exRate3;\r\n }\r\n if (cur === cur2 && !!exRate4) {\r\n amount = amountParam * exRate4;\r\n }\r\n }\r\n\r\n return amount ?? 0;\r\n}\r\n\r\n/**\r\n * Utility function to calculate CrDb item amount based on its type and if it is direct shipment or not\r\n *\r\n * @export\r\n * @param {number} value\r\n * @param {(number|null)} type\r\n * @param {number} ps\r\n * @param {boolean} direct\r\n * @return {*} \r\n */\r\nexport function calculateCrDbValues(value:number, type:number, ps:number|null, direct:boolean) {\r\n let amount = 0;\r\n let profitShare = 0;\r\n if (direct === undefined) {\r\n const err = new Error();\r\n window.console.log(err.stack);\r\n window.console.log(type, value, ps, direct);\r\n window.console.log('------------');\r\n }\r\n\r\n if (!direct) {\r\n switch (type) {\r\n case 5: \r\n profitShare = ps ? ps * value / -100.0 : 0;\r\n amount = value + profitShare;\r\n return { amount, profitShare };\r\n case 15:\r\n profitShare = ps ? ps * value / 100.0 : 0;\r\n amount = -value + profitShare;\r\n return { amount, profitShare };\r\n case 27:\r\n profitShare = ps ? ps * value / 100.0 : 0;\r\n return { amount: profitShare, profitShare };\r\n case 37:\r\n profitShare = ps ? ps * value / -100.0 : 0;\r\n return { amount: profitShare, profitShare };\r\n case 7:\r\n profitShare = ps ? ps * value / 100.0 : 0;\r\n return { amount: profitShare, profitShare };\r\n case 17:\r\n profitShare = ps ? ps * value / -100.0 : 0;\r\n return { amount: profitShare, profitShare };\r\n case 8:\r\n case 18:\r\n profitShare = ps ? ps * value / 100.0 : 0;\r\n amount = value + profitShare;\r\n return { amount, profitShare };\r\n case 13:\r\n case 14:\r\n profitShare = ps ? ps * value / -100.0 : 0;\r\n amount = value + profitShare;\r\n return { amount, profitShare };\r\n case 12:\r\n profitShare = ps ? ps * value / -100.0 : 0;\r\n amount = value + profitShare;\r\n return { amount, profitShare };\r\n case 3:\r\n case 4:\r\n profitShare = ps ? ps * value / 100.0 : 0;\r\n amount = -value + profitShare;\r\n return { amount, profitShare };\r\n case 2:\r\n profitShare = ps ? ps * value / 100.0 : 0;\r\n amount = -value + profitShare;\r\n return { amount, profitShare };\r\n case 11:\r\n profitShare = ps ? ps * value / -100.0 : 0;\r\n return { amount: profitShare, profitShare };\r\n case 1:\r\n profitShare = ps ? ps * value / 100.0 : 0;\r\n return { amount: profitShare, profitShare };\r\n default:\r\n // window.console.log('Returning default');\r\n // window.console.log(type, value, ps, direct);\r\n return { amount: 0, profitShare: 0 };\r\n }\r\n } else {\r\n switch (type) {\r\n case 5: \r\n profitShare = ps ? ps * value / -100.0 : 0;\r\n amount = value + profitShare;\r\n return { amount, profitShare };\r\n case 15:\r\n profitShare = ps ? ps * value / 100.0 : 0;\r\n amount = -value + profitShare;\r\n return { amount, profitShare };\r\n case 27:\r\n profitShare = ps ? ps * value / -100.0 : 0;\r\n return { amount: profitShare, profitShare };\r\n case 37:\r\n profitShare = ps ? ps * value / 100.0 : 0;\r\n return { amount: profitShare, profitShare };\r\n case 7:\r\n profitShare = ps ? ps * value / -100.0 : 0;\r\n return { amount: profitShare, profitShare };\r\n case 17:\r\n profitShare = ps ? ps * value / 100.0 : 0;\r\n return { amount: profitShare, profitShare };\r\n case 8:\r\n case 18:\r\n profitShare = ps ? ps * value / -100.0 : 0;\r\n amount = value + profitShare;\r\n return { amount, profitShare };\r\n case 11:\r\n profitShare = ps ? ps * value / 100.0 : 0;\r\n return { amount: profitShare, profitShare };\r\n case 1:\r\n profitShare = ps ? ps * value / -100.0 : 0;\r\n return { amount: profitShare, profitShare };\r\n case 13:\r\n case 14:\r\n profitShare = ps ? ps * value / 100.0 : 0;\r\n amount = value + profitShare;\r\n return { amount, profitShare };\r\n case 3:\r\n case 4:\r\n profitShare = ps ? ps * value / -100.0 : 0;\r\n amount = -value + profitShare;\r\n return { amount, profitShare };\r\n case 12:\r\n profitShare = ps ? ps * value / 100.0 : 0;\r\n amount = value + profitShare;\r\n return { amount, profitShare };\r\n case 2:\r\n profitShare = ps ? ps * value / -100.0 : 0;\r\n amount = -value + profitShare;\r\n return { amount, profitShare };\r\n default:\r\n // window.console.log('Returning default');\r\n // window.console.log(type, value, ps, direct);\r\n return { amount: 0, profitShare: 0 };\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Get number of decimal places for currency. It checks currency in globally available list of currencies which are initialized during login\r\n *\r\n * @export\r\n * @param {string} currency\r\n * @return {*} \r\n */\r\nexport function getDecimal(currency:string) {\r\n const currencies = getCurrencies();\r\n if (!!currencies && currencies.length > 0) {\r\n const c = currencies.find(x => x.currency === currency);\r\n return !!c ? c.decimal : 0;\r\n }\r\n\r\n return 0;\r\n}\r\n\r\n/**\r\n * Utility function to calculate amount in currency. It checks currency decimal places property and formats (rounds) number accordingly\r\n *\r\n * @export\r\n * @param {(number|null|undefined)} a\r\n * @param {(string|null|undefined)} c\r\n * @return {*} \r\n */\r\nexport function getValueInCurrency(a:number|null|undefined, c:string|null|undefined): number {\r\n if (!c || a === null || a === undefined) {\r\n return 0;\r\n }\r\n\r\n const decimal = getDecimal(c);\r\n\r\n return parseFloat(a.toFixed(decimal));\r\n}\r\n\r\nexport function getNumberStringInCurrency(a:number|null|undefined, c:string|null|undefined): string {\r\n if (!c || a === null || a === undefined) {\r\n return '';\r\n }\r\n\r\n const decimal = getDecimal(c);\r\n\r\n return a.toFixed(decimal);\r\n}\r\n\r\n\r\n/**\r\n * Make trackable listitem(or detaillist) in copy mode on load\r\n *\r\n * @export\r\n * @param {any[]} copyApiResult\r\n * @param {any} resultList\r\n * @param {any} elementType\r\n */\r\nexport function makeTrackableListItemInCopyMode(copyApiResult: any[], resultList: any, elementType: any) {\r\n let propertyValue = Object.create(null);\r\n copyApiResult.forEach(x => {\r\n let newElement = new elementType();\r\n newElement.trackable = true;\r\n const elementProp = Object.getOwnPropertyNames(newElement)\r\n const trackaProp = elementProp.filter(name => !Object.getOwnPropertyDescriptor(newElement, 'noTrackProps')?.value.includes(name))\r\n trackaProp.forEach((y) => {\r\n propertyValue = Object.getOwnPropertyDescriptor(x, y)?.value\r\n Object.defineProperty(newElement, y, { value: propertyValue })\r\n })\r\n resultList.push(newElement);\r\n });\r\n}\r\n\r\n/**\r\n * Check if object or string is null or empty or whitespace\r\n *\r\n * @export\r\n * @param {string} str\r\n * @param {boolean} isWhiteSpaceCheck\r\n * @return {boolean} \r\n */\r\nexport function isNullOrEmpty(str : string | null, isWhiteSpaceCheck = true) : boolean {\r\n\r\n if(!str)\r\n return true;\r\n\r\n if(isWhiteSpaceCheck)\r\n // return !str.trim();\r\n return typeof str === 'string' ? !str.trim() : false;\r\n else \r\n return false;\r\n}\r\n\r\n/**\r\n * Tries to set caret (cursor) of given HTML input element to given position\r\n *\r\n * @export\r\n * @param {HTMLInputElement} el\r\n * @param {number} caretPos\r\n * @return {*} \r\n */\r\nexport function setCaretPosition(el:HTMLInputElement, caretPos:number) {\r\n // this is used to not only get \"focus\", but\r\n // to make sure we don't have it everything -selected-\r\n // (it causes an issue in chrome, and having it doesn't hurt any other browser)\r\n // eslint-disable-next-line no-self-assign\r\n el.value = el.value;\r\n\r\n if (el !== null) {\r\n const elAsAny = el as any;\r\n if (elAsAny.createTextRange) {\r\n const range = elAsAny.createTextRange();\r\n range.move('character', caretPos);\r\n range.select();\r\n return true;\r\n }\r\n // (el.selectionStart === 0 added for Firefox bug)\r\n if (el.selectionStart || el.selectionStart === 0) {\r\n el.focus();\r\n el.setSelectionRange(caretPos, caretPos);\r\n return true;\r\n }\r\n\r\n el.focus();\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Utility function to create Bill/Invoice parent url based on given context\r\n *\r\n * @export\r\n * @param {string} context\r\n * @param {number} contextId\r\n * @return {*} \r\n */\r\nexport function createBillInvoiceCrdbParentUrlFromContext(context:string, contextId:number) {\r\n if (!context || !contextId) {\r\n return null;\r\n }\r\n\r\n if (context === 'oiviewmbl') {\r\n return `/oceanImport/mbl/view/${contextId}`;\r\n }\r\n if (context === 'oieditmbl') {\r\n return `/oceanImport/mbl/edit/${contextId}`;\r\n }\r\n if (context === 'oiviewhbl') {\r\n return `/oceanImport/hbl/view/${contextId}`;\r\n }\r\n if (context === 'oiedithbl') {\r\n return `/oceanImport/hbl/edit/${contextId}`;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Checks whether array's last element is empty. Used for tables to not allow new line item to show if the last one is empty.\r\n * It is possible to define additional values that are treated as empty ones (for examnple: 'N/A') and properties in array to skip for checking\r\n *\r\n * @export\r\n * @param {*} arr\r\n * @param {(Array|null)} additionalEmptyValues\r\n * @param {(Array|null)} propertiesToSkip\r\n * @return {*} \r\n */\r\nexport function isLastLineItemEmpty(arr:any, additionalEmptyValues:Array|null = null, propertiesToSkip:Array|null = null) {\r\n return Array.isArray(arr) && arr.length > 0 && isEveryPropertyEmpty(arr[arr.length - 1], additionalEmptyValues, propertiesToSkip);\r\n}\r\n\r\n// [230410] improve function\r\n// export function isEveryPropertyEmpty(obj:any, additionalEmptyValues:Array|null = null, propertiesToSkip:Array|null = null) {\r\n// type CheckFunctor = (x:any) => boolean;\r\n\r\n// const isNullOrEmpty = (str: string) => str === null || str.match(/^ *$/) !== null;\r\n\r\n// const additionalChecks = additionalEmptyValues ?? [];\r\n\r\n// const emptyCheck:CheckFunctor = x => {\r\n// if (_.isString(x)) {\r\n// return isNullOrEmpty(x) || additionalChecks.some(a => a === x);\r\n// }\r\n\r\n// if (_.isNumber(x)) {\r\n// return !x || x === 0 || additionalChecks.some(a => a === x);\r\n// }\r\n\r\n// return !x || additionalChecks.some(a => a === x);\r\n// };\r\n\r\n// return !!propertiesToSkip && Array.isArray(propertiesToSkip) && propertiesToSkip.length > 0\r\n// ? !obj || _.values(_.omit(obj, propertiesToSkip)).every(emptyCheck)\r\n// : !obj || _.values(obj).every(emptyCheck);\r\n// }\r\n\r\n\r\n/**\r\n * Checks whether object is empty. Used for tables to not allow new line item to show if the last one is empty.\r\n * It is possible to define additional values that are treated as empty ones (for examnple: 'poNo':'N/A') and properties in array to skip for checking\r\n *\r\n * @export\r\n * @param {*} obj\r\n * @param {(any|null)} additionalEmptyValues\r\n * @param {(Array|null)} propertiesToSkip\r\n * @return {*} \r\n */\r\nexport function isEveryPropertyEmpty(obj: any, additionalEmptyValues: any | null = null, propertiesToSkip: Array | null = null) {\r\n if(!obj) return true;\r\n type CheckFunctor = (x:any) => boolean;\r\n let testObj = _.cloneDeep(obj);\r\n let specialObj: any = [];\r\n if(!!propertiesToSkip && Array.isArray(propertiesToSkip) && propertiesToSkip.length > 0)\r\n testObj = _.omit(obj, propertiesToSkip)\r\n\r\n if (!!additionalEmptyValues) {\r\n specialObj = additionalEmptyValues;\r\n const keys = Object.keys(additionalEmptyValues)\r\n for (let i = 0; i < keys.length; i++) {\r\n const keyName = keys[i];\r\n delete testObj[keyName]\r\n }\r\n }\r\n\r\n const emptyCheck:CheckFunctor = x => {\r\n if (_.isString(x)) {\r\n return isNullOrEmpty(x);\r\n }\r\n\r\n else if (_.isNumber(x)) {\r\n return !x || x === 0;\r\n }\r\n\r\n return !x ;\r\n };\r\n\r\n const emptyCheckSpecial: CheckFunctor = x => {\r\n if (_.isString(x)) {\r\n return isNullOrEmpty(x) || specialObj[x] === obj[x];\r\n }\r\n\r\n else if (_.isNumber(x)) {\r\n return !x || x === 0 || specialObj[x] === obj[x];\r\n }\r\n\r\n return !x || specialObj[x] === obj[x];\r\n };\r\n\r\n return _.values(testObj).every(emptyCheck) && _.keys(specialObj).every(emptyCheckSpecial);\r\n}\r\n\r\nexport function isEveryPropertyEmptyNew(obj: any, additionalEmptyValues: any | null = null, propertiesToSkip: Array | null = null) {\r\n if(!obj) return { isEmpty: true, nonEmptyProperties: {} };\r\n \r\n type CheckFunctor = (x: any, key: string) => boolean;\r\n let testObj = _.cloneDeep(obj);\r\n let specialObj: any = [];\r\n let nonEmptyProperties: { [key: string]: any } = {};\r\n\r\n // propertiesToSkip 처리 전에 원본 객체 출력\r\n console.log('검사 전 전체 속성:', Object.entries(testObj)\r\n .filter(([_, value]) => value !== undefined && value !== null)\r\n .map(([key, value]) => `${key}: ${value}`));\r\n\r\n if(!!propertiesToSkip && Array.isArray(propertiesToSkip) && propertiesToSkip.length > 0) {\r\n console.log('건너뛸 속성들:', propertiesToSkip);\r\n testObj = _.omit(obj, propertiesToSkip);\r\n }\r\n\r\n // propertiesToSkip 처리 후 남은 속성들 출력\r\n console.log('검사할 속성들:', Object.entries(testObj)\r\n .filter(([_, value]) => value !== undefined && value !== null)\r\n .map(([key, value]) => `${key}: ${value}`));\r\n\r\n if (!!additionalEmptyValues) {\r\n specialObj = additionalEmptyValues;\r\n const keys = Object.keys(additionalEmptyValues)\r\n for (let i = 0; i < keys.length; i++) {\r\n const keyName = keys[i];\r\n delete testObj[keyName]\r\n }\r\n }\r\n\r\n const emptyCheck: CheckFunctor = (x, key) => {\r\n let isEmpty = true;\r\n if (_.isString(x)) {\r\n isEmpty = isNullOrEmpty(x);\r\n }\r\n else if (_.isNumber(x)) {\r\n isEmpty = !x || x === 0;\r\n }\r\n else {\r\n isEmpty = !x;\r\n }\r\n\r\n if (!isEmpty) {\r\n nonEmptyProperties[key] = x;\r\n console.log(`비어있지 않은 속성 발견 -> ${key}: ${x}`);\r\n }\r\n return isEmpty;\r\n };\r\n\r\n const emptyCheckSpecial: CheckFunctor = (x, key) => {\r\n let isEmpty = true;\r\n if (_.isString(x)) {\r\n isEmpty = isNullOrEmpty(x) || specialObj[x] === obj[x];\r\n }\r\n else if (_.isNumber(x)) {\r\n isEmpty = !x || x === 0 || specialObj[x] === obj[x];\r\n }\r\n else {\r\n isEmpty = !x || specialObj[x] === obj[x];\r\n }\r\n\r\n if (!isEmpty) {\r\n nonEmptyProperties[key] = x;\r\n console.log(`특별 검사에서 비어있지 않은 속성 발견 -> ${key}: ${x}`);\r\n }\r\n return isEmpty;\r\n };\r\n\r\n const isAllEmpty = _.every(\r\n Object.entries(testObj),\r\n ([key, value]) => emptyCheck(value, key)\r\n ) && _.every(\r\n Object.entries(specialObj),\r\n ([key]) => emptyCheckSpecial(obj[key], key)\r\n );\r\n\r\n return {\r\n isEmpty: isAllEmpty,\r\n nonEmptyProperties: nonEmptyProperties\r\n };\r\n}\r\n\r\n/**\r\n * Utility function to format amount as string to given number of decimal places\r\n *\r\n * @export\r\n * @param {*} amount\r\n * @param {number} [decimalCount=2]\r\n * @param {string} [decimals='.']\r\n * @param {string} [thousands=',']\r\n * @return {*} \r\n */\r\nexport function formatAmount(amount:any, decimalCount = 2, decimal = '.', thousands = ',') {\r\n try {\r\n decimalCount = Math.abs(decimalCount);\r\n decimalCount = isNaN(decimalCount) ? 2 : decimalCount;\r\n\r\n const negativeSign = amount < 0 ? \"-\" : \"\";\r\n\r\n let i:any = parseInt(amount = Math.abs(Number(amount) || 0).toFixed(decimalCount)).toString();\r\n let j = (i.length > 3) ? i.length % 3 : 0;\r\n\r\n return negativeSign + (j ? i.substr(0, j) + thousands : '') + i.substr(j).replace(/(\\d{3})(?=\\d)/g, \"$1\" + thousands) + (decimalCount ? decimal + Math.abs(amount - i).toFixed(decimalCount).slice(2) : \"\");\r\n } catch (e) {\r\n console.log(e);\r\n return '';\r\n }\r\n}\r\n\r\nexport function isElementFocusable(el:HTMLElement|null):boolean {\r\n if (!el) {\r\n return false;\r\n }\r\n\r\n const elAsAny = el as any;\r\n return !elAsAny.disabled && !!elAsAny.focus;\r\n}\r\n\r\n/**\r\n *Extract query parameters as key-value pair from history\r\n *\r\n * @export\r\n * @param {History} history\r\n */\r\nexport function getQueryParamObject(history:History) {\r\n const urlSearchParams = new URLSearchParams(history?.location?.search);\r\n return Object.fromEntries(urlSearchParams.entries());\r\n}\r\n\r\nexport function parseJwt(token: string) {\r\n const base64Url = token.split('.')[1];\r\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n const jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {\r\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\r\n }).join(''));\r\n\r\n return JSON.parse(jsonPayload);\r\n}\r\n\r\n//\r\nexport function appendLine(str1:string, str2:string): string {\r\n let result = str1;\r\n if (str1) result += '\\r\\n';\r\n return result + str2;\r\n}\r\n\r\n/**\r\n *Convert number in inches to cm\r\n *\r\n * @export\r\n * @param {number} num\r\n */\r\nexport function cbmInchToCm(num: number) {\r\n if (num === null || num === undefined || isNaN(num)) {\r\n return 0;\r\n }\r\n\r\n return Math.round(num / 16387.0486 * 100) / 100;\r\n}\r\n\r\n/**\r\n *Convert number in cm to inches\r\n *\r\n * @export\r\n * @param {number} num\r\n */\r\nexport function cbmCmToInch(num: number) {\r\n if (num === null || num === undefined || isNaN(num)) {\r\n return 0;\r\n }\r\n return Math.round((num * 16387.0486) * 100) / 100;\r\n}\r\n\r\n\r\n/**\r\n *Convert number in inches to cm\r\n *\r\n * @export\r\n * @param {number} num\r\n */\r\nexport function lbsInchToCm(num: number) {\r\n if (num === null || num === undefined || isNaN(num)) {\r\n return 0;\r\n }\r\n\r\n return Math.round(num * 1.639507 * 100) / 100;\r\n}\r\n\r\n/**\r\n *Convert number in cm to inches\r\n *\r\n * @export\r\n * @param {number} num\r\n */\r\nexport function lbsCmToInch(num: number) {\r\n if (num === null || num === undefined || isNaN(num)) {\r\n return 0;\r\n }\r\n\r\n return Math.round((num / 1.639507) * 100) / 100;\r\n}\r\n\r\n\r\n/**\r\n * Utility function to construct (for example) Shipper details when selecting company lookup\r\n *\r\n * @export\r\n * @param {CompanyPreview} c\r\n * @return {*} {string}\r\n */\r\nexport function constructCompanyDetails(c: CompanyPreview|null|undefined): string {\r\n let details = c?.shortName || '';\r\n if (c?.address) {\r\n details = `${details}\\n${c?.address}`;\r\n }\r\n const locationParts = [];\r\n if (c?.city) { locationParts.push(c?.city); }\r\n if (c?.state) { locationParts.push(c?.state); }\r\n if (c?.zip) { locationParts.push(c?.zip); }\r\n\r\n if (locationParts.length > 0) {\r\n details = `${details}\\n${locationParts.join(', ')}`;\r\n }\r\n if (c?.fax || c?.tel) {\r\n const telFaxParts = [];\r\n if (c?.tel) {\r\n telFaxParts.push(c?.tel);\r\n }\r\n if (c?.fax) {\r\n telFaxParts.push(c?.fax);\r\n }\r\n if (telFaxParts.length > 0) {\r\n details = `${details}\\n${telFaxParts.join(', ')}`;\r\n }\r\n }\r\n\r\n return details;\r\n}\r\n\r\n/**\r\n * Sleep async function\r\n * @param ms \r\n * @returns \r\n */\r\nexport function sleep(ms:number): Promise {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n}\r\n\r\n\r\n/**\r\n * \r\n * @param str \r\n * @param index \r\n * @param length \r\n * @param replace \r\n */\r\nexport function replaceAt(str:string, index:number, length:number, replace: string){\r\n if(!str)\r\n return str\r\n else return str.substring(0, index) + replace + str.substring(index + 1, str.length);\r\n}\r\n\r\n/**\r\n * pt220912: return first line only\r\n * @param str multiline string\r\n * @returns \r\n */\r\nexport function stringGetFirstLine(str:string) {\r\n if(!str || str.length === 0) return str;\r\n else {\r\n const arr = str.match(/^.*$/m)??[];\r\n if(arr.length > 0)\r\n return arr[0];\r\n else \r\n return '';\r\n }\r\n}\r\n\r\nexport function stringGetSecondLines(str:string) {\r\n if(!str || str.length === 0) return str;\r\n const index = str.indexOf('\\n');\r\n if(index !== -1) {\r\n return str.substring(index + 1);\r\n } else {\r\n return '';\r\n }\r\n}\r\n\r\nexport function cbmToCft(cbm: number, retDecimal:number = -1) {\r\n if(cbm < 0) return 0;\r\n if(retDecimal > -1) {\r\n return mathRound(cbm * 35.3147, retDecimal);\r\n } else {\r\n return cbm * 35.3147;\r\n }\r\n}\r\n\r\nexport function left(str: string, n: number) {\r\n if(!str || str.length <= 0) return '';\r\n else if (n < str.length) return str.substring(0, n);\r\n else return str;\r\n}\r\n\r\nfunction filterListBySecTask(filterList: IfmsConfigMenuItem[], secTask: string) : IfmsConfigMenuItem[]\r\n{\r\n return filterList = filterList.filter(x => {\r\n if (x.fmsSecTask !== secTask)\r\n {\r\n x.items = x.items?.filter(f => f.fmsSecTask !== secTask);\r\n return x;\r\n }\r\n else\r\n return null;\r\n });\r\n}\r\n\r\nexport function MenuFilterGrents(filterList: IfmsConfigMenuItem[], grents: SecurityGrant[] | null | undefined, appContext: any): IfmsConfigMenuItem[] {\r\n // setup\r\n let disableMenu: IfmsConfigMenuItem | undefined;\r\n\r\n // <250131.jhlee - AMS와 ISF의 Enable 항목의 체크 여부와 관계없이 메뉴가 보이도록 수정>\r\n //AMS Setup\r\n if (!appContext.suntekSettings?.compliance?.amsEnableAll) {\r\n if (!appContext.suntekSettings?.compliance?.amsEnable) {\r\n // filterList = filterList.filter(x => !x.text?.toString() || !x.text.toString().includes('AMS'));\r\n filterList = filterList.filter(x => !x.text?.toString() || !x.text.toString().includes('ACI'));\r\n }\r\n else {\r\n if (appContext.suntekSettings?.compliance?.amsEnable) {\r\n if (_.isEmpty(appContext.suntekSettings.compliance.amsId1) && _.isEmpty(appContext.suntekSettings.compliance.amsId2) && _.isEmpty(appContext.suntekSettings.compliance.amsId3)) {\r\n disableMenu = filterList.find(x => x.text?.toString().includes('ACI eManifest'));\r\n if (disableMenu) disableMenu.disable = true;\r\n // disableMenu = filterList.find(x => x.text?.toString().includes('AMS'));\r\n // if (disableMenu) disableMenu.disable = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n //ACI Setup\r\n if (!appContext.suntekSettings?.compliance?.amsUseeManifest) {\r\n filterList = filterList.filter(x => !x.text?.toString() || !x.text.toString().includes('ACI eManifest'));\r\n }\r\n\r\n //ISF Setup\r\n // if (!appContext.suntekSettings?.compliance?.isfEnableAll) {\r\n // if (!appContext.suntekSettings?.compliance?.isfEnable) {\r\n // filterList = filterList.filter(x => !x.text?.toString() || !x.text.toString().includes('ISF'));\r\n // }\r\n // else {\r\n // if (_.isEmpty(appContext.suntekSettings.compliance.isfId1) && _.isEmpty(appContext.suntekSettings.compliance.isfId2) && _.isEmpty(appContext.suntekSettings.compliance.isfId3)) {\r\n // disableMenu = filterList.find(x => x.text?.toString().includes('ISF'));\r\n // if (disableMenu) disableMenu.disable = true;\r\n // }\r\n // }\r\n // }\r\n\r\n if (!appContext.suntekSettings?.accounting?.useSalesTaxReturn)\r\n {\r\n filterList = filterListBySecTask(filterList, FmsSecTask.AcctSalesTaxReturnList);\r\n }\r\n if (!appContext.suntekSettings?.company?.enableBranch) {\r\n filterList = filterListBySecTask(filterList, FmsSecTask.OPRptBranchPerform);\r\n }\r\n //<240529.dwshin - SiS만 가능하던것 사용할 수 있게 수정 됨. 2024-01-12>\r\n //// if(appContext.user?.id !== getFmsGlobal().SUNTEK_ID){\r\n // if(!appContext.user?.isSuntekAdmin) {\r\n // filterList = filterListBySecTask(filterList, FmsSecTask.AcctBadDebtExpense);\r\n // }\r\n\r\n // security\r\n if(grents === null || grents === undefined) return filterList;\r\n\r\n return filterList.filter(job => {\r\n if (!job.fmsSecTask\r\n || grents?.find(g => g.securityTaskCode === job.fmsSecTask) === undefined\r\n || grents?.find(g => g.securityTaskCode === job.fmsSecTask && g.grantRead === true)) {\r\n // sub job (level 1 filter)\r\n job.items = job.items?.filter(sjob => !sjob.fmsSecTask\r\n || grents?.find(g => g.securityTaskCode === sjob.fmsSecTask) === undefined\r\n || grents?.find(g => g.securityTaskCode === sjob.fmsSecTask && g.grantRead === true));\r\n\r\n // level 0 컴포넌트에 action이 있거나,\r\n // 하위 아이템이 있는 경우에만 메뉴 보여주도록 함.\r\n //if(job.link || job.popupComponent || job.metadata || (job.items && job.items.length > 0))\r\n //2305233 위 기능 주석처리\r\n if (job.nonItemThenHide && (job.items?.length ?? 0) <= 0)\r\n return null;\r\n else\r\n return job;\r\n }\r\n //240919 - mskang > Deposit / Undo Deposit은 Grant가 Deposit/UndoDeposit일때 뿐 아니라 Check Clear/Undo Check Clear일때도 활성화 되어야함. \r\n //Deposit/UndoDeposit Grant가 false여도 Check Clear/Undo Check Clear Grant가 true면 메뉴에 나타나야 한다.\r\n else if ((job.fmsSecTask === FmsSecTask.AcctDeposit || job.fmsSecTask === FmsSecTask.AcctDepositClear) &&\r\n (grents?.find(g => g.securityTaskCode === FmsSecTask.AcctDeposit) && grents?.find(g => g.securityTaskCode === FmsSecTask.AcctDepositClear && g.grantRead === true))) {\r\n return job;\r\n }\r\n else if ((job.fmsSecTask === FmsSecTask.AcctUndoDeposit || job.fmsSecTask === FmsSecTask.AcctUndoDepositClear) &&\r\n (grents?.find(g => g.securityTaskCode === FmsSecTask.AcctUndoDeposit) && grents?.find(g => g.securityTaskCode === FmsSecTask.AcctUndoDepositClear && g.grantRead === true))) {\r\n return job;\r\n }\r\n else if ((job.fmsSecTask === FmsSecTask.AcctAgingAR ) &&\r\n (grents?.find(g => (g.securityTaskCode === FmsSecTask.AcctAgingAR || g.securityTaskCode === FmsSecTask.AcctAgingAP || g.securityTaskCode === FmsSecTask.AcctAgingAgent || g.securityTaskCode === FmsSecTask.AcctAgingARAP || g.securityTaskCode === FmsSecTask.AcctAgingOther) && g.grantRead === true))) {\r\n return job;\r\n }\r\n else\r\n return null;\r\n });\r\n}\r\n\r\n\r\n\r\n const storageDetailKey = new Map([\r\n [JobNames.Invoice, \"/accounting/invoice\"],\r\n [JobNames.Bill, \"/accounting/bill\"],\r\n [JobNames.CrDb, \"/accounting/crdb\"],\r\n [JobNames.GInvo, \"/accounting/acGeneralInvoice\"],\r\n [JobNames.GBill, \"/accounting/acGeneralBill\"],\r\n ]);\r\n\r\n\r\n\r\nexport function MenuFilterForBillings(filterList: IfmsConfigMenuItem[], currentListJobName: JobNames, currentUrl: string): IfmsConfigMenuItem[] {\r\n let jobName = currentListJobName;\r\n //console.log(`menus.job -1 `, `currentListJobName`, currentListJobName);\r\n\r\n switch (jobName) {\r\n case JobNames.OpInvoice:\r\n jobName = JobNames.Invoice;\r\n break;\r\n case JobNames.OpBill:\r\n jobName = JobNames.Bill;\r\n break;\r\n case JobNames.OpCrDb:\r\n jobName = JobNames.CrDb;\r\n break;\r\n }\r\n\r\n if (!jobName) {\r\n // find detail url.\r\n storageDetailKey.forEach((value, key) => {\r\n //console.log(`menus.job -2 `, `key, value`, key, value);\r\n if (currentUrl.startsWith(value)){\r\n jobName = key as JobNames;\r\n }\r\n })\r\n }\r\n\r\n //console.log(`menus.job -3 `, `currentListJobName`, currentListJobName, `jobName`, jobName, filterList);\r\n filterList = filterList.filter(job => job.level == 0 || (job.moreMenuJobName && job.moreMenuJobName === jobName));\r\n //console.log(`menus.job -4 `, filterList);\r\n\r\n return filterList;\r\n}\r\n\r\nexport function getJobNamesByCurrentUrl(map : any, searchValue : any) {\r\n for (let [key, value] of map.entries()) {\r\n if (value === searchValue)\r\n return key as JobNames;\r\n }\r\n return JobNames.None;\r\n}\r\n\r\nexport function getListItemByJobName(jobName: JobNames) {\r\n switch (jobName) {\r\n case JobNames.OIMbl:\r\n return OiMblListItem;\r\n case JobNames.OIHbl:\r\n return OiHblListItem;\r\n case JobNames.AIMbl:\r\n return AiMblListItem;\r\n case JobNames.AIHbl:\r\n return AiHblListItem;\r\n case JobNames.OEMbl:\r\n return OeMblListItem;\r\n case JobNames.OEHbl:\r\n return OeHblListItem;\r\n case JobNames.OEBook:\r\n return OeBookingListItem;\r\n case JobNames.AEMbl:\r\n return AeMblListItem;\r\n case JobNames.AEHbl:\r\n return AeHblListItem;\r\n case JobNames.OtherOP:\r\n return OtherOperationListItem;\r\n case JobNames.WHRcpt:\r\n return WhReciptsListItem;\r\n case JobNames.WHRcv:\r\n return WhRcvListItem;\r\n case JobNames.WHShip:\r\n return WhShipListItem;\r\n case JobNames.Company:\r\n return CodeCompanyListItem;\r\n case JobNames.BillPayment:\r\n return BillPaymentListItem;\r\n case JobNames.OIMPims:\r\n case JobNames.OEMPims:\r\n case JobNames.AIMPims:\r\n case JobNames.AEMPims:\r\n return PimsBookingListItem;\r\n case JobNames.OIHPims:\r\n case JobNames.OEHPims:\r\n case JobNames.AIHPims:\r\n case JobNames.AEHPims:\r\n return PimsVanningListItem;\r\n case JobNames.BatchRecog:\r\n return BatchRecogListItem; \r\n case JobNames.Invoice:\r\n case JobNames.GInvo:\r\n case JobNames.OpInvoice:\r\n return InvoiceListItem; \r\n case JobNames.Bill:\r\n case JobNames.GBill:\r\n case JobNames.OpBill:\r\n return BillListItem;\r\n case JobNames.CrDb:\r\n case JobNames.OpCrDb:\r\n return CrDbListItem;\r\n case JobNames.SlipJournal:\r\n return JournalLedgerListItem;\r\n \r\n case JobNames.MyEvent:\r\n return MyEventListItem; \r\n \r\n case JobNames.ISF:\r\n return IsfListItem; \r\n default:\r\n return undefined;\r\n\r\n }\r\n}\r\n\r\nexport function GetCompanyNameNew(vID: number, vComName: string, vComType: string = 'C', vIgnoreBlank: boolean = false): string {\r\n let result = '';\r\n\r\n if (vID > 0) {\r\n if (!_.isEmpty(vComName))\r\n result = vComName.length > 0 ? vComName.substring(0, 50) : vComName;\r\n else\r\n result = '** Not Registered Entity **';\r\n }\r\n else {\r\n result = vIgnoreBlank ? '' : '** Blank Entity **';\r\n }\r\n return result;\r\n}\r\n\r\nexport function getTooltipValue(value: string, jobName: JobNames, customLabel: string = '') {\r\n let result = ''\r\n\r\n if (_.isEmpty(value)) return result;\r\n\r\n if (!_.isEmpty(customLabel))\r\n result = `${customLabel} : ${value}`\r\n else {\r\n switch (jobName) {\r\n case JobNames.OIMbl:\r\n case JobNames.OEMbl:\r\n result = `MBL # : ${value}`\r\n break;\r\n case JobNames.AIMbl:\r\n case JobNames.AEMbl:\r\n result = `MAWB # : ${value}`\r\n break;\r\n case JobNames.OIHbl:\r\n case JobNames.OEHbl:\r\n result = `HBL # : ${value}`\r\n break;\r\n case JobNames.AIHbl:\r\n case JobNames.AEHbl:\r\n result = `HAWB # : ${value}`\r\n break;\r\n case JobNames.OEBook:\r\n result = `Booking # : ${value}`\r\n break;\r\n case JobNames.OtherOP:\r\n result = `Ref # : ${value}`\r\n break;\r\n case JobNames.WHRcpt:\r\n result = `Receipt # : ${value}`\r\n break;\r\n case JobNames.WHRcv:\r\n result = `Receiving ID : ${value}`\r\n break;\r\n case JobNames.WHShip:\r\n result = `Shipping ID : ${value}`\r\n break;\r\n case JobNames.Invoice:\r\n case JobNames.WHInvoice:\r\n case JobNames.WHStorageInv:\r\n result = `Invoice # : ${value}`\r\n break;\r\n case JobNames.GInvo:\r\n result = `G. Invoice # : ${value}`\r\n break;\r\n case JobNames.Bill:\r\n case JobNames.WHBill:\r\n result = `Bill # : ${value}`\r\n break;\r\n case JobNames.GBill:\r\n result = `G. Bill # : ${value}`\r\n break;\r\n case JobNames.CrDb:\r\n case JobNames.WHCrDb:\r\n result = `CrDb # : ${value}`\r\n break;\r\n case JobNames.SeaQuotation:\r\n case JobNames.AirQuotation:\r\n case JobNames.OtQuotation:\r\n result = `Quotation # : ${value}`\r\n break;\r\n case JobNames.OILoad:\r\n result = `Load Plan # : ${value}`\r\n break;\r\n case JobNames.OELoad:\r\n result = `Container # : ${value}`\r\n break;\r\n case JobNames.Company:\r\n result = `Company Name : ${value}`\r\n break;\r\n case JobNames.SalesTaxReturn:\r\n result = `Ref # : ${value}`\r\n break;\r\n case JobNames.PayrollSummary:\r\n case JobNames.Payroll2:\r\n result = `Ref # : ${value}`\r\n break;\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nexport function findSecurityTask(appContext: IApplicationContext, taskCode: string) : SecurityGrant\r\n{\r\n let result = appContext.securityGrants?.find(x => x.securityTaskCode === taskCode);\r\n return result ? result : new SecurityGrant({ grantRead: true, grantAdd: true, grantEdit: true, grantDel: true});\r\n}\r\n\r\nexport function getSecBySecTask(appContext: IApplicationContext, taskCode: string, secType: SecType = SecType.Read) : boolean\r\n{\r\n const secGrant = findSecurityTask(appContext, taskCode);\r\n\r\n switch (secType) {\r\n case SecType.Read: return secGrant?.grantRead ?? true; \r\n case SecType.Add: return secGrant?.grantAdd ?? true; \r\n case SecType.Edit: return secGrant?.grantEdit ?? true; \r\n case SecType.Delete: return secGrant?.grantDel ?? true; \r\n case SecType.YesOrNo: return secGrant?.grantYesNo ?? true; \r\n }\r\n}\r\n\r\n\r\nexport function removeDuplicatesByProperty(data: any[], property: keyof any): any {\r\n const seenValues = new Set();\r\n const dupValues = new Set();\r\n \r\n // add line/new line이 맨 위에 생기는 경우, 중복 된 항목은 맨 위의 항목 값을 지워야하므로,\r\n // foreach로 먼저 확인하게 함.\r\n data.forEach(item => {\r\n const value = item[property]?.toLowerCase();\r\n if (!seenValues.has(value)) {\r\n seenValues.add(value);\r\n }else{\r\n dupValues.add(value);\r\n }\r\n });\r\n\r\n return data.filter(item => {\r\n const value = item[property].toLowerCase();\r\n if (dupValues.has(value)) {\r\n dupValues.delete(value);\r\n return false;\r\n }\r\n return true;\r\n });\r\n}\r\n\r\n\r\nexport function DevEncrypt2(sParams: string) {\r\n let key = 'DevPower EnCrypt by Steve Robbins';\r\n let utf8Encode = new TextEncoder();\r\n let k = 0;\r\n let keyChar = utf8Encode.encode(key);\r\n let result = \"\";\r\n let inputChar = utf8Encode.encode(sParams);\r\n\r\n for (var i = 0; i < inputChar.length; i++) {\r\n result += (inputChar[i] ^ keyChar[k++]).toString(16).toUpperCase().padStart(2, '0');\r\n if (k >= keyChar.length) k = 0;\r\n }\r\n\r\n return (inputChar.length * 2).toString().padStart(6, '0') + result;\r\n}\r\n\r\nexport const stringArraysEqual = (arr1: string[], arr2: string[]) => {\r\n if (arr1.length !== arr2.length) return false;\r\n arr1.sort();\r\n arr2.sort();\r\n for (let i = 0; i < arr1.length; i++) {\r\n if (arr1[i] !== arr2[i]) return false;\r\n }\r\n return true;\r\n};\r\n","export enum SQLIndex {\r\n Unknown = 0,\r\n CompanyList,\r\n CompanyListEx,\r\n ReferenceNo,\r\n POL,\r\n POLCode,\r\n POD,\r\n PODCode,\r\n VSLoFLT,\r\n FinalDestination,\r\n SalesMan, // 10\r\n HBLoHAWB,\r\n\r\n /// \r\n /// t_companybroker\r\n /// searchText = f_companyid, formPara2 = \"IncludeInactive\"|\"\"\r\n /// \r\n CompanyBroker,\r\n WareShipItems,\r\n AmsPortList,\r\n AmsSCAC,\r\n AmsVessel,\r\n WareCenterNo,\r\n WareLocation,\r\n //\r\n OceanPOL, // 20\r\n OceanPOD,\r\n OceanFinalDestination,\r\n AirPOL,\r\n AirPOD,\r\n AirFinalDestination,\r\n CustSvcRep,\r\n LiftingSCAC,\r\n LiftingAgent,\r\n CompanyGroup,\r\n Carrier, // 30\r\n Airline,\r\n CompanyContact,\r\n LOTnoALL,\r\n LOTnoOI,\r\n LOTnoOE,\r\n Bank,\r\n GLNo,\r\n\r\n /// \r\n /// formPara = Dept, formPara2 = ChgType\r\n /// \r\n BillingCode,\r\n CompanyListAgntOnly,\r\n CompanyListNotAgnt, // 40\r\n SubCode,\r\n CompanyListConLoc,\r\n Vessel,\r\n SCAC,\r\n AirPort,\r\n AirPortCode, //sjcho 20210604 - Add AirPortCode\r\n Broker,\r\n State,\r\n Country,\r\n SchDb, // 50\r\n Airline_Ex, \r\n CompanyListAgntParial,\r\n GLNoPayrollAcctSalaries,\r\n GLNoPayrollTax, \r\n ConfirmCrDb,\r\n PrepaidExpenseList,\r\n DepreciationList,\r\n AmortizationList,\r\n //\r\n //UserEMailList //[191110215]\r\n UserByID,\r\n //pt200914>\r\n WareRcvItems, // \r\n GLNoPrepaidExpense, // sjcho 20210427 - Prepaid Expense View의 기존 Combo 동작을 Lookup으로 변경하기 위해 추가\r\n BillingCodeCustomized, // \r\n BillingCodeWR,\r\n BillingCodeWS,\r\n \r\n //mskim 220614 JobListView를 사용하는 Lookup 기능을 Lookup control을 사용하도록 변경\r\n OiMblItems,\r\n OeMblItems,\r\n AiMblItems,\r\n AiHblItems,\r\n AeMblItems,\r\n WhReceiptsItems,\r\n OeBookingItems,\r\n OeQuotItems,\r\n OiHblItems,\r\n JournalLedgerItems,\r\n //mskim End\r\n CopyInvRefNos, // \r\n CopyInvFromAcct,\r\n MoveType,\r\n BillingCodePayroll, // 2024.07.02 Add\r\n\r\n ListViewLookup = 1000,\r\n OiMblList,\r\n OeMblList,\r\n AiMblList,\r\n AiHblList,\r\n AeMblList,\r\n WhReceiptsList,\r\n WhReceiptsPanPList,\r\n OeBookingList, // 2020.09.21 Add\r\n OeQuotList,\r\n OiHblList, // 2020.11.12 Add\r\n JournalLedgerList, // 2020.12.04 Add\r\n Department, // 2022.08.23 Add jhchoi\r\n}\r\n\r\nexport enum FmsComboType {\r\n //#region No db access\r\n /// \r\n /// List of TextValue\r\n /// Text = FullName\r\n /// Value = ShortName\r\n /// IntValue = Value to save\r\n /// \r\n AcctCodeType = \"AcctCodeType\",\r\n\r\n /// \r\n /// List of TextValue\r\n /// Text = Curr\r\n /// Value = Curr\r\n /// \r\n Currency12 = \"Currency12\",\r\n\r\n /// \r\n /// List of TextValue\r\n /// Text = Display\r\n /// IntValue = Value\r\n /// \r\n Obl = \"Obl\",\r\n\r\n /// \r\n /// List of String (Incoterm)\r\n /// \r\n Incoterms = \"Incoterms\",\r\n\r\n /// \r\n /// List of String (PUnit)\r\n /// \r\n PackageUnit = \"PackageUnit\",\r\n //#endregion\r\n\r\n //#region Class\r\n /// \r\n /// LookupEdit with Display(CodeBank.BankName), Value(CodeBank.Id)\r\n /// \r\n Bank = \"Bank\",\r\n\r\n /// \r\n /// LookupEdit with Display(CompanyBroker.BrokerName), Value(CompanyB roker.BrokerId)\r\n /// \r\n Broker = \"Broker\",\r\n\r\n /// \r\n /// LookupEdit with Display(CompanyContact.Name), Value(CompanyCon tact.Id)\r\n /// \r\n CompanyContact = \"CompanyContact\",\r\n\r\n /// \r\n /// LookupEdit with Display(CreditCard.AcctSName), Value(CreditCard.Id)\r\n /// \r\n CreditCard = \"CreditCard\",\r\n\r\n /// \r\n /// LookupEdit with Display(CodeState.CodeStateText), Value(CodeState.CodeStateText)\r\n /// \r\n State = \"State\",\r\n\r\n /// \r\n /// LookupEdit with Display(SecurityGroup.Name), Value(SecurityGroup.Id)\r\n /// \r\n SecurityGroup = \"SecurityGroup\",\r\n\r\n /// \r\n /// LookupEdit with Display(CodeANTitle.AnTitle), Value(CodeANTitle.AnTitle)\r\n /// \r\n ANTitle = \"ANTitle\",\r\n //#endregion\r\n\r\n //#region TextValue\r\n /// \r\n /// List of TextValue\r\n /// Text = t_codecountry.f_countryname\r\n /// Value = t_codecountry.f_isocode\r\n /// \r\n Country = \"Country\",\r\n\r\n /// \r\n /// List of TextValue\r\n /// Value = Display, Value\r\n /// \r\n IsoCountry = \"ISOCountry\",\r\n\r\n /// \r\n /// List of TextValue\r\n /// Text = t_ncodecurrency.f_code\r\n /// JobCurrency와 공유되기 때문에 Text 하나만 읽어옴에도 String이 아닌 TextValue Type을 사용\r\n /// \r\n Currency = \"Currency\",\r\n\r\n /// \r\n /// List of TextValue\r\n /// Text = Hbl.f_currency1 or Mbl.f_cur1 or Invo.f_cur\r\n /// Value = Hbl.f_currency2 or Mbl.f_cur2\r\n /// \r\n JobCurrency = \"JobCurrency\",\r\n\r\n /// \r\n /// List of TextValue\r\n /// Text = t_codeline.f_code + f_localdesc\r\n /// Value = t_codeline.f_code\r\n /// \r\n Lines = \"Lines\",\r\n\r\n /// \r\n /// List of TextValue\r\n /// Text = t_codedata.f_name or t_company.f_sname(join t_codedata.f_comid1~5)\r\n /// IntValue = -1 or t_codedata.f_comid1~5\r\n /// \r\n MultiName = \"MultiName\",\r\n\r\n /// \r\n /// List of TextValue\r\n /// Text = t_web_center.f_center_no\r\n /// Value = t_web_center.f_center_type\r\n /// \r\n WebCenter = \"WebCenter\",\r\n\r\n Quarter = \"Quarter\",\r\n\r\n /// \r\n /// List of TextValue\r\n /// Text = t_codelic.f_code\r\n /// Value = t_codelic.description\r\n /// \r\n ExportLic = \"ExportLic\",\r\n\r\n /// \r\n /// List of TextValue\r\n /// Text = t_codeeic.f_code\r\n /// Value = t_codeeic.description\r\n /// IntValue = RowNum - 1 (0, 1, 2 ...)\r\n /// \r\n ExportInfo = \"ExportInfo\",\r\n\r\n /// \r\n /// List of TextValue\r\n /// Text = t_odtc_usmlcat.f_code\r\n /// Value = t_odtc_usmlcat.description\r\n /// IntValue = RowNum - 1 (0, 1, 2 ...)\r\n /// \r\n ODTCCategory = \"ODTCCategory\",\r\n\r\n /// \r\n /// List of TextValue\r\n /// Text = t_odtc_uom.f_code\r\n /// Value = t_odtc_uom.description\r\n /// IntValue = RowNum - 1 (0, 1, 2 ...)\r\n /// \r\n ODTCUnitOfMeasure = \"ODTCUnitOfMeasure\",\r\n\r\n /// \r\n /// List of TextValue\r\n /// Text = t_securitytask.f_desc\r\n /// IntValue = t_securitytask.f_id\r\n /// \r\n SecurityControl = \"SecurityControl\",\r\n\r\n /// \r\n /// List of TextValue\r\n /// Text = T_CODEGLNO.F_GLNO - T_CODEGLNO.F_GLDESCRIPTION\r\n /// Value = T_CODEGLNO.F_GLDESCRIPTION\r\n /// IntValue = T_CODEGLNO.F_GLNO\r\n /// \r\n BankAcctCode = \"BankAcctCode\",\r\n //#endregion\r\n\r\n //#region String\r\n /// \r\n /// List of String (t_codebltype.f_mbltype)\r\n /// \r\n BlType = \"BlType\",\r\n\r\n /// \r\n /// List of String (t_codebranch.f_branch)\r\n /// \r\n Branch = \"Branch\",\r\n\r\n /// \r\n /// List of String (t_codecontainer.f_type)\r\n /// \r\n CntrType = \"CntrType\",\r\n\r\n /// \r\n /// List of String (t_codegroup.f_groupid)\r\n /// \r\n CodeGroup = \"CodeGroup\",\r\n\r\n /// \r\n /// List of String (t_codecommodity.f_description)\r\n /// \r\n Commodity = \"Commodity\",\r\n\r\n /// \r\n /// List of String (t_com panygroup.f_groupid)\r\n /// \r\n CompanyGroup = \"CompanyGroup\",\r\n\r\n /// \r\n /// List of String (Text = t_user.f_userid or t_codesman.f_smanid)\r\n /// \r\n CustSvcRep = \"CustSvcRep\",\r\n\r\n /// \r\n /// List of String (t_codemovetype.f_movetype)\r\n /// \r\n MoveType = \"MoveType\",\r\n\r\n /// \r\n /// List of String (t_codesman.f_smanid)\r\n /// \r\n Salesperson = \"Salesperson\",\r\n\r\n /// \r\n /// List of String (t_codestate.f_code)\r\n /// \r\n StateCode = \"StateC\",\r\n\r\n /// \r\n /// List of String (t_user.f_userid)\r\n /// \r\n User = \"User\",\r\n\r\n /// \r\n /// List of string (t_web_center.f_center_no)\r\n /// \r\n EdiWebCenter = \"EdiWebCenter\",\r\n\r\n /// \r\n /// List of String (t_codeothertype.f_type)\r\n /// \r\n Category = \"Category\",\r\n\r\n /// \r\n /// List of String (t_containergroup.f_type)\r\n /// \r\n CntrGroup = \"CntrGroup\",\r\n //#endregion\r\n\r\n /// \r\n /// List of String (t_department.f_name)\r\n /// \r\n Department = \"Department\",\r\n}\r\n\r\nexport class ComboParamsBase\r\n{\r\n id: number= 0;\r\n comboType: string = \"\";\r\n useEmpty: boolean = false;\r\n\r\n /// \r\n /// NullOrEmpty가 아니면 첫 번재 DisplayItem으로 사용\r\n /// \r\n firstValue : string = \"\";\r\n\r\n /// \r\n /// Default value for selection\r\n /// \r\n defValue : string = \"\";\r\n\r\n /// \r\n /// Combo Item에 \"ALL\"을 첫번째 index에 추가 (for report ui)\r\n /// \r\n addAllItem: boolean = false;\r\n\r\n /// \r\n /// Combo Item에 \"DETAIL\", \"SUMMARY\"를 첫번째 index에 추가 (for report ui)\r\n /// \r\n addDetailSummarylItem: boolean = false;\r\n\r\n /// \r\n /// Combo Item에 \"(Unknown)\"을 마지막 index에 추가 (for report ui)\r\n /// \r\n addUnknownItem: boolean = false;\r\n\r\n constructor(init?:Partial)\r\n {\r\n if(init) {\r\n Object.assign(this, init);\r\n }\r\n }\r\n}\r\n\r\nexport class LookupParamasBase extends ComboParamsBase{\r\n displayMember: string = \"\";\r\n valueMember: string = \"\";\r\n listMember: string = \"\";\r\n\r\n constructor(init?:Partial)\r\n {\r\n super();\r\n\r\n if(init) {\r\n Object.assign(this, init);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * For Wh Receiving/Shipping\r\n */\r\nexport class WebCenterParams extends ComboParamsBase{\r\n centerType: string = \"\";\r\n \r\n constructor(init?:Partial)\r\n {\r\n super();\r\n this.comboType = FmsComboType.WebCenter;\r\n\r\n if(init) {\r\n Object.assign(this, init);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * For Wh Receiving/Shipping\r\n */\r\nexport class EdiWebCenterParams extends ComboParamsBase{\r\n constructor(init?:Partial)\r\n {\r\n super();\r\n this.comboType = FmsComboType.EdiWebCenter;\r\n\r\n if(init) {\r\n Object.assign(this, init);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * For Other Shipment Category\r\n */\r\nexport class CategoryParams extends ComboParamsBase{\r\n constructor()\r\n {\r\n super();\r\n this.comboType = FmsComboType.Category;\r\n }\r\n}\r\n\r\n/**\r\n * For OI, OE, AI, AE - Line\r\n */\r\n export class LinesParams extends ComboParamsBase{\r\n division: string = \"\";\r\n\r\n constructor()\r\n {\r\n super();\r\n this.comboType = FmsComboType.Lines;\r\n }\r\n}\r\n\r\n/**\r\n * For AES Filing(Portal) - State\r\n */\r\n export class StateParams extends LookupParamasBase{\r\n country: string = \"\";\r\n\r\n constructor(init: Partial)\r\n {\r\n super(init);\r\n this.comboType = FmsComboType.State;\r\n if(init) {\r\n Object.assign(this, init);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * For Branch\r\n */\r\nexport class BranchParams extends ComboParamsBase{\r\n constructor()\r\n {\r\n super();\r\n this.comboType = FmsComboType.Branch;\r\n }\r\n}\r\n\r\n/**\r\n * For CreditCard\r\n */\r\nexport class CreditCardParams extends ComboParamsBase{\r\n constructor()\r\n {\r\n super();\r\n this.comboType = FmsComboType.CreditCard;\r\n }\r\n}\r\n\r\n/**\r\n * For Bank\r\n */\r\nexport class BankParams extends ComboParamsBase{\r\n constructor()\r\n {\r\n super();\r\n this.comboType = FmsComboType.Bank;\r\n }\r\n}\r\n\r\n/**\r\n * For SecurityGroup\r\n */\r\n export class SecurityGroup extends ComboParamsBase{\r\n constructor()\r\n {\r\n super();\r\n this.comboType = FmsComboType.SecurityGroup;\r\n }\r\n}\r\n\r\n/**\r\n * For ANTitle\r\n */\r\nexport class ANTitle extends ComboParamsBase{\r\n IsOcean: boolean = false;\r\n constructor(init: Partial)\r\n {\r\n super(init);\r\n this.comboType = FmsComboType.ANTitle;\r\n if(init) {\r\n Object.assign(this, init);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * For Company Multi Name\r\n */\r\nexport class MultiName extends ComboParamsBase{\r\n constructor()\r\n {\r\n super();\r\n this.comboType = FmsComboType.MultiName;\r\n }\r\n}\r\n\r\n/**\r\n * For Vessel Flag\r\n */\r\nexport class IsoCountryParams extends ComboParamsBase{\r\n constructor()\r\n {\r\n super();\r\n this.comboType = FmsComboType.IsoCountry;\r\n }\r\n}\r\n\r\n/**\r\n * For Export License\r\n */\r\nexport class ExportLicense extends ComboParamsBase{\r\n constructor()\r\n {\r\n super();\r\n this.comboType = FmsComboType.ExportLic;\r\n }\r\n}\r\n\r\n/**\r\n * For Odtc Category\r\n */\r\nexport class OdtcCategory extends ComboParamsBase{\r\n constructor()\r\n {\r\n super();\r\n this.comboType = FmsComboType.ODTCCategory;\r\n }\r\n}\r\n\r\n/**\r\n * For Odtc Unit of measure\r\n */\r\nexport class OdtcUnitOfMeasure extends ComboParamsBase{\r\n constructor()\r\n {\r\n super();\r\n this.comboType = FmsComboType.ODTCUnitOfMeasure;\r\n }\r\n}\r\n\r\n/**\r\n * For Export Info\r\n */\r\nexport class ExportInfo extends ComboParamsBase{\r\n constructor()\r\n {\r\n super();\r\n this.comboType = FmsComboType.ExportInfo;\r\n }\r\n}\r\n\r\n/**\r\n * For Department\r\n */\r\nexport class DepartmentParams extends ComboParamsBase{\r\n constructor()\r\n {\r\n super();\r\n this.comboType = FmsComboType.Department;\r\n }\r\n}\r\n\r\nexport enum FmsAutoNumberType\r\n {\r\n CrDbNo = \"FMSCRDBN\",\r\n OIRefNo = \"FMSOIREF\",\r\n OERefNo = \"FMSOEREF\",\r\n OEHblNo = \"FMSOEHBL\",\r\n OEBookNo = \"FMSOEBOK\",\r\n OceanQuoteNo = \"FMSOQUOT\",\r\n AIRefNo = \"FMSAIREF\",\r\n AERefNo = \"FMSAEREF\",\r\n OtQuoteNo = \"FMSOTQUOT\",\r\n\r\n /// \r\n /// eAutoAOHawbNo\r\n /// \r\n AEAwbNo = \"FMSAEAWB\",\r\n AirQuoteNo = \"FMSAQUOT\",\r\n WHRcptNo = \"FMSWHRCP\",\r\n TruckLoadNo = \"FMSTRKLD\",\r\n OECargoNo = \"FMSOECAR\",\r\n OICargoNo = \"FMSOICAR\",\r\n AECargoNo = \"FMSAECAR\",\r\n AICargoNo = \"FMSAICAR\",\r\n InvenRecNo = \"FMSINVRC\",\r\n InvenShipNo = \"FMSINVSH\",\r\n OtORefNo = \"FMSOTREF\",\r\n PayrollRefNo = \"FMSPRREF\", //th190625> 추가\r\n InvoiceNo = \"FMSINVNO\", //th190625> 추가\r\n BillNo = \"FMSBILNO\", //th190625> 추가\r\n GeneralBillNo = \"FMSGBILL\", //th190625> 추가\r\n\r\n TaxRtnRefNo = \"FMSTXRTN\",\r\n GeneralInvoNo = \"FMSGINVO\",\r\n StorageInvoNo = \"FMSSTINV\",\r\n\r\n /// \r\n /// pt210220\r\n /// \r\n LotNo = \"FMSLOTNO\"\r\n }\r\n\r\nexport enum ListFilterType{\r\n /// \r\n /// DownloadAll, JrnlAll, TaskMemoAll\r\n /// \r\n All = 0,\r\n \r\n /// \r\n /// Not used\r\n /// \r\n Draft = 1,\r\n\r\n /// \r\n /// Journal List (240904 Not used)\r\n /// \r\n //WithoutCancelReverser = 1, // Journal list\r\n\r\n /// \r\n /// Task/Memo List - My\r\n /// \r\n My = 1, // Memo List (DOC_REQUEST)\r\n\r\n /// \r\n /// Not used\r\n /// \r\n ExceptDraft = 2,\r\n\r\n /// \r\n /// Task/Memo List - TaskAll\r\n /// \r\n TaskAll = 2,\r\n\r\n /// \r\n /// Download List\r\n /// \r\n Downloaded = 3,\r\n\r\n /// \r\n /// Task/Memo List\r\n /// \r\n TaskPending = 3,\r\n\r\n /// \r\n /// Download List - Not Downloaded\r\n /// \r\n Virgin = 4 // Not downloaded\r\n}\r\n\r\n/**\r\n * Enums of Billing Type for Invoice, Bill, CrDb\r\n */\r\n// export const ChgType = {\r\n// None: 0,\r\n// // Sales Part --------------------\r\n// Sales: 1,\r\n// Collect4Agt: 2,\r\n// ICSales: 3,\r\n// TransSale: 4,\r\n\r\n// DueFromAgent: 5,\r\n// OurSales: 6,\r\n// TheirSales: 7,\r\n\r\n// DutyLoanA: 8,\r\n// OtherSales: 9,\r\n// DutyLoanC: 10,\r\n\r\n// // Cost Part --------------------\r\n// Cost: 11,\r\n\r\n// Pay4Agt: 12,\r\n// Cost2Agt: 13,\r\n// Cost4Transit: 14,\r\n\r\n// DueToAgent: 15,\r\n// OurCost: 16,\r\n// TheirCost: 17,\r\n\r\n// DutyLoan2Agent: 18,\r\n// OtherCost: 19,\r\n// DutyLoan2Customer: 20,\r\n\r\n// // Sales Part --------------------\r\n// SalesPSOnly: 27, // DS, IDS - Our Sales (PS Only) '' \r\n\r\n// // Cost Part --------------------\r\n// CostPSOnly: 37, // DS, IDS - Our Sales (PS Only) '' \r\n// DutyPay4Customer: 40 // DS, IDS - Duty pay for Customer Used in Export Cost '' \r\n// };\r\n\r\n\r\nexport enum FmsSecTask{\r\n // Home\r\n // Business Intelligence\r\n BusinessIntelligence = \"ACCT_BusinessIntelligence\",\r\n \r\n // Crm\r\n Crm = \"CRM\",\r\n\r\n // Pims\r\n // PimsOrder = \"PIMS_Order\",\r\n // PimsPartnerLogin = \"PIMS_PartnerLogin\",\r\n\r\n // Ocean Import\r\n OIMbl = \"OI_MBL\",\r\n OIHbl = \"OI_HBL\",\r\n OIQuot = \"OI_Quotation\",\r\n OITruckLoad = \"OI_TruckLoadPlan\",\r\n OIContainer = \"OI_ContainerInfo\",\r\n // OIMMyPims = \"OI_Shipment_DownloadMyMBL\", // removed\r\n // OIHMyPims = \"OI_Shipment_DownloadMyHBL\", // removed\r\n OIMPims = \"OI_Shipment_DownloadAllMBL\",\r\n OIHPims = \"OI_Shipment_DownloadAllHBL\",\r\n // OISoPims = \"OI_Shipment_ShippingOrder\", // removed\r\n OIVessel = \"OI_VesselInfo\",\r\n OICfsEdiTo = \"OI_CFSEDI_To\",\r\n OICfsEdiFrom = \"OI_CFSEDI_From\",\r\n OIRptShipment = \"OI_Report_OIShipment\",\r\n OIRptInlandTransport = \"OI_Report_InlandTransportation\",\r\n OIRptANLog = \"OI_Report_ArrivalNoticeLog\",\r\n OIRptPendingCargo = \"OI_Report_PendingCargo\",\r\n OIRptRlsHistory = \"OI_Report_ReleaseHistory\",\r\n OIAgentEdi = \"OI_BLFromPartner\",\r\n OIDeleteHistory = \"OI_DeleteHistory\",\r\n\r\n // Ocean Export\r\n OEMbl = \"OE_MBL\",\r\n OEHbl = \"OE_HBL\",\r\n OEBook = \"OE_Booking\",\r\n OELoad = \"OE_LoadPlan\",\r\n OEQuot = \"OE_Quotation\",\r\n OEContainer = \"OE_ContainerInfo\",\r\n // OEMMyPims = \"OE_Shipment_DownloadMyMBL\", // removed\r\n // OEHMyPims = \"OE_Shipment_DownloadMyHBL\",\r\n OEMPims = \"OE_Shipment_DownloadAllMBL\",\r\n OEHPims = \"OE_Shipment_DownloadAllHBL\",\r\n // OESoPims = \"OE_Shipment_ShippingOrder\", // removed\r\n OERptShipment = \"OE_Report_OEShipment\",\r\n OERptBrokerage = \"OE_Report_Brokerage\",\r\n OECBook = \"OE_CarrierBooking\",\r\n OEJapanEdi = \"OE_ImportNACCSEDIFile\",\r\n OEDeleteHistory = \"OE_DeleteHistory\",\r\n\r\n // Air Import\r\n AIMbl = \"AI_MAWB\",\r\n AIHbl = \"AI_HAWB\",\r\n AIQuot = \"AI_Quotation\",\r\n // AIMMyPims = \"AI_Shipment_DownloadMyMAWB\", // removed\r\n // AIHMyPims = \"AI_Shipment_DownloadMyHAWB\", // removed\r\n AIMPims = \"AI_Shipment_DownloadAllMAWB\",\r\n AIHPims = \"AI_Shipment_DownloadAllHAWB\",\r\n // AISoPims = \"AI_Shipment_ShippingOrder\", // removed\r\n AIRptPreAlert = \"AI_Report_PreAlert\",\r\n AIRptEstProfit = \"AI_EstProfitReport\", // removed\r\n AIAgentEdi = \"AI_BLFromPartner\",\r\n AIDeleteHistory = \"AI_DeleteHistory\",\r\n\r\n // Air Export\r\n AEMbl = \"AE_MAWB\",\r\n AEHbl = \"AE_HAWB\",\r\n AEQuot = \"AE_Quotation\",\r\n // AEMMyPims = \"AE_Shipment_DownloadMyMAWB\", // removed\r\n // AEHMyPims = \"AE_Shipment_DownloadMyHAWB\", // removed\r\n AEMPims = \"AE_Shipment_DownloadAllMAWB\",\r\n AEHPims = \"AE_Shipment_DownloadAllHAWB\",\r\n // AESoPims = \"AE_Shipment_ShippingOrder\",\r\n AERptEstProfit = \"AE_EstProfitReport\", // removed\r\n AEeAirWayBill = \"AE_eAWB\",\r\n AEDeleteHistory = \"AE_DeleteHistory\",\r\n\r\n // Other Shipment\r\n OtherOP = \"OT_OtherShipment\",\r\n OTQuot = \"OT_Quotation\",\r\n OtDeleteHistory = \"OT_DeleteHistory\",\r\n\r\n // W/H Receipts\r\n WHRcpt = \"WHReceipts\",\r\n\r\n // AMS\r\n AMSSwitchToAci = \"AMS_SwitchToACI\",\r\n AMSVoyage = \"AMS_Voyage\",\r\n AMSMaster = \"AMS_MBL\",\r\n AMSHouse = \"AMS_HBL\",\r\n AMSUser = \"AMS_Users\",\r\n AMSBranch = \"AMS_Branch\",\r\n AMSGroup = \"AMS_Groups\",\r\n AMSBilling = \"AMS_BillingCode\",\r\n AMSHistory = \"AMS_History\",\r\n AMSC1History = \"AMS_CustomsReleaseHistory\",\r\n AMSRptUsage = \"AMS_AMSUsageReport\",\r\n AMSRptContainerTrack = \"AMS_CntrTrackingUsageReport\",\r\n AMSRptLifting = \"AMS_LiftingReport\",\r\n AMSRptTotalLifting = \"AMS_TotalAMSLifting\",\r\n\r\n // ACI eManifset\r\n ACIManifest = \"ACI_Manifest\",\r\n\r\n // ISF\r\n ISF = \"ISF_ISF\",\r\n\r\n // Warehousing\r\n WHRcv = \"WH_Receiving\",\r\n WHShip = \"WH_Shipping\",\r\n WHInvenSummary = \"WH_Inventory_Summary\",\r\n WHInvenDetail = \"WH_Inventory_Detail\",\r\n WHStorageInv = \"WH_StorageInvoice\",\r\n WHInvoice = \"WH_Invoice\",\r\n WHBill = \"WH_Bill\",\r\n WHCrDb = \"WH_CrDb\",\r\n WHRptChargeItemSummary = \"WH_Report_ChargeableItemSummary\",\r\n WHRptCustomerInNOut = \"WH_Report_CustomerInNOut\",\r\n WHCustomer = \"WH_Setting_Customer\",\r\n WHItem = \"WH_Setting_Item\",\r\n WHLoc = \"WH_Setting_Location\",\t\t\r\n\r\n // Accounting\r\n AcctDashboard = \"ACCT_Dashboard\",\r\n AcctSlipJournalList = \"ACCT_Journal_JournalLedger\",\r\n //AcctSlipJournal = \"ACCT_Journal_AdjustJournalEntry\", // removed\r\n //AcctTransferToAcct2000 = \"ACCT_Journal_TransferToAccount2000\", // removed\r\n AcctSearchJournal = \"ACCT_Journal_SearchJournal\",\r\n AcctVatAP = \"ACCT_Journal_VatAP\", // 한국회계 > VatARAP Report\r\n AcctVatAR = \"ACCT_Journal_VatAR\", // 한국회계 > VatARAP Report\r\n //AcctAging = \"ACCT_Aging\", // removed\r\n AcctAgingAR = \"ACCT_Aging_AR\",\r\n AcctAgingAP = \"ACCT_Aging_AP\", \r\n AcctAgingAgent = \"ACCT_Aging_Agent\",\r\n AcctAgingARAP = \"ACCT_Aging_ARAP\",\r\n AcctAgingOther = \"ACCT_Aging_Other\",\r\n AcctCustPayment = \"ACCT_Payment_Customer\",\r\n AcctAgntPayment = \"ACCT_Payment_Agent\",\r\n AcctBillPayment = \"ACCT_Payment_Bill\",\r\n AcctCCPayment = \"ACCT_Payment_CreditCard\",\r\n AcctPaymentPrep = \"ACCT_Payment_PaymentRequest\",\r\n AcctDeposit = \"ACCT_BankTransaction_Deposit\",\r\n AcctDepositClear = \"ACCT_BankTransaction_Deposit_Clear\",\r\n AcctUndoDeposit = \"ACCT_BankTransaction_UndoDeposit\",\r\n AcctUndoDepositClear = \"ACCT_BankTransaction_UndoDeposit_Clear\",\r\n AcctCCClear = \"ACCT_BankTransaction_CreditCardClear\",\r\n AcctCancelCCClear = \"ACCT_BankTransaction_CancelCreditCardClear\",\r\n AcctChkClearWithExcel = \"ACCT_BankTransaction_CheckClearWithExcel\",\r\n AcctBankTransfer = \"ACCT_BankTransaction_BankTransfer\",\r\n //AcctBankBalRec = \"ACCT_BankTransaction_BankBalanceBankRec\", // removed\r\n //AcctBankRecActivity = \"ACCT_BankTransaction_BankRecActivityList\",\r\n AcctBankBalance = \"ACCT_BankBalance\",\r\n AcctBankRecon = \"ACCT_BankRecon\",\r\n AcctGInvoList = \"ACCT_GInvBill_GeneralInvoiceList\",\r\n //AcctGInvo = \"ACCT_GInvBill_GeneralInvoiceEntry\", // removed\r\n AcctGBillList = \"ACCT_GInvBill_GeneralBillList\",\r\n //AcctGBill = \"ACCT_GInvBill_GeneralBillEntry\", // removed\r\n AcctCustPaymentMemo = \"ACCT_CustomerPaymentMemo\",\r\n AcctDailyAcctSummary = \"ACCT_DailyAccountingSummary\",\r\n AcctBalByEntity = \"ACCT_AccountBalanceByEntity\",\r\n AcctLedger = \"ACCT_AccountLedger\",\r\n //AcctLedgerByEntity = \"ACCT_AccountLedgerByEntity\", // removed\r\n AcctGeneralLedger = \"ACCT_GeneralLedger\",\r\n AcctIncomeStatement = \"ACCT_FinancialReport_IncomeStatement\",\r\n AcctBalanceSheet = \"ACCT_FinancialReport_BalanceSheet\",\r\n AcctTrialBalance = \"ACCT_FinancialReport_TrialBalance\",\r\n AcctCustStatement = \"ACCT_Statement_Customer\",\r\n AcctAgentStatement = \"ACCT_Statement_Agent\",\r\n AcctInvoiceList = \"ACCT_InvBillCrDb_InvoiceList\",\r\n AcctBillList = \"ACCT_InvBillCrDb_BillList\",\r\n AcctCrDbList = \"ACCT_InvBillCrDb_CrDbNoteList\",\r\n AcctEmClaimList = \"ACCT_iXpense_ClaimList\",\r\n //AcctEmClaim = \"ACCT_iXpense_ClaimEntry\", // removed\r\n AcctPayroll = \"ACCT_Payroll\",\r\n //AcctAdjustment = \"ACCT_Adjustment\", // removed\r\n AcctPrepaidAdjustment = \"ACCT_PrepaidAdjustment\",\r\n AcctDepreciationAdjustment = \"ACCT_DepreciationAdjustment\",\r\n AcctAmortizationAdjustment = \"ACCT_AmortizationAdjustment\",\r\n AcctBadDebtExpense = \"ACCT_BadDeptExpenseProcessing\",\r\n AcctSalesTaxReturnList = \"ACCT_SalesTaxReturn_List\",\r\n //AcctSalesTaxReturn = \"ACCT_SalesTaxReturn_Entry\", // removed\r\n AcctPeriodClosing = \"ACCT_Closing_PeiodClosing\",\r\n AcctEndYearProc = \"ACCT_Closing_YearEndProcessing\",\r\n AcctDeleteHistory = \"ACCT_DeleteHistory\",\r\n AcctCPayDeleteHistory = \"ACCT_CPay_DeleteHistory\",\r\n AcctBPayDeleteHistory = \"ACCT_BPay_DeleteHistory\",\r\n AcctCCPayDeleteHistory = \"ACCT_CCPay_DeleteHistory\",\r\n AcctAPayDeleteHistory = \"ACCT_APay_DeleteHistory\",\r\n\r\n // Sales/Cost Recognition\t\t\r\n SCRecogDeferred = \"SalesCostRecog_DeferredReport\",\r\n SCRecogBatchRecog = \"SalesCostRecog_BatchRecog\",\r\n\r\n // OP Report\r\n OPRptEstProfit = \"OP_EstProfitReport\", // removed\r\n OPRptGrossProfit = \"OP_GrossProfitReport\", // removed\r\n OPRptVendorCost = \"OP_VendorCostReport\",\r\n OPRptExpense = \"OP_ExpenseReport\",\r\n OPRptVolume = \"OP_VolumeReport\",\r\n OPRptProfitBySalesman = \"OP_ProfitBySalesman\",\r\n OPRptDutyPendings = \"OP_DutyPendings\",\r\n OPRptIssueReady = \"OP_IssueReadyList\",\r\n OPRptSpecial = \"OP_SpecailReport_Customize\",\r\n OPRptOpPerfom = \"OP_OPPerformanceReport\",\r\n OPRptBranchPerform = \"OP_BranchPerformanceReport\",\r\n\r\n // OP Assist\r\n OPRptCustomerActivity = \"OP_CustomerActivityReport\",\r\n\r\n // Codes\r\n CodeCompany = \"Code_Company\",\r\n CodeBranch = \"Code_Branch\",\r\n CodeBroker = \"Code_Broker\",\r\n CodeUser = \"Code_CompanyUser\",\r\n CodeGroup = \"Code_GroupCode\",\r\n CodeLine = \"Code_LineCode\",\r\n CodeOtherOPType = \"Code_OtherShipmentCategory\",\r\n CodeSalesperson = \"Code_Salesman\",\r\n CodeAccountCode = \"Code_AccountCode\",\r\n CodeAccountSubCode = \"Code_AccountSubCode\",\r\n CodeAutoBillingCharge = \"Code_AutoBillingCharge\",\r\n CodeBank = \"Code_BankSetup\",\r\n CodeBillingCode = \"Code_BillingCode\",\r\n CodeBillingTemplate = \"Code_BillingTemplate\",\r\n CodeCfsBillingCharge = \"Code_CFSBillingCharge\",\r\n CodeCreditCard = \"Code_CreditCardSetup\",\r\n CodeCurrency = \"Code_CurrencyCode\",\r\n CodeExchangeRate = \"Code_ExchangeRate\",\r\n CodeAirLine = \"Code_AirlineCode\",\r\n CodeAirPort = \"Code_AirportCode\",\r\n CodeAirRate = \"Code_AirRate\",\r\n CodeANTitle = \"Code_ArrivalNoticeTitle\",\r\n CodeBLType = \"Code_BLTypes\",\r\n CodeCommodity = \"Code_CommodityCode\",\r\n CodeContainerType = \"Code_ContainerType\",\r\n CodeMemoTitle = \"Code_MemoTitle\",\r\n CodeMoveType = \"Code_MoveType\",\r\n CodeOceanPort = \"Code_PortCodeSchedulDandK\",\r\n CodeVessel = \"Code_VesselName\",\r\n CodeCountry = \"Code_Country\",\r\n CodeEDI315Code = \"Code_EDI315Code\",\r\n CodeExportInfo = \"Code_ExportInformationCode\",\r\n CodeExportLic = \"Code_ExportLicenseCode\",\r\n // CodePimsCustomer = \"Code_iPimsCustomerList\",\r\n // CodePimsUser = \"Code_iPimsUserList\",\r\n CodeScheduleB = \"Code_ScheduleB\",\r\n CodeState = \"Code_State\",\r\n CodeScac = \"Code_SCACCode\",\r\n CodeUNLocation = \"Code_UNLocationCode\",\r\n\r\n // Customer\r\n CmpAddrPrint = \"Cmp_CompanyAddressLabelPrinting\",\r\n\r\n // Utility\r\n UTAttachedFile = \"UT_AttachedFileList\",\r\n UTCmpAddrPrint = \"UT_CompanyAddressLabelPrinting\",\r\n UTEmailLog = \"UT_EmailLog\",\r\n UTFaxLog = \"UT_FaxLog\",\r\n UTPrintLog = \"UT_PringLog\",\r\n UTMergePort = \"UT_MergePortCode\",\r\n UTTaskMemoList = \"UT_TaskMemoList\",\r\n UTUserSecurity = \"UT_UserSecurity\",\r\n UTCommunication = \"UT_Communication\",\r\n UTEmailTemplate = \"UT_EmailTemplate\",\r\n\r\n // Tool\r\n ToolMemo = \"Tool_Memo\",\r\n ToolBlock = \"Tool_Block\",\r\n ToolCancelBlock = \"Tool_CancelBlock\",\r\n ToolOpClose = \"Tool_OPClose\",\r\n ToolCancelOpClose = \"Tool_CancelOPClose\",\r\n ToolRecog = \"Tool_Recognize\",\r\n ToolCancelRecog = \"Tool_CancelRecognize\",\r\n\r\n // Setup\r\n SystemSetup = \"SYS_SystemSetup\",\r\n SubscriberMgr = \"SYS_SubscriberMgr\",\r\n\r\n // Home\r\n HomeAgentOutstanding = \"AGBR\",\r\n HomeCustOutstanding = \"CUBR\",\r\n HomeVendOutstanding = \"VEBR\",\r\n HomeTotalSalesReview = \"ESPR\",\r\n\r\n // MyEvent\r\n MyEvent = \"MyEvent\",\r\n\r\n}\r\n\r\n","const layoutBoxes = {\r\n large: { // 480\r\n regular: [30, 110, 306, 30],\r\n halfSplitLargeRight: [30, 110, 100, 106, 100, 30],\r\n halfSplitRegularRight: [30, 110, 111, 84, 111, 30],\r\n halfSplitSmallRight: [30, 110, 142, 58, 106, 30],\r\n portOfLoading: [30, 146, 106, 58, 106, 30],\r\n break: 0,\r\n },\r\n break1: { // 420\r\n regular: [25, 110, 256, 25],\r\n halfSplitLargeRight: [25, 110, 75, 106, 75, 25],\r\n halfSplitRegularRight: [25, 110, 86, 84, 86, 25],\r\n halfSplitSmallRight: [25, 110, 117, 58, 81, 25],\r\n portOfLoading: [25, 146, 81, 58, 81, 25],\r\n break: 1,\r\n },\r\n break2: { // 360\r\n regular: [15, 110, 216, 15],\r\n halfSplitLargeRight: [15, 110, 55, 106, 55, 15],\r\n halfSplitRegularRight: [15, 110, 66, 84, 66, 15],\r\n halfSplitSmallRight: [15, 110, 97, 58, 61, 15],\r\n portOfLoading: [15, 146, 61, 58, 61, 15],\r\n break: 2,\r\n },\r\n break3: { // 340\r\n regular: [10, 110, 206, 10],\r\n halfSplitLargeRight: [10, 110, 50, 106, 50, 10],\r\n halfSplitRegularRight: [10, 110, 61, 84, 61, 10],\r\n halfSplitSmallRight: [10, 110, 92, 58, 56, 10],\r\n portOfLoading: [10, 146, 56, 58, 56, 10],\r\n break: 3,\r\n },\r\n break4: {\r\n regular: [10, 110, 186, 10],\r\n halfSplitLargeRight: [10, 110, 40, 105, 40, 10],\r\n halfSplitRegularRight: [10, 110, 51, 84, 51, 10],\r\n halfSplitSmallRight: [10, 110, 82, 58, 46, 10],\r\n portOfLoading: [10, 146, 46, 58, 46, 10],\r\n break: 4,\r\n }\r\n};\r\n\r\ninterface IndexByString {\r\n [key: string]: string,\r\n};\r\n\r\nconst operations: IndexByString = {\r\n home: 'Home',\r\n oceanImport: 'Ocean Import',\r\n oceanExport: 'Ocean Export',\r\n airImport: 'Air Import',\r\n airExport: 'Air Export',\r\n otherShipment: 'Other Shipment',\r\n whReceipt: 'Freight Receipt', //Change name W/H Receipt -> Freight Receipt\r\n warehousing: 'Warehouse', //Change name Warehousing -> Warehouse\r\n opReport: 'Operation Report', \r\n accounting: 'Accounting',\r\n customer: 'Customer List',\r\n utility: 'Util',\r\n billings: 'Billings',\r\n myEvent: 'My Event',\r\n businessIntell: 'Business Intelligence',\r\n\r\n // Special 'virtual' operation, used for screens that are not common to all regular operations,\r\n // but appear standalone in Job Menu, but in the other way behave as other screens in regular operations\r\n standalone: 'Standalone',\r\n //reportManager: 'OP Report',\r\n}\r\n\r\nconst types: IndexByString = {\r\n MBL: 'MBL',\r\n HBL: 'HBL',\r\n MAWB: 'MAWB',\r\n HAWB: 'HAWB',\r\n OEBook : 'BK',\r\n OtherOP : '',\r\n WHRcv : 'RCV',\r\n WHShip : 'SHP',\r\n Company : '',\r\n ISF: 'ISF',\r\n}\r\n\r\nconst constants = {\r\n opTypes: {\r\n home: 'home',\r\n oceanImport: 'oceanImport',\r\n oceanExport: 'oceanExport',\r\n airImport: 'airImport',\r\n airExport: 'airExport',\r\n otherShipment: 'otherShipment',\r\n whReceipt: 'freightReceipt', //Change name W/H Receipt -> Freight Receipt\r\n warehousing: 'warehousing', \r\n opReport:'opReport',\r\n accounting: 'accounting',\r\n customer: 'customer',\r\n standalone: 'standalone',\r\n // reportManager: 'reportManager',\r\n utility: 'utility',\r\n billings: 'billings',\r\n myEvent: 'myEvent',\r\n businessIntell: 'businessIntell',\r\n },\r\n operations,\r\n types,\r\n layout: layoutBoxes,\r\n infoAreaEntity: {\r\n oceanImportMbl: 'T_OIMMAIN',\r\n oceanImportHbl: 'T_OIHMAIN',\r\n oceanExportMbl: 'T_OOMMAIN',\r\n oceanExportHbl: 'T_OOHMAIN',\r\n oceanImportInvoice: 'T_INVOHD',\r\n oceanImportBill: 'T_APHD',\r\n oceanImportCrdb: 'T_CRDBHD',\r\n oceanImportQuotation: 'T_OOHQUOTATION',\r\n codeMiscMemoTitle: 'T_CODECARGOSTATUS',\r\n codeCompanyBranch: 'T_CODEBRANCH',\r\n codeCompanyCompany: 'T_COMPANY',\r\n codeCompanyCompanyUser: 'T_USER',\r\n codeCompanyDepartment: 'T_DEPARTMENT',\r\n codeOceanPortCode: 'T_CODEOCEANPORT',\r\n codeOceanVesselName: 'T_CODEVESSEL',\r\n codeMiscCommodity: 'T_CODECOMMODITY',\r\n },\r\n SAVE_SUCCESS_DEFAULT_MSG: 'Successfully saved',\r\n SAVE_ERROR_MESSAGE: 'Save failure',\r\n LOAD_ERROR_MESSAGE: 'Cannot load data',\r\n\r\n BL_INFO: 'B/L Info',\r\n Doc_Server: 'Doc. Server',\r\n Document_Server: 'Document Server',\r\n List_Billings: 'Billings',\r\n List_Journal: 'Journal',\r\n};\r\n\r\nexport const Units = [\r\n 'BAGS', 'BALES', 'BDLS', 'CARTONS', 'CASES', 'CRATES', 'CTNS', 'DRUMS', 'GOH',\r\n 'L/VANS', 'P/E', 'PCS', 'PIECES', 'PKGS', 'ROLLS', 'W/CRTS', 'W/CS'\r\n];\r\n\r\nexport default constants;\r\n ","import { History } from 'history';\r\nimport postal from 'postal';\r\n\r\nexport const NavigationType = {\r\n newPage: 'NEW_PAGE',\r\n jobMenuSwitch: 'JOB_MENU_SWITCH',\r\n};\r\n\r\nlet index = 1;\r\n\r\nexport function openNewPage(history:History,\r\n link:string,\r\n navigationType:string,\r\n metadata:any|null=null,\r\n afterScreenUrl: string|null = null, /* Used to make sure new screen is on stack after this url */\r\n params: any|null=null,\r\n) {\r\n const channel = postal.channel('ifms-navigation');\r\n\r\n if (!!metadata) {\r\n history.push(link, {\r\n type: navigationType,\r\n index: index++,\r\n afterScreenUrl,\r\n params: {...params},\r\n });\r\n \r\n // Duplicate push so we can handle back button in correct way\r\n history.push(link, {\r\n type: navigationType,\r\n index: index++,\r\n afterScreenUrl,\r\n metadata: { ...metadata },\r\n params: {...params},\r\n });\r\n\r\n } else {\r\n history.push(link, {\r\n type: navigationType,\r\n index: index++,\r\n afterScreenUrl,\r\n metadata: { ...metadata },\r\n params: {...params},\r\n });\r\n \r\n // Duplicate push so we can handle back button in correct way\r\n history.push(link, {\r\n type: navigationType,\r\n afterScreenUrl,\r\n index: index++,\r\n params: {...params},\r\n });\r\n }\r\n\r\n channel.publish('ifms-navigation.urlChange', link);\r\n}\r\n","import { stringsEqualIgnoreCase } from \"../../util\";\r\n\r\n/**\r\n * Revision History\r\n * \r\n * 211124 ptkim Create\r\n */\r\nexport class SQLField {\r\n fieldName: string = '';\r\n propertyName: string = '';\r\n value: any = undefined;\r\n\r\n constructor(init?: Partial) {\r\n Object.assign(this, init);\r\n }\r\n\r\n}\r\n\r\nexport enum SQLType {\r\n Select,\r\n Insert,\r\n Update,\r\n Delete,\r\n InsertOrUpdate,\r\n Execute\r\n}\r\n\r\nexport enum SQLCondition {\r\n And,\r\n Or\r\n}\r\n\r\nexport class SQLInfo {\r\n tableName: string = '';\r\n type: SQLType = SQLType.Select;\r\n isSingleTable: boolean = true;\r\n fields: SQLField[] = [];\r\n key: SQLField|null = null;\r\n whereFields: SQLField[] = [];\r\n where: string = '';\r\n conditionalString: string = '';\r\n\r\n // TableName for SQLType.Execute\r\n static BlStatus = \"BlStatus\";\r\n static UpdateDutyEntity = \"UpdateDutyEntity\";\r\n static UpdateSrcDutyEntity = \"UpdateSrcDutyEntity\";\r\n static UpdateBrokerInfo = \"UpdateBrokerInfo\";\r\n static UpdateStatusOP = \"UpdateStatusOP\";\r\n static SaveAcctHistory = \"SaveAcctHistory\";\r\n static UpdateOriginActionDate = \"UpdateOriginActionDate\";\r\n static DeleteDepoData = \"DeleteDepoData\";\r\n static DeleteApData = \"DeleteApData\";\r\n static UpdateHblITInfo = \"UpdateHblITInfo\";\r\n static UpdateHblFDest = \"UpdateHblFDest\";\r\n static SaveAiManifest = \"SaveAiManifest\";\r\n static UpdateWhLocationStatus = \"UpdateWhLocStatus\";\r\n static RegisterWhItem = \"RegisterWhItem\";\r\n static UpdateByAcmeID = \"UpdateByAcmeID\";\r\n static UpdateHistory = \"UpdateHistory\";\r\n\r\n static UpdateVoidInfo = \"UpdateVoidInfo\";\r\n static UpdateCreditInfo = \"UpdateCreditInfo\";\r\n static UpdateCancelCreditInfo = \"UpdateCancelCreditInfo\";\r\n static UpdateBLInfo = \"UpdateBLInfo\";\r\n static SaveReviseInvo = \"SaveReviseInvo\";\r\n static UpdatePaidAmend = \"UpdatePaidAmend\";\r\n\r\n // Exec SP\r\n static SaveNewJournalByMaster = \"dbo.up_SaveNewJournalByMaster @TBName, @TBId, @LoginId\";\r\n static MatchAdvanceInPayment = \"dbo.up_MatchAdvanceAcctCode @TBName, @TBId, @NewDate, @GlNo, @LoginID\";\r\n static SaveNewJournalByTask = \"dbo.up_SaveNewJournalByTask @TBName, @TBId, @LoginId, @SeqNo\";\r\n\r\n constructor(init?:Partial) {\r\n Object.assign(this, init);\r\n }\r\n\r\n static getWhereFieldValue(sqlInfo:SQLInfo, propName:string): any{\r\n const sf = sqlInfo.whereFields.find(x=> stringsEqualIgnoreCase(x.propertyName, propName))\r\n return sf ? sf.value : undefined;\r\n }\r\n\r\n static getFieldValue(sqlInfo:SQLInfo, propName:string): any{\r\n const sf = sqlInfo.fields.find(x=> stringsEqualIgnoreCase(x.propertyName, propName))\r\n return sf ? sf.value : undefined;\r\n }\r\n\r\n static getFieldByPropertyName(sqlInfo:SQLInfo, propName:string): SQLField|undefined {\r\n return sqlInfo.fields.find(x => stringsEqualIgnoreCase(x.propertyName, propName))\r\n }\r\n\r\n static getFieldByFieldName(sqlInfo:SQLInfo, fldName:string): SQLField|undefined {\r\n return sqlInfo.fields.find(x => stringsEqualIgnoreCase(x.fieldName, fldName))\r\n }\r\n\r\n static hasFieldOfPropertyWithValue(sqlInfo:SQLInfo, propName:string, value:any):boolean{\r\n const sf = this.getFieldByPropertyName(sqlInfo, propName);\r\n if(!sf) return false;\r\n return sf.value === value;\r\n }\r\n\r\n static hasWhereFieldOfPropertyWithValue(sqlInfo:SQLInfo, propName:string, value:any):boolean{\r\n const sf = this.getWhereFieldByPropertyName(sqlInfo, propName);\r\n if(!sf) return false;\r\n return sf.value === value;\r\n }\r\n\r\n static setFieldValueByPropertyName(sqlInfo:SQLInfo, propName:string, value:any){\r\n const sf = this.getWhereFieldByPropertyName(sqlInfo, propName);\r\n if(sf) sf.value = value;\r\n }\r\n\r\n static getWhereFieldByPropertyName(sqlInfo:SQLInfo, propName:string): SQLField|undefined{\r\n return sqlInfo.whereFields.find(x => stringsEqualIgnoreCase(x.propertyName, propName));\r\n }\r\n\r\n static getWhereFieldByFieldName(sqlInfo:SQLInfo, fldName:string): SQLField|undefined {\r\n return sqlInfo.whereFields.find(x => stringsEqualIgnoreCase(x.fieldName, fldName))\r\n }\r\n\r\n static setWhereFieldValueByPropertyName(sqlInfo:SQLInfo, propName:string, value:any){\r\n const sf = this.getWhereFieldByPropertyName(sqlInfo, propName);\r\n if(sf) sf.value = value;\r\n }\r\n\r\n static setWhereFieldValueByFieldName(sqlInfo:SQLInfo, fldName: string, value:any): void {\r\n const sf = this.getWhereFieldByFieldName(sqlInfo, fldName);\r\n if(sf) sf.value = value;\r\n }\r\n}","/**\r\n * Revision History\r\n * \r\n * 12/27/2021 ptkim Add compareIso function\r\n * 09/19/2022 ptkim moment.format('YYYY-MM-DDTHH:mm:ss'), remove tailingZ\r\n */\r\nimport _ from 'lodash';\r\nimport moment from 'moment';\r\n\r\nimport {getDateFormat, getDateTimeFormat} from '../globals';\r\n\r\nfunction formatIso(iso:string|null|undefined, format: string|null|undefined) {\r\n if (!iso) {\r\n return '';\r\n }\r\n\r\n if (!format) {\r\n return '';\r\n }\r\n\r\n return moment(iso).format(format);\r\n}\r\n\r\n/**\r\n * Formats iso date in format 'JUNE 06, 2022'\r\n *\r\n * @export\r\n * @param {string} iso\r\n * @return {*} \r\n */\r\nexport function getLongDateFromIso(iso: string) {\r\n return moment(iso).format('MMMM DD, YYYY');\r\n}\r\n\r\n/**\r\n * getCurrentDateIso() - get's current time (local time) in ISO 8601\r\n *\r\n * @export\r\n * @return {*} \r\n */\r\nexport function getCurrentDateIso(dateOnly: boolean = false) {\r\n return moment().format(dateOnly ? 'YYYY-MM-DDT00:00:00' : 'YYYY-MM-DDTHH:mm:ss');\r\n}\r\n\r\n\r\n/**\r\n * formatDate - formats iso date with current system settings date format\r\n *\r\n * @export\r\n * @param {(string|null|undefined)} isoDate\r\n * @return {*} {string}\r\n */\r\nexport function formatDate(isoDate: string|null|undefined, formatString?: string): string {\r\n return formatIso(isoDate, formatString || getDateFormat());\r\n}\r\n\r\n/**\r\n * formatDateTime - formats iso date with current system settings date time format\r\n *\r\n * @export\r\n * @param {(string|null|undefined)} isoDate\r\n * @return {*} {string}\r\n */\r\nexport function formatDateTime(isoDateTime: string | null | undefined, format?: string, includeSec?: boolean, forList?:boolean): string {\r\n if(forList) format = format + ' HH:mm'\r\n const format2 = includeSec ? `${format || getDateTimeFormat()}:ss` : `${format || getDateTimeFormat()}`;\r\n return formatIso(isoDateTime, format || format2);\r\n}\r\n\r\n\r\n/**\r\n * formatDateTimeFull - formats iso date with current system settings date time format with AM/PM suffix\r\n *\r\n * @export\r\n * @param {(string|null|undefined)} isoDate\r\n * @return {*} {string}\r\n */\r\n export function formatDateTimeFull(isoDateTime: string|null|undefined, format?: string): string {\r\n const appliedFormat = `${format || getDateTimeFormat()} A`.replace('HH', 'hh');\r\n return formatIso(isoDateTime, appliedFormat);\r\n}\r\n\r\n/**\r\n * isoToDate - converts iso string to javascript native Date object\r\n *\r\n * @export\r\n * @param {(string|null)} iso\r\n * @return {*} {(Date|null)}\r\n */\r\nexport function isoToDate(iso: string|null): Date|null {\r\n if (!iso) {\r\n return null;\r\n }\r\nconst ewr = moment(iso).toDate();\r\n return moment(iso).toDate();\r\n}\r\n\r\n/**\r\n * now - get current timestamp as iso\r\n *\r\n * @export\r\n * @return {*} \r\n */\r\nexport function now() {\r\n return moment().format('YYYY-MM-DDTHH:mm:ss');\r\n}\r\n\r\n/**\r\n * now - get current timestamp as iso\r\n *\r\n * @export\r\n * @return {*}\r\n */\r\n\r\nexport function nowMillisecond() {\r\n return moment().format('YYYY-MM-DDTHH:mm:ss.SSS');\r\n}\r\n\r\n/**\r\n * now - get current timestamp as iso\r\n *\r\n * @export\r\n * @return {*} \r\n */\r\n export function nowDate() {\r\n return moment().format('YYYY-MM-DDT00:00:00');\r\n}\r\n\r\n/**\r\n * now - get current timestamp as iso\r\n *\r\n * @export\r\n * @return {*}\r\n */\r\nexport function getCurrentMonth() {\r\n return moment().month();\r\n}\r\n\r\n/**\r\n * now - get current timestamp as iso\r\n *\r\n * @export\r\n * @return {*}\r\n */\r\nexport function getCurrentYear() {\r\n return moment().year();\r\n}\r\n\r\n/**\r\n * now - get current utc timestamp as iso\r\n *\r\n * @export\r\n * @return {*} \r\n */\r\n export function nowUtc() {\r\n return moment().utc().format('YYYY-MM-DDTHH:mm:ss');\r\n}\r\n\r\n/**\r\n * nowStartOfDay - get current timestamp - start of day as iso\r\n *\r\n * @export\r\n * @return {*} \r\n */\r\n export function nowStartOfDay() {\r\n return moment().startOf('day').format('YYYY-MM-DDTHH:mm:ss');\r\n}\r\n\r\n/**\r\n * nowStartOfMonth - get current timestamp - start of month as iso\r\n *\r\n * @export\r\n * @return {*}\r\n */\r\nexport function nowStartOfMonth() {\r\n return moment().startOf('month').format('YYYY-MM-DDTHH:mm:ss');\r\n}\r\n\r\n/**\r\n * prevMonthStartOfDay - get current timestamp - previous month start of day as iso\r\n *\r\n * @export\r\n * @return {*}\r\n */\r\nexport function prevMonthStartOfDay() {\r\n return moment().startOf('month').add(-1, 'months').format('YYYY-MM-DDTHH:mm:ss');\r\n}\r\n\r\n/**\r\n * prevMonthStartOfDay - get current timestamp - previous month last of day as iso\r\n *\r\n * @export\r\n * @return {*}\r\n */\r\nexport function prevMonthLastOfDay() {\r\n return moment().startOf('month').add(-1, 'days').format('YYYY-MM-DDTHH:mm:ss');\r\n}\r\n\r\n/**\r\n * Get difference in months between 2 iso dates in months\r\n *\r\n * @export\r\n * @param {string} iso1\r\n * @param {string} iso2\r\n * @return {*} {number}\r\n */\r\nexport function getDiffMonths(iso1:string, iso2: string): number {\r\n return moment(iso1).diff(moment(iso2), 'months')\r\n}\r\n\r\n/**\r\n * Get difference in months between 2 iso dates in days\r\n *\r\n * @export\r\n * @param {string} iso1\r\n * @param {string} iso2\r\n * @return {*} {number}\r\n */\r\n export function getDiffDays(iso1:string, iso2: string): number {\r\n return moment(iso1).diff(moment(iso2), 'days')\r\n}\r\n\r\nexport interface DateTextFormatResult {\r\n valid: boolean,\r\n iso: string|null,\r\n};\r\n\r\n/**\r\n * dateTextToIso - converts date string to iso. Uses current date format from settings\r\n *\r\n * @export\r\n * @param {string} date\r\n */\r\nexport function dateTextToIso(date:string, formatString?: string):DateTextFormatResult {\r\n const format = formatString || getDateFormat();\r\n if (!format) {\r\n return { valid: false, iso: null };\r\n }\r\n\r\n const strictMode = true;\r\n\r\n const m = moment(date, format, strictMode);\r\n //const valid = m.isValid() && !(compareIso(date, '1980') < 0 || compareIso(date, '2079') >= 0);\r\n const valid = m.isValid() && !(m.year() < 1980 || m.year() > 2079);\r\n\r\n //= iso.length) {\r\n return null; // Should never happen\r\n }\r\n\r\n return iso.substring(tIndex + 1, tIndex + hhMM.length + 1);\r\n}\r\n\r\n/**\r\n * pt211230: Get date part only with T00:00:00 into iso format\r\n * @param iso \r\n * @returns \r\n */\r\nexport function getDate(iso: string|null|undefined): string|null {\r\n if (!iso) {\r\n return null;\r\n }\r\n\r\n if (!moment(iso).isValid()) {\r\n return null;\r\n }\r\n\r\n const tIndex = iso.indexOf('T');\r\n if (tIndex < 0) {\r\n return null; // Should never happen\r\n }\r\n\r\n return iso.substring(0, tIndex) + 'T00:00:00';\r\n}\r\n\r\n/**\r\n * addMilliseconds - Adds number of milliseconds to iso date and returns a new date as iso\r\n *\r\n * @export\r\n * @param {string} iso1\r\n * @param {string} iso2\r\n * @return {*} {number}\r\n */\r\n export function addMilliseconds(iso:string, milliseconds:number): string {\r\n return moment(iso).add(milliseconds, 'milliseconds').format();\r\n}\r\n\r\n/**\r\n * addDays - Adds number of days to iso date and returns a new date as iso\r\n *\r\n * @export\r\n * @param {string} iso1\r\n * @param {string} iso2\r\n * @return {*} {number}\r\n */\r\n export function addDays(iso:string, days:number): string {\r\n return moment(iso).add(days, 'days').format('YYYY-MM-DDTHH:mm:ss');\r\n}\r\n\r\n/**\r\n * addMonth - Adds number of months to iso date and returns a new date as iso\r\n *\r\n * @export\r\n * @return {*} {number}\r\n * @param iso\r\n * @param days\r\n */\r\nexport function addMonths(iso:string, months:number): string {\r\n return moment(iso).add(months, 'months').format('YYYY-MM-DDTHH:mm:ss');\r\n}\r\n\r\n/**\r\n * addMonth - Adds number of years to iso date and returns a new date as iso\r\n *\r\n * @export\r\n * @return {*} {number}\r\n * @param iso\r\n * @param years\r\n */\r\nexport function addYears(iso:string, years:number): string {\r\n return moment(iso).add(years, 'years').format('YYYY-MM-DDTHH:mm:ss');\r\n}\r\n\r\n/**\r\n * isIsoBefore - check if isBeforeCheck is before iso\r\n *\r\n * @export\r\n * @param {string} iso\r\n * @param {string} isoBeforeCheck\r\n * @return {*} {boolean}\r\n */\r\nexport function isIsoBefore(iso:string, isoBeforeCheck:string): boolean {\r\n return moment(iso).isBefore(moment(isoBeforeCheck));\r\n}\r\n\r\n/**\r\n * Compare two ISO date string\r\n * \r\n * @param iso1 ISO date string 1\r\n * @param iso2 ISO date string 2\r\n * @returns 0 (same), > 0 (iso1 > iso2), < 0 (iso1 < iso2)\r\n */\r\n export function compareIso(iso1:string, iso2:string):number {\r\n const m1 = moment(iso1);\r\n const m2 = moment(iso2);\r\n if(m1.isBefore(m2)) return -1;\r\n else if(m1.isSame(m2)) return 0;\r\n else return 1;\r\n}\r\n\r\n/**\r\n * Reutrn bigger iso date string\r\n * @param iso1 \r\n * @param iso2 \r\n */\r\nexport function getBigDate(iso1:string|null, iso2:string|null):string|null {\r\n if(!iso1) {\r\n if(!iso2) return null;\r\n else return iso2;\r\n }\r\n else if(!iso2)\r\n return iso1;\r\n else {\r\n if(isIsoBefore(iso1, iso2))\r\n return iso2;\r\n else\r\n return iso1;\r\n }\r\n}\r\n\r\n/**\r\n * Dario: Set time part to iso. If time is null it sets it as 00:00\r\n * Time is expected to be in correct format (HH:mm)\r\n * @param iso, time.\r\n * @returns \r\n */\r\n export function setTime(iso: string, time: string|null): string {\r\n if (!moment(iso).isValid()) {\r\n throw new Error('Invalid iso: ' + iso);\r\n }\r\n\r\n const tIndex = iso.indexOf('T');\r\n if (tIndex < 0) {\r\n throw new Error('Invalid iso: ' + iso);\r\n }\r\n\r\n const timePart = time || '00:00';\r\n\r\n return `${iso.substring(0, tIndex)}T${timePart}`;\r\n}\r\n\r\n/**\r\n * Converts unix epoch number to date time string. Currently used to get 'logged at' time which\r\n * is parsed from jwt\r\n * \r\n * @param epoch \r\n * @returns \r\n */\r\nexport function getDateFromEpoch(epoch: number) {\r\n return moment(new Date(epoch * 1000)).format();\r\n}\r\n\r\n/**\r\n * Converts iso date to unix epoch number\r\n * \r\n * @param epoch \r\n * @returns \r\n */\r\n export function getEpochFromDate(iso: string) {\r\n return moment(iso).valueOf();\r\n}\r\n\r\n/**\r\n * pt220220\r\n * To check if any value is ISO8601 datetime string\r\n * @param iso \r\n * @returns \r\n */\r\nexport function isIsoDateTime(iso:any) {\r\n // return (_.isString(iso) && moment(iso, \"YYYY-MM-DDTHH:mm:ss\", false).isValid());\r\n\r\n // Implementation note:\r\n // Because how moment.js is implemented, the following return true:\r\n //\r\n // moment('2022-02-02t12:00:01xx', \"YYYY-MM-DDTHH:mm:ss\", false).isValid()\r\n //\r\n // To have more precise implementation, let's use strict mode parsing:\r\n // (Dario)\r\n return (_.isString(iso) && moment(iso, moment.ISO_8601, true).isValid());\r\n}\r\n\r\nexport const monthDaysList = Array.from({length: 31}, (_, i) => ({value: (i + 1).toString(), label: (i + 1).toString()}))\r\nexport const monthsList = Array.from({length: 12}, (_, i) => ({value: (i + 1).toString(), label: (i + 1).toString()}))\r\nexport const yearsList = Array.from({length: 30}, (_, i) => ({value: (i + 1).toString(), label: (i + 2001).toString()}))\r\n\r\nexport const quartersList = Array.from({length: 4}, (_, i) => ({value: (i + 1).toString(), label: (i + 1).toString()}))\r\nexport const halfList = Array.from({length: 2}, (_, i) => ({value: (i + 1).toString(), label: (i + 1).toString()}))\r\n","import React from 'react';\r\nimport { SecurityGrant } from './framework.core/SecurityGrant';\r\n\r\nimport { User, SystemSettings, SuntekSettings } from './ifmsTypes';\r\nimport { ControlType } from './fms.core/modules/FmsSecurity';\r\nimport { FormType } from './fms.enum';\r\n\r\nexport interface IApplicationContext {\r\n api: any|null,\r\n user:User|null,\r\n systemSettings:SystemSettings|null|undefined,\r\n setSystemSettings: (s:Partial) => void,\r\n suntekSettings:SuntekSettings|null|undefined, //\r\n setSuntekSettings: (s:Partial) => void,\r\n defaultPageSize: number,\r\n // journalType : number,\r\n // setJournalType:(x:number) => void,\r\n onLogout: () => void\r\n refreshSystemSettings: () => Promise,\r\n securityGrants: SecurityGrant[]|null|undefined,\r\n appInfoAreaContent:string,\r\n setAppInfoAreaContent:(x:string) => void,\r\n appInfoAreaDrawerHeight:number,\r\n setUseDarkMode:(x:boolean) => void,\r\n useDarkMode:boolean,\r\n backgroundColor: string,\r\n setBackgroundColor : (x:string) => void,\r\n setAppInfoAreaDrawerHeight:(x:number) => void,\r\n securityControls: Record|null|undefined,\r\n setSecurityControls: (j:string, c:ControlType[]) => void,\r\n getControlDisableStatus: (j: string, c: string, f: FormType) => boolean,\r\n logoutWorker: Worker|null,\r\n myMemoTaskReminder:boolean,\r\n setMyMemoTaskReminder: (x:boolean) => void,\r\n setUseCheckReminder:(x:boolean) => void,\r\n useCheckReminder:boolean,\r\n myMemoId: number,\r\n setMyMemoId: (x:number) => void,\r\n};\r\n\r\nconst defaultState:IApplicationContext = {\r\n api: undefined,\r\n user: null,\r\n systemSettings: null,\r\n setSystemSettings: () => {},\r\n suntekSettings: null, //\r\n setSuntekSettings: () => { },\r\n defaultPageSize: 50,\r\n // journalType: 0,\r\n // setJournalType: () => { },\r\n onLogout: () => { },\r\n refreshSystemSettings: async () => {},\r\n securityGrants: null,\r\n appInfoAreaContent: 'none',\r\n setAppInfoAreaContent: () => {},\r\n appInfoAreaDrawerHeight: 0,\r\n setAppInfoAreaDrawerHeight: () => {},\r\n useDarkMode: false,\r\n setUseDarkMode: () => {},\r\n backgroundColor: 'W',\r\n setBackgroundColor:() => {},\r\n securityControls: null,\r\n setSecurityControls: () => {},\r\n getControlDisableStatus: () => false,\r\n logoutWorker: null,\r\n myMemoTaskReminder: false,\r\n setMyMemoTaskReminder:()=>{},\r\n useCheckReminder: false,\r\n setUseCheckReminder: ()=>{},\r\n myMemoId: 0,\r\n setMyMemoId:()=>{},\r\n\r\n};\r\n\r\nconst ApplicationContext = React.createContext(defaultState);\r\n\r\nexport default ApplicationContext;\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport IfmsButton, { IfmsButtonProps } from './IfmsButton';\r\n\r\nconst PrimaryButton = React.forwardRef(({children, ...other}, ref) => {\r\n // const baseClass = !other.notsetbackcolorwhenfocus ? 'ifms-primary-button' : 'ifms-primary-button b';\r\n\r\n let baseClass = 'ifms-primary-button';\r\n\r\n if (other.notsetbackcolorwhenfocus === 'b') {\r\n baseClass = 'ifms-primary-button b';\r\n } else if (other.notsetbackcolorwhenfocus === 'doc') {\r\n baseClass = 'ifms-primary-button doc';\r\n } else {\r\n baseClass = 'ifms-primary-button';\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\nPrimaryButton.defaultProps = {\r\n};\r\n\r\nPrimaryButton.propTypes = {\r\n size: PropTypes.oneOf(['regular', 'small', 'large', 'extrasmall']),\r\n};\r\n\r\nexport default React.memo(PrimaryButton);\r\n\r\n","import React from 'react';\r\nimport { SearchModelBase } from '../../fms.data/models/SearchModelBase';\r\n\r\nexport interface RightClickContext {\r\n row: number,\r\n column: number,\r\n node: Element,\r\n status : boolean,\r\n};\r\n\r\nexport interface IJobListViewContext {\r\n selectedElement: any|null,\r\n hasOpenedScreenStartingWithUrl: (url:string) => boolean,\r\n hasOpenedScreenStartingWithUrlWithoutMe: (url:string, ignoreUrl: string) => boolean,\r\n hasOpenedScreenInAnyOperationStartingWithUrl: (url: string) => boolean,\r\n hasOpenedScreenInAnyOperationStartingWithUrlWithoutMe: (url: string, ignoreUrl: string) => boolean,\r\n getOpenedScreenInAnyOperationStartingWithUrl: (url: string) => any,\r\n moveToOpenedScreenInAnyOperationStartingWithUrl: (oepnRequestUrl:string, queryUrls:string[], needAfterScreenUrl?: boolean|undefined) => any,\r\n reloadData: () => void,\r\n triggerTableSearch: (fkey:string) => boolean,\r\n setFilterForScreenExternally: (url:string, columnId:string, columnLabel:string, text:string|number, orderBy:any, orderByAscending:boolean, startWithEntry?:boolean, searchModel?:SearchModelBase|null, columnIdEx?:string|null, textEx?:string|number|null, isExpressSearch?:boolean, switchList?:boolean) => void,\r\n setFilterForSearchModel: (url:string, searchModel:SearchModelBase|null, filterOrderObj: any) => void,\r\n infoAreaContent: string,\r\n setInfoAreaContent: (c:string) => void,\r\n updateDataRow: (row:any, insertIfNotExist?:boolean) => void,\r\n openedByF6: boolean,\r\n f6Origin: string|null,\r\n f6Query: string|null,\r\n rowExtrasId: number|null,\r\n setRowExtrasId: (id: number|null) => void,\r\n setClickedCell: (data: any) => void,\r\n setData?: (data: any, count: number) => void,\r\n data?: any[],\r\n viewPopupRow: any|undefined,\r\n dismissPopupRow: VoidFunction,\r\n showPopupRow: VoidFunction,\r\n opType: string|undefined,\r\n search:any,\r\n setListFilterType:(data: any) => void,\r\n trackingRequestEmailList: string|undefined,\r\n setTrackingRequestEmailList: (data: string|undefined) => void,\r\n recogModalData: { isSet: boolean; isOpen: boolean } | undefined;\r\n setRecogModalData: React.Dispatch>;\r\n};\r\n\r\nconst defaultState:IJobListViewContext = {\r\n selectedElement: null,\r\n hasOpenedScreenStartingWithUrl: () => false,\r\n hasOpenedScreenStartingWithUrlWithoutMe: () => false,\r\n hasOpenedScreenInAnyOperationStartingWithUrl: () => false,\r\n hasOpenedScreenInAnyOperationStartingWithUrlWithoutMe: () => false,\r\n getOpenedScreenInAnyOperationStartingWithUrl: () => {},\r\n moveToOpenedScreenInAnyOperationStartingWithUrl: () => {},\r\n reloadData: () => {},\r\n triggerTableSearch: () => false,\r\n setFilterForScreenExternally: () => {},\r\n setFilterForSearchModel:() => {},\r\n infoAreaContent: 'none',\r\n setInfoAreaContent: () => {},\r\n updateDataRow: (row:any) => {},\r\n openedByF6: false,\r\n f6Origin: null,\r\n f6Query: null,\r\n rowExtrasId: null,\r\n setRowExtrasId: () => {},\r\n setClickedCell: () => {},\r\n setData: () => {},\r\n data: [],\r\n viewPopupRow: undefined,\r\n dismissPopupRow: () => {},\r\n showPopupRow: () => {},\r\n opType: undefined,\r\n search:null,\r\n setListFilterType: (data:any) => {},\r\n trackingRequestEmailList: undefined,\r\n setTrackingRequestEmailList: () => {},\r\n recogModalData: undefined,\r\n setRecogModalData: () => {},\r\n};\r\n\r\nconst JobListViewContext = React.createContext(defaultState);\r\n\r\nexport default JobListViewContext;\r\n","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect, useState } from 'react';\r\nimport postal from 'postal';\r\nimport { selectInput } from '../util/inputUtils';\r\n\r\nfunction TextBox({\r\n value,\r\n placeholder = undefined,\r\n onChange = undefined,\r\n onPaste = undefined,\r\n disabled = false,\r\n // dark,\r\n error = false,\r\n red = false,\r\n alignRight = false,\r\n alignCenter = false,\r\n onEnter = undefined,\r\n password = false,\r\n onTabNext = undefined,\r\n onTabPrevious = undefined,\r\n maxLength = undefined,\r\n textId = undefined,\r\n noborder = false,\r\n noLeftBorder = false,\r\n underline = false,\r\n onFocus,\r\n backgroundColor,\r\n onBlur,\r\n focusableWhenDisabled = false,\r\n ...other\r\n}:{\r\n value:string|null|undefined,\r\n placeholder?:string|null|undefined,\r\n onChange?: ((e:React.ChangeEvent) => void)|undefined,\r\n onPaste?: ((e:React.ClipboardEvent) =>void)|undefined,\r\n disabled?: boolean,\r\n red?: boolean,\r\n error?: boolean,\r\n alignRight?: boolean,\r\n alignCenter?: boolean,\r\n onEnter?: (() => void)|undefined,\r\n password?: boolean,\r\n onTabNext?: (() => boolean)|undefined,\r\n onTabPrevious?: (() => boolean)|undefined,\r\n maxLength?: number|undefined,\r\n textId?: string|undefined,\r\n noborder?: boolean,\r\n noLeftBorder?: boolean,\r\n underline?: boolean,\r\n onFocus?: (inp: HTMLInputElement) => void,\r\n backgroundColor?: string,\r\n onBlur?: ((x?: any) => Promise | void) | undefined,\r\n [x:string]: any\r\n}) {\r\n const autocompleteOffGuard = _.uniqueId('autocomplete-off-');\r\n const dark = false;\r\n const channel = postal.channel('ifms');\r\n const inputId = textId || _.uniqueId('ifms-text-');\r\n\r\n function initializeEvent() {\r\n document.getElementById(inputId)?.addEventListener('keydown', onKeyDown);\r\n }\r\n\r\n function unInitializeEvent() {\r\n document.getElementById(inputId)?.removeEventListener('keydown', onKeyDown);\r\n }\r\n\r\n useEffect(() => {\r\n if (inputId) {\r\n initializeEvent();\r\n return unInitializeEvent;\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [inputId]);\r\n\r\n \r\n let cssClass = dark ? 'e-ifms-input-dark e-outline ifms-tabable' : 'e-ifms-input e-outline ifms-tabable';\r\n if(disabled && focusableWhenDisabled){\r\n cssClass = `${cssClass} e-ifms-focusable-when-disabled`;\r\n }\r\n if (noborder) {\r\n cssClass = `${cssClass} ifms-noborder-input`;\r\n }\r\n if (noLeftBorder) {\r\n cssClass = `${cssClass} ifms-noleftborder-input`;\r\n }\r\n\r\n const initialStyle = !!other.style ? other.style : {};\r\n let textStyle = red ? { ...initialStyle, color: '#bf0000' } : initialStyle;\r\n if (alignRight) {\r\n textStyle = {...textStyle, textAlign: 'right'};\r\n }\r\n if (alignCenter) {\r\n textStyle = {...textStyle, textAlign: 'center'};\r\n }\r\n if (underline) {\r\n textStyle = {...textStyle, textDecoration: 'underline'};\r\n }\r\n if (error) {\r\n cssClass = `${cssClass} e-ifms-input-error`;\r\n }\r\n if(backgroundColor) {\r\n textStyle = {...textStyle, backgroundColor};\r\n }\r\n if (!disabled) {\r\n cssClass = `${cssClass} ifms-tabable-active`;\r\n }\r\n\r\n function changeWrapper(e:React.ChangeEvent) {\r\n if (maxLength !== undefined && maxLength !== null && maxLength > 0) {\r\n if (e.target.value && e.target.value.length > maxLength) {\r\n return;\r\n }\r\n }\r\n\r\n if (onChange) {\r\n onChange(e);\r\n }\r\n }\r\n\r\n function processTabNext(e:KeyboardEvent) {\r\n if (onTabNext) {\r\n const tabProcessed = onTabNext();\r\n if (tabProcessed) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n function processTabPrevious(e:KeyboardEvent) {\r\n if (onTabPrevious) {\r\n const tabProcessed = onTabPrevious();\r\n if (tabProcessed) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n function isCell(element: HTMLInputElement): boolean {\r\n const divElements = document.querySelectorAll('div[id$=\"-editabletable\"]');\r\n return Array.from(divElements).some(div => div.contains(element));\r\n }\r\n \r\n async function handleBlur(e: React.FocusEvent) {\r\n const target = e.target as HTMLInputElement;\r\n const relatedTarget = e.relatedTarget as HTMLElement;\r\n const nativeEvent = e.nativeEvent;\r\n\r\n if (relatedTarget?.dataset?.nocellvalidate === 'true') {\r\n return;\r\n }\r\n if (relatedTarget?.classList.contains(\"ReactModal__Content\")) {\r\n return;\r\n }\r\n\r\n if (onBlur) {\r\n const result = await onBlur(e);\r\n setTimeout(() => {\r\n if (result === true) {\r\n if (isCell(target)) {\r\n channel.publish('ifms.editable-table-onEnter', { backFocus: false, changeFocus: true, element: target });\r\n }\r\n }\r\n else if (result === false)\r\n selectInput(target)\r\n }, 10);\r\n }\r\n }\r\n\r\n async function onKeyDown(e: KeyboardEvent) {\r\n const target = e.target as HTMLInputElement;\r\n\r\n async function handleBlurValidation(changeFocus: boolean) {\r\n if (!onBlur || !isCell(target)) return false;\r\n\r\n e.stopPropagation();\r\n e.preventDefault();\r\n const result = await onBlur(e);\r\n\r\n if (result) {\r\n channel.publish('ifms.editable-table-onEnter', { backFocus: e.shiftKey, changeFocus, element:target });\r\n return true;\r\n }\r\n\r\n setTimeout(() => selectInput(target), 10);\r\n return false;\r\n }\r\n\r\n if (focusableWhenDisabled && disabled) {\r\n if (!(e.ctrlKey && (e.keyCode === 67 || e.keyCode === 65))) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n if (e.key === 'Enter') {\r\n onEnter?.();\r\n await handleBlurValidation(false);\r\n return;\r\n }\r\n\r\n if (e.key === 'Tab') {\r\n const validated = await handleBlurValidation(true);\r\n if (!validated) {\r\n if (e.shiftKey) {\r\n processTabPrevious(e);\r\n } else {\r\n processTabNext(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function handleFocus(e:React.FocusEvent) {\r\n if (onFocus) {\r\n onFocus(e.target);\r\n }\r\n }\r\n\r\n const type = password ? 'password' : 'text';\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nTextBox.defaultProps = {\r\n onChange: () => {},\r\n onPaste: () => {},\r\n disabled: false,\r\n dark: false,\r\n placeholder: '',\r\n red: false,\r\n error: false,\r\n alignRight: false,\r\n alignCenter: false,\r\n password: false,\r\n noborder: false,\r\n noLeftBorder: false,\r\n underline: false, \r\n focusableWhenDisabled: false\r\n};\r\n\r\nTextBox.propTypes = {\r\n onChange: PropTypes.func.isRequired,\r\n onPaste: PropTypes.func.isRequired,\r\n onEnter: PropTypes.func,\r\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n placeholder: PropTypes.string.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n noborder: PropTypes.bool.isRequired,\r\n noLeftBorder: PropTypes.bool.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n red: PropTypes.bool.isRequired,\r\n error: PropTypes.bool.isRequired,\r\n alignRight: PropTypes.bool.isRequired,\r\n alignCenter: PropTypes.bool.isRequired,\r\n password: PropTypes.bool.isRequired,\r\n underline: PropTypes.bool.isRequired,\r\n onTabNext: PropTypes.func,\r\n onTabPrevious: PropTypes.func,\r\n maxLength: PropTypes.number,\r\n textId: PropTypes.string,\r\n onFocus: PropTypes.func,\r\n backgroundColor: PropTypes.string,\r\n focusableWhenDisabled: PropTypes.bool,\r\n};\r\n\r\nexport default React.memo(TextBox);\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport IfmsButton, { IfmsButtonProps } from './IfmsButton';\r\n\r\nconst HighlightButton = React.forwardRef(({children, ...other}, ref) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\nHighlightButton.defaultProps = {\r\n};\r\n\r\nHighlightButton.propTypes = {\r\n size: PropTypes.oneOf(['regular', 'small', 'large', 'extrasmall']),\r\n};\r\n\r\nexport default React.memo(HighlightButton);\r\n\r\n","import './buttons.css';\r\nimport {Portal} from 'react-portal';\r\nimport PropTypes from 'prop-types';\r\nimport React, {ReactElement, useEffect, useMemo, useRef, useState} from 'react';\r\nimport {usePopper} from 'react-popper';\r\n\r\nimport {faAngleDown} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\n\r\nimport PrimaryButton from './PrimaryButton';\r\nimport SecondaryButton from './SecondaryButton';\r\nimport PrimaryInverseButton from './PrimaryInverseButton';\r\nimport DangerButton from './DangerButton';\r\nimport Menu, {IfmsMenuItem} from './menu/Menu';\r\nimport BlackInverseButton from \"./BlackInverseButton\";\r\nimport {faAngleUp} from \"@fortawesome/free-solid-svg-icons/faAngleUp\";\r\nimport HighlightButton from \"./HighlightButton\";\r\n\r\nexport interface ActionButtonItem {\r\n label: React.ReactNode|string|undefined,\r\n separator?: boolean,\r\n newCol?: boolean,\r\n popupComponent?: ReactElement,\r\n popupWidth?: number,\r\n popupLabel?: React.ReactNode|string|undefined,\r\n [x:string]: any,\r\n hidden?: boolean,\r\n link?: string,\r\n disabled? : boolean\r\n};\r\n\r\nexport const borderColors = ['#0079A4', '#B5038F', '#FF3300', '#89C064', '#00B0F0', '#007BFF'];\r\n\r\nexport function splitMenuItemsIntoSections(actionButtonItems: ActionButtonItem[]): IfmsMenuItem[][][] {\r\n const result: IfmsMenuItem[][][] = [[[]]]\r\n actionButtonItems.forEach((item, index) => {\r\n if (item.hidden) return\r\n result[result.length - 1][result[result.length - 1].length - 1].push({\r\n text: item.label,\r\n // separator: item.separator,\r\n separator: false,\r\n selected: false,\r\n index,\r\n disabled:item?.disabled ?? false,\r\n name: item.name\r\n });\r\n\r\n if(item.newCol && index !== actionButtonItems.length - 1) {\r\n result.push([]);\r\n }\r\n if(item.separator && index !== actionButtonItems.length - 1) {\r\n result[result.length - 1].push([]);\r\n }\r\n })\r\n return result;\r\n} \r\n\r\nconst CLOSE_ALL_MENUS = 'CLOSE_ALL_MENUS';\r\n\r\nfunction ActionButton({\r\n items = [],\r\n type = 'primary',\r\n size = 'regular',\r\n children = undefined,\r\n action = 'click',\r\n hideCaret = false,\r\n onItemSelected = () => {},\r\n height = undefined,\r\n variant = 'plain',\r\n name = undefined,\r\n}: {\r\n items?: Array,\r\n type?: 'primary'|'secondary'|'danger'|'primaryInverse'|'blackInverse'|'transparent',\r\n size?: 'regular'|'small'|'large',\r\n action?: 'click'|'hover'|'rightClick',\r\n children?: React.ReactChild|React.ReactNode|string|null|undefined,\r\n hideCaret?: boolean,\r\n onItemSelected?: (x:ActionButtonItem) => void,\r\n height?: string|undefined,\r\n variant?: 'plain'|'highlight',\r\n name?: string|undefined,\r\n}) {\r\n const [menuVisible, _setMenuVisible] = useState(false);\r\n const [referenceElement, setReferenceElement] = useState(null);\r\n const [popperElement, setPopperElement] = useState(null);\r\n const [arrowElement, setArrowElement] = useState(null);\r\n const { styles, attributes } = usePopper(referenceElement, popperElement, {\r\n modifiers: [{ name: 'arrow', options: { element: arrowElement } }],\r\n });\r\n\r\n const menuContainerRef = useRef(null);\r\n const buttonRef = useRef(null);\r\n const openRef = useRef(false);\r\n\r\n useEffect(() => {\r\n document.addEventListener('click', handleClickOutsideMenu, true);\r\n document.addEventListener('mousemove', mouseMove, true);\r\n document.addEventListener(CLOSE_ALL_MENUS, handleCloseMenu);\r\n return () => {\r\n document.removeEventListener('click', handleClickOutsideMenu, true);\r\n document.removeEventListener('mousemove', mouseMove, true);\r\n document.removeEventListener(CLOSE_ALL_MENUS, handleCloseMenu);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n function mouseMove(e:MouseEvent) {\r\n if (action !== 'hover') {\r\n return;\r\n }\r\n\r\n const mX = e.clientX;\r\n const mY = e.clientY;\r\n\r\n let overButton = false;\r\n let overMenu = false;\r\n\r\n if (buttonRef && buttonRef.current) {\r\n const bc = buttonRef.current.getBoundingClientRect();\r\n overButton = mX >= bc.x && mX <= bc.right && mY >= bc.top && mY <= bc.bottom;\r\n }\r\n\r\n if (menuContainerRef && menuContainerRef.current) {\r\n const mc = menuContainerRef.current.getBoundingClientRect();\r\n overMenu = mX >= mc.x && mX <= mc.right && mY >= mc.top && mY <= mc.bottom;\r\n }\r\n\r\n const isJobSwitcingMenuOpend = document.querySelectorAll('[class*=\"ifms-custom-jobswitchinghelpermenu\"]').length > 0;\r\n\r\n const showMenu = (overButton || overMenu) && !isJobSwitcingMenuOpend;\r\n if (showMenu !== openRef.current) {\r\n setMenuVisible(showMenu);\r\n }\r\n }\r\n\r\n function handleClickOutsideMenu(e:MouseEvent) {\r\n if (action === 'hover') {\r\n return;\r\n }\r\n\r\n if (openRef.current && menuContainerRef && menuContainerRef.current) {\r\n const target = e.target as HTMLElement;\r\n const shouldClose = !menuContainerRef.current.contains(target);\r\n\r\n if (shouldClose) {\r\n setMenuVisible(false);\r\n }\r\n }\r\n }\r\n\r\n function handleCloseMenu() {\r\n if (openRef.current) {\r\n _setMenuVisible(false);\r\n openRef.current = false;\r\n }\r\n }\r\n\r\n function setMenuVisible(v:boolean) {\r\n if (v) {\r\n document.dispatchEvent(new CustomEvent(CLOSE_ALL_MENUS));\r\n }\r\n\r\n openRef.current = v;\r\n _setMenuVisible(v);\r\n }\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n if (item.index !== undefined && item.index >= 0 && item.index <= items.length) {\r\n onItemSelected(items[item.index]);\r\n }\r\n\r\n setMenuVisible(false);\r\n }\r\n\r\n let ButtonComponent = PrimaryButton;\r\n let HighlightButtonComponent = HighlightButton;\r\n\r\n switch (type) {\r\n case 'primary':\r\n ButtonComponent = PrimaryButton;\r\n HighlightButtonComponent = HighlightButton;\r\n break;\r\n case 'secondary':\r\n ButtonComponent = SecondaryButton;\r\n break;\r\n case 'danger':\r\n ButtonComponent = DangerButton;\r\n break;\r\n case 'primaryInverse':\r\n ButtonComponent = PrimaryInverseButton;\r\n break;\r\n case 'blackInverse':\r\n ButtonComponent = BlackInverseButton;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n const appliedPopperStyles = {\r\n ...styles.popper,\r\n minWidth: '150px',\r\n /*paddingTop: 10*/\r\n };\r\n\r\n const onActionButtonClick = action === 'click'\r\n ? () => setMenuVisible(!menuVisible)\r\n : undefined;\r\n\r\n const onActionButtonRightClick = action === 'rightClick'\r\n ? (e:MouseEvent) => {\r\n setMenuVisible(!menuVisible);\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n : undefined;\r\n\r\n /* reformat array by separator. This is done because of avoiding changes in tons of files. */\r\n const formatterItems = useMemo(() => splitMenuItemsIntoSections(items), [items])\r\n\r\n const ButtonComponentToRender = menuVisible ? HighlightButtonComponent : ButtonComponent;\r\n\r\n return (\r\n <>\r\n \r\n {children}\r\n {!hideCaret &&\r\n <> \r\n }\r\n \r\n \r\n \r\n {menuVisible &&\r\n {e.stopPropagation()}}\r\n ref={setPopperElement} style={appliedPopperStyles} {...attributes.popper}>\r\n
\r\n ({\r\n maxHeight: height ?? '600px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n />\r\n
\r\n
\r\n
\r\n }\r\n
\r\n \r\n );\r\n}\r\n\r\nActionButton.defaultProps = {\r\n type: 'primary',\r\n size: 'regular',\r\n action: 'hover',\r\n hideCaret: false,\r\n onItemSelected: () => {},\r\n variant: 'plain',\r\n};\r\n\r\nActionButton.propTypes = {\r\n type: PropTypes.oneOf(['primary', 'secondary', 'danger', 'primaryInverse', 'blackInverse']),\r\n size: PropTypes.oneOf(['regular', 'small', 'large']),\r\n items: PropTypes.arrayOf(PropTypes.shape({\r\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\r\n separator: PropTypes.bool,\r\n })),\r\n action: PropTypes.oneOf(['click', 'hover', 'rightClick']).isRequired,\r\n hideCaret: PropTypes.bool.isRequired,\r\n onItemSelected: PropTypes.func.isRequired,\r\n height: PropTypes.string,\r\n variant: PropTypes.oneOf(['plain', 'highlight']).isRequired,\r\n};\r\n\r\nexport default React.memo(ActionButton);\r\n","import React from 'react';\r\nimport { useAppDispatch } from '../app/hooks';\r\n\r\nimport { showGlobalOkDialog } from '../features/globalOkDialogSlice';\r\n\r\nimport { formatDialogContent } from './dialogHelpers';\r\n\r\n/**\r\n * useGlobalOkDialog - provides generic function for displaying Ok dialog\r\n *\r\n * @export\r\n * @return {*} \r\n */\r\nexport default function useGlobalOkDialog() {\r\n const dispatch = useAppDispatch();\r\n\r\n /**\r\n * showOkDialog - awaitable Promise to show global ok dialog\r\n *\r\n * @param {React.ReactNode}|string contentParam - content to render inside the dialog\r\n * @param {boolean} [hideOkButton=false] - set to true in case default Ok button needs to be hidden\r\n * @param {(string|null)} [top=null] - use to override top position on the screen (middle of the screen by default)\r\n * @return {*} \r\n */\r\n function showOkDialog(contentParam:string|React.ReactNode, hideOkButton:boolean = false, top:string|null = null, type:'info'|'error'|'warning' = 'info' ) {\r\n return new Promise(resolve => {\r\n dispatch(showGlobalOkDialog({\r\n content: formatDialogContent(contentParam),\r\n hideOkButton,\r\n top,\r\n resolve,\r\n type,\r\n }));\r\n })\r\n }\r\n\r\n return [showOkDialog];\r\n}","import './layout.css';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport LeftRightSplit from '../LeftRightSplit';\r\n\r\nfunction InlineInputControlRow({\r\n label = undefined,\r\n mode = 'regular',\r\n alignRight=false,\r\n bold = false,\r\n red = false,\r\n onLabelClick = undefined,\r\n underline = false,\r\n children = undefined,\r\n validationFor = undefined,\r\n smallMargin = false,\r\n useLeftMargin = false,\r\n id = undefined,\r\n row = undefined,\r\n}: {\r\n label?: React.ReactNode|string|undefined,\r\n validationFor?: string|undefined,\r\n underline?: boolean,\r\n bold?: boolean,\r\n red?: boolean,\r\n alignRight?: boolean,\r\n smallMargin?: boolean,\r\n useLeftMargin?: boolean,\r\n onLabelClick?: VoidFunction|undefined,\r\n children?: React.ReactChild|React.ReactNode|string|null|undefined,\r\n mode: 'w210'|'extralarge'|'extralarge2'|'large'|'regular'|'small'|'extrasmall'|'xxsmall'|'xsmall'|'medium'|'xxlarge'|'xxxlarge'|'smaller'\r\n |'smaller-2x'|'w170'|'w180'|'w190'|'w150'|'w200'|'w90'|'w250'|'w40'|'w70'|'w80'|'w160'|'w50'|'w100'|'w60'|'w115'|'w116'|'w130'|'w270'\r\n id?: string|undefined,\r\n row?: number|undefined\r\n}) {\r\n let labelStyle:React.CSSProperties = !!bold ? {fontWeight: 'bold'} : {};\r\n\r\n if (alignRight) {\r\n labelStyle ={...labelStyle, textAlign: 'right', paddingRight: '20px'};\r\n }\r\n\r\n if(useLeftMargin){\r\n labelStyle={...labelStyle, marginLeft:'20px'}\r\n }\r\n\r\n if (!!onLabelClick) {\r\n labelStyle = {...labelStyle, cursor: 'pointer'};\r\n } else {\r\n labelStyle = {...labelStyle, cursor: 'default'};\r\n }\r\n if (underline) {\r\n labelStyle = {...labelStyle, textDecoration: 'underline'};\r\n }\r\n if (red) {\r\n labelStyle = {...labelStyle, color: 'red'};\r\n }\r\n\r\n let labelSize = '130px';\r\n switch (mode) {\r\n case 'xxsmall':\r\n labelSize = '75px';\r\n break;\r\n case 'xsmall':\r\n labelSize = '100px';\r\n break;\r\n case 'small':\r\n labelSize = '105px';\r\n break;\r\n case 'smaller':\r\n labelSize = '120px';\r\n break;\r\n case 'smaller-2x':\r\n labelSize = '110px';\r\n break;\r\n case 'medium':\r\n labelSize = '140px';\r\n break;\r\n case 'large':\r\n labelSize = '145px';\r\n break;\r\n case 'extralarge':\r\n labelSize = '165px';\r\n break;\r\n case 'extralarge2':\r\n labelSize = '170px';\r\n break;\r\n case 'w210':\r\n labelSize = '210px';\r\n break;\r\n case 'extrasmall':\r\n labelSize = '30px';\r\n break;\r\n case 'xxlarge':\r\n labelSize = '220px';\r\n break;\r\n case 'xxxlarge':\r\n labelSize = '290px';\r\n break;\r\n case 'w150':\r\n labelSize = '150px';\r\n break;\r\n case 'w170':\r\n labelSize = '170px';\r\n break;\r\n case 'w180':\r\n labelSize = '180px';\r\n break;\r\n case 'w190':\r\n labelSize = '190px';\r\n break;\r\n case 'w200':\r\n labelSize = '200px';\r\n break;\r\n case 'w90':\r\n labelSize = '90px';\r\n break;\r\n case 'w250':\r\n labelSize = '250px';\r\n break;\r\n case 'w40':\r\n labelSize = '40px';\r\n break;\r\n case 'w70':\r\n labelSize = '70px';\r\n break;\r\n case 'w80':\r\n labelSize = '80px';\r\n break;\r\n case 'w160':\r\n labelSize = '160px';\r\n break;\r\n case 'w50':\r\n labelSize = '50px';\r\n break;\r\n case 'w100':\r\n labelSize = '100px';\r\n break;\r\n case 'w60':\r\n labelSize = '60px';\r\n break;\r\n case 'w115':\r\n labelSize = '115px';\r\n break;\r\n case 'w116':\r\n labelSize = '116px';\r\n break;\r\n case 'w130':\r\n labelSize = '130px';\r\n break;\r\n case 'w270':\r\n labelSize = '270px';\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n // const labelSize = mode === 'small' ? '105px' : (mode === 'large' ? '145px' : '130px');\r\n\r\n const renderedLabel = label || <> ;\r\n\r\n let rowClass = smallMargin ? 'ifms-input-ctr-row3-small-margin' : 'ifms-input-ctr-row3';\r\n\r\n if (row) {\r\n switch(row) {\r\n case 2:\r\n rowClass = smallMargin ? 'ifms-input-ctr-row3-2x-small-margin' : 'ifms-input-ctr-row3-2x';\r\n break;\r\n case 3:\r\n rowClass = smallMargin ? 'ifms-input-ctr-row3-3x-small-margin' : 'ifms-input-ctr-row3-3x';\r\n break;\r\n default:\r\n rowClass = smallMargin ? 'ifms-input-ctr-row3-small-margin' : 'ifms-input-ctr-row3';\r\n break;\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {renderedLabel}
\r\n }\r\n right={\r\n <>\r\n {children}\r\n \r\n }\r\n />\r\n \r\n );\r\n}\r\n\r\nInlineInputControlRow.defaultProps = {\r\n label: '',\r\n mode: 'regular',\r\n bold: false,\r\n red: false,\r\n underline: false,\r\n smallMargin: false,\r\n useLeftMargin: false,\r\n};\r\n\r\nInlineInputControlRow.propTypes = {\r\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired,\r\n right: PropTypes.node,\r\n bold: PropTypes.bool.isRequired,\r\n red: PropTypes.bool.isRequired,\r\n underline: PropTypes.bool.isRequired,\r\n onLabelClick: PropTypes.func,\r\n mode: PropTypes.oneOf(['w210', 'extralarge', 'extralarge2', 'large', 'regular', 'small', 'extrasmall', 'xxsmall', 'xsmall','medium', 'xxlarge', 'xxxlarge', 'smaller',\r\n 'smaller-2x', 'w170', 'w180', 'w190', 'w150', 'w200', 'w90', 'w40', 'w250', 'w70', 'w80', 'w160', 'w50', 'w100', 'w60', 'w115', 'w116','w130', 'w270']).isRequired,\r\n validationFor: PropTypes.string,\r\n smallMargin: PropTypes.bool.isRequired,\r\n useLeftMargin: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport default React.memo(InlineInputControlRow);\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport IfmsButton, { IfmsButtonProps } from './IfmsButton';\r\n\r\nconst SecondaryButton = React.forwardRef(({children, ...other}, ref) => {\r\n const name = !other.name ? `secondary-btn-${children}` : other.name;\r\n //const baseClass = !other.notsetbackcolorwhenfocus ? 'ifms-secondary-button' : 'ifms-secondary-button b';\r\n\r\n let baseClass = 'ifms-secondary-button';\r\n\r\n if (other.notsetbackcolorwhenfocus === 'b') {\r\n baseClass = 'ifms-secondary-button b';\r\n } else if (other.notsetbackcolorwhenfocus === 'gray') {\r\n baseClass = 'ifms-secondary-button gray';\r\n } else if (other.notsetbackcolorwhenfocus === 'cnttrack') {\r\n baseClass = 'ifms-secondary-button cnttrack';\r\n } else {\r\n baseClass = 'ifms-secondary-button';\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\nSecondaryButton.defaultProps = {\r\n bold : false\r\n};\r\n\r\nSecondaryButton.propTypes = {\r\n size: PropTypes.oneOf(['regular', 'small', 'large', 'extrasmall']),\r\n bold: PropTypes.bool\r\n};\r\n\r\nexport default React.memo(SecondaryButton);\r\n\r\n","import _ from 'lodash';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nimport fastStorage from '../fastStorage';\r\nimport useDirtyCheck from './useDirtyCheck2';\r\nimport { getRoutePath } from '../util/routeUtils';\r\nimport { checkEntityPropChanges } from '../fms.core/data/ChangeTrackable';\r\n\r\n/**\r\n * Called from 'add' screen to generate full fast storage keys for 'edit' screens to be able to copy model correctly\r\n *\r\n * @export\r\n * @param {string} currentUrl\r\n * @return {*} {string}\r\n */\r\nexport function getTypeStorageUrlSuffixForEditScreen(currentUrl: string): string {\r\n return getRoutePath(currentUrl.replace('/add', '/edit'));\r\n}\r\n\r\n/**\r\n * Helper function for lodash merger to handle arrays properly.\r\n * Otherwise, empty arrays are not merged correctly.\r\n *\r\n * @param {*} objValue\r\n * @param {*} srcValue\r\n * @return {*} \r\n */\r\nfunction mergeCustomizer(objValue:any, srcValue:any) {\r\n if (_.isArray(objValue)) {\r\n return srcValue;\r\n }\r\n else if (_.isObject(objValue)) {\r\n _.merge(objValue, srcValue);\r\n }\r\n if (srcValue === undefined) {\r\n return srcValue;\r\n }\r\n}\r\n\r\nfunction initializeStorageAndGet(storageName:string, initialValue:any) {\r\n if (fastStorage[storageName] !== undefined && fastStorage[storageName] !== null) {\r\n return fastStorage[storageName];\r\n }\r\n\r\n fastStorage[storageName] = initialValue !== null && initialValue !== undefined ? _.cloneDeep(initialValue) : initialValue;\r\n return fastStorage[storageName];\r\n}\r\n\r\n/**\r\n * useTypedFastStorage - typed wrapper around useFastStorage\r\n *\r\n * @export\r\n * @template T\r\n * @param {string} storageName - unique name of the storage object\r\n * @param {(T|null)} [defaultValue=null] - default value to return initially if storage for given key is empty\r\n * @return {*} - Array of currentState, setter function, cleanup function and object reference\r\n */\r\nexport function useTypedFastStorage(storageNameParam:string, defaultValue:T|null = null): [T|null, (x:Partial) => void, () => void, React.MutableRefObject, number] {\r\n //(null);\r\n\r\n const history = useHistory();\r\n\r\n const url = `${history.location.pathname}${history.location.search}`;\r\n // const storageName = !url.includes('common/joblistview')\r\n // ? `${storageNameParam}-${getRoutePath(history.location.pathname)}`\r\n // : storageNameParam;\r\n const storageName = !url.includes('common/joblistview') ? `${storageNameParam}-${url}` : storageNameParam;\r\n\r\n\r\n const [storageObj, _updateStorage, deleteObjFromStorage, storageObjRef, tick] = useFastStorage(storageName, defaultValue);\r\n //save-sqlinfo>\r\n\r\n // Don't send param with url prefixed - useDirtyCheck handles that internally\r\n const {getCleanState} = useDirtyCheck(storageNameParam); //[save-sqlinfo]\r\n\r\n useEffect(() => {\r\n storageObjRef.current = storageObj;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [storageObj]);\r\n\r\n const updateStorage = (value:Partial) => {\r\n _updateStorage(value,\r\n //[save-sqlinfo]\r\n getCleanState());\r\n };\r\n\r\n const typedStorageObj = storageObj as T|null;\r\n\r\n return [typedStorageObj, updateStorage, deleteObjFromStorage, storageObjRef, tick];\r\n}\r\n\r\n/**\r\n * useFastStorage - storage management hook which uses React lifecycle but does not pass storage\r\n * object through Redux store, making it faster to use.\r\n *\r\n * @export\r\n * @param {string} storageName - unique name of the storage object\r\n * @param {(any|null)} [defaultValue=null] - default value to return initially if storage for given key is empty\r\n * @return {*} - Array of currentState, setter function, cleanup function and object reference\r\n */\r\n\r\ntype StorageUpdateFunction = (\r\n value: any, \r\n orgEntity?: any, \r\n options?: { \r\n forceClone?: boolean \r\n }\r\n) => void;\r\n\r\ntype DeleteFunction = () => void;\r\n\r\nexport default function useFastStorage(\r\n storageName: string,\r\n defaultValue: any | null = null\r\n): [any, StorageUpdateFunction, DeleteFunction, React.MutableRefObject, number] {\r\n const initialValue = initializeStorageAndGet(storageName, defaultValue);\r\n const objRef = useRef(initialValue);\r\n\r\n const [tick, _setTick] = useState(0);\r\n const tickRef = useRef(0);\r\n\r\n const doTick = () => {\r\n tickRef.current = tickRef.current + 1;\r\n _setTick(tickRef.current);\r\n };\r\n\r\n const isTrackableObject = (value: any): boolean =>\r\n value !== null && typeof value === 'object';\r\n\r\n const updateStorageValue = (\r\n value: any,\r\n options?: {\r\n forceClone?: boolean\r\n }\r\n ) => {\r\n if (value === null || value === undefined) return;\r\n\r\n const isListData = storageName.includes('ifms-list-data-');\r\n const forceClone = options?.forceClone || false;\r\n\r\n if (!fastStorage[storageName] || typeof value !== 'object') {\r\n fastStorage[storageName] = value;\r\n objRef.current = value;\r\n } else {\r\n fastStorage[storageName] = isListData || forceClone\r\n ? _.cloneDeep(value)\r\n : _.mergeWith(fastStorage[storageName], value, mergeCustomizer);\r\n\r\n handleUndefinedValues(fastStorage[storageName], value);\r\n objRef.current = fastStorage[storageName];\r\n }\r\n };\r\n\r\n const updateStorage: StorageUpdateFunction = (value, orgEntity, options) => {\r\n updateStorageValue(value, options);\r\n\r\n if (isTrackableObject(objRef.current) && objRef.current.trackable) {\r\n Object.keys(value).forEach(prop => {\r\n checkEntityPropChanges(prop, orgEntity, objRef.current);\r\n });\r\n }\r\n \r\n doTick();\r\n };\r\n\r\n const deleteObjFromStorage: DeleteFunction = () => {\r\n delete fastStorage[storageName];\r\n objRef.current = null;\r\n doTick();\r\n };\r\n\r\n return [\r\n fastStorage[storageName],\r\n updateStorage,\r\n deleteObjFromStorage,\r\n objRef,\r\n tick\r\n ];\r\n}\r\n\r\n/**\r\n * \r\n * @param resultObj Lodash merge/mergeWith ignores undefined properties so those are applied manually here\r\n * @param value \r\n */\r\nfunction handleUndefinedValues(resultObj: any, value: any) {\r\n if (!resultObj || !value) {\r\n return;\r\n }\r\n\r\n if (!_.isObject(value) || _.isArray(value)) {\r\n return;\r\n }\r\n\r\n for(const key of _.keys(value)) {\r\n\r\n // If it is an object and it exists in resultObj, recursively check\r\n if (_.isObject((value as any)[key]) && !_.isArray((value as any)[key]) && _.isObject(resultObj[key]) && !_.isArray(resultObj[key])) {\r\n handleUndefinedValues(resultObj[key], (value as any)[key]);\r\n }\r\n\r\n if ((value as any)[key] === undefined) {\r\n resultObj[key] = undefined;\r\n\r\n }\r\n }\r\n}\r\n","import { useEffect, useRef } from 'react';\r\nimport { isCharacterKeyPress } from '../util';\r\n\r\nconst FKeys = [\r\n \"F1\",\r\n \"F2\",\r\n \"F3\",\r\n \"F4\",\r\n \"F5\",\r\n \"F6\",\r\n \"F7\",\r\n \"F8\",\r\n \"F9\",\r\n \"F10\",\r\n \"F12\",\r\n \"F13\",\r\n];\r\n\r\nconst FKeyCodes = [\r\n 112,\r\n 113,\r\n 114,\r\n 115,\r\n 116,\r\n 117,\r\n 118,\r\n 119,\r\n 120,\r\n 121,\r\n 122,\r\n 123,\r\n];\r\n\r\nconst UpKey = 38;\r\nconst DownKey = 40;\r\nconst DeleteKey = 46;\r\n\r\nexport type EscHandler = () => boolean;\r\nexport type EnterHandler = (evt: KeyboardEvent) => boolean;\r\nexport type DeleteHandler = () => boolean;\r\nexport type UpHandler = () => boolean;\r\nexport type DownHandler = () => boolean;\r\nexport type FunctionHandler = (f: string) => boolean;\r\nexport type AltCharHandler = (f: string) => boolean;\r\nexport type CtrlCharHandler = (f: string) => boolean;\r\nexport type SaveHandler = () => any;\r\n\r\ninterface FunctionKeysProps {\r\n onEsc?: EscHandler,\r\n onEnter?: EnterHandler,\r\n onFunction?: FunctionHandler,\r\n onAltChar?: AltCharHandler,\r\n onCtrlChar?: CtrlCharHandler,\r\n onDelete?: DeleteHandler,\r\n onUp?: UpHandler,\r\n onDown?: DownHandler\r\n onSave?: SaveHandler\r\n};\r\n\r\n/**\r\n * useFunctionKeys - hook for registering callback functions for various special keyboard keys\r\n *\r\n * @export\r\n * @param {FunctionKeysProps} {\r\n * onEsc, - callback for Esc key\r\n * onEnter, - callback for Enter key\r\n * onFunction, - callback for F key - receives function key being pressed as string parameter\r\n * onAltChar, - callback for Alt + Char - receives char key being pressed as string parameter\r\n * onUp, - callback for key up\r\n * onDown - callback for key down\r\n * }\r\n */\r\nexport default function useFunctionKeys({\r\n onEsc,\r\n onEnter,\r\n onFunction,\r\n onAltChar,\r\n onCtrlChar,\r\n onDelete,\r\n onUp,\r\n onDown,\r\n onSave,\r\n}: FunctionKeysProps) {\r\n const handlers = useRef({\r\n onEsc,\r\n onEnter,\r\n onFunction,\r\n onAltChar,\r\n onCtrlChar,\r\n onDelete,\r\n onUp,\r\n onDown,\r\n onSave,\r\n });\r\n\r\n useEffect(() => {\r\n handlers.current = {\r\n onEsc,\r\n onEnter,\r\n onFunction,\r\n onAltChar,\r\n onCtrlChar,\r\n onDelete,\r\n onUp,\r\n onDown,\r\n onSave,\r\n };\r\n }, [onEsc, onEnter, onFunction, onAltChar, onCtrlChar, onDelete, onUp, onDown, onSave]);\r\n\r\n useEffect(() => {\r\n function handle(evt: KeyboardEvent) {\r\n evt = evt || window.event;\r\n let isEscape = false;\r\n let isEnter = false;\r\n let isFunction = false;\r\n const isAltChar = evt.altKey && isCharacterKeyPress(evt);\r\n const isCtrlChar = evt.ctrlKey && isCharacterKeyPress(evt);\r\n let isDelete = false;\r\n let fkey = \"\";\r\n let isUp = false;\r\n let isDown = false;\r\n let isSave = false;\r\n const keyCode = evt.keyCode;\r\n const isCtrlPressed = evt.ctrlKey;\r\n\r\n if (\"key\" in evt) {\r\n isEscape = (evt.key === \"Escape\" || evt.key === \"Esc\");\r\n isEnter = evt.key === 'Enter';\r\n isFunction = FKeys.includes(evt.key);\r\n fkey = isFunction ? evt.key : \"\";\r\n isDelete = evt.key === 'Delete';\r\n isDown = evt.key === 'ArrowDown';\r\n isUp = evt.key === 'ArrowUp';\r\n isSave = isCtrlPressed && evt.key.toLowerCase() === 's';\r\n } else {\r\n isEscape = (keyCode === 27);\r\n isEnter = (keyCode === 13);\r\n isFunction = FKeyCodes.includes(keyCode);\r\n fkey = isFunction ? `F${keyCode - 111}` : \"\";\r\n isDelete = keyCode === DeleteKey;\r\n isUp = keyCode === UpKey;\r\n isDown = keyCode === DownKey;\r\n isSave = isCtrlPressed && keyCode === 83;\r\n }\r\n\r\n const currentHandlers = handlers.current;\r\n\r\n if (isEscape && currentHandlers.onEsc && !evt.cancelBubble) {\r\n evt.preventDefault();\r\n const escHandled = currentHandlers.onEsc();\r\n if (escHandled) {\r\n evt.stopPropagation();\r\n }\r\n }\r\n\r\n if (isEnter && currentHandlers.onEnter && !evt.cancelBubble) {\r\n currentHandlers.onEnter(evt);\r\n evt.preventDefault();\r\n }\r\n\r\n if (isFunction && currentHandlers.onFunction && !evt.cancelBubble) {\r\n let actualFKey = fkey;\r\n if (evt.altKey) {\r\n actualFKey = `ALT+${actualFKey}`;\r\n }\r\n if (evt.shiftKey) {\r\n actualFKey = `SHIFT+${actualFKey}`;\r\n }\r\n if (isCtrlPressed) {\r\n actualFKey = `CTRL+${actualFKey}`;\r\n }\r\n const functionHandled = currentHandlers.onFunction(actualFKey);\r\n if (functionHandled) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n }\r\n }\r\n\r\n if (isAltChar && currentHandlers.onAltChar) {\r\n let char = String.fromCharCode(evt.keyCode);\r\n if (char) {\r\n char = char.toLowerCase();\r\n }\r\n\r\n if (char) {\r\n const onAltCharHandled = currentHandlers.onAltChar(char);\r\n if (onAltCharHandled) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n }\r\n }\r\n }\r\n\r\n if (isSave && currentHandlers.onSave && !evt.cancelBubble) {\r\n evt.preventDefault();\r\n const saveHandled = currentHandlers.onSave();\r\n if (saveHandled) {\r\n evt.stopPropagation();\r\n }\r\n }\r\n\r\n if (isCtrlChar && currentHandlers.onCtrlChar) {\r\n let char = String.fromCharCode(evt.keyCode);\r\n if (char) {\r\n char = char.toLowerCase();\r\n }\r\n\r\n if (char) {\r\n const onCtrlCharHandled = currentHandlers.onCtrlChar(char);\r\n if (onCtrlCharHandled) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n }\r\n }\r\n }\r\n\r\n if (isDelete && currentHandlers.onDelete) {\r\n const handled = currentHandlers.onDelete();\r\n if (handled) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n }\r\n }\r\n\r\n if (isUp && currentHandlers.onUp) {\r\n const handled = currentHandlers.onUp();\r\n if (handled) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n }\r\n }\r\n if (isDown && currentHandlers.onDown) {\r\n const handled = currentHandlers.onDown();\r\n if (handled) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n }\r\n }\r\n }\r\n\r\n document.addEventListener('keydown', handle);\r\n return () => document.removeEventListener('keydown', handle);\r\n }, []);\r\n}","export enum FmsSubMenu {\r\n MasterProfit = \"MasterProfit\",\r\n MasterProfitHBL = \"MasterProfitHBL\",\r\n OICargoManifest = \"OICargoManifest\",\r\n OOCargoManifest = \"OOCargoManifest\",\r\n AICargoManifest = \"AICargoManifest\",\r\n AOCargoManifest = \"AOCargoManifest\",\r\n FolderLabel = \"FolderLabel\",\r\n OutOfStateLog = \"OutOfStateLog\",\r\n ArrivalNotice = \"ArrivalNotice\",\r\n _2ndArrivalNotice = \"2ndArrivalNotice\",\r\n WorkSheet = \"WorkSheet\",\r\n OIHouseBL = \"OIHouseBL\",\r\n HouseProfit = \"HouseProfit\",\r\n CarrierCertificate = \"CarrierCertificate\",\r\n ExdecTransit = \"ExdecTransit\",\r\n DockReceipt = \"DockReceipt\",\r\n MasterSet = \"MasterSet\",\r\n TelexReleaseMessage = \"TelexReleaseMessage\",\r\n OOHBook = \"OOHBook\",\r\n OEUSDA = \"OEUSDA\",\r\n AuthEntry = \"AuthEntry\",\r\n TsaSecurity = \"TsaSecurity\",\r\n TsaUnknown = \"TsaUnknown\",\r\n WReceipt = \"WReceipt\",\r\n WShip = \"WShip\",\r\n WLabelReceive = \"WLabelReceive\",\r\n WLabelShip = \"WLabelShip\",\r\n FArrivalNotice = \"FArrivalNotice\",\r\n Invoice = \"Invoice\",\r\n PuInvoice = \"PuInvoice\",\r\n PrintCheckSlip = \"PrintCheckSlip\",\r\n PrintMessengerSlip = \"PrintMessengerSlip\",\r\n STARCFSMANI = \"STARCFSMANI\",\r\n CPHistory = \"CPHistory\",\r\n BPHistory = \"BPHistory\",\r\n MPHistory = \"MPHistory\",\r\n CompanyProfile = \"CompanyProfile\",\r\n SendEmail = \"SendEmail\",\r\n SendFax = \"SendFax\",\r\n IssueReady = \"IssueReady\",\r\n AesAir = \"AesAir\",\r\n AesOcean = \"AesOcean\",\r\n AesOtherOP = \"AesOtherOP\",\r\n AmsFiling = \"AmsFiling\",\r\n IsfFiling = \"IsfFiling\",\r\n\r\n // for billings menu\r\n CrDbNote = \"CrDbNote\",\r\n NewCustomerPay = \"NewCustomerPay\",\r\n NewBillPay = \"NewBillPay\",\r\n CustomerPayList = \"CustomerPayList\",\r\n BillPayList = \"BillPayList\",\r\n SwitchJournal = \"SwitchJournal\",\r\n OpenHistoryView = \"OpenHistoryView\",\r\n OpenDeleteHistoryView = \"OpenAcctDeleteHistoryView\",\r\n PrintBill = \"PrintBill\",\r\n BatchPrint = \"BatchPrint\",\r\n ViewPaymenHistory = \"ViewPaymenHistory\",\r\n AIAWB = \"AIAWB\",\r\n AutoBillingView = \"ViewAutoBilling\",\r\n}\r\n\r\n","import _ from \"lodash\";\r\nimport { Search } from \"../../filtering\";\r\n\r\nconst mapSearchFields: any = {\r\n general1: 'generalText1',\r\n general2: 'generalText2',\r\n general3: 'generalText3',\r\n date: {from: 'dateFrom', to: 'dateTo'},\r\n date1: {from: 'dateFrom1', to: 'dateTo1'},\r\n date2: {from: 'dateFrom2', to: 'dateTo2'},\r\n location1: 'location1Text',\r\n location2: 'location2Text',\r\n location3: 'location3Text',\r\n number: {from: 'numberFrom', to: 'numberTo'},\r\n number1: {from: 'numberFrom1', to: 'numberTo1'},\r\n number2: {from: 'numberFrom2', to: 'numberTo2'},\r\n}\r\n\r\n/**\r\n * Revision History\r\n * \r\n * 12/13/2021 ptkim Base class for all ???ListItem class\r\n */\r\nexport class SearchModelBase {\r\n descending: boolean = false;\r\n orderByEta: boolean = false;\r\n searchField: string[] = [];\r\n excludeOrderByField: string[] = [];\r\n recCount: number = 0;\r\n isSearch: boolean = false;\r\n extraWhere: String = '';\r\n [x:string]:any;\r\n isExpressSearch: boolean = false;\r\n\r\n\r\n\r\n /**\r\n * \r\n * @param search Conversion from Search model used on list screens to search model supported by api.getListItems\r\n * Filtering can be customized. Check OeMblListItem for details.\r\n * @param customSearchFieldMap \r\n * @param customizedFields - pass list of fields that use customized renderers. For those fields - use value as is provided without any changes (like adding % to beginning) \r\n * @returns \r\n */\r\n public static calculateSearchParameters(search: Search, customSearchFieldMap:{[key: string]: {[key: string]: string}} = {}, customizedFields: Array = []) {\r\n const result: Partial = {...search};\r\n const searchFields = new Set();\r\n (Object.keys(search) as Array).forEach((key) => {\r\n if(search[key] && (mapSearchFields[key] !== null && mapSearchFields[key] !== undefined)) {\r\n if(typeof search[key] === 'string') {\r\n if(typeof mapSearchFields[key] === 'object') {\r\n if(customSearchFieldMap[search[key] as string]) {\r\n // @ts-ignore\r\n result[customSearchFieldMap[search[key]].from] = search[mapSearchFields[key].from];\r\n // @ts-ignore\r\n result[customSearchFieldMap[search[key]].to] = search[mapSearchFields[key].to];\r\n searchFields.add(search[key] as string);\r\n }\r\n }else{\r\n // @ts-ignore\r\n if (search[mapSearchFields[key]] === true || search[mapSearchFields[key]] === false) {\r\n // Handle boolean values\r\n\r\n // @ts-ignore\r\n result[search[key]] = !!search[mapSearchFields[key]];\r\n searchFields.add(search[key] as string);\r\n }\r\n // @ts-ignore\r\n // else if (!isNaN(search[mapSearchFields[key]])) {\r\n // // Handle integers\r\n\r\n // // @ts-ignore\r\n // result[search[key]] = search[mapSearchFields[key]];\r\n // searchFields.add(search[key] as string);\r\n // }\r\n //else if (search[mapSearchFields[key]] || (search.generalNullOrEmpty || nullSearchEnableColumns.some(x => x === search[key]))) {\r\n else {\r\n // @ts-ignore\r\n if (customizedFields.includes(search[key])) {\r\n // @ts-ignore\r\n result[search[key]] = search[mapSearchFields[key]]\r\n searchFields.add(search[key] as string);\r\n }\r\n else {\r\n // @ts-ignore\r\n result[search[key]] = search[mapSearchFields[key]] ? search[mapSearchFields[key]].replace('\\'', '\\'\\'') : null;\r\n searchFields.add(search[key] as string);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else if (key === 'extras' && _.isArray(search[key]) && search[key].length > 0) {\r\n search[key].forEach(x => {\r\n Object.keys(x).forEach(y => {\r\n if (y === 'extraSlot') {\r\n if (x['dateFrom'] || x['dateFrom']) {\r\n // @ts-ignore\r\n result[customSearchFieldMap[x[y]].from] = x['dateFrom'];\r\n // @ts-ignore\r\n result[customSearchFieldMap[x[y]].to] = x['dateTo'];\r\n }\r\n else if (x['numberFrom'] || x['numberTo']) {\r\n // @ts-ignore\r\n result[customSearchFieldMap[x[y]].from] = x['numberFrom'];\r\n // @ts-ignore\r\n result[customSearchFieldMap[x[y]].to] = x['numberTo'];\r\n }\r\n else {\r\n // @ts-ignore\r\n if (x['generalText'] === true || x['generalText'] === false) {\r\n // @ts-ignore\r\n result[x[y]] = !!x['generalText'];\r\n }\r\n //else if (x['generalText'] || search.generalNullOrEmpty) {\r\n else {\r\n // @ts-ignore\r\n if (customizedFields.includes(x[y])) {\r\n // @ts-ignore\r\n result[x[y]] = x['generalText']\r\n }\r\n else {\r\n // @ts-ignore\r\n result[x[y]] = x['generalText'] ? x['generalText'] : null;\r\n }\r\n }\r\n }\r\n // @ts-ignore\r\n searchFields.add(x[y] as string);\r\n }\r\n })\r\n })\r\n }\r\n });\r\n // @ts-ignore\r\n result.searchField = [...searchFields.values(), ...result.searchField??[]]; //\r\n result.isSearch = result.searchField.length > 0\r\n result.excludeOrderByField = []\r\n result.descending = !result.orderByAscending\r\n result.isExpressSearch = result.isExpressSearch\r\n\r\n return result\r\n }\r\n}\r\n","/**\r\n * Revision History\r\n * \r\n * 12/28/2021 ptkim [save-sql] storageVersion must be increased whenever you change any TableSettings to update browser cache.\r\n * 02/22/2022 dario for better control tableVersion can be set inside concrete TableSettings. If it exists it overrides storageVersion\r\n * so not every table in application is affected by version upgrade.\r\n*/\r\nimport React from \"react\";\r\nimport {XAlignType, XCellType} from \"../framework.core/XExportColumn\";\r\n\r\nexport type HeaderFilterType = 'DateTime' | 'Date' | 'Number' | 'TextBegin' | 'TextSelect' | 'Bool' | 'None' | 'Special';\r\n\r\n// Be cautious when modifying storageVersion as it will reset all saved Column Options across different machines\r\n// You should modify the tableVersion defined for each Table instead\r\n// Changing tableVersion will only reset Column Options for the specific Table that was modified\r\nexport const storageVersion = 1081; \r\n\r\nexport interface TableOrderBy {\r\n orderBy: string,\r\n orderByAscending: boolean,\r\n};\r\n\r\nexport interface TableColumn {\r\n id?: string,\r\n accessor: string,\r\n Cell?: any,\r\n Header?: any,\r\n visible: boolean,\r\n resizable?: boolean,\r\n sortable?: boolean,\r\n filterable?: boolean,\r\n //\r\n /**\r\n * @deprecated\r\n */\r\n //filterType?: 'text' | 'number' | 'float' | 'date' | 'bool'| 'location' | undefined | XCellType,\r\n filterType?: string | undefined | XCellType,\r\n filterTypeV2?: XCellType | undefined,\r\n minWidth?: number | undefined,\r\n maxWidth?: number | undefined,\r\n width?: number | undefined,\r\n initialWidthPercentage?: number|undefined,\r\n defaultColumnFocus?: boolean,\r\n canBeHidden?: boolean,\r\n hiddenInColumnSetup?: boolean,\r\n hasCustomTooltip?: boolean,\r\n tooltip?: string|undefined,\r\n align?: XAlignType, //\r\n noNullOrEmptySearch?: boolean,\r\n formatString?: string,\r\n headerFilterType?: HeaderFilterType,\r\n};\r\n\r\nexport interface TableSettings {\r\n overflowX?: string|undefined,\r\n overflowY?: string|undefined,\r\n height?: string|undefined,\r\n useStorage?: boolean,\r\n flexResizer?: boolean,\r\n smallHeaders?: boolean,\r\n noTooltip?: boolean,\r\n headersColor?: 'gray'|'yellow'|'white'|'teal'|'lightgray'|undefined,\r\n columns: Array,\r\n alternateRows?: boolean,\r\n blackMode?: boolean,\r\n tableVersion?: number|undefined,\r\n useHighlightCellOnMouseover?:boolean,\r\n useHeaderFilters?:boolean,\r\n useHeaderFilterParams?: { setData: (data: any[]) => void, useHeaderFilter: boolean, oriListData: any[], disableBtnNameWhenFilterModalOpen: string };\r\n useSetClickedCellWhenClick?:boolean,\r\n noHeaders?: boolean,\r\n headerFilterType?: HeaderFilterType\r\n [key: string]: any,\r\n};\r\n\r\nexport interface ApplicableTableSettings extends TableSettings {\r\n data: Array\r\n tableName: string,\r\n};\r\n\r\nexport interface TableRowRenderer {\r\n accessor: 'string',\r\n Cell?: React.ReactNode,\r\n Header?: React.ReactNode,\r\n}\r\n\r\nexport function createColumnFocusListHierarchy(settings:TableSettings) {\r\n if (!settings || !settings.columns) {\r\n return [];\r\n }\r\n\r\n const result:Array = [];\r\n let anchorFound = false;\r\n\r\n settings.columns.forEach((c:TableColumn) => {\r\n if (c.defaultColumnFocus) {\r\n result.push(c.accessor);\r\n anchorFound = true;\r\n\r\n return;\r\n }\r\n\r\n if (anchorFound) {\r\n result.push(c.accessor);\r\n }\r\n });\r\n\r\n return result;\r\n}\r\n\r\nexport const invoiceLineItems:TableSettings = {\r\n tableVersion: 10048,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '320px',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'white',\r\n\r\n columns: [\r\n { Header: '#', accessor: 'indicator', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.63, },\r\n { Header: 'Type', accessor: 'chgTypeDesc', resizable: true, sortable: false,visible: true, initialWidthPercentage: 9.65, },\r\n { Header: 'Billing Code', accessor: 'billingCodeView', resizable: true, sortable: false, visible: true, initialWidthPercentage: 10.09, },\r\n { Header: 'Item Description', accessor: 'description', resizable: true, sortable: false, visible: true, initialWidthPercentage: 10.53, },\r\n { Header: 'CUR', accessor: 'cur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 5.26,},\r\n { Header: 'Rate', accessor: 'rate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.02, },\r\n { Header: 'Qty', accessor: 'qty', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.02, },\r\n { Header: 'Amount', accessor: 'curAmtDesc', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.89, },\r\n { Header: 'USD Amount', accessor: 'amtDesc', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.89, },\r\n { Header: 'Agent', accessor: 'agentName', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.89, },\r\n { Header: 'CUR', accessor: 'agtCur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 5.26, },\r\n { Header: 'Agent Amount', accessor: 'agtAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.02, },\r\n { Header: 'CrDb #', accessor: 'crDbNo', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.89, },\r\n { Header: 'PS', accessor: 'ps', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.19, },\r\n // { Header: 'Del', accessor: 'commands', resizable: false, sortable: false, visible: true, initialWidthPercentage: 2.02, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 1.77, },\r\n ],\r\n};\r\nexport const gInvoiceLineItems:TableSettings = {\r\n tableVersion: 1010,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '320px',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'white',\r\n\r\n columns: [\r\n { Header: '#', accessor: 'indicator', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.63, },\r\n { Header: 'Billing Code *', accessor: 'billingCodeView', resizable: true, sortable: false, visible: true, initialWidthPercentage: 22.5, },\r\n { Header: 'Item Description', accessor: 'description', resizable: true, sortable: false, visible: true, initialWidthPercentage: 30.28, },\r\n { Header: 'CUR', accessor: 'cur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 5.26, },\r\n { Header: 'Rate', accessor: 'rate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.77, },\r\n { Header: 'Qty', accessor: 'qty', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.77, },\r\n { Header: 'Amount', accessor: 'curAmtDesc', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.77, },\r\n { Header: 'USD Amount', accessor: 'lAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.77, },\r\n { Header: 'VAT', accessor: 'useVat', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.5, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 1.75, },\r\n ],\r\n};\r\n\r\nexport const billLineItems:TableSettings = {\r\n tableVersion: 1010,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '320px',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'white',\r\n\r\n columns: [\r\n { Header: '#', accessor: 'indicator', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.63, },\r\n { Header: 'Type', accessor: 'chgTypeDesc', resizable: true, sortable: false,visible: true, initialWidthPercentage: 9.65, },\r\n { Header: 'Billing Code', accessor: 'billingCodeView', resizable: true, sortable: false, visible: true, initialWidthPercentage: 10.09, },\r\n { Header: 'Item Description', accessor: 'description', resizable: true, sortable: false, visible: true, initialWidthPercentage: 10.53, },\r\n { Header: 'CUR', accessor: 'cur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 5.26,},\r\n { Header: 'Rate', accessor: 'rate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.02, },\r\n { Header: 'Qty', accessor: 'qty', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.02, },\r\n { Header: 'Amount', accessor: 'amount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.89, },\r\n { Header: 'USD Amount', accessor: 'lAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.89, },\r\n //{ Header: 'VAT', accessor: 'useVat', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.19, },\r\n { Header: 'Agent', accessor: 'agentName', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.89, },\r\n { Header: 'CUR', accessor: 'agtCur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 5.26, },\r\n { Header: 'Agent Amount', accessor: 'agtAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.02, },\r\n { Header: 'CrDb #', accessor: 'crDbNo', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.89, },\r\n { Header: 'PS', accessor: 'ps', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.19, },\r\n // { Header: 'Del', accessor: 'commands', resizable: false, sortable: false, visible: true, initialWidthPercentage: 2.02, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 1.77, },\r\n ],\r\n};\r\n\r\nexport const invoiceLineItemsWithVat:TableSettings = {\r\n tableVersion: 10047,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '320px',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'white',\r\n\r\n columns: [\r\n { Header: '#', accessor: 'indicator', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.1, },\r\n { Header: 'Type', accessor: 'chgTypeDesc', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.9, },\r\n { Header: 'Billing Code', accessor: 'billingCodeView', resizable: true, sortable: false, visible: true, initialWidthPercentage: 11, },\r\n { Header: 'Item Description', accessor: 'description', resizable: true, sortable: false, visible: true, initialWidthPercentage: 11, },\r\n { Header: 'CUR', accessor: 'cur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 4, },\r\n { Header: 'Rate', accessor: 'rate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.28, },\r\n { Header: 'Qty', accessor: 'qty', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.28, },\r\n { Header: 'Amount', accessor: 'curAmtDesc', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.28, },\r\n { Header: 'USD Amount', accessor: 'amtDesc', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.28, },\r\n { Header: 'Agent', accessor: 'agentName', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.88, },\r\n { Header: 'VAT', accessor: 'useVat', resizable: true, sortable: false, visible: true, initialWidthPercentage: 3, },\r\n { Header: 'CUR', accessor: 'agtCur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 4, },\r\n { Header: 'Agent Amount', accessor: 'agtAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.28, },\r\n { Header: 'CrDb #', accessor: 'crDbNo', resizable: true, sortable: false, visible: true, initialWidthPercentage: 9, },\r\n { Header: 'PS', accessor: 'ps', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.1, },\r\n // { Header: 'Del', accessor: 'commands', resizable: false, sortable: false, visible: true, initialWidthPercentage: 2.02, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 1.62,},\r\n ]\r\n};\r\n\r\nexport const gInvoiceLineItemsWithCreditAmount:TableSettings = {\r\n tableVersion: 1009,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '320px',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'white',\r\n\r\n columns: [\r\n { Header: '#', accessor: 'indicator', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.63, },\r\n { Header: 'Billing Code *', accessor: 'billingCodeView', resizable: true, sortable: false, visible: true, initialWidthPercentage: 19.01, }, \r\n { Header: 'Item Description', accessor: 'description', resizable: true, sortable: false, visible: true, initialWidthPercentage: 25, }, \r\n { Header: 'CUR', accessor: 'cur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 5.26, },\r\n { Header: 'Rate', accessor: 'rate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.77, },\r\n { Header: 'Qty', accessor: 'qty', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.77, },\r\n { Header: 'Amount', accessor: 'curAmtDesc', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.77, },\r\n { Header: 'USD Amount', accessor: 'lAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.77, },\r\n { Header: 'VAT', accessor: 'useVat', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.5, }, \r\n { Header: 'Credit Amount', accessor: 'agtAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.77, }, \r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 1.75, },\r\n ],\r\n};\r\n\r\nexport const gBillLineItemsWithCreditAmount: TableSettings = {\r\n tableVersion: 1011,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '320px',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'white',\r\n\r\n columns: [\r\n { Header: '#', accessor: 'indicator', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.63,},\r\n { Header: 'Billing Code *', accessor: 'billingCodeView', resizable: true, sortable: false, visible: true, initialWidthPercentage: 19.01,},\r\n { Header: 'Item Description', accessor: 'description', resizable: true, sortable: false, visible: true, initialWidthPercentage: 25,},\r\n { Header: 'CUR', accessor: 'cur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 5.26,},\r\n { Header: 'Rate', accessor: 'rate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.77,},\r\n { Header: 'Qty', accessor: 'qty', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.77,},\r\n { Header: 'Amount', accessor: 'amount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.77,},\r\n { Header: 'USD Amount', accessor: 'lAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.77, },\r\n /*{ Header: 'Del', accessor: 'commands', resizable: false, sortable: false, visible: true, initialWidthPercentage: 3.07,},*/\r\n { Header: 'VAT', accessor: 'useVat', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.5,},\r\n { Header: 'Credit Amount', accessor: 'agtAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.77, }, \r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 1.75,},\r\n ],\r\n};\r\n\r\nexport const gBillLineItems: TableSettings = {\r\n tableVersion: 1009,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '320px',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'white',\r\n\r\n columns: [\r\n { Header: '#', accessor: 'indicator', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.63,},\r\n { Header: 'Billing Code *', accessor: 'billingCodeView', resizable: true, sortable: false, visible: true, initialWidthPercentage: 22.5,},\r\n { Header: 'Item Description', accessor: 'description', resizable: true, sortable: false, visible: true, initialWidthPercentage: 30.28,},\r\n { Header: 'CUR', accessor: 'cur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 5.26,},\r\n { Header: 'Rate', accessor: 'rate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.77,},\r\n { Header: 'Qty', accessor: 'qty', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.77,},\r\n { Header: 'Amount', accessor: 'amount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.77,},\r\n { Header: 'USD Amount', accessor: 'lAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.77, },\r\n { Header: 'VAT', accessor: 'useVat', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.5, },\r\n /*{ Header: 'Del', accessor: 'commands', resizable: false, sortable: false, visible: true, initialWidthPercentage: 3.07,},*/\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 1.75,},\r\n ],\r\n};\r\n\r\nexport const billLineItemsWithVat:TableSettings = {\r\n tableVersion: 1007,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '320px',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'white',\r\n\r\n columns: [\r\n { Header: '#', accessor: 'indicator', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.1, },\r\n { Header: 'Type', accessor: 'chgTypeDesc', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.90, },\r\n { Header: 'Billing Code', accessor: 'billingCodeView', resizable: true, sortable: false, visible: true, initialWidthPercentage: 11, },\r\n { Header: 'Item Description', accessor: 'description', resizable: true, sortable: false, visible: true, initialWidthPercentage: 11, },\r\n { Header: 'CUR', accessor: 'cur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 4, },\r\n { Header: 'Rate', accessor: 'rate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.28, },\r\n { Header: 'Qty', accessor: 'qty', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.28, },\r\n { Header: 'Amount', accessor: 'amount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.28, },\r\n { Header: 'USD Amount', accessor: 'lAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.28, },\r\n { Header: 'Agent', accessor: 'agentName', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.88, },\r\n { Header: 'VAT', accessor: 'useVat', resizable: true, sortable: false, visible: true, initialWidthPercentage: 3, },\r\n { Header: 'CUR', accessor: 'agtCur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 4, },\r\n { Header: 'Agent Amount', accessor: 'agtAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.28, },\r\n { Header: 'CrDb #', accessor: 'crDbNo', resizable: true, sortable: false, visible: true, initialWidthPercentage: 9, },\r\n { Header: 'PS', accessor: 'ps', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.1, },\r\n // { Header: 'Del', accessor: 'commands', resizable: false, sortable: false, visible: true, initialWidthPercentage: 2.02, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 1.62,},\r\n ]\r\n};\r\n\r\nexport const invoicePreviewLineItems:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'gray',\r\n\r\n \r\n columns: [\r\n { Header: 'Billing Code', accessor: 'billingCode', resizable: true, sortable: false, visible: true, initialWidthPercentage: 13.11, },\r\n { Header: 'Item Description', accessor: 'description', resizable: true, sortable: false, visible: true, initialWidthPercentage: 18.85, },\r\n { Header: 'CUR', accessor: 'cur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 4.55, },\r\n { Header: 'Rate', accessor: 'rate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.82, },\r\n { Header: 'Qty', accessor: 'qty', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.82, },\r\n { Header: 'Amount', accessor: 'curAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.82, },\r\n { Header: 'USD Amount', accessor: 'amount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.82, },\r\n { Header: 'Agent', accessor: 'agentName', resizable: true, sortable: false, visible: true, initialWidthPercentage: 14.00, },\r\n { Header: 'CUR', accessor: 'agtCur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 4.55, },\r\n { Header: 'Agent Amount', accessor: 'agtAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.27, },\r\n { Header: 'CrDb #', accessor: 'crDbNo', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.00, },\r\n { Header: 'PS', accessor: 'ps', resizable: true, sortable: false, visible: true, initialWidthPercentage: 1.89, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 1.50, },\r\n ],\r\n};\r\n\r\nexport const billPreviewLineItems:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'gray',\r\n\r\n \r\n columns: [\r\n { Header: 'Billing Code', accessor: 'billingCode', resizable: true, sortable: false, visible: true, initialWidthPercentage: 13.11, },\r\n { Header: 'Item Description', accessor: 'description', resizable: true, sortable: false, visible: true, initialWidthPercentage: 18.85, },\r\n { Header: 'CUR', accessor: 'cur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 4.55, },\r\n { Header: 'Rate', accessor: 'rate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.82, },\r\n { Header: 'Qty', accessor: 'qty', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.82, },\r\n { Header: 'Amount', accessor: 'amount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.82, },\r\n { Header: 'USD Amount', accessor: 'lAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.82, },\r\n { Header: 'Agent', accessor: 'agentName', resizable: true, sortable: false, visible: true, initialWidthPercentage: 14.00, },\r\n { Header: 'CUR', accessor: 'agtCur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 4.55, },\r\n { Header: 'Agent Amount', accessor: 'agtAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.27, },\r\n { Header: 'CrDb #', accessor: 'crDbNo', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.00, },\r\n { Header: 'PS', accessor: 'ps', resizable: true, sortable: false, visible: true, initialWidthPercentage: 1.89, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 1.50, },\r\n ],\r\n};\r\n\r\n//\r\n\r\nexport const companyContactLineItems:TableSettings = {\r\n tableVersion: 1008,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '145px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.09,\r\n },\r\n {\r\n Header: 'Name',\r\n accessor: 'contact',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.37,\r\n },\r\n {\r\n Header: 'Department',\r\n accessor: 'dept',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.25,\r\n },\r\n {\r\n Header: 'Phone #',\r\n accessor: 'phone',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.28,\r\n },\r\n {\r\n Header: 'Fax #',\r\n accessor: 'fax',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.28,\r\n },\r\n {\r\n Header: 'Email Address',\r\n accessor: 'email',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 21.62,\r\n },\r\n {\r\n Header: 'Event',\r\n accessor: 'sendEvent',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.19,\r\n },\r\n {\r\n Header: 'Remark',\r\n accessor: 'remark',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20.62,\r\n },\r\n {\r\n Header: 'Primary',\r\n accessor: 'isPrimary',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.25,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.05,\r\n },\r\n ]\r\n};\r\n\r\nexport const companyBrokerLineItems:TableSettings = {\r\n tableVersion: 1006,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '145px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.09,\r\n },\r\n {\r\n Header: 'Company Name',\r\n accessor: 'brokerName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.87,\r\n },\r\n {\r\n Header: 'Dest',\r\n accessor: 'destination',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.75,\r\n },\r\n {\r\n Header: 'Address',\r\n accessor: 'brokerAddress',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.28,\r\n },\r\n {\r\n Header: 'Contact',\r\n accessor: 'contact',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.53,\r\n },\r\n {\r\n Header: 'Phone #',\r\n accessor: 'phone',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.28,\r\n },\r\n {\r\n Header: 'Fax #',\r\n accessor: 'fax',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.28,\r\n },\r\n {\r\n Header: 'Email Address',\r\n accessor: 'email',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20.62,\r\n },\r\n {\r\n Header: 'Primary',\r\n accessor: 'isPrimary',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.25,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.05,\r\n },\r\n ]\r\n};\r\n\r\nexport const companyDeliveryLineItems: TableSettings = {\r\n tableVersion: 1005,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '145px',\r\n useStorage: true,\r\n flexResizer: true,\r\n \r\n headersColor: 'white',\r\n columns: [\r\n { Header: '', accessor: 'indicator', resizable: true, sortable: false, visible: true, initialWidthPercentage: 3.0, },\r\n { Header: 'Company Name', accessor: 'fName', resizable: true, sortable: false, visible: true, initialWidthPercentage: 12.0, },\r\n { Header: 'Contact', accessor: 'contact', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.5, },\r\n { Header: 'Address', accessor: 'address', resizable: true, sortable: false, visible: true, initialWidthPercentage: 13.0, },\r\n { Header: 'City', accessor: 'city', resizable: true, sortable: false, visible: true, initialWidthPercentage: 10.0, },\r\n { Header: 'State', accessor: 'state', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.0, },\r\n { Header: 'Zip Code', accessor: 'zipCode', resizable: true, sortable: false, visible: true, initialWidthPercentage: 5.2, },\r\n { Header: 'Country', accessor: 'country', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.0, },\r\n { Header: 'Phone #', accessor: 'phone', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.25, },\r\n { Header: 'Fax #', accessor: 'fax', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8.25, },\r\n { Header: 'Email Address', accessor: 'email', resizable: true, sortable: false, visible: true, initialWidthPercentage: 12.5, },\r\n { Header: 'Primary', accessor: 'isPrimary', resizable: true, sortable: false, visible: true, initialWidthPercentage: 5.25, },\r\n { Header: '', accessor: 'scroll', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.05, },\r\n ]\r\n};\r\n\r\nexport const companyPickupLineItems:TableSettings = {\r\n tableVersion: 1005,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '145px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.09,\r\n },\r\n {\r\n Header: 'Company Name',\r\n accessor: 'company',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.37,\r\n },\r\n {\r\n Header: 'Contact',\r\n accessor: 'contact',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.25,\r\n },\r\n {\r\n Header: 'Address',\r\n accessor: 'address',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.40,\r\n },\r\n {\r\n Header: 'City',\r\n accessor: 'city',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.19,\r\n },\r\n {\r\n Header: 'State',\r\n accessor: 'state',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.19,\r\n },\r\n {\r\n Header: 'Zip Code',\r\n accessor: 'zipCode',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.15,\r\n },\r\n {\r\n Header: 'Country',\r\n accessor: 'country',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.19,\r\n },\r\n {\r\n Header: 'Phone #',\r\n accessor: 'phoneNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.25,\r\n },\r\n {\r\n Header: 'Fax #',\r\n accessor: 'faxNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.25,\r\n },\r\n {\r\n Header: 'Email Address',\r\n accessor: 'emailAddress',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.37,\r\n },\r\n {\r\n Header: 'Primary',\r\n accessor: 'primary',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.25,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.05,\r\n },\r\n ]\r\n};\r\n\r\nexport const companyAutoBillingLineItems:TableSettings = {\r\n tableVersion: 1016,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '145px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.09,\r\n },\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'billingCodeView',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 18.87,\r\n },\r\n {\r\n Header: 'OP Type',\r\n accessor: 'opType',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.50,\r\n },\r\n {\r\n Header: 'Item Description',\r\n accessor: 'itemDescription',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 21.15,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'currency',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.15,\r\n },\r\n {\r\n Header: 'Rate',\r\n accessor: 'invRate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.56,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'invQty',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.31,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'invAmount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.31,\r\n },\r\n {\r\n Header: 'Group',\r\n accessor: 'comGroup',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.06,\r\n },\r\n ]\r\n};\r\n\r\nexport const companyMiscInfoLineItems:TableSettings = {\r\n tableVersion: 1013,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '115px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.69,\r\n },\r\n {\r\n Header: 'Use',\r\n accessor: 'check',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20.51,\r\n },\r\n {\r\n Header: 'Event',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 66.66,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.12,\r\n },\r\n ]\r\n};\r\n\r\n/**\r\n * importer: \r\n * oceanimport/mbl/implementation/MblContainerInfo.tsx\r\n * pt211203: Apply OmContainer props\r\n */\r\nexport const mblContainerDetails:TableSettings = {\r\n tableVersion: 1010,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '130px',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.63,\r\n },\r\n {\r\n Header: 'Container #',\r\n accessor: 'containerNo', //'containerNumber',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.77,\r\n },\r\n {\r\n Header: 'Type',\r\n accessor: 'conType', //'type',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.89,\r\n },\r\n {\r\n Header: 'Seal #',\r\n accessor: 'sealNo', //'sealNumber',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.89,\r\n },\r\n {\r\n Header: 'Pkg(s)',\r\n accessor: 'pkgs', //'numberOfPackages',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.89,\r\n },\r\n // {\r\n // Header: 'Unit',\r\n // accessor: 'pUnit', //'unit',\r\n // resizable: true,\r\n // sortable: false,\r\n // visible: true,\r\n // initialWidthPercentage: 6.38,\r\n // },\r\n {\r\n Header: 'Weight (KGS)',\r\n accessor: 'kgs', //'weightKgs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.89,\r\n },\r\n {\r\n Header: 'Weight (LBS)',\r\n accessor: 'lbs', //'weightLbs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.89,\r\n },\r\n {\r\n Header: 'Pickup #',\r\n accessor: 'pickupNo', //'pickupNumber',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.40,\r\n },\r\n {\r\n Header: 'Pickup Location',\r\n accessor: 'pickupLoc', //'pickupLocation',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.16,\r\n },\r\n {\r\n Header: 'Last Free Date',\r\n accessor: 'lastFreeDay', //'lastFreeDate',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.02,\r\n },\r\n {\r\n Header: 'G. O. Date',\r\n accessor: 'goDate',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.02,\r\n },\r\n {\r\n Header: 'Empty Return Date',\r\n accessor: 'emptyReturn', //'emptyReturnDate',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.77,\r\n },\r\n // {\r\n // Header: 'Del',\r\n // accessor: 'commands',\r\n // resizable: false,\r\n // sortable: false,\r\n // visible: true,\r\n // initialWidthPercentage: 2.43,\r\n // },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 1.78,\r\n },\r\n ]\r\n};\r\n\r\n/**\r\n * Importer:\r\n * oceanImport/mbl/implementation/MblMilestone.tsx\r\n * pt211227: Apply OmContainer props\r\n */\r\nexport const mblSelectContainer:TableSettings = {\r\n tableVersion: 10046,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '150px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'select',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.39,\r\n },\r\n {\r\n Header: 'Container #',\r\n accessor: 'cntrNo', //'containerNumber',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 43.48,\r\n },\r\n {\r\n Header: 'Type',\r\n accessor: 'cntrType', //'type',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 30.43,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.70,\r\n },\r\n ]\r\n};\r\n\r\nexport const mblStatus:TableSettings = {\r\n tableVersion: 10042,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n alternateRows: false,\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: 'Select',\r\n //[save-sqlinfo]accessor: 'select',\r\n accessor: 'check',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.88,\r\n },\r\n {\r\n Header: 'EVENT',\r\n //[save-sqlinfo]accessor: 'statusName',\r\n accessor: 'name',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 27.94,\r\n },\r\n {\r\n Header: 'DATE',\r\n accessor: 'date',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: 'TIME',\r\n accessor: 'time',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.35,\r\n },\r\n {\r\n Header: 'LOCATION (UN CODE)',\r\n //[save-sqlinfo]accessor: 'location',\r\n accessor: 'locName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 32.35,\r\n minWidth: 100,\r\n maxWidth: 600,\r\n },\r\n {\r\n Header: 'Last Event Time',\r\n //[save-sqlinfo]accessor: 'lastEventTime',\r\n accessor: 'lastDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.72,\r\n },\r\n ]\r\n};\r\n\r\nexport const hblBlDetailsNoOfPackages:TableSettings = {\r\n tableVersion: 1012,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n headersColor: 'white',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n columns: [\r\n {\r\n Header: 'Container #',\r\n accessor: 'actualContainerNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 29.36,\r\n },\r\n {\r\n Header: 'Type',\r\n accessor: 'actualContainerType',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 19,\r\n },\r\n {\r\n Header: 'Seal #',\r\n accessor: 'sealNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 19,\r\n },\r\n {\r\n Header: 'Pkgs',\r\n accessor: 'pkgs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'agentShow',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.64,\r\n },\r\n ]\r\n};\r\n\r\nexport const crdbLineItems:TableSettings = {\r\n tableVersion: 1014,\r\n headersColor: 'white',\r\n\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '320px',\r\n useStorage: true,\r\n flexResizer: true,\r\n columns: [\r\n { Header: '#', accessor: 'indicator', resizable: false, sortable: false, visible: true, initialWidthPercentage: 2, },\r\n { Header: 'M/H', accessor: 'mh', resizable: false, sortable: false, visible: true, initialWidthPercentage: 3, },\r\n { Header: 'B/L #', accessor: 'blNo', resizable: false, sortable: false, visible: true, initialWidthPercentage: 7, },\r\n { Header: 'Type', accessor: 'chgTypeDesc', resizable: false, sortable: false, visible: true, initialWidthPercentage: 7.7, },\r\n { Header: 'Billing Code', accessor: 'crDbCodeView', resizable: false, sortable: false, visible: true, initialWidthPercentage: 9, },\r\n { Header: 'Item Description', accessor: 'description', resizable: false, sortable: false, visible: true, initialWidthPercentage: 12, },\r\n { Header: 'Rate', accessor: 'rate', resizable: false, sortable: false, visible: true, initialWidthPercentage: 7.7, },\r\n { Header: 'Qty', accessor: 'qty', resizable: false, sortable: false, visible: true, initialWidthPercentage: 7, },\r\n { Header: 'Sales', accessor: 'originRevenue', resizable: false, sortable: false, visible: true, initialWidthPercentage: 6.5, },\r\n { Header: 'Cost', accessor: 'originCost', resizable: false, sortable: false, visible: true, initialWidthPercentage: 6.5, },\r\n { Header: 'Sales', accessor: 'destRevenue', resizable: false, sortable: false, visible: true, initialWidthPercentage: 6.5, },\r\n { Header: 'Cost', accessor: 'destCost', resizable: false, sortable: false, visible: true, initialWidthPercentage: 6.5, },\r\n { Header: 'Debit Amount', accessor: 'debit', resizable: false, sortable: false, visible: true, initialWidthPercentage: 7.5, },\r\n { Header: 'Credit Amount', accessor: 'credit', resizable: false, sortable: false, visible: true, initialWidthPercentage: 7.5, },\r\n { Header: 'PS', accessor: 'pShare', resizable: false, sortable: false, visible: true, initialWidthPercentage: 2, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: false, initialWidthPercentage: 1.62, },\r\n { Header: '', accessor: 'chgType', resizable: false, sortable: false, visible: false, initialWidthPercentage: 0 },\r\n ]\r\n};\r\n\r\nexport const crdbLineItemsWH:TableSettings = {\r\n tableVersion: 1010,\r\n headersColor: 'white',\r\n\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '320px',\r\n useStorage: true,\r\n flexResizer: true,\r\n columns: [\r\n { Header: '#', accessor: 'indicator', resizable: false, sortable: false, visible: true, initialWidthPercentage: 3.57, },\r\n { Header: 'Billing Type', accessor: 'chgTypeDesc', resizable: false, sortable: false, visible: true, initialWidthPercentage: 8.66, },\r\n { Header: 'Billing Code*', accessor: 'crDbCodeView', resizable: false, sortable: false, visible: true, initialWidthPercentage: 16.28, },\r\n { Header: 'Description', accessor: 'description', resizable: false, sortable: false, visible: true, initialWidthPercentage: 23.04, },\r\n { Header: 'Cur', accessor: 'cur', resizable: false, sortable: false, visible: true, initialWidthPercentage: 5.95, },\r\n { Header: 'Rate', accessor: 'rate', resizable: false, sortable: false, visible: true, initialWidthPercentage: 9.52, },\r\n { Header: 'Qty', accessor: 'qty', resizable: false, sortable: false, visible: true, initialWidthPercentage: 9.52, },\r\n { Header: 'Debit Amount', accessor: 'debit', resizable: false, sortable: false, visible: true, initialWidthPercentage: 10.52, },\r\n { Header: 'Credit Amount', accessor: 'credit', resizable: false, sortable: false, visible: true, initialWidthPercentage: 10.52, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 2.42, },\r\n ]\r\n};\r\n\r\nexport const hblHblBodyLineItems:TableSettings = {\r\n tableVersion: 10042,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: 'Mark and Numbers',\r\n accessor: 'markAndNumbers',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.56,\r\n },\r\n {\r\n Header: 'Package(s)',\r\n accessor: 'numberOfPackages',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.56,\r\n },\r\n {\r\n Header: 'Description of Goods',\r\n accessor: 'descriptionOfGoods',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 29.72,\r\n },\r\n {\r\n Header: 'Gross Weight',\r\n accessor: 'grossWeight',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.56,\r\n },\r\n {\r\n Header: 'Measurement',\r\n accessor: 'measurment',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.56,\r\n },\r\n ]\r\n};\r\n\r\nexport const aiHawbHblBodyLineItems:TableSettings = {\r\n tableVersion: 10045,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: 'Mark and Numbers',\r\n accessor: 'markAndNumbers',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.57,\r\n },\r\n {\r\n Header: 'Package(s)',\r\n accessor: 'numberOfPackages',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.57,\r\n },\r\n {\r\n Header: 'Description of Goods',\r\n accessor: 'descriptionOfGoods',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 29.73,\r\n },\r\n {\r\n Header: 'Gross Weight',\r\n accessor: 'grossWeight',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.57,\r\n },\r\n {\r\n Header: 'Volume Weight',\r\n accessor: 'measurment',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.57,\r\n },\r\n ]\r\n};\r\n\r\nexport const codeOceanMoveTypeList:TableSettings = {\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'teal',\r\n alternateRows: true,\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 30,\r\n //hiddenInColumnSetup: true,\r\n },\r\n {\r\n Header: 'Move Type',\r\n accessor: 'moveType',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 100,\r\n },\r\n {\r\n Header: 'Description',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 200,\r\n },\r\n {\r\n Header: 'Inactive',\r\n accessor: 'inactive',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 70,\r\n },\r\n ]\r\n};\r\n\r\nexport const hblOiHblPoBodyLineItems:TableSettings = {\r\n tableVersion: 1011,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '300px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.68,\r\n },\r\n {\r\n Header: 'Container #',\r\n accessor: 'containerNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.93,\r\n },\r\n {\r\n Header: 'P.O #',\r\n accessor: 'poNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.14,\r\n },\r\n {\r\n Header: 'SKU',\r\n accessor: 'skuNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.51,\r\n },\r\n {\r\n Header: 'HTS Code',\r\n accessor: 'htsCode',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.34,\r\n },\r\n {\r\n Header: 'C/O',\r\n accessor: 'coo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.14,\r\n },\r\n {\r\n Header: 'Description',\r\n accessor: 'description',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.39,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'shipQty',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.93,\r\n },\r\n {\r\n Header: 'Unit',\r\n accessor: 'shipUnit',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.14,\r\n },\r\n {\r\n Header: 'Unit Price',\r\n accessor: 'uPrice',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.14,\r\n },\r\n {\r\n Header: 'KGS',\r\n accessor: 'kgs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.93,\r\n },\r\n {\r\n Header: 'CBM',\r\n accessor: 'cbm',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.93,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 1.80,\r\n },\r\n ]\r\n};\r\n\r\nexport const hblHblReviewProfitLineItems:TableSettings = {\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '350px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n columns: [\r\n {\r\n Header: 'M/H',\r\n accessor: 'mh',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.07,\r\n },\r\n {\r\n Header: 'Date',\r\n accessor: 'date',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.89,\r\n },\r\n {\r\n Header: 'B/L # / INV #',\r\n accessor: 'blInvNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.74,\r\n },\r\n {\r\n Header: 'BILLING CODE',\r\n accessor: 'billingCode',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.22,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.08,\r\n },\r\n {\r\n Header: 'DEF. SALES',\r\n accessor: 'defSales',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10,\r\n },\r\n {\r\n Header: 'DEF. COST',\r\n accessor: 'defCost',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10,\r\n },\r\n {\r\n Header: 'DEF. AGENT SALES',\r\n accessor: 'defAgentSales',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10,\r\n },\r\n {\r\n Header: 'DEF. AGENT COST',\r\n accessor: 'defAgentCost',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10,\r\n },\r\n {\r\n Header: 'AMOUNT (USD)',\r\n accessor: 'usdAmount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10,\r\n },\r\n {\r\n Header: 'EST. PROFIT (USD)',\r\n accessor: 'estUsdProfit',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10,\r\n },\r\n ]\r\n};\r\n\r\nexport const commonCompaniesCompanyList:TableSettings = {\r\n tableVersion: 10055,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n {\r\n Header: 'S',\r\n accessor:'status',\r\n resizable: false,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 30,\r\n },\r\n {\r\n Header: 'Inactive',\r\n accessor:'inactive',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 54,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Company Name',\r\n accessor:'shortName',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 200,\r\n defaultColumnFocus: true,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Company Ref. #',\r\n accessor:'companyRefNo',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 120,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Contact',\r\n accessor:'contact',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 100,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Email',\r\n accessor:'email',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 150,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Phone #',\r\n accessor:'phone',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'CR Term',\r\n accessor:'terms',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 50,\r\n filterable: true, filterType: 'number'\r\n },\r\n {\r\n Header: 'CR Limit',\r\n accessor:'creditLimit',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 50,\r\n filterable: true, filterType: 'float'\r\n },\r\n {\r\n Header: 'CR Hold',\r\n accessor:'creditHold',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 50,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'ID Type',\r\n accessor:'idType',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Tax ID #',\r\n accessor:'taxId',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Bond #',\r\n accessor:'bondNo',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'IATA #',\r\n accessor:'iataNo',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Bank Account #',\r\n accessor:'accountNo',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 100,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Salesperson',\r\n accessor:'salesPerson',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Cust. SVC Rep',\r\n accessor:'csr',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Broker',\r\n accessor:'brokerName',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Full Name',\r\n accessor:'fullName',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 200,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Fax',\r\n accessor:'fax',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Address',\r\n accessor:'address',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 150,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'City',\r\n accessor:'city',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 93,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'State',\r\n accessor:'state',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 47,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Zip',\r\n accessor:'zipCode',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 50,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Country',\r\n accessor:'country',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 50,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Local Name',\r\n accessor:'localName',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 100,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Local Address',\r\n accessor:'localAddress',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 100,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Group',\r\n accessor:'groupId',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 50,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Bill To',\r\n accessor:'billTo',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true, filterType: 'text'\r\n }, {\r\n Header: 'Create',\r\n accessor:'createdAt',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 100,\r\n filterable: true, filterType: 'date'\r\n },\r\n {\r\n Header: 'Create By',\r\n accessor:'u1ID',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Update',\r\n accessor:'u2Date',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 100,\r\n filterable: true, filterType: 'date'\r\n },\r\n {\r\n Header: 'Update By',\r\n accessor:'u2ID',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true, filterType: 'text'\r\n },\r\n ]\r\n};\r\n\r\nexport const commonCompanyBranchesList:TableSettings = {\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'teal',\r\n alternateRows: true,\r\n columns: [\r\n {\r\n Header: '',\r\n accessor:'indicator',\r\n resizable: false,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 30,\r\n //hiddenInColumnSetup: true,\r\n },\r\n {\r\n Header: 'Branch',\r\n accessor:'br',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Branch Name',\r\n accessor:'branchName',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 125,\r\n defaultColumnFocus: true,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Contact',\r\n accessor:'contact',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 125,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Phone #',\r\n accessor:'phoneNo',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 125,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Fax #',\r\n accessor:'faxNo',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 125,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'IATA Code',\r\n accessor:'iataCode',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 125,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'HQ Branch',\r\n accessor:'hq',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 125,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Update Date',\r\n accessor:'updatedDate',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 125,\r\n filterable: true, filterType: 'date'\r\n },\r\n {\r\n Header: 'Update By',\r\n accessor:'updateBy',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 125,\r\n filterable: true, filterType: 'text'\r\n },\r\n {\r\n Header: 'Create By',\r\n accessor:'createdBy',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 125,\r\n filterable: true, filterType: 'text'\r\n },\r\n ]\r\n};\r\n\r\nexport const codeOceanContainerTypeList:TableSettings = {\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'teal',\r\n alternateRows: true,\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 30,\r\n //hiddenInColumnSetup: true,\r\n },\r\n {\r\n Header: 'Container Type',\r\n accessor: 'containerType',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 100,\r\n },\r\n {\r\n Header: 'Description',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 200,\r\n },\r\n {\r\n Header: 'Group',\r\n accessor: 'group',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 200,\r\n },\r\n {\r\n Header: 'ISO Type',\r\n accessor: 'isoSizeAndType',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 200,\r\n },\r\n {\r\n Header: 'Length',\r\n accessor: 'length',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 200,\r\n },\r\n {\r\n Header: 'Height',\r\n accessor: 'height',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 200,\r\n },\r\n {\r\n Header: 'Type',\r\n accessor: 'type',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 200,\r\n },\r\n {\r\n Header: 'Inactive',\r\n accessor: 'inactive',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 70,\r\n },\r\n {\r\n Header: 'Update Date',\r\n accessor: 'updateDate',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 200,\r\n },\r\n {\r\n Header: 'Update By',\r\n accessor: 'updatedBy',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 200,\r\n },\r\n {\r\n Header: 'Created By',\r\n accessor: 'createdBy',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 200,\r\n },\r\n ]\r\n};\r\n\r\n/**\r\n * SalesCostEntry - BillAccordion\r\n */\r\nexport const billInsideAccordionLineItems:TableSettings = {\r\n tableVersion: 10044,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n height: '100%',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.63,\r\n },\r\n {\r\n Header: 'Action',\r\n accessor: 'action',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.14,\r\n },\r\n {\r\n Header: 'Bill #',\r\n accessor: 'billNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.77,\r\n },\r\n {\r\n Header: 'Bill Date',\r\n accessor: 'billDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.02,\r\n },\r\n {\r\n Header: 'Vendor',\r\n accessor: 'vendorName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.04,\r\n },\r\n {\r\n Header: 'RCVD',\r\n accessor: 'billReceived',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.39,\r\n },\r\n {\r\n Header: 'Due Date',\r\n accessor: 'dueDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.02,\r\n },\r\n {\r\n Header: 'Hold',\r\n accessor: 'hold',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.39,\r\n },\r\n {\r\n Header: 'Draft',\r\n accessor: 'draft',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.39,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'currency', //[save-sqlinfo]'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.39,\r\n },\r\n {\r\n Header: 'Bill Amount',\r\n accessor: 'billAmt', //[save-sqlinfo]'billAmount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.02,\r\n },\r\n {\r\n Header: 'Paid Amount',\r\n accessor: 'paidAmt', //[save-sqlinfo]'paidAmount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.02,\r\n },\r\n {\r\n Header: 'Balance',\r\n accessor: 'balanceDue', //[save-sqlinfo]'balanceAmount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.02,\r\n },\r\n {\r\n Header: 'Paid',\r\n accessor: 'paid',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.02,\r\n },\r\n {\r\n Header: 'CrDb #',\r\n accessor: 'crDbNo', //[save-sqlinfo]'relatedCrdbNos',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.02,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'unfold',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 1.72, // Make sure to have enough space for scrollbar\r\n },\r\n ]\r\n};\r\n\r\n/**\r\n * SalesCostEntry - InvoiceAccordion\r\n */\r\nexport const invoiceInsideAccordionLineItems:TableSettings = {\r\n tableVersion: 10044,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n height: '100%',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.63,\r\n },\r\n {\r\n Header: 'Action',\r\n accessor: 'action',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.14,\r\n },\r\n {\r\n Header: 'Invoice #',\r\n accessor: 'invoiceNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.77,\r\n },\r\n {\r\n Header: 'Invoice Date',\r\n accessor: 'postDate', //[save-sqlinfo]'invoiceDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.02,\r\n },\r\n {\r\n Header: 'Customer',\r\n accessor: 'invoiceToName', //[save-sqlinfo]'invoiceTo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.04,\r\n },\r\n {\r\n Header: 'XMT',\r\n accessor: 'transmitted', //[save-sqlinfo]'xmt',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.39,\r\n },\r\n {\r\n Header: 'Due Date',\r\n accessor: 'dueDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.02,\r\n },\r\n {\r\n Header: 'Over',\r\n accessor: 'overdue',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.39,\r\n },\r\n {\r\n Header: 'Draft',\r\n accessor: 'draft',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.39,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'currency', //[save-sqlinfo]'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.39,\r\n },\r\n {\r\n Header: 'Invoice Amount',\r\n accessor: 'invoiceAmt', //[save-sqlinfo]'invoiceAmount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.02,\r\n },\r\n {\r\n Header: 'Paid Amount',\r\n accessor: 'paidAmt', //[save-sqlinfo]'paidAmount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.02,\r\n },\r\n {\r\n Header: 'Balance',\r\n accessor: 'balanceAmt', //[save-sqlinfo]'balanceAmount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.02,\r\n },\r\n {\r\n Header: 'Paid',\r\n accessor: 'paid', //[save-sqlinfo]'lastPaidDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.02,\r\n },\r\n {\r\n Header: 'CrDb #',\r\n accessor: 'crDbNo', //[save-sqlinfo]'relatedCrdbNos',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.02,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'unfold',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 1.72, // Make sure to have enough space for scrollbar\r\n },\r\n ]\r\n};\r\n\r\n/**\r\n * SalesCostEntry - CrDbAccordion\r\n */\r\nexport const crdbInsideAccordionLineItems:TableSettings = {\r\n tableVersion: 10046,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n height: '100%',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.63,\r\n },\r\n {\r\n Header: 'Action',\r\n accessor: 'action',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.14,\r\n },\r\n {\r\n Header: 'CrDb #',\r\n accessor: 'crDbNo', //[save-sqlinfo]'crdbNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.77,\r\n },\r\n {\r\n Header: 'CrDb Date',\r\n accessor: 'crDbDate', //'crdbDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.01,\r\n },\r\n {\r\n Header: 'Agent',\r\n accessor: 'agentName', //[save-sqlinfo]'agent',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.04,\r\n },\r\n {\r\n Header: 'XMT',\r\n accessor: 'printed',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.38,\r\n }, \r\n {\r\n Header: 'CFM',\r\n accessor: 'isConfirm', //[save-sqlinfo]'cfm',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.38,\r\n },\r\n\r\n {\r\n Header: 'Draft',\r\n accessor: 'draft',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.38,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'currency', //[save-sqlinfo]'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.50,\r\n },\r\n {\r\n Header: 'Debit',\r\n accessor: 'debitAmt', //[save-sqlinfo]'debitAmount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.14,\r\n },\r\n {\r\n Header: 'Credit',\r\n accessor: 'creditAmt', //[save-sqlinfo]'creditAmount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.14,\r\n },\r\n {\r\n Header: 'CrDb Amount',\r\n accessor: 'totalAmt', //[save-sqlinfo]'crdbAmount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.14,\r\n },\r\n {\r\n Header: 'Paid Amount',\r\n accessor: 'paidAmt', //[save-sqlinfo]'paidAmount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.14,\r\n },\r\n {\r\n Header: 'Balance',\r\n accessor: 'balAmt',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.14,\r\n },\r\n {\r\n Header: 'Paid',\r\n accessor: 'paid', //[save-sqlinfo]'lastPaidDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.14,\r\n },\r\n {\r\n Header: 'B/L #',\r\n accessor: 'blNo', //[save-sqlinfo]'relatedBlNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.14,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'unfold',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 1.75, // Make sure to have enough space for scrollbar\r\n },\r\n ]\r\n};\r\n\r\n/*\r\nAcctinfo - Bill\r\n*/ \r\nexport const acctInfoBillLineItems:TableSettings = {\r\n tableVersion: 10043,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n height: '100%',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n width: 30,\r\n }, \r\n {\r\n Header: 'Date',\r\n accessor: 'postDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 80,\r\n },\r\n {\r\n Header: 'Vendor',\r\n accessor: 'entityName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 80,\r\n },\r\n \r\n {\r\n Header: 'Description',\r\n accessor: 'descript',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 70,\r\n },\r\n {\r\n Header: 'Bill #',\r\n accessor: 'invoiceNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 60,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 50,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 80,\r\n },\r\n {\r\n Header: 'Due Date',\r\n accessor: 'dueDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 80,\r\n },\r\n {\r\n Header: 'Balance',\r\n accessor: 'balance',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 80,\r\n },\r\n {\r\n Header: 'Status',\r\n accessor: 'status', \r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 50,\r\n }\r\n ]\r\n};\r\n\r\n/*\r\nAcctinfo - Invoice\r\n*/ \r\nexport const acctInfoInvoiceLineItems:TableSettings = {\r\n tableVersion: 10043,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n height: '100%',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n width: 30,\r\n }, \r\n {\r\n Header: 'Date',\r\n accessor: 'postDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 80,\r\n },\r\n {\r\n Header: 'Bill To',\r\n accessor: 'entityName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 110,\r\n },\r\n \r\n {\r\n Header: 'Invoice #',\r\n accessor: 'invoiceNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 90,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 50,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 85,\r\n },\r\n {\r\n Header: 'Due Date',\r\n accessor: 'dueDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 80,\r\n },\r\n {\r\n Header: 'Balance',\r\n accessor: 'balance',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 85,\r\n },\r\n {\r\n Header: 'XMIT',\r\n accessor: 'xmit', \r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 50,\r\n }\r\n ]\r\n};\r\n\r\n/*\r\nAcctinfo - CRDB\r\n*/ \r\nexport const acctInfoCrdbLineItems:TableSettings = {\r\n tableVersion: 10043,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n height: '100%',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n width: 30,\r\n }, \r\n {\r\n Header: 'Date',\r\n accessor: 'postDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 80,\r\n },\r\n {\r\n Header: 'Agent',\r\n accessor: 'entityName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 150,\r\n },\r\n \r\n {\r\n Header: 'CR/DB #',\r\n accessor: 'invoiceNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 80,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 50,\r\n },\r\n {\r\n Header: 'Total Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 85,\r\n },\r\n {\r\n Header: 'Balance',\r\n accessor: 'balance',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 85,\r\n },\r\n {\r\n Header: 'XMIT',\r\n accessor: 'xmit', \r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 50,\r\n },\r\n {\r\n Header: 'CFM',\r\n accessor: 'cfm', \r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n width: 50,\r\n }\r\n ]\r\n};\r\n\r\nexport const oceanImportMblList:TableSettings = {\r\n tableVersion: 10097,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: []\r\n};\r\n\r\n\r\nexport const mblReviewProfit:TableSettings = {\r\n tableVersion: 10069,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '550px',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'lightgray',\r\n columns: [\r\n {\r\n Header: 'M/H',\r\n accessor: 'indicator',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.94,\r\n },\r\n {\r\n Header: 'Date',\r\n accessor: 'date',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.84,\r\n },\r\n {\r\n Header: 'BL # / Billings',\r\n accessor: 'no',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.8,\r\n },\r\n {\r\n Header: 'Company',\r\n accessor: 'comName',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'billingCode',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.7,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.92,\r\n },\r\n {\r\n Header: 'D. SALES',\r\n accessor: 'defSales',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.84,\r\n },\r\n {\r\n Header: 'D. COST',\r\n accessor: 'defCost',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.84,\r\n },\r\n {\r\n Header: 'D. A/Sales',\r\n accessor: 'defAgentSales',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.84,\r\n },\r\n {\r\n Header: 'D. A/Cost',\r\n accessor: 'defAgentCost',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.84,\r\n },\r\n {\r\n Header: 'AMOUNT (USD)',\r\n accessor: 'primaryAmount',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.84,\r\n },\r\n {\r\n Header: 'E. PROFIT (USD)',\r\n accessor: 'estProfit',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.84,\r\n },\r\n {\r\n Header: ' ',\r\n accessor: 'scroll',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 1.96,\r\n },\r\n ]\r\n};\r\n\r\nexport const whReviewProfit:TableSettings = {\r\n tableVersion: 10067,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '550px',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'lightgray',\r\n columns: [\r\n {\r\n Header: 'Date',\r\n accessor: 'date',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8,\r\n },\r\n {\r\n Header: 'BL # / Billings',\r\n accessor: 'no',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16,\r\n },\r\n {\r\n Header: 'BILLING CODE',\r\n accessor: 'billingCode',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 18,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5,\r\n },\r\n {\r\n Header: 'SALES',\r\n accessor: 'defSales',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.5,\r\n },\r\n {\r\n Header: 'COST',\r\n accessor: 'defCost',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.5,\r\n },\r\n {\r\n Header: 'AMOUNT (USD)',\r\n accessor: 'primaryAmount',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.5,\r\n },\r\n {\r\n Header: 'G. PROFIT (USD)',\r\n accessor: 'estProfit',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.5,\r\n },\r\n {\r\n Header: ' ',\r\n accessor: 'scroll',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3,\r\n },\r\n ]\r\n};\r\n\r\nexport const invoiceList:TableSettings = {\r\n tableVersion: 10063,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n ]\r\n};\r\n\r\nexport const billList:TableSettings = {\r\n tableVersion: 10059,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'status', Header: 'S', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false, },\r\n { accessor:'draft', Header: 'D', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false, filterable: true, filterType: 'text'},\r\n { accessor:'recognized', Header: 'R', visible: true, width: 35, canBeHidden: false, resizable: false, sortable: true, filterable: true, filterType: 'text' },\r\n // { accessor:'void', Header: 'V', visible: true, width: 35, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'billDate', Header: 'Date', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'billNo', Header: 'Bill #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, },\r\n { accessor:'branch', Header: 'BR', visible: true, width: 40, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'vendorName', Header: 'Vendor', visible: true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'dueDate', Header: 'Due Date', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'currency', Header: 'CUR', visible: true, width: 40, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'amount', Header: 'Amount', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'float' },\r\n { accessor:'paidAmount', Header: 'Paid', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'float' },\r\n { accessor:'balance', Header: 'Balance', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'float' },\r\n { accessor:'confirmed', Header: 'Confirmed', visible: true, width: 60, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text'},\r\n { accessor:'draftPaid', Header: 'Draft Paid', visible: true, width: 60, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', tooltip: 'Draft Paid' },\r\n { accessor:'checkNo', Header: 'Paid Check #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'vendorRefNo', Header: 'Vendor Ref. #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'paidDate', Header: 'Paid Date', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'lastClearDate', Header: 'Chk Clear Date', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'invoiced', Header: 'B. Rcvd.', visible: true, width: 50, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', tooltip: 'Bill Received' },\r\n { accessor:'hold', Header: 'P. Hold', visible: true, width: 50, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', tooltip: 'Payment Hold' }, // ????\r\n { accessor:'approved', Header: 'Apprvd', visible: true, width: 50, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', tooltip: 'Bill Approved' }, // ????\r\n // { accessor:'appPaidDate', Header: 'Sch. Date', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date', tooltip: 'Scheduled Date' }, // ????\r\n { accessor:'jobType', Header: 'Type', visible: true, width: 40, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'refNo', Header: 'Ref. #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'mblNo', Header: 'MBL/MAWB #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' }, // ????\r\n { accessor:'hblNo', Header: 'HBL/HWAB #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' }, // ????\r\n { accessor:'remarks', Header: 'Gen. Remark', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', tooltip: 'General Remark' }, // ????\r\n { accessor:'updatedDate', Header: 'Update', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'updatedBy', Header: 'Update By', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'createdBy', Header: 'Create By', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const crdbList:TableSettings = {\r\n tableVersion: 10066,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'status', Header: 'S', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false, },\r\n { accessor:'draft', Header: 'D', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false, filterable: true, filterType: 'text'},\r\n // { accessor:'recognized', Header: 'R', visible: true, width: 35, canBeHidden: false, resizable: false, sortable: true, filterable: true, filterType: 'text' },\r\n // { accessor:'void', Header: 'V', visible: true, width: 35, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text'},\r\n { accessor:'invoiceDate', Header: 'Date', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date'},\r\n { accessor:'crDbNo', Header: 'Crdb #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true,},\r\n { accessor:'branch', Header: 'BR', visible: true, width: 40, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text'},\r\n { accessor:'agent', Header: 'Agent', visible: true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text'},\r\n { accessor:'yourRef', Header: 'Agent Ref. #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text'},\r\n { accessor:'currency', Header: 'CUR', visible: true, width: 40, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text'},\r\n { accessor:'debitTotal', Header: 'Debit Amount', visible: false, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'float'},\r\n { accessor:'creditTotal', Header: 'Credit Amount', visible: false, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'float'},\r\n { accessor:'total', Header: 'Amount', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'float'},\r\n { accessor:'paidAmt', Header: 'Paid', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'float'},\r\n { accessor:'balance', Header: 'Balance', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'float'},\r\n { accessor:'settled', Header: 'Confirmed', visible: true, width: 60, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text'},\r\n { accessor:'draftPaid', Header: 'Draft Paid', visible: true, width: 60, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', tooltip: 'Draft Paid' },\r\n { accessor:'checkNo', Header: 'Paid Check #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'paidDate', Header: 'Paid Date', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date'},\r\n { accessor:'lastClearDate', Header: 'Chk Clear Date', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date'},\r\n { accessor:'jobType', Header: 'Type', visible: true, width: 40, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text'},\r\n { accessor:'refNo', Header: 'Ref. #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text'},\r\n { accessor:'mblNo', Header: 'MBL/MAWB #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' }, // ????\r\n { accessor:'hblNo', Header: 'HBL/HWAB #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' }, // ????\r\n { accessor:'u2Date', Header: 'Update', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date'},\r\n { accessor:'u2ID', Header: 'Update By', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text'},\r\n { accessor:'createBy', Header: 'Create By', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text'},\r\n ]\r\n};\r\n\r\nexport const codesAccountingCurrencyList:TableSettings = {\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'teal',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false, },\r\n { accessor:'currencyCode', Header: 'Currency Code', visible: true, width: 125, canBeHidden: true, resizable: true, sortable: true, },\r\n { accessor:'decimalDigit', Header: 'Decimal Digit', visible: true, width: 125, canBeHidden: true, resizable: true, sortable: true, },\r\n { accessor:'symbol', Header: 'Symbol', visible: true, width: 125, canBeHidden: true, resizable: true, sortable: true, },\r\n { accessor:'localSymbol', Header: 'Local Symbol', visible: true, width: 125, canBeHidden: true, resizable: true, sortable: true, },\r\n { accessor:'inactive', Header: 'Inactive', visible: true, width: 125, canBeHidden: true, resizable: true, sortable: true, },\r\n ]\r\n};\r\n\r\nexport const oceanImportHblList:TableSettings = {\r\n tableVersion: 10077,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: []\r\n};\r\n\r\nexport const codesCompanyCompanyUserList:TableSettings = {\r\n tableVersion: 10047,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 3.64, },\r\n { accessor:'userId', Header: 'User ID', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 9.09,},\r\n { accessor:'userName', Header: 'Name', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 14.55, },\r\n { accessor:'eMail', Header: 'Email Address', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 18.18, },\r\n { accessor:'subscriberId', Header: 'Subscriber ID', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 18.18, },\r\n { accessor:'branch', Header: 'BR', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 5.45, },\r\n { accessor:'dept', Header: 'Department', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 7.27, },\r\n { accessor:'securityGroup', Header: 'Security Group', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 7.27, },\r\n { accessor:'inactive', Header: 'Inactive', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'date',initialWidthPercentage: 5.45, },\r\n { accessor:'updateDate', Header: 'Updated Date', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'date',initialWidthPercentage: 9.09 },\r\n { accessor:'scroll', Header: '', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'date',initialWidthPercentage: 1.83 },\r\n ]\r\n};\r\n\r\nexport const subscriberIdList:TableSettings = {\r\n tableVersion: 10044,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 5.56, },\r\n { accessor:'subscriberId', Header: 'Subscriber ID', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 27.78, },\r\n { accessor:'userId', Header: 'User ID', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 13.89,},\r\n { accessor:'email', Header: 'Email', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 27.78, },\r\n { accessor:'createDate', Header: 'Create Date', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 13.89, },\r\n { accessor:'logIn', Header: 'Login', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'bool',initialWidthPercentage: 8.33, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 2.77, },\r\n ]\r\n};\r\n\r\nexport const codesCompanyCompanyDepartmentList:TableSettings = {\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'teal',\r\n alternateRows: true,\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 30,\r\n //hiddenInColumnSetup: true,\r\n },\r\n {\r\n Header: 'Name',\r\n accessor: 'name',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true,\r\n filterType: 'text',\r\n defaultColumnFocus: true,\r\n },\r\n {\r\n Header: 'Description',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 200,\r\n filterable: true,\r\n filterType: 'text',\r\n },\r\n {\r\n Header: 'Inactive',\r\n accessor: 'inactive',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true,\r\n filterType: 'text',\r\n },\r\n ]\r\n};\r\n\r\nexport const codeOceanPortCodeList:TableSettings = {\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'teal',\r\n alternateRows: true,\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 30,\r\n //hiddenInColumnSetup: true,\r\n },\r\n {\r\n Header: 'Code',\r\n accessor: 'code',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true,\r\n filterType: 'text',\r\n defaultColumnFocus: true,\r\n },\r\n {\r\n Header: 'Port Name',\r\n accessor: 'portName',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 200,\r\n filterable: true,\r\n filterType: 'text',\r\n },\r\n {\r\n Header: 'CY Location',\r\n accessor: 'cy',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 200,\r\n filterable: true,\r\n filterType: 'text',\r\n },\r\n {\r\n Header: 'CFS Location',\r\n accessor: 'cfs',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 200,\r\n filterable: true,\r\n filterType: 'text',\r\n },\r\n ]\r\n};\r\n\r\nexport const codeOceanVesselList:TableSettings = {\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'teal',\r\n alternateRows: true,\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 30,\r\n //hiddenInColumnSetup: true,\r\n },\r\n {\r\n Header: 'Vessel Name',\r\n accessor: 'vesselName',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 250,\r\n filterable: true,\r\n filterType: 'text',\r\n defaultColumnFocus: true,\r\n },\r\n {\r\n Header: 'Country',\r\n accessor: 'country',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true,\r\n filterType: 'text',\r\n },\r\n {\r\n Header: 'Vessel Flag',\r\n accessor: 'vesselFlag',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true,\r\n filterType: 'text',\r\n },\r\n {\r\n Header: 'Lloyds',\r\n accessor: 'lloyds',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true,\r\n filterType: 'text',\r\n },\r\n {\r\n Header: 'Group',\r\n accessor: 'vgroup',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 80,\r\n filterable: true,\r\n filterType: 'text',\r\n },\r\n ]\r\n};\r\n\r\nexport const oceanImportQuotationsList:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'teal',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false, },\r\n { accessor:'qutotationDate', Header: 'Date', visible:true, width: 124, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date', defaultColumnFocus: true, },\r\n { accessor:'quotationNo', Header: 'Quotation #', visible:true, width: 124, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'status', Header: 'Status', visible:true, width: 90, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'moveType', Header: 'Move Type', visible:true, width: 124, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'customer', Header: 'Customer', visible:true, width: 124, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'customerRefNo', Header: 'Customer Ref. #', visible:true, width: 127, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'contact', Header: 'Contact', visible:true, width: 127, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'validBy', Header: 'Valid By', visible:true, width: 127, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'quoteBy', Header: 'Quote By', visible:true, width: 127, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'commodity', Header: 'Commodity', visible:true, width: 127, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'type', Header: 'Type', visible:true, width: 90, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'invoiceNo', Header: 'Invoice #', visible:true, width: 127, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'placeOfReceipt', Header: 'Place of Receipt', visible:true, width: 210, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'location' },\r\n { accessor:'loadingPort', Header: 'Loading Port', visible:true, width: 210, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'location' },\r\n { accessor:'dischargePort', Header: 'Discharge Port', visible:true, width: 210, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'location' },\r\n { accessor:'placeOfDelivery', Header: 'Place of Delivery', visible:true, width: 210, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'location' },\r\n { accessor:'salesperson', Header: 'Salesperson', visible:true, width: 127, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'update', Header: 'Update', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'updated', Header: 'Update by', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'created', Header: 'Create By', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const oiQuotationLineItems:TableSettings = {\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '350px',\r\n useStorage: true,\r\n flexResizer: true,\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.53,\r\n },\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'billingCode',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 18.72,\r\n },\r\n {\r\n Header: 'Item Description',\r\n accessor: 'itemDescription',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 21.72,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.53,\r\n },\r\n {\r\n Header: 'Rate',\r\n accessor: 'rate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.29,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'qty',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.69,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.49,\r\n },\r\n {\r\n Header: 'USD Amount',\r\n accessor: 'headerAmount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.03,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'commands',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3,\r\n },\r\n ]\r\n};\r\n\r\nexport const oiQuotationWithVatLineItems:TableSettings = {\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '350px',\r\n useStorage: true,\r\n flexResizer: true,\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.53,\r\n },\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'billingCode',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 18.72,\r\n },\r\n {\r\n Header: 'Item Description',\r\n accessor: 'itemDescription',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 21.22,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.53,\r\n },\r\n {\r\n Header: 'Rate',\r\n accessor: 'rate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.29,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'qty',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.69,\r\n },\r\n {\r\n Header: 'VAT',\r\n accessor: 'useVat',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.5,\r\n },\r\n \r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.49,\r\n },\r\n {\r\n Header: 'USD Amount',\r\n accessor: 'headerAmount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.03,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'commands',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3,\r\n },\r\n ]\r\n};\r\n\r\nexport const infoAreaMemoTable:TableSettings = {\r\n tableVersion: 1037,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n alternateRows: true,\r\n columns: [\r\n { Header: 'Date', accessor: 'updateAt', resizable: true, sortable: false, visible: true, initialWidthPercentage : 19.6},\r\n { Header: 'Type', accessor: 'jobType', resizable: true, sortable: false, visible: true, initialWidthPercentage :7.4 },\r\n { Header: 'Subject', accessor: 'title', resizable: true, sortable: false, visible: true, initialWidthPercentage : 35.7},\r\n { Header: 'Attachment', accessor: 'attachment', resizable: true, sortable: false, visible: true, initialWidthPercentage : 16.9},\r\n { Header: 'Update By', accessor: 'updateBy', resizable: true, sortable: false, visible: true, initialWidthPercentage : 16.9 },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage : 3.5},\r\n ]\r\n};\r\n\r\nexport const infoAreaUpdateHistoryTable:TableSettings = {\r\n tableVersion: 1016,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '98px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n {\r\n Header: 'Date',\r\n accessor: 'date',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 18.60,\r\n },\r\n {\r\n Header: 'Update History',\r\n accessor: 'history',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 77.52,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.88,\r\n },\r\n ]\r\n};\r\n\r\nexport const infoAreaLogHistoryTable:TableSettings = {\r\n tableVersion: 1032,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n {\r\n Header: 'Date',\r\n accessor: 'postDate', // 'date',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 21.6,\r\n },\r\n {\r\n Header: 'By',\r\n accessor: 'senderId', //'userName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.5\r\n },\r\n {\r\n Header: 'Log',\r\n accessor: 'type', //'category',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 61.6\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.3\r\n },\r\n ]\r\n};\r\n\r\nexport const infoAreaBicTable:TableSettings = {\r\n tableVersion: 10060,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '220px',\r\n width: '1139px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n {\r\n Header: 'Billings',\r\n accessor: 'type', //'category',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.06,\r\n },\r\n {\r\n Header: 'Draft',\r\n accessor: 'draft',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.03,\r\n },\r\n {\r\n Header: 'Number',\r\n accessor: 'invoiceNo', // 'number',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.5,\r\n },\r\n {\r\n Header: 'Company Name',\r\n accessor: 'entityName', //'companyName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.13,\r\n },\r\n {\r\n Header: 'Date',\r\n accessor: 'postDate', // 'date',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.85,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.23,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.06,\r\n },\r\n {\r\n Header: 'Paid Amount',\r\n accessor: 'paidAmount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.06,\r\n },\r\n {\r\n Header: 'Balance',\r\n accessor: 'balance',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.06,\r\n },\r\n {\r\n Header: 'Check #',\r\n accessor: 'checkNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.5,\r\n },\r\n {\r\n Header: 'M/H',\r\n accessor: 'jobType',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.03,\r\n },\r\n {\r\n Header: 'B/L #',\r\n accessor: 'blNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.71,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.04,\r\n },\r\n ]\r\n};\r\n\r\nexport const infoAreaHblTable:TableSettings = {\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '160px',\r\n width: '1408px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n {\r\n Header: 'HBL Type',\r\n accessor: 'hblType',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.06,\r\n },\r\n {\r\n Header: 'HBL #',\r\n accessor: 'hblNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.9,\r\n },\r\n {\r\n Header: 'HBL Customer',\r\n accessor: 'hblCustomer',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 24.78,\r\n },\r\n {\r\n Header: 'Final Destination',\r\n accessor: 'finalDestination',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20.05,\r\n },\r\n {\r\n Header: 'F.ETA',\r\n accessor: 'feta',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.6,\r\n },\r\n {\r\n Header: 'Commodity',\r\n accessor: 'commodity',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.61,\r\n },\r\n ]\r\n};\r\n\r\nexport const infoAreaMblTable:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '160px',\r\n width: '1408px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'teal',\r\n alternateRows: true,\r\n columns: [\r\n {\r\n Header: 'MBL Type',\r\n accessor: 'mblType',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.31,\r\n },\r\n {\r\n Header: 'MBL #',\r\n accessor: 'mblNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.91,\r\n },\r\n {\r\n Header: 'MBL Agent',\r\n accessor: 'mblAgent',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 21.12,\r\n },\r\n {\r\n Header: 'Loading Port',\r\n accessor: 'loadingPort',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.39,\r\n },\r\n {\r\n Header: 'ETD',\r\n accessor: 'etd',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.94,\r\n },\r\n {\r\n Header: 'Discharge Port',\r\n accessor: 'dischargePort',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.39,\r\n },\r\n {\r\n Header: 'ETA',\r\n accessor: 'eta',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.94,\r\n },\r\n ]\r\n};\r\n\r\nexport const infoAreaBicHistoryTable:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '160px',\r\n width: '885px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n {\r\n Header: 'Action Date',\r\n accessor: 'ediDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.56,\r\n },\r\n {\r\n Header: 'User',\r\n accessor: 'ediId',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.21,\r\n },\r\n {\r\n Header: 'Action',\r\n accessor: 'refNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.21,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'currency',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.65,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.6,\r\n },\r\n {\r\n Header: 'Bic #',\r\n accessor: 'invoNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.82,\r\n },\r\n {\r\n Header: 'Bic Date',\r\n accessor: 'invoDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.17,\r\n },\r\n {\r\n Header: 'Due Date',\r\n accessor: 'dueDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.17,\r\n },\r\n {\r\n Header: 'Bic Company',\r\n accessor: 'custName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 22.61,\r\n },\r\n ]\r\n};\r\n\r\nexport const infoAreaBicHistoryLineItemsTable:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '160px',\r\n width: '710px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'seqNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.34,\r\n },\r\n {\r\n Header: 'Type',\r\n accessor: 'chgTypeDesc',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 25.38,\r\n },\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'code',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20.94,\r\n },\r\n {\r\n Header: 'Description',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 30.39,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'currency',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.34,\r\n },\r\n {\r\n Header: 'Local Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.61,\r\n },\r\n ]\r\n};\r\n\r\nexport const infoAreaBicPaymentHistoryLineItemsTable:TableSettings = {\r\n tableVersion: 1003,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '160px',\r\n width: '695px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'teal',\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'no',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.04,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.67,\r\n },\r\n {\r\n Header: 'Check #/Ref #',\r\n accessor: 'checkNoRefNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 23.74,\r\n },\r\n {\r\n Header: 'P. Type',\r\n accessor: 'paymentType',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.79,\r\n },\r\n {\r\n Header: 'Accrual Date',\r\n accessor: 'accrualDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.67,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.47,\r\n },\r\n {\r\n Header: 'Void',\r\n accessor: 'void',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.47,\r\n },\r\n {\r\n Header: 'Ex Rate',\r\n accessor: 'exRate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.79,\r\n },\r\n {\r\n Header: 'Draft',\r\n accessor: 'draft',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.36,\r\n },\r\n ]\r\n};\r\n\r\nexport const infoAreaBicBlTable:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n height: '160px',\r\n width: '1200px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'teal',\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'no',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.35,\r\n },\r\n {\r\n Header: 'Type',\r\n accessor: 'type',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.75,\r\n },\r\n {\r\n Header: 'B/L #',\r\n accessor: 'blNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.83,\r\n },\r\n {\r\n Header: 'Ref. #',\r\n accessor: 'refNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.83,\r\n },\r\n {\r\n Header: 'D/ID',\r\n accessor: 'shipmentType',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.58,\r\n },\r\n {\r\n Header: 'Customer',\r\n accessor: 'customer',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.83,\r\n },\r\n {\r\n Header: 'Agent',\r\n accessor: 'agent',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.83,\r\n },\r\n {\r\n Header: 'ETD',\r\n accessor: 'etd',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.5,\r\n },\r\n {\r\n Header: 'ETA',\r\n accessor: 'eta',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.5,\r\n },\r\n {\r\n Header: 'F.ETA',\r\n accessor: 'feta',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.5,\r\n },\r\n {\r\n Header: 'PCS & Unit',\r\n accessor: 'pcsUnit',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.5,\r\n },\r\n {\r\n Header: 'KGS',\r\n accessor: 'kgs',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.5,\r\n },\r\n {\r\n Header: 'CBM',\r\n accessor: 'cbm',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.5,\r\n },\r\n ]\r\n};\r\n\r\nexport const infoAreaBicRevisionHistoryLineItemsTable:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '385px',\r\n width: '290px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Action',\r\n accessor: 'action',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 24.14,\r\n },\r\n {\r\n Header: 'Action Date',\r\n accessor: 'u2Date',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 31.03,\r\n },\r\n {\r\n Header: 'Bic #',\r\n accessor: 'invoNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 44.83,\r\n },\r\n ]\r\n};\r\n\r\nexport const codeMiscMemoTitleList:TableSettings = {\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'teal',\r\n alternateRows: true,\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 30,\r\n //hiddenInColumnSetup: true,\r\n },\r\n {\r\n Header: 'Title',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 200,\r\n filterable: true,\r\n filterType: 'text',\r\n },\r\n {\r\n Header: 'Inactive',\r\n accessor: 'inactive',\r\n resizable: true,\r\n sortable: true,\r\n canBeHidden: true,\r\n visible: true,\r\n width: 200,\r\n filterable: true,\r\n filterType: 'text',\r\n },\r\n ]\r\n};\r\n\r\nexport const salespersonList:TableSettings = {\r\n tableVersion: 10048,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 6.38, },\r\n { accessor:'sManID', Header: 'Salesperson ID', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 31.91,},\r\n { accessor:'sManName', Header: 'Name', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 44.68, },\r\n { accessor:'inactive', Header: 'Inactive', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'bool',initialWidthPercentage: 12.77, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 4.26, },\r\n ]\r\n};\r\n\r\nexport const departmentList:TableSettings = {\r\n tableVersion: 10047,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 7.32, },\r\n { accessor:'name', Header: 'Department', visible: true, resizable: false, sortable: true, initialWidthPercentage: 24.39, },\r\n { accessor:'description', Header: 'Description', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 48.78, },\r\n { accessor:'inactive', Header: 'Inactive', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'bool', initialWidthPercentage: 14.63, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 4.88, },\r\n ]\r\n};\r\n\r\nexport const companyGroupList:TableSettings = {\r\n tableVersion: 10049,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 8.57, },\r\n { accessor:'groupId', Header: 'Group Name', visible: true, resizable: false, sortable: true, initialWidthPercentage: 28.57 },\r\n { accessor:'groupName', Header: 'Description', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 57.14, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, filterType: 'text',initialWidthPercentage: 5.72, },\r\n ]\r\n};\r\n\r\nexport const branchList:TableSettings = {\r\n tableVersion: 10045,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 4.5, },\r\n { accessor:'branch', Header: 'Branch Code', visible: true, resizable: false, sortable: true, initialWidthPercentage: 10.5 },\r\n { accessor:'name', Header: 'Branch Name', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 15, },\r\n { accessor:'contact', Header: 'Contact', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 24, },\r\n { accessor:'state', Header: 'State', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 6.5, },\r\n { accessor:'phone', Header: 'Phone #', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 12, },\r\n { accessor:'fax', Header: 'Fax #', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 12, },\r\n { accessor:'hqBranch', Header: 'HQ', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'bool', initialWidthPercentage: 6.5, },\r\n { accessor:'inactive', Header: 'Inactive', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'bool', initialWidthPercentage: 6.5, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 2.5, },\r\n ]\r\n};\r\n\r\nexport const billingTemplateList:TableSettings = {\r\n tableVersion: 10053,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 3.55, },\r\n { accessor:'templateName', Header: 'Name', visible: true, resizable: false, sortable: true, initialWidthPercentage: 9.9 },\r\n { accessor:'opType', Header: 'OP Type', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 16.86, },\r\n { accessor:'shipmentType', Header: 'Shipment', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 8.87, },\r\n { accessor:'department', Header: 'Department', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 8.87, },\r\n { accessor:'item', Header: 'Items', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'number', initialWidthPercentage: 5.06, },\r\n { accessor:'inactive', Header: 'Inactive', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'bool', initialWidthPercentage: 7.99, },\r\n { accessor:'inactiveDate', Header: 'Inactive Date', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'date', initialWidthPercentage: 10.94, },\r\n { accessor:'updateDate', Header: 'Update Date', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'date', initialWidthPercentage: 14.94, },\r\n { accessor:'updateBy', Header: 'Update By', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 10.94, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 2.08, },\r\n ]\r\n};\r\n\r\nexport const billingTemplateEntryList:TableSettings = {\r\n tableVersion: 10067,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 5.52, },\r\n { accessor:'type', Header: 'Type', visible: true, resizable: false, sortable: false, initialWidthPercentage: 18.62 },\r\n { accessor:'billingCodeView', Header: 'Billing Code', visible: true, resizable: false, sortable: false, filterable: true, filterType: 'text', initialWidthPercentage: 26.66, },\r\n { accessor:'description', Header: 'Item Description', visible: true, resizable: false, sortable: false, filterable: true, filterType: 'text', initialWidthPercentage: 47.12, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, width: 20, },\r\n ]\r\n};\r\n\r\nexport const airRateList:TableSettings = {\r\n tableVersion: 10043,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 4.17, },\r\n { accessor:'customer', Header: 'Customer', visible: true, resizable: false, sortable: true, initialWidthPercentage: 22.92 },\r\n { accessor:'carrier', Header: 'Carrier', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 22.92, },\r\n { accessor:'org', Header: 'Departure', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 10.42, },\r\n { accessor:'dest', Header: 'Arrival', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 10.42, },\r\n { accessor:'validFrom', Header: 'Valid From', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'date', initialWidthPercentage: 10.42, },\r\n { accessor:'validTo', Header: 'Valid To', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'date', initialWidthPercentage: 10.42, },\r\n { accessor:'expire', Header: 'Expire', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'bool', initialWidthPercentage: 6.25, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 2.06, },\r\n ]\r\n};\r\n\r\nexport const oceanRateList:TableSettings = {\r\n tableVersion: 10043,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 4.17, },\r\n { accessor:'customer', Header: 'Customer', visible: true, resizable: false, sortable: true, initialWidthPercentage: 22.92 },\r\n { accessor:'commodity', Header: 'Commodity', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 22.92, },\r\n { accessor:'org', Header: 'Loading Port', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 10.42, },\r\n { accessor:'dest', Header: 'Discharge Port', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 10.42, },\r\n { accessor:'validFrom', Header: 'Valid From', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'date', initialWidthPercentage: 10.42, },\r\n { accessor:'validTo', Header: 'Valid To', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'date', initialWidthPercentage: 10.42, },\r\n { accessor:'expire', Header: 'Expire', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'bool', initialWidthPercentage: 6.25, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 2.06, },\r\n ]\r\n};\r\n\r\nexport const sellingRateList:TableSettings = {\r\n tableVersion: 10028,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 2.2, },\r\n { accessor:'sName', Header: 'Customer', visible: true, resizable: false, sortable: true, initialWidthPercentage: 14.7 },\r\n { accessor:'mode', Header: 'Cargo', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 4.5, },\r\n { accessor:'expireETD', Header: 'Expire', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 6.2, },\r\n { accessor:'carrier', Header: 'Carrier', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 11 },\r\n { accessor:'origin', Header: 'Origin', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 11, },\r\n { accessor:'destination', Header: 'Destination', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 11, },\r\n { accessor:'commodity', Header: 'Commodity', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 13.9, },\r\n { accessor:'doorBy', Header: 'Door by', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 8, },\r\n { accessor:'size', Header: 'Size', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 4.5, },\r\n { accessor:'rate1', Header: 'Rate 1', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 5.9, },\r\n { accessor:'rate2', Header: 'Rate 2', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 5.9, },\r\n { accessor:'remark', Header: 'Remark', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 7.55, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 3, },\r\n ]\r\n};\r\n\r\nexport const oceanRateInfoList:TableSettings = {\r\n tableVersion: 10044,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 4.92, },\r\n { accessor:'mode', Header: 'Mode', visible: true, resizable: false, sortable: true, initialWidthPercentage: 8.20 },\r\n { accessor:'tTime', Header: 'Transit Time', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 13.11, },\r\n { accessor:'carrier', Header: 'Carrier', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 13.11, },\r\n { accessor:'desc', Header: 'Description of Freight Charge', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 29.51, },\r\n { accessor:'unit', Header: 'Unit', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 9.84, },\r\n { accessor:'cur', Header: 'CUR', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 6.56, },\r\n { accessor:'bRate', Header: 'Buying Rate', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'number', initialWidthPercentage: 11.48, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 3.27, },\r\n ]\r\n};\r\n\r\nexport const airRatePartyInfoList:TableSettings = {\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 22.72, },\r\n { accessor:'col1', Header: '0~45', visible: true, resizable: false, sortable: false, initialWidthPercentage: 12.88, },\r\n { accessor:'col2', Header: '46~100', visible: true, resizable: false, sortable: false, initialWidthPercentage: 12.88, },\r\n { accessor:'col3', Header: '101~300', visible: true, resizable: false, sortable: false, initialWidthPercentage: 12.88, },\r\n { accessor:'col4', Header: '301~500', visible: true, resizable: false, sortable: false, initialWidthPercentage: 12.88, },\r\n { accessor:'col5', Header: '501~1000', visible: true, resizable: false, sortable: false, initialWidthPercentage: 12.88, },\r\n { accessor:'col6', Header: 'Over 1000', visible: true, resizable: false, sortable: false, initialWidthPercentage: 12.88, },\r\n ]\r\n};\r\n\r\nexport const sellingRateInfoList:TableSettings = {\r\n tableVersion: 10000,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 100, },\r\n ]\r\n};\r\n\r\n\r\nexport const securityGroupList:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 5.16, },\r\n { accessor:'groupName', Header: 'Group Name', visible: true, resizable: false, sortable: false, initialWidthPercentage: 23.23, },\r\n { accessor:'description', Header: 'Description', visible: true, resizable: false, sortable: false, initialWidthPercentage: 32.26, },\r\n { accessor:'inactive', Header: 'Inactive', visible: true, resizable: false, sortable: false, initialWidthPercentage: 9.67, },\r\n { accessor:'inactiveDate', Header: 'Inactive Date', visible: true, resizable: false, sortable: false, initialWidthPercentage: 14.84, },\r\n { accessor:'inactiveBy', Header: 'By', visible: true, resizable: false, sortable: false, initialWidthPercentage: 14.84, },\r\n ]\r\n};\r\n\r\nexport const securityAssignmentList:TableSettings = {\r\n tableVersion: 10042,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 6.82, },\r\n { accessor:'taskDesc', Header: 'Security Task Name', visible: true, resizable: false, sortable: false, initialWidthPercentage: 34.09, },\r\n { accessor:'attrRead', Header: 'Read', visible: true, resizable: true, sortable: false, initialWidthPercentage: 13.64, },\r\n { accessor:'attrAdd', Header: 'Add', visible: true, resizable: true, sortable: false, initialWidthPercentage: 13.64, },\r\n { accessor:'attrEdit', Header: 'Modify', visible: true, resizable: true, sortable: false, initialWidthPercentage: 13.64, },\r\n { accessor:'attrDel', Header: 'Delete', visible: true, resizable: true, sortable: false, initialWidthPercentage: 13.64, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 4.53, },\r\n ]\r\n};\r\n\r\nexport const securityGroupUserList:TableSettings = {\r\n tableVersion: 10041,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'userId', Header: 'User Id', visible: true, resizable: false, sortable: false, initialWidthPercentage: 93.10, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 6.90, },\r\n ]\r\n};\r\n\r\nexport const securityControlList:TableSettings = {\r\n tableVersion: 10040,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'desc', Header: 'Name', visible: true, resizable: false, sortable: false, initialWidthPercentage: 92.59, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 7.41, },\r\n ]\r\n};\r\n\r\nexport const securityStateList:TableSettings = {\r\n tableVersion: 10040,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'controlDesc', Header: 'Name', visible: true, resizable: false, sortable: false, initialWidthPercentage: 92.59, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 7.41, },\r\n ]\r\n};\r\n\r\nexport const userSecurityList:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 2.65, },\r\n { accessor:'userId', Header: 'User Id', visible: true, resizable: false, sortable: false, filterType: 'text', initialWidthPercentage: 11.92, },\r\n { accessor:'name', Header: 'Name', visible: true, resizable: false, sortable: false, filterType: 'text', initialWidthPercentage: 11.26, },\r\n { accessor:'admin', Header: 'Admin', visible: true, resizable: false, sortable: false, filterType: 'bool', initialWidthPercentage: 9.07, },\r\n { accessor:'acct', Header: 'ACCT', visible: true, resizable: false, sortable: false, filterType: 'bool', initialWidthPercentage: 9.07, },\r\n { accessor:'acctm', Header: 'ACCT-M', visible: true, resizable: false, sortable: false, filterType: 'bool', initialWidthPercentage: 9.07, },\r\n { accessor:'op', Header: 'O/P', visible: true, resizable: false, sortable: false, filterType: 'bool', initialWidthPercentage: 9.07, },\r\n { accessor:'opm', Header: 'O/P-M', visible: true, resizable: false, sortable: false, filterType: 'bool', initialWidthPercentage: 9.07, },\r\n { accessor:'sales', Header: 'Sales', visible: true, resizable: false, sortable: false, filterType: 'bool', initialWidthPercentage: 9.07, },\r\n { accessor:'salesm', Header: 'Sales M', visible: true, resizable: false, sortable: false, filterType: 'bool', initialWidthPercentage: 9.07, },\r\n { accessor:'controls', Header: ' ', visible: true, resizable: false, sortable: false, initialWidthPercentage: 10.68, },\r\n ]\r\n};\r\n\r\nexport const userSecurityList2:TableSettings = {\r\n tableVersion: 10006,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: false, // **\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 4, },\r\n { accessor:'userId', Header: 'User Id', visible: true, resizable: true, sortable: true, filterType: 'text', initialWidthPercentage: 10, },\r\n { accessor:'userName', Header: 'Name', visible: true, resizable: true, sortable: true, filterType: 'text', initialWidthPercentage: 16, },\r\n ]\r\n};\r\n\r\nexport const bankList:TableSettings = {\r\n tableVersion: 10046,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 3.23, },\r\n { accessor:'bankName', Header: 'Bank Short Name', visible: true, resizable: true, sortable:false, filterType:'text', initialWidthPercentage: 14.52, },\r\n { accessor:'glNo', Header: 'Account Type', visible: true, resizable: true, sortable: false, filterType:'text', initialWidthPercentage: 12.10, },\r\n { accessor:'currency', Header: 'CUR', visible: true, resizable: true, sortable: false, filterType:'text', initialWidthPercentage: 4.84, },\r\n { accessor:'bankAcc', Header: 'Account #', visible: true, resizable: true, sortable: false, filterType:'text', initialWidthPercentage: 12.10, },\r\n { accessor:'nextCheckNo', Header: 'Next Check #', visible: true, resizable: true, sortable: false, filterType:'number', initialWidthPercentage: 8.06, },\r\n { accessor:'endCheckNo', Header: 'End Check #', visible: true, resizable: true, sortable: false, filterType:'number', initialWidthPercentage: 8.06, },\r\n { accessor:'branch', Header: 'BR', visible: true, resizable: true, sortable: false, filterType:'text', initialWidthPercentage: 4.84, },\r\n { accessor:'defaultBank', Header: 'Default', visible: true, resizable: true, sortable: false, filterType:'bool', initialWidthPercentage: 4.84, },\r\n { accessor:'inact', Header: 'Inactive', visible: true, resizable: true, sortable: false, filterType:'bool', initialWidthPercentage: 4.84, },\r\n { accessor:'inactDate', Header: 'Inactive Date', visible: true, resizable: true, sortable: false, filterType:'date', initialWidthPercentage: 6.45, },\r\n { accessor:'updateDate', Header: 'Update Date', visible: true, resizable: true, sortable: false, filterType:'date', initialWidthPercentage: 8.06, },\r\n { accessor:'updateBy', Header: 'By', visible: true, resizable: true, sortable: false, filterType:'text', initialWidthPercentage: 6.45, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: true, sortable: false, initialWidthPercentage: 1.61, },\r\n ]\r\n};\r\n\r\n\r\nexport const creditCardList:TableSettings = {\r\n tableVersion: 1008,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 2.73, },\r\n { accessor:'acctSName', Header: 'Credit Card Name', visible: true, resizable: true, sortable: false, filterType: 'text', initialWidthPercentage: 13.64, },\r\n { accessor:'cardType', Header: 'Card Type', visible: true, resizable: true, sortable: false, filterType: 'text', initialWidthPercentage: 7.27, },\r\n { accessor:'cardNumber', Header: 'Credit Card #', visible: true, resizable: true, sortable: false, filterType: 'text', initialWidthPercentage: 9.09, },\r\n { accessor:'expiry', Header: 'Expire', visible: true, resizable: true, sortable: false, filterType: 'text', initialWidthPercentage: 7.27, },\r\n { accessor:'paymentDate', Header: 'Due Date', visible: true, resizable: true, sortable: false, filterType: 'number', initialWidthPercentage: 5.45, },\r\n { accessor:'sName', Header: 'Credit Card Company', visible: true, resizable: true, sortable: false, filterType: 'text', initialWidthPercentage: 10.91, },\r\n { accessor:'nameOnCard', Header: 'Name on Card', visible: true, resizable: true, sortable: false, filterType: 'text', initialWidthPercentage: 10.91, },\r\n { accessor:'inactive', Header: 'Inactive', visible: true, resizable: true, sortable: false, filterType: 'bool', initialWidthPercentage: 5.45, },\r\n { accessor:'inactiveDate', Header: 'Inactive Date', visible: true, resizable: true, sortable: false, filterType: 'date', initialWidthPercentage: 7.27, },\r\n { accessor:'updateDate', Header: 'Update Date', visible: true, resizable: true, sortable: false, filterType: 'date', initialWidthPercentage: 10.91, },\r\n { accessor:'updateBy', Header: 'By', visible: true, resizable: true, sortable: false, filterType: 'text', initialWidthPercentage: 7.27, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: true, sortable: false, initialWidthPercentage: 1.83, },\r\n ]\r\n};\r\n\r\nexport const payrollExpenseList:TableSettings = {\r\n tableVersion: 10061,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: false,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, width: 30, },\r\n { accessor:'department', Header: 'Department', visible: true, resizable: true, sortable: false, width: 100, },\r\n { accessor:'branch', Header: 'BR', visible: true, resizable: true, sortable: false, width: 60, },\r\n { accessor:'acD4Salary', Header: 'Salaries & Wages Expense', visible: true, resizable: true, sortable: false, width: 200, },\r\n ]\r\n};\r\n\r\nexport const payrollAdditionalItemsList:TableSettings = {\r\n tableVersion: 10058,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 4.23, },\r\n { accessor:'select', Header: 'Select', visible: true, resizable: false, sortable: false, initialWidthPercentage: 8.45, },\r\n { accessor:'payable', Header: 'Item Title', visible: true, resizable: true, sortable: false, initialWidthPercentage: 28.17, },\r\n { accessor:'accountCode', Header: 'Account Code', visible: true, resizable: true, sortable: false, initialWidthPercentage: 30.98, },\r\n { accessor:'entityShortName', Header: 'Entity', visible: true, resizable: false, sortable: false, initialWidthPercentage: 28.17, },\r\n ]\r\n};\r\n\r\nexport const payrollGroupList :TableSettings = {\r\n tableVersion: 10011,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: false,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, width: 30, },\r\n { accessor:'groupName', Header: 'Name', visible: true, resizable: true, sortable: false, width: 140, },\r\n { accessor:'glNo4SalaryCode', Header: 'Wage Expense Account Code', visible: true, resizable: true, sortable: false, width: 300, },\r\n ]\r\n};\r\n\r\nexport const payrollEntityList :TableSettings = {\r\n tableVersion: 10010,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: false,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, width: 30, },\r\n { accessor:'billingCode', Header: 'Item', visible: true, resizable: true, sortable: false, width: 200, },\r\n { accessor:'entityName', Header: 'Entity', visible: true, resizable: true, sortable: false, width: 220, },\r\n { accessor:'glNoExp', Header: 'Expense Account Code', visible: true, resizable: true, sortable: false, width: 330, },\r\n ]\r\n};\r\n\r\n\r\nexport const accountCodeList:TableSettings = {\r\n tableVersion: 10050,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 3.17, },\r\n { accessor:'accountCode', Header: 'Account Code', visible: true, resizable: true, sortable: true, filterable: true, initialWidthPercentage: 6.35, },\r\n { accessor:'accountName', Header: 'Default Account Name', visible: true, resizable: true, sortable: true, filterable: true, initialWidthPercentage: 15.87, },\r\n { accessor:'glType', Header: 'Group', visible: true, resizable: true, sortable: true, filterable: true, initialWidthPercentage: 6.35, },\r\n { accessor:'subGroup1', Header: 'Sub Group 1', visible: true, resizable: true, sortable: true, filterable: true, initialWidthPercentage: 11.90, },\r\n { accessor:'subGroup2', Header: 'Sub Group 2', visible: true, resizable: true, sortable: true, filterable: true, initialWidthPercentage: 11.90, },\r\n { accessor:'iocalDesc', Header: 'Custom Account Name', visible: true, resizable: true, sortable: true, filterable: true, initialWidthPercentage: 15.87, },\r\n { accessor:'inactive', Header: 'Inactive', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'bool', filterTypeV2: XCellType.Bool, initialWidthPercentage: 4.76, },\r\n { accessor:'inactiveDate', Header: 'Inactive Date', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'date', filterTypeV2: XCellType.Date, initialWidthPercentage: 6.35 },\r\n { accessor:'remark', Header: 'Remark', visible: true, resizable: true, sortable: true, filterable: true, initialWidthPercentage: 15.87, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: true, sortable: false, initialWidthPercentage: 1.61, },\r\n ]\r\n};\r\n\r\nexport const accountSubCodeList:TableSettings = {\r\n tableVersion: 10042,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 8.57, },\r\n { accessor:'code', Header: 'Account Sub Code', visible: true, resizable: true, sortable: false,initialWidthPercentage: 28.57, },\r\n { accessor:'desc1', Header: 'Description', visible: true, resizable: true, sortable: false, initialWidthPercentage: 57.14, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: true, sortable: false, initialWidthPercentage: 5.72, },\r\n ]\r\n};\r\n\r\nexport const billingCodeList:TableSettings = {\r\n tableVersion: 10052,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, width: 40, },\r\n { accessor:'code', Header: 'Billing Code', visible: true, resizable: false, sortable: true, filterable: true, width: 190, },\r\n { accessor:'desc1', Header: 'Default Description', visible: true, resizable: true, sortable: false, filterable: true, width: 210, },\r\n { accessor:'jobType', Header: 'Job Type', visible: true, resizable: true, sortable: false, filterable: true, width: 120, },\r\n { accessor:'localDesc', Header: 'Custom Description', visible: true, resizable: true, sortable: false, filterable: true, width: 210, },\r\n { accessor:'salesGLNo', Header: 'Sales Acct.Code', visible: true, resizable: true, sortable: true, filterable: true, width: 90, },\r\n { accessor:'salesGLNoDesc', Header: 'Sales Acct.Code Desc.', visible: true, resizable: true, sortable: false, filterable: true, width: 190, },\r\n { accessor:'costGLNo', Header: 'Cost Acct.Code', visible: true, resizable: true, sortable: true, filterable: true, width: 90, },\r\n { accessor:'costGLNoDesc', Header: 'Cost Acct.Code Desc.', visible: true, resizable: true, sortable: false, filterable: true, width: 190, },\r\n { accessor:'inactive', Header: 'Inactive', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'bool', filterTypeV2: XCellType.Bool, width: 60, },\r\n { accessor:'inactiveDate', Header: 'Inactive Date', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'date', filterTypeV2: XCellType.Date, width: 80, },\r\n { accessor:'remark', Header: 'Remark', visible: true, resizable: true, sortable: false, filterable: true, width: 200, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: true, sortable: false, width: 20, },\r\n ]\r\n};\r\n\r\nexport const billingCodeDetailList:TableSettings = {\r\n tableVersion: 1003,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'opType', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 7.5, },\r\n { accessor:'shipmentType', Header: 'Type', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 7.5, },\r\n { accessor:'sCode', Header: 'Sales Code', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 15, },\r\n { accessor:'sCodeName', Header: 'S. Code Name', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 27.5, },\r\n { accessor:'cCode', Header: 'Cost Code', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 15, },\r\n { accessor:'cCodeName', Header: 'C. Code Name', visible: true, resizable: true, sortable: false, filterable: true, initialWidthPercentage: 27.5, }\r\n ]\r\n};\r\n\r\n\r\nexport const editEventList:TableSettings = {\r\n tableVersion: 10047,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 9.52, },\r\n { accessor:'isUse', Header: 'Use', visible: true, resizable: false, sortable: false, initialWidthPercentage: 19.05, },\r\n { accessor:'event', Header: 'Event', visible: true, resizable: false, sortable: false, initialWidthPercentage: 66.83, },\r\n { accessor: 'scroll', Header:'', visible:true, resizable:false, sortable:false, initialWidthPercentage :4.60, },\r\n ]\r\n};\r\n\r\nexport const edit301List:TableSettings = {\r\n tableVersion: 10049,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 9.52, },\r\n { accessor:'ediCode', Header: 'EDI Code', visible: true, resizable: true, sortable: false, initialWidthPercentage: 28.57, },\r\n { accessor:'importChargeCode', Header: 'FS Code (OI)', visible: true, resizable: true, sortable: false, initialWidthPercentage: 28.57, },\r\n { accessor:'exportChargeCode', Header: 'FS Code (OE)', visible: true, resizable: true, sortable: false, initialWidthPercentage: 28.57, },\r\n { accessor: 'scroll', Header: '', resizable: false, sortable: false, visible: true, initialWidthPercentage: 4.77, },\r\n ]\r\n};\r\n\r\nexport const edit310List:TableSettings = {\r\n tableVersion: 10047,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 9.52, },\r\n { accessor:'ediCode', Header: 'EDI Code', visible: true, resizable: true, sortable: false, initialWidthPercentage: 42.86, },\r\n { accessor:'chargeCode', Header: 'FS Code', visible: true, resizable: true, sortable: false, initialWidthPercentage: 42.86, },\r\n { accessor: 'scroll', Header: '', resizable: false, sortable: false, visible: true, initialWidthPercentage: 4.76, },\r\n ]\r\n};\r\n\r\nexport const serverBranchList:TableSettings = {\r\n tableVersion: 10050,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: false,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 5, },\r\n { accessor:'branchDB', Header: 'Branch DB', visible: true, resizable: true, sortable: false, initialWidthPercentage: 10, },\r\n { accessor:'dbName', Header: 'Branch DB Name', visible: true, resizable: true, sortable: false, initialWidthPercentage: 25, },\r\n { accessor:'location', Header: 'Location', visible: true, resizable: true, sortable: false, initialWidthPercentage: 25, },\r\n { accessor:'dbId', Header: 'ID', visible: true, resizable: false, sortable: true, initialWidthPercentage: 15, },\r\n { accessor:'dbPassword', Header: 'Password', visible: true, resizable: true, sortable: false, initialWidthPercentage: 17, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 1, },\r\n ]\r\n};\r\n\r\nexport const codesAirlineList:TableSettings = {\r\n tableVersion: 10050,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 3.24, },\r\n { accessor:'name', Header: 'Airline Name', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 15.05,},\r\n { accessor:'country', Header: 'Country', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', initialWidthPercentage: 6.47, },\r\n { accessor:'prefix', Header: 'Prefix', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text',initialWidthPercentage: 6.47, },\r\n { accessor:'abbr', Header: 'Abbr 2', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text',initialWidthPercentage: 6.47, },\r\n { accessor:'abbr3', Header: 'Abbr 3', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text',initialWidthPercentage: 6.47, },\r\n { accessor:'nextblNo', Header: 'Next AWB #', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text',initialWidthPercentage: 8.09, },\r\n { accessor:'endblNo', Header: 'End AWB #', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text',initialWidthPercentage: 8.09, },\r\n { accessor:'billTo', Header: 'Freight Vendor', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text',initialWidthPercentage: 12.14, },\r\n { accessor:'aefscRate', Header: 'FSC Rate', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'number',initialWidthPercentage: 6.47 },\r\n { accessor:'aefscMin', Header: 'FSC Min', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'number',initialWidthPercentage: 6.47 },\r\n { accessor:'aesscRate', Header: 'SSC Rate', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'number',initialWidthPercentage: 6.47 },\r\n { accessor:'aesscMin', Header: 'SSC Min', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'number',initialWidthPercentage: 6.47 },\r\n // { accessor:'updatedDate', Header: 'Update Date', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'date',initialWidthPercentage: 8.09 },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 1.62, },\r\n ]\r\n};\r\n\r\nexport const codesAirportList:TableSettings = {\r\n tableVersion: 10044,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 9.26, },\r\n { accessor:'portName', Header: 'Airport Name', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 38.53,},\r\n { accessor:'code', Header: 'Code', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', initialWidthPercentage: 24.69, },\r\n { accessor:'usCode', Header: 'Custom Code', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text',initialWidthPercentage: 24.69, },\r\n // { accessor:'action', Header: 'Action', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 18.52, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 4.63, },\r\n ]\r\n};\r\n\r\nexport const codesObltypeList:TableSettings = {\r\n tableVersion: 10043,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 9.26, },\r\n { accessor:'mblType', Header: 'Original B/L Type', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 86.11,},\r\n // { accessor:'action', Header: 'Action', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 18.52, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 4.63, },\r\n ]\r\n};\r\n\r\n\r\nexport const codesContainerTypeList:TableSettings = {\r\n tableVersion: 10046,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor: 'indicator', Header: '', resizable: false, sortable: false, visible: true, initialWidthPercentage: 7.26 },\r\n { accessor: 'containerType', Header: 'Container Type', resizable: true, sortable: false, visible: true, initialWidthPercentage: 23.14 },\r\n { accessor: 'description', Header: 'Description', resizable: true, sortable: false, visible: true, initialWidthPercentage: 36.19 },\r\n { accessor: 'containerGroup', Header: 'Group', resizable: true, sortable: false, visible: true, initialWidthPercentage: 14.89 },\r\n { accessor: 'isoType', Header: 'ISO Type', resizable: true, sortable: false, visible: true, initialWidthPercentage: 14.89 },\r\n // { accessor: 'length', Header: 'Length', resizable: true, sortable: true, visible: true, initialWidthPercentage: 6.47 },\r\n // { accessor: 'height', Header: 'Height', resizable: true, sortable: true, visible: true, initialWidthPercentage: 6.47 },\r\n // { accessor: 'relatedType', Header: 'Type', resizable: true, sortable: true, visible: true, initialWidthPercentage: 6.47 },\r\n // { accessor: 'inactive', Header: 'Inactive', resizable: true, sortable: true, visible: true, initialWidthPercentage: 6.47 },\r\n // { accessor: 'inactiveDate', Header: 'Inactive Date', resizable: true, sortable: true, visible: true, initialWidthPercentage: 8.09 },\r\n // { accessor: 'u2Date', Header: 'Update Date', resizable: true, sortable: true, visible: true, initialWidthPercentage: 8.90 },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 2.31, },\r\n ]\r\n};\r\n\r\nexport const codesMoveTypeList:TableSettings = {\r\n tableVersion: 10043,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor: 'indicator', Header: '', resizable: false, sortable: false, visible: true, initialWidthPercentage: 9.26, },\r\n { accessor: 'moveType', Header: 'Type', resizable: true, sortable: false, visible: true, initialWidthPercentage: 23.15 },\r\n { accessor: 'description', Header: 'Description', resizable: true, sortable: false, visible: true, initialWidthPercentage: 62.96 },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 4.63, },\r\n ]\r\n};\r\n\r\n\r\nexport const codesPortCodeList:TableSettings = {\r\n tableVersion: 10045,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor: 'indicator', Header: '', resizable: false, sortable: false, visible: true, initialWidthPercentage: 4.63 },\r\n { accessor: 'code', Header: 'Code', resizable: true, sortable: false, visible: true,filterable: true, filterType: 'text', initialWidthPercentage: 11.57 },\r\n { accessor: 'portName', Header: 'Port Name', resizable: true, sortable: false, visible: true,filterable: true, filterType: 'text', initialWidthPercentage: 40.58 },\r\n { accessor: 'cyName', Header: 'CY Location', resizable: true, sortable: false, visible: true, filterable: true, filterType: 'text',initialWidthPercentage: 20.45 },\r\n { accessor: 'cfsName', Header: 'CFS Location', resizable: true, sortable: false, visible: true, filterable: true, filterType: 'text', initialWidthPercentage: 20.45},\r\n // { accessor: 'action', Header: 'Action', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 9.26, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: false, initialWidthPercentage: 2.31, },\r\n ]\r\n};\r\n\r\n\r\nexport const codesVesselNameList: TableSettings = {\r\n tableVersion: 10044,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n \r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor: 'indicator', Header: '', resizable: false, sortable: false, visible: true, initialWidthPercentage: 4.63 },\r\n { accessor: 'vesselName', Header: 'Vessel Name', resizable: true, sortable: false, visible: true, filterable: true, filterType: 'text', initialWidthPercentage: 46.76 },\r\n { accessor: 'country', Header: 'Country', resizable: true, sortable: false, visible: true, filterable: true, filterType: 'text', initialWidthPercentage: 11.57 },\r\n { accessor: 'vesselFlag', Header: 'Vessel Flag', resizable: true, sortable: false, visible: true, filterable: true, filterType: 'text', initialWidthPercentage: 11.57 },\r\n { accessor: 'lloydsCode', Header: 'Lloyds', resizable: true, sortable: false, visible: true, filterable: true, filterType: 'text', initialWidthPercentage: 11.58 },\r\n { accessor: 'groupName', Header: 'Group', resizable: true, sortable: false, visible: true, filterable: true, filterType: 'text', initialWidthPercentage: 11.58 },\r\n // { accessor: 'action', Header: 'Action', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 9.26, },\r\n { accessor: 'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 2.31, },\r\n ]\r\n};\r\n\r\nexport const codesOtherShipmentTypeList:TableSettings = {\r\n tableVersion: 10046,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 4.63, },\r\n { accessor:'type', Header: 'Type', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 23.15,},\r\n { accessor:'description', Header: 'Description', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 46.76,},\r\n { accessor:'prefix', Header: 'Prefix', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 11.57,},\r\n { accessor:'no', Header: 'Number', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 11.57,},\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 2.31, },\r\n ]\r\n};\r\n\r\n\r\nexport const codesAesExportInfoList:TableSettings = {\r\n tableVersion: 10044,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 4.63, },\r\n { accessor:'code', Header: 'Export Info', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 11.57,},\r\n { accessor:'description', Header: 'Description', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 81.46,},\r\n // { accessor:'action', Header: 'Action', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 9.26, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 2.31, },\r\n ]\r\n};\r\n\r\n\r\nexport const codesAesExportLicenseList:TableSettings = {\r\n tableVersion: 10044,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 4.63, },\r\n { accessor:'code', Header: 'License Info', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 16.20,},\r\n { accessor:'description', Header: 'Description', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 76.85,},\r\n // { accessor:'action', Header: 'Action', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 9.26, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 2.32, },\r\n ]\r\n};\r\n\r\nexport const codesAesScheduleBList:TableSettings = {\r\n tableVersion: 10043,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 4.63, },\r\n { accessor:'code', Header: 'Schedule B', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 13.89,},\r\n { accessor:'sdescription', Header: 'Description', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 56.02,},\r\n { accessor:'unit1', Header: 'unit1', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 11.57,},\r\n { accessor:'unit2', Header: 'unit2', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 11.57,},\r\n // { accessor:'action', Header: 'Action', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 9.26, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 2.31, },\r\n ]\r\n};\r\n\r\nexport const codesAesCarrierList:TableSettings = {\r\n tableVersion: 10045,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 4.63, },\r\n { accessor:'carrierName', Header: 'Carrier Name', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 31.71,},\r\n { accessor:'code', Header: 'Code', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 9.26,},\r\n { accessor:'sName', Header: 'Company', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 17.36,},\r\n { accessor:'senderId', Header: 'Sender Id', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 11.57,},\r\n { accessor:'receiverId', Header: 'Receiver Id', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 11.57,},\r\n { accessor:'customerCode', Header: 'Customer Code', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text',initialWidthPercentage: 11.57, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 2.31, },\r\n ]\r\n};\r\n\r\nexport const codesCurrencyList:TableSettings = {\r\n tableVersion: 10054,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 9.26, },\r\n { accessor:'code', Header: 'Currency', visible: true, resizable: false, sortable: false, filterable: true, filterType: 'text', initialWidthPercentage: 18.30 },\r\n { accessor:'decimal', Header: 'Decimal Digit', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'number', initialWidthPercentage: 20.15,formatString: '#,##0' },\r\n { accessor:'symbol', Header: 'Symbol', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', initialWidthPercentage: 15.52, },\r\n { accessor:'localSymbol', Header: 'Local Symbol', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', initialWidthPercentage: 20.15, },\r\n { accessor:'inactive', Header: 'Inactive', visible: true, resizable: true, sortable: false, filterable: true, filterTypeV2: XCellType.Bool, initialWidthPercentage: 12.00, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 4.63, },\r\n ]\r\n};\r\n\r\nexport const codesExchangeRateList:TableSettings = {\r\n tableVersion: 10045,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 5.41, },\r\n { accessor:'exchageDate', Header: 'Date', visible: true, resizable: false, sortable: false, filterable: true, filterType: 'date',initialWidthPercentage: 12.36 },\r\n { accessor:'currency', Header: 'CUR', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', initialWidthPercentage: 11.65, },\r\n { accessor:'rate', Header: 'Rate', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'number', initialWidthPercentage: 12.36, formatString: '#,##0.0000' },\r\n { accessor:'createDate', Header: 'Create Date', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'date', initialWidthPercentage: 15.06, },\r\n { accessor:'createBy', Header: 'Create By', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', initialWidthPercentage: 12.35, },\r\n { accessor:'updateDate', Header: 'Update Date', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'date', initialWidthPercentage: 15.05 },\r\n { accessor:'updateBy', Header: 'Update By', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', initialWidthPercentage: 12.35, },\r\n // { accessor: 'action', Header: 'Action', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 10.81, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 2.70, },\r\n ]\r\n};\r\n\r\nexport const codesRegionCountryList:TableSettings = {\r\n tableVersion: 10045,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 9.26, },\r\n { accessor:'isoCode', Header: 'ISO Code', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 24.69,},\r\n { accessor:'countryName', Header: 'Country', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 41.37,},\r\n { accessor:'usCode', Header: 'US Code', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 20.05},\r\n // { accessor:'action', Header: 'Action', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 18.52, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 4.63, },\r\n ]\r\n};\r\n\r\nexport const codesRegionStateList: TableSettings = {\r\n tableVersion: 10046,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n \r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor: 'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 9.26, },\r\n { accessor: 'code', Header: 'Code', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 24.35, },\r\n { accessor: 'stateName', Header: 'State', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 41.56, },\r\n { accessor: 'country', Header: 'Country', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 20.20, },\r\n //{ accessor:'action', Header: 'Action', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 18.52, },\r\n { accessor: 'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 4.63, },\r\n ]\r\n};\r\n\r\nexport const codesAnTitleList:TableSettings = {\r\n tableVersion: 10047,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 4.63, },\r\n { accessor:'antitle', Header: 'Arrival Notice Title', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 66.54,},\r\n { accessor:'antitle1', Header: 'Show Charge Menu', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 13.26,},\r\n { accessor:'antitle2', Header: 'Change A/N Form', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 13.26,},\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 2.31, },\r\n ]\r\n};\r\n\r\nexport const codesCommodityList:TableSettings = {\r\n tableVersion: 10043,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 4.63, },\r\n { accessor:'code', Header: 'Commodity', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 30.09,},\r\n { accessor:'description', Header: 'Description', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 62.96,},\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 2.31, },\r\n ]\r\n};\r\n\r\nexport const codesEdi315List:TableSettings = {\r\n tableVersion: 10043,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor: 'indicator', Header: '', resizable: false, sortable: false, visible: true, initialWidthPercentage: 5.88, },\r\n { accessor: 'description', Header: 'Event Description', resizable: true, sortable: false, visible: true, initialWidthPercentage: 52.94 },\r\n { accessor: 'status', Header: 'Status', resizable: true, sortable: false, visible: true, initialWidthPercentage: 14.7 },\r\n { accessor: 'equipment', Header: 'Equip', resizable: true, sortable: false, visible: true, initialWidthPercentage: 11.76 },\r\n { accessor: 'ediOrder', Header: 'Order', resizable: true, sortable: false, visible: true, initialWidthPercentage: 11.76 },\r\n // { accessor: 'action', Header: 'Action', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 11.76, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 2.94, },\r\n ]\r\n};\r\n\r\nexport const codesMemoTitleList:TableSettings = {\r\n tableVersion: 10042,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor: 'indicator', Header: '', resizable: false, sortable: false, visible: true, initialWidthPercentage: 9.26, },\r\n { accessor: 'description', Header: 'Event Description', resizable: true, sortable: false, visible: true, initialWidthPercentage: 86.11 },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 4.63, },\r\n ]\r\n};\r\n\r\nexport const codesMemoReminderTaskList:TableSettings = {\r\n tableVersion: 10046,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 3.24, },\r\n { accessor:'task', Header: 'Task', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 4.85,},\r\n { accessor:'asigned', Header: 'Assigned', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 6.47,},\r\n { accessor:'remindDate', Header: 'Remind Date', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 6.47,},\r\n { accessor:'dueDate', Header: 'Due Date', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 6.47,},\r\n { accessor:'pending', Header: 'Pending', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 6.47,},\r\n { accessor:'createdAt', Header: 'Create', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 6.47, },\r\n { accessor:'createdBy', Header: 'Create By', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 6.47, },\r\n { accessor:'referenceNo', Header: 'Ref. #', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 9.39, },\r\n { accessor:'title', Header: 'Title', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 16.18, },\r\n { accessor:'contents', Header: 'Contents', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 34.36, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 2.31, },\r\n ]\r\n};\r\n\r\nexport const codesMemoAttachedFileList:TableSettings = {\r\n tableVersion: 10043,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 3.24, },\r\n { accessor:'userId', Header: 'User ID', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 8.09,},\r\n { accessor:'date', Header: 'Date', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 6.47,},\r\n { accessor:'refNo', Header: 'Ref. #', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 8.09,},\r\n { accessor:'title', Header: 'Title', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 16.18,},\r\n { accessor:'fileName', Header: 'Attached File Name', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 16.18,},\r\n { accessor:'fileSize', Header: 'File Size', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 6.47, },\r\n { accessor:'contents', Header: 'Contents', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 33.66, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 1.62, },\r\n ]\r\n};\r\n\r\nexport const codesRegionUnLocationCodeList:TableSettings = {\r\n tableVersion: 1004,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 5.88, },\r\n { accessor:'unCode', Header: 'UN Code', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 14.70,},\r\n { accessor:'unPortName', Header: 'Port Name', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 47.06,},\r\n { accessor:'unCountry', Header: 'Country', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 14.70,},\r\n { accessor:'usCode', Header: 'US Code', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 14.70,},\r\n //{ accessor:'action', Header: 'Action', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 11.76, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 2.94, },\r\n ]\r\n};\r\n\r\nexport const codesLogFileEmailLogList:TableSettings = {\r\n tableVersion: 10045,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 3.24, },\r\n { accessor:'senderId', Header: 'User Name', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 8.09,},\r\n { accessor:'title', Header: 'Title', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 16.18,},\r\n { accessor:'recipient', Header: 'Recipient', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 20.23,},\r\n { accessor:'recCompanyName', Header: 'Company Name', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 12.62,},\r\n { accessor:'sType', Header: 'Type', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 4.85,},\r\n { accessor:'recNo', Header: 'Address', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 20.23,},\r\n { accessor:'state', Header: 'Status', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 4.85,},\r\n { accessor:'postDate', Header: 'Date', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 8.09,},\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 2.31, },\r\n ]\r\n};\r\n\r\nexport const codesLogFilePrintLogList:TableSettings = {\r\n tableVersion: 10045,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 3.24, },\r\n { accessor:'senderId', Header: 'User Id', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 11.57,},\r\n { accessor:'title', Header: 'Title', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 69.91,},\r\n { accessor:'postDate', Header: 'Date', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 11.57,},\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 2.31, },\r\n ]\r\n};\r\n\r\nexport const codesLogFileFaxLogList:TableSettings = {\r\n tableVersion: 10045,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 3.24, },\r\n { accessor:'postDate', Header: 'Date', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 11.57,},\r\n { accessor:'senderId', Header: 'User Name', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 11.57,},\r\n { accessor:'recCompanyName', Header: 'Company Name', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 17.36,},\r\n { accessor:'recipient', Header: 'Recipient', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 11.57,},\r\n { accessor:'state', Header: 'Status', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 6.94,},\r\n { accessor:'recNo', Header: 'Fax #', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 9.26,},\r\n { accessor:'title', Header: 'Title', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 24.77,},\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, filterable: true, initialWidthPercentage: 2.31, },\r\n ]\r\n};\r\n\r\nexport const billOrInvoiceSummaryLineItems:TableSettings = {\r\n tableVersion: 1011,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '200px',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'white',\r\n\r\n columns: [\r\n { Header: '#', accessor: 'no', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.95, }, \r\n { Header: 'Date', accessor: 'date', resizable: true, sortable: false, visible: true, initialWidthPercentage: 5.30, },\r\n { Header: 'Entity', accessor: 'entity', resizable: true, sortable: false, visible: true, initialWidthPercentage: 13.24, },\r\n { Header: 'Billing Code', accessor: 'billingCode', resizable: true, sortable: false, visible: true, initialWidthPercentage: 9.93, },\r\n { Header: 'Item Description', accessor: 'itemDescription', resizable: true, sortable: false, visible: true, initialWidthPercentage: 9.93, },\r\n { Header: 'Draft', accessor: 'draft', resizable: true, sortable: false, visible: true, initialWidthPercentage: 3.31, },\r\n { Header: 'CUR', accessor: 'cur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.65, },\r\n { Header: 'Rate', accessor: 'rate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.66, },\r\n { Header: 'Qty', accessor: 'qty', resizable: true, sortable: false, visible: true, initialWidthPercentage: 4.30, },\r\n { Header: 'Amount', accessor: 'amount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.5, },\r\n { Header: 'USD Amount', accessor: 'localAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.5, },\r\n { Header: 'Agent', accessor: 'agent', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.62, },\r\n { Header: 'CUR', accessor: 'agentCur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 2.65, },\r\n { Header: 'Agent Amount', accessor: 'agentAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.62, },\r\n { Header: 'CrDb #', accessor: 'crdbNo', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.62, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 1.32, },\r\n ],\r\n};\r\n\r\nexport const crdbSummaryLineItems:TableSettings = {\r\n tableVersion: 1013,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '200px',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'white',\r\n\r\n columns: [\r\n { Header: 'CrDb #', accessor: 'crdbNo', resizable: true, sortable: false, visible: true, initialWidthPercentage: 9.45, },\r\n { Header: 'CrDb Date', accessor: 'crdbDate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.30, },\r\n { Header: 'Agent', accessor: 'agent', resizable: true, sortable: false, visible: true, initialWidthPercentage: 14.75, },\r\n { Header: 'Billing Code', accessor: 'billingCode', resizable: true, sortable: false, visible: true, initialWidthPercentage: 14.81, },\r\n { Header: 'Item Description', accessor: 'itemDescription', resizable: true, sortable: false, visible: true, initialWidthPercentage: 17.81, },\r\n { Header: 'Draft', accessor: 'draft', resizable: true, sortable: false, visible: true, initialWidthPercentage: 3.94, },\r\n { Header: 'CUR', accessor: 'cur', resizable: true, sortable: false, visible: true, initialWidthPercentage: 3.15, },\r\n { Header: 'Credit', accessor: 'credit', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.30, },\r\n { Header: 'Debit', accessor: 'debit', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.30, },\r\n { Header: 'CrDb Amount', accessor: 'crdbAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.87, },\r\n { Header: 'B/L #', accessor: 'blNo', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.75, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 1.57, },\r\n ],\r\n};\r\n\r\nexport const billOrInvoiceLineItemsWh:TableSettings = {\r\n tableVersion: 1004,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '320px',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'white',\r\n\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.57,\r\n },\r\n {\r\n Header: 'Type',\r\n accessor: 'type',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.52,\r\n },\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'billingCode',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.67,\r\n },\r\n {\r\n Header: 'Description',\r\n accessor: 'itemDescription',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 29.76,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.95,\r\n },\r\n {\r\n Header: 'Rate',\r\n accessor: 'rate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'qty',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.40,\r\n },\r\n ]\r\n};\r\n\r\n\r\nexport const periodBillOrInvoiceLineItems:TableSettings = {\r\n tableVersion: 1009,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '320px',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'white',\r\n\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.57,\r\n },\r\n {\r\n Header: 'ID',\r\n accessor: 'opNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.52,\r\n },\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'billingCodeView',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.65,\r\n },\r\n {\r\n Header: 'Billing Item',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 29.78,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.95,\r\n },\r\n {\r\n Header: 'Rate',\r\n accessor: 'rate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'qty',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amtDesc',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.40,\r\n },\r\n ]\r\n};\r\n\r\nexport const periodBillOrInvoiceLineItemsCredit:TableSettings = {\r\n tableVersion: 1004,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '320px',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'white',\r\n\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.57,\r\n },\r\n {\r\n Header: 'ID',\r\n accessor: 'opNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.52,\r\n },\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'billingCodeView',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.65,\r\n },\r\n {\r\n Header: 'Billing Item',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 19.07,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.95,\r\n },\r\n {\r\n Header: 'Rate',\r\n accessor: 'rate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'qty',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amtDesc',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n { \r\n Header: 'Agent Amount', \r\n accessor: 'agtAmount', \r\n resizable: true, \r\n sortable: false, \r\n visible: true, \r\n initialWidthPercentage: 10.71, },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.40,\r\n },\r\n ]\r\n};\r\n\r\nexport const periodBillOrInvoiceLineItemsWithVat:TableSettings = {\r\n tableVersion: 1010,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '320px',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'white',\r\n\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.57,\r\n },\r\n {\r\n Header: 'ID',\r\n accessor: 'opNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.52,\r\n },\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'billingCodeView',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.65,\r\n },\r\n {\r\n Header: 'Billing Item',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 27.76,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.95,\r\n },\r\n {\r\n Header: 'Rate',\r\n accessor: 'rate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'qty',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amtDesc',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n { \r\n Header: 'VAT', \r\n accessor: 'useVat', \r\n resizable: true, \r\n sortable: false, \r\n visible: true, \r\n initialWidthPercentage: 3.02, },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.40,\r\n },\r\n ]\r\n};\r\n\r\nexport const periodBillOrInvoiceLineItemsWithVatCredit:TableSettings = {\r\n tableVersion: 1004,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '320px',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'white',\r\n\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.57,\r\n },\r\n {\r\n Header: 'ID',\r\n accessor: 'opNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.52,\r\n },\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'billingCodeView',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.65,\r\n },\r\n {\r\n Header: 'Billing Item',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.01,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.95,\r\n },\r\n {\r\n Header: 'Rate',\r\n accessor: 'rate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'qty',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amtDesc',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n { \r\n Header: 'Credit Amount', \r\n accessor: 'agtAmount', \r\n resizable: true, \r\n sortable: false, \r\n visible: true, \r\n initialWidthPercentage: 10.71, },\r\n { \r\n Header: 'VAT', \r\n accessor: 'useVat', \r\n resizable: true, \r\n sortable: false, \r\n visible: true, \r\n initialWidthPercentage: 3.02, },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.40,\r\n },\r\n ]\r\n};\r\n\r\nexport const periodCrdbLineItems:TableSettings = {\r\n tableVersion: 1006,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '320px',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'white',\r\n\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.57,\r\n },\r\n {\r\n Header: 'Billing Type',\r\n accessor: 'billingType',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.33,\r\n },\r\n {\r\n Header: 'ID',\r\n accessor: 'opNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.52,\r\n },\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'crDbCodeView',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.29,\r\n },\r\n {\r\n Header: 'Description',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.86,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.95,\r\n },\r\n {\r\n Header: 'Rate',\r\n accessor: 'rate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.52,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'qty',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.52,\r\n },\r\n {\r\n Header: 'Debit Amount',\r\n accessor: 'debit',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.52,\r\n },\r\n {\r\n Header: 'Credit Amount',\r\n accessor: 'credit',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.52,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.40,\r\n },\r\n ]\r\n};\r\n\r\nexport const oceanImportIsfList:TableSettings = {\r\n tableVersion: 10005,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'stat', Header: '+', visible: false, width: 30, canBeHidden: false, resizable: false, sortable: false, filterable: false, filterType: 'text' },\r\n { accessor:'userId', Header: 'User ID', visible: false, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'status', Header: 'Status', visible: false, width: 200, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'branch', Header: 'BR', visible: false, width: 40, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'disp', Header: 'Disp', visible: false, width: 60, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'lastAction', Header: 'Last Action', visible: false, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'isfNo', Header: 'ISF #', visible: false, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'shipmentId', Header: 'Shipment ID', visible: false, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'impName', Header: 'Importer Name', visible: false, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'impNo', Header: 'Importer #', visible: false, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'hblNo', Header: 'HBL #', visible: false, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'tariffNo', Header: 'HTS Code', visible: false, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'isfDate', Header: 'ISF Date', visible: false, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'bondHolder', Header: 'Bond Holder', visible: false, width: 250, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u2Date', Header: 'Update', visible: false, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const codesUserGroupList:TableSettings = {\r\n tableVersion: 10043,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 5.88, },\r\n { accessor:'name', Header: 'Group Name', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 22.06,},\r\n { accessor:'desc', Header: 'Description', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 36.76, },\r\n { accessor:'inactive', Header: 'Inactive', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'bool', initialWidthPercentage: 8.82, },\r\n { accessor:'inactiveDate', Header: 'Inactive Date', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', initialWidthPercentage: 11.76, },\r\n { accessor:'inactiveBy', Header: 'Inactive By', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text',initialWidthPercentage: 11.76, },\r\n { accessor: 'scroll', Header: '', resizable: false, sortable: false, visible: true, initialWidthPercentage: 2.96, },\r\n ]\r\n};\r\n\r\nexport const pimsMasterDownloadList:TableSettings = {\r\n tableVersion: 1012,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: []\r\n};\r\n\r\nexport const pimsHouseDownloadList:TableSettings = {\r\n tableVersion: 1016,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: []\r\n};\r\n\r\nexport const pimsShipmentList:TableSettings = {\r\n tableVersion: 1007,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: []\r\n};\r\n\r\nexport const lastTransactionTable: TableSettings = {\r\n tableVersion: 1010,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { Header: '', accessor: 'indicator', resizable: true, sortable: false, visible: true, width: 30 },\r\n { Header: 'Op Type', accessor: 'type', resizable: true, sortable: false, visible: true, width: 60 },\r\n { Header: 'MBL #', accessor: 'mblNo', resizable: true, sortable: false, visible: true, width: 100 },\r\n { Header: 'HBL #', accessor: 'hblNo', resizable: true, sortable: false, visible: true, width: 100 },\r\n { Header: 'Ref. #', accessor: 'refNo', resizable: true, sortable: false, visible: true, width: 100 },\r\n { Header: 'ETA', accessor: 'eta', resizable: true, sortable: false, visible: true, width: 80 },\r\n { Header: 'Final Destination', accessor: 'finalDest', resizable: true, sortable: false, visible: true, width: 112 },\r\n { Header: 'ETD / ETA', accessor: 'postDate', resizable: true, sortable: false, visible: true, width: 80 },\r\n ]\r\n};\r\n\r\nexport const utTaskMemoListItem:TableSettings = {\r\n tableVersion: 1005,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { Header: '', accessor: 'indicator', resizable: true, sortable: true, visible: true, width: 30 },\r\n { Header: 'Task', accessor: 'task', resizable: true, sortable: true, visible: true, width: 50 },\r\n { Header: 'Asigned', accessor: 'asigned', resizable: true, sortable: true, visible: true, width: 100 },\r\n { Header: 'Remind Date', accessor: 'remindDate', resizable: true, sortable: true, visible: true, width: 130 },\r\n { Header: 'Due Date', accessor: 'dueDate', resizable: true, sortable: true, visible: true, width: 130 },\r\n { Header: 'Pending', accessor: 'pending', resizable: true, sortable: true, visible: true, width: 50 },\r\n { Header: 'Create', accessor: 'createdAt', resizable: true, sortable: true, visible: true, width: 80 },\r\n { Header: 'Create By', accessor: 'createdBy', resizable: true, sortable: true, visible: true, width: 100 },\r\n { Header: 'Reference', accessor: 'referenceNo', resizable: true, sortable: true, visible: true, width: 300 },\r\n { Header: 'Title', accessor: 'title', resizable: true, sortable: true, visible: true, width: 200 },\r\n { Header: 'Contents', accessor: 'contents', resizable: true, sortable: true, visible: true, width: 300 },\r\n ],\r\n};\r\n\r\nexport const utAttachedFileListItem:TableSettings = {\r\n tableVersion: 1004,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { Header: '', accessor: 'indicator', resizable: true, sortable: true, visible: true, width: 30 },\r\n { Header: 'User ID', accessor: 'userId', resizable: true, sortable: true, visible: true, width: 90 },\r\n { Header: 'Date', accessor: 'date', resizable: true, sortable: true, visible: true, width: 65 },\r\n { Header: 'Ref. #', accessor: 'refNo', resizable: true, sortable: true, visible: true, width: 100 },\r\n { Header: 'Title', accessor: 'title', resizable: true, sortable: true, visible: true, width: 170 },\r\n { Header: 'Attached File Name', accessor: 'fileName', resizable: true, sortable: true, visible: true, width: 170 },\r\n { Header: 'File Size', accessor: 'fileSize', resizable: true, sortable: true, visible: true, width: 80 },\r\n { Header: 'Contents', accessor: 'contents', resizable: true, sortable: true, visible: true, width: 800 },\r\n ],\r\n};\r\n\r\nexport const utCommunicationListItem: TableSettings = {\r\n tableVersion: 1006,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { Header: '', accessor: 'indicator', resizable: true, sortable: true, visible: true, width: 30 },\r\n { Header: 'Log Type', accessor: 'logType', resizable: true, sortable: true, visible: true, width: 80 },\r\n { Header: 'Ref #', accessor: 'refNo', resizable: true, sortable: true, visible: true, width: 100 },\r\n { Header: 'HBL #', accessor: 'hblNo', resizable: true, sortable: true, visible: true, width: 100 },\r\n { Header: 'User Name', accessor: 'senderId', resizable: true, sortable: true, visible: true, width: 80 },\r\n { Header: 'Title', accessor: 'title', resizable: true, sortable: true, visible: true, width: 200 },\r\n { Header: 'Recipient', accessor: 'recipient', resizable: true, sortable: true, visible: true, width: 300 },\r\n { Header: 'Company Name', accessor: 'recCompanyName', resizable: true, sortable: true, visible: true, width: 140 },\r\n { Header: 'Type', accessor: 'sType', resizable: true, sortable: true, visible: true, width: 50 },\r\n { Header: 'Email Address', accessor: 'email', resizable: true, sortable: true, visible: true, width: 140 },\r\n { Header: 'Status', accessor: 'state', resizable: true, sortable: true, visible: true, width: 80 },\r\n { Header: 'Date', accessor: 'postDate', resizable: true, sortable: true, visible: true, width: 120 },\r\n { Header: 'Fax #', accessor: 'faxNo', resizable: true, sortable: true, visible: true, width: 140 },\r\n ],\r\n};\r\n\r\nexport const utFaxLogListItem:TableSettings = {\r\n tableVersion: 1003,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { Header: '', accessor: 'indicator', resizable: true, sortable: true, visible: true, width: 30 },\r\n { Header: 'Ref #', accessor: 'refNo', resizable: true, sortable: true, visible: true, width: 100 },\r\n { Header: 'HBL #', accessor: 'hblNo', resizable: true, sortable: true, visible: true, width: 100 },\r\n { Header: 'Date', accessor: 'postDate', resizable: true, sortable: true, visible: true, width: 120 },\r\n { Header: 'User Name', accessor: 'senderId', resizable: true, sortable: true, visible: true, width: 100 },\r\n { Header: 'Company Name', accessor: 'recCompanyName', resizable: true, sortable: true, visible: true, width: 140 },\r\n { Header: 'Recipient', accessor: 'recipient', resizable: true, sortable: true, visible: true, width: 140 },\r\n { Header: 'Status', accessor: 'state', resizable: true, sortable: true, visible: true, width: 60 },\r\n { Header: 'Fax #', accessor: 'recNo', resizable: true, sortable: true, visible: true, width: 120 },\r\n { Header: 'Title', accessor: 'title', resizable: true, sortable: true, visible: true, width: 400 },\r\n ],\r\n};\r\n\r\nexport const utPrintLogListItem:TableSettings = {\r\n tableVersion: 1003,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { Header: '', accessor: 'indicator', resizable: true, sortable: true, visible: true, width: 30 },\r\n { Header: 'Ref #', accessor: 'refNo', resizable: true, sortable: true, visible: true, width: 100 },\r\n { Header: 'HBL #', accessor: 'hblNo', resizable: true, sortable: true, visible: true, width: 100 },\r\n { Header: 'User Name', accessor: 'senderId', resizable: true, sortable: true, visible: true, width: 80 },\r\n { Header: 'Title', accessor: 'title', resizable: true, sortable: true, visible: true, width: 500 },\r\n { Header: 'Date', accessor: 'postDate', resizable: true, sortable: true, visible: true, width: 120 },\r\n ],\r\n};\r\n\r\nexport const utEmailLogListItem:TableSettings = {\r\n tableVersion: 1004,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { Header: '', accessor: 'indicator', resizable: true, sortable: true, visible: true, width: 30 },\r\n { Header: 'Ref #', accessor: 'refNo', resizable: true, sortable: true, visible: true, width: 100 },\r\n { Header: 'HBL #', accessor: 'hblNo', resizable: true, sortable: true, visible: true, width: 100 },\r\n { Header: 'User Name', accessor: 'senderId', resizable: true, sortable: true, visible: true, width: 80 },\r\n { Header: 'Title', accessor: 'title', resizable: true, sortable: true, visible: true, width: 200 },\r\n { Header: 'Recipient', accessor: 'recipient', resizable: true, sortable: true, visible: true, width: 300 },\r\n { Header: 'Company Name', accessor: 'recCompanyName', resizable: true, sortable: true, visible: true, width: 140 },\r\n { Header: 'Type', accessor: 'sType', resizable: true, sortable: true, visible: true, width: 50 },\r\n { Header: 'Email Address', accessor: 'recNo', resizable: true, sortable: true, visible: true, width: 140 },\r\n { Header: 'Status', accessor: 'state', resizable: true, sortable: true, visible: true, width: 80 },\r\n { Header: 'Date', accessor: 'postDate', resizable: true, sortable: true, visible: true, width: 120 },\r\n ],\r\n};\r\n\r\nexport const securityControlTable: TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, width: 35, },\r\n { Header: 'Control Name', accessor: 'name', resizable: true, sortable: false, visible: true, width: 120 },\r\n { Header: 'Control Description', accessor: 'desc', resizable: true, sortable: false, visible: true, width: 180 },\r\n { Header: 'Task Description', accessor: 'taskDesc', resizable: true, sortable: false, visible: true, width: 180 },\r\n { Header: 'Attribute', accessor: 'attrName', resizable: true, sortable: false, visible: true, width: 90 },\r\n ]\r\n};\r\n\r\nexport const securityControlListTable: TableSettings = {\r\n tableVersion: 1006,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: true, filterType: 'text', width: 35, },\r\n { Header: 'Description', accessor: 'description', resizable: true, sortable: true, filterType: 'text', visible: true, width: 290 },\r\n { Header: 'Grid Form', accessor: 'gridForm', resizable: true, sortable: true, filterType: 'number', visible: true, width: 95 },\r\n { Header: 'Detail Form', accessor: 'detailForm', resizable: true, sortable: true, filterType: 'text', visible: true, width: 120 },\r\n { Header: 'Menu Name', accessor: 'menuName', resizable: true, sortable: true, filterType: 'text', visible: true, width: 200 },\r\n ]\r\n};\r\n\r\nexport const bankBalanceList:TableSettings = {\r\n tableVersion: 10075,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '250px',\r\n width: '1160px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 3.2, },\r\n { accessor:'glname', Header: 'Bank Entity', visible: true, resizable: true, sortable: false, initialWidthPercentage: 10.6,},\r\n { accessor:'accountcode', Header: 'Account Code', visible: true, resizable: true, sortable: false, initialWidthPercentage: 9, },\r\n { accessor:'currency', Header: 'CUR', visible: true, resizable: true, sortable: false, initialWidthPercentage: 4.0, },\r\n { accessor:'prevbalance', Header: 'Previous Balance', visible: true, resizable: true, sortable: false, initialWidthPercentage: 10.6, },\r\n { accessor:'debit', Header: 'In', visible: true, resizable: true, sortable: false, initialWidthPercentage: 8.0, },\r\n { accessor:'credit', Header: 'Out', visible: true, resizable: true, sortable: false, initialWidthPercentage: 8.0, },\r\n { accessor:'balance', Header: 'Current Balance', visible: true, resizable: true, sortable: false, initialWidthPercentage: 10.0 },\r\n { accessor:'odepo', Header: 'Processing Deposit Check', visible: true, resizable: true, sortable: false, initialWidthPercentage: 10.0 },\r\n { accessor:'ocheck', Header: 'Processing Paid Check', visible: true, resizable: true, sortable: false, initialWidthPercentage: 10.6, },\r\n { accessor:'ablebalance', Header: 'Available Balance', visible: true, resizable: true, sortable: false, initialWidthPercentage: 8.6, },\r\n { accessor:'detail', Header: 'Detail', visible: true, resizable: true, sortable: false, initialWidthPercentage: 3 },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 2.42, },\r\n ]\r\n};\r\n\r\nexport const aiMawbDirectBlLineItems: TableSettings = {\r\n tableVersion: 10003,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n \r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: 'Mark and Numbers',\r\n accessor: 'markAndNumbers',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20.27,\r\n },\r\n {\r\n Header: 'Package(s)',\r\n accessor: 'numberOfPackages',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.86,\r\n },\r\n {\r\n Header: 'Description of Goods',\r\n accessor: 'descriptionOfGoods',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 29.73,\r\n },\r\n {\r\n Header: 'Gross Weight',\r\n accessor: 'grossWeight',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.57,\r\n },\r\n {\r\n Header: 'Volume Weight',\r\n accessor: 'volumeWeight',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.57,\r\n },\r\n ]\r\n};\r\n\r\nexport const oiMblDirectBlLineItems: TableSettings = {\r\n tableVersion: 10003,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n \r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: 'Mark and Numbers',\r\n accessor: 'markAndNumbers',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.57,\r\n },\r\n {\r\n Header: 'Package(s)',\r\n accessor: 'numberOfPackages',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.22,\r\n },\r\n {\r\n Header: 'Description of Goods',\r\n accessor: 'descriptionOfGoods',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 24.59,\r\n },\r\n {\r\n Header: 'Gross Weight',\r\n accessor: 'grossWeight',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.57,\r\n },\r\n {\r\n Header: 'Measurement',\r\n accessor: 'measurement',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.48,\r\n },\r\n ]\r\n};\r\n\r\nexport const buyingRateList: TableSettings = {\r\n tableVersion: 10014,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor: 'indicator', Header: ' ', visible: true, resizable: false, sortable: false, initialWidthPercentage: 4.2, },\r\n { accessor: 'carrier', Header: 'Carrier', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', initialWidthPercentage: 11 },\r\n { accessor: 'mode', Header: 'Mode', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', initialWidthPercentage: 5.21, },\r\n { accessor: 'origin', Header: 'Origin', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', initialWidthPercentage: 11, },\r\n { accessor: 'destination', Header: 'Destination', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', initialWidthPercentage: 11, },\r\n { accessor: 'commodity', Header: 'Commodity', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', initialWidthPercentage: 13.9, },\r\n { accessor: 'size', Header: 'CNTR Type', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', initialWidthPercentage: 8, },\r\n { accessor: 'transit', Header: 'Transit', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'number', initialWidthPercentage: 6.00, formatString: '#,##0' },\r\n { accessor: 'rate1', Header: 'Rate', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'number', initialWidthPercentage: 5.9, },\r\n { accessor: 'effectETD', Header: 'Valid From', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'date', initialWidthPercentage: 7.02, },\r\n { accessor: 'expireETD', Header: 'Valid by', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'date', initialWidthPercentage: 7.02, },\r\n { accessor: 'remark', Header: 'Remark', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', initialWidthPercentage: 9.55, },\r\n { accessor: 'scroll', Header: '', visible: true, resizable: true, sortable: false, filterable: true, filterType: 'text', initialWidthPercentage: 3, },\r\n ]\r\n};\r\n\r\nexport const internetTrackingList: TableSettings = {\r\n tableVersion: 1023,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { Header: '', accessor: 'indicator', resizable: true, sortable: false, visible: true, width: 30 },\r\n { Header: 'Inacitve', accessor: 'inactive', resizable: true, sortable: false, visible: true, width: 50 },\r\n { Header: 'User Id', accessor: 'userId', resizable: true, sortable: false, visible: true, width: 100 },\r\n { Header: 'Password', accessor: 'password', resizable: true, sortable: false, visible: true, width: 100 },\r\n { Header: 'Company Name', accessor: 'companyName', resizable: true, sortable: false, visible: true, width: 250 },\r\n { Header: 'Agent', accessor: 'isAgent', resizable: true, sortable: false, visible: true, width: 50 },\r\n { Header: 'Customer', accessor: 'isCustomer', resizable: true, sortable: false, visible: true, width: 50 },\r\n { Header: 'Shipper', accessor: 'isShipper', resizable: true, sortable: false, visible: true, width: 50 },\r\n { Header: 'Consignee', accessor: 'isConsignee', resizable: true, sortable: false, visible: true, width: 60 },\r\n ]\r\n};\r\n\r\nexport const internetTrackingCompanyList: TableSettings = {\r\n tableVersion: 1027,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { Header: '', accessor: 'indicator', resizable: true, sortable: false, visible: true, width: 30 },\r\n { Header: 'Company', accessor: 'companyName', resizable: true, sortable: false, visible: true, width: 190 },\r\n { Header: 'Agent', accessor: 'isAgent', resizable: true, sortable: false, visible: true, width: 70 },\r\n { Header: 'Customer', accessor: 'isCustomer', resizable: true, sortable: false, visible: true, width: 70 },\r\n { Header: 'Shipper', accessor: 'isShipper', resizable: true, sortable: false, visible: true, width: 70 },\r\n { Header: 'Consignee', accessor: 'isConsignee', resizable: true, sortable: false, visible: true, width: 70 },\r\n { Header: 'Phone', accessor: 'phone', resizable: true, sortable: false, visible: true, width: 120 },\r\n { Header: 'Fax', accessor: 'fax', resizable: true, sortable: false, visible: true, width: 120 },\r\n ]\r\n};\r\n","interface IndexByAny {\r\n [key:string]: any,\r\n};\r\n\r\nconst fastStorage:IndexByAny = {\r\n\r\n};\r\n\r\nexport default fastStorage;\r\n","import React from 'react';\r\nimport { useAppDispatch } from '../app/hooks';\r\n\r\nimport { showGlobalYesNoDialog } from '../features/globalYesNoDialogSlice';\r\n\r\nimport { formatDialogContent } from './dialogHelpers';\r\n\r\n/**\r\n * useGlobalYesNoDialog - provides generic function for displaying Yes/No dialog\r\n *\r\n * @export\r\n * @return {*} \r\n */\r\n export default function useGlobalYesNoDialog() {\r\n const dispatch = useAppDispatch();\r\n\r\n /**\r\n * showYesNoDialog - awaitable Promise to show global yes/no dialog. Result is true for Yes and false for No\r\n *\r\n * @param {(string|null)} [top=null] - use to override top position on the screen (middle of the screen by default)\r\n * @return {*} \r\n */\r\n function showYesNoDialog(contentParam:string|React.ReactNode, invert?:boolean, focusindex?:number, addor?:boolean, type:'info'|'warning'='info') {\r\n return new Promise(resolve => {\r\n\r\n dispatch(showGlobalYesNoDialog({\r\n content: formatDialogContent(contentParam),\r\n resolve,\r\n invert:invert??false,\r\n focusindex:focusindex??0,\r\n addor:addor??false,\r\n type,\r\n }));\r\n })\r\n }\r\n\r\n return [showYesNoDialog];\r\n}","export default __webpack_public_path__ + \"static/media/container_tracking-yellow.b8f85998.svg\";","export default __webpack_public_path__ + \"static/media/container_tracking-green.06243f11.svg\";","export default __webpack_public_path__ + \"static/media/container_tracking-blue.210eaa0c.svg\";","export default __webpack_public_path__ + \"static/media/container_tracking-red.43cd5c1e.svg\";","import { useContext, useEffect } from 'react';\r\nimport constants from '../../constants';\r\nimport Select from '../../ui/Select';\r\nimport { formatLclFcl, formatShipmentType, unFormatLclFcl } from './utils/formatUtils';\r\nimport { formatDateTime } from '../../dateUtils';\r\n\r\nimport cntrYellow from '../../img/container_tracking-yellow.svg';\r\nimport cntrGreen from '../../img/container_tracking-green.svg';\r\nimport cntrBlue from '../../img/container_tracking-blue.svg';\r\nimport cntrRed from '../../img/container_tracking-red.svg';\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport { getFmsGlobal } from '../../globals';\r\nimport { JobNames } from '../../framework.core/JobNames';\r\n\r\nexport function BillingsRenderer({ cell }: any) {\r\n let tempBillingsTooltip = '';\r\n switch (cell.value) {\r\n case 'I':\r\n tempBillingsTooltip = 'Issued';\r\n break;\r\n case 'E':\r\n tempBillingsTooltip = 'Empty';\r\n break;\r\n case 'D':\r\n tempBillingsTooltip = 'Draft';\r\n break;\r\n }\r\n return (\r\n
{cell.value}
\r\n );\r\n}\r\n\r\nexport function PeriodRenderer({ cell }: any) {\r\n return (\r\n
{cell.value}
\r\n );\r\n}\r\n\r\n\r\nexport function RecognizedRenderer({ cell }: any) {\r\n return (\r\n
{cell.value}
\r\n );\r\n}\r\n\r\nexport function TrackEventNameRenderer({ cell, row, data }: any) {\r\n const l = data[row.index];\r\n const lastEventDate = (l as any).lastEventDate as string;\r\n\r\n return (\r\n
\r\n {cell.value} {formatDateTime(lastEventDate)}\r\n
\r\n );\r\n}\r\n\r\nexport function ShipmentTypeRenderer({ cell }: any) {\r\n return (\r\n
{formatShipmentType(cell.value)}
\r\n );\r\n}\r\n\r\nexport function LastEventRenderer({ cell, row, data, jobName }: any) {\r\n const l = data[row.index];\r\n const lastEventDate = (l as any).lastEventDate as string;\r\n const trDate = (l as any).trDate as string;\r\n const appContext = useContext(ApplicationContext);\r\n const trStatus = cell.value;\r\n const lastEvent = (l as any).lastEvent as string;\r\n const fmsGlobal = getFmsGlobal();\r\n let imgSrc = null;\r\n\r\n let tooltip = '';\r\n let displayText = '';\r\n let displayDateTime = '';\r\n let id = '';\r\n let params = ''\r\n\r\n switch (jobName) {\r\n case JobNames.OIMbl:\r\n params = `&mbl=${cell.row.original.mblNo}`;\r\n break;\r\n case JobNames.OIHbl:\r\n params = `&hbl=${cell.row.original.hblNo}`;\r\n break;\r\n case JobNames.OIContainer:\r\n params = `&cntr=${cell.row.original.containerNo}`;\r\n break;\r\n }\r\n\r\n let link = `https://quicktrack2.suntekscm.com/?licid=${fmsGlobal.AcmeID}${params}&email=${appContext.user?.email}`;\r\n \r\n if ((cell.row.original.trType === 'M' || cell.row.original.trType === 'C')) {\r\n switch (trStatus) {\r\n case 'Q':\r\n displayText = 'Start to Request';\r\n displayDateTime = trDate;\r\n tooltip = `${displayText} ${formatDateTime(displayDateTime)}`;\r\n imgSrc = cntrYellow;\r\n id = 'cntrYellowIcon';\r\n break;\r\n case 'failed':\r\n displayText = 'Invalid or Error';\r\n displayDateTime = trDate;\r\n tooltip = `${(l as any).trStatusDesc as string} ${formatDateTime(displayDateTime)}`;\r\n imgSrc = cntrRed;\r\n id = 'cntrRedIcon';\r\n break;\r\n case 'tracking_stopped':\r\n displayText = lastEvent;\r\n displayDateTime = lastEventDate;\r\n tooltip = `${displayText} ${formatDateTime(displayDateTime)}`;\r\n imgSrc = cntrBlue;\r\n id = 'cntrBlueIcon';\r\n break;\r\n case 'pending':\r\n displayText = 'Pending';\r\n displayDateTime = lastEventDate;\r\n tooltip = '';\r\n imgSrc = cntrGreen;\r\n id = 'cntrGreenIcon';\r\n break;\r\n case 'awaiting_manifest':\r\n displayText = 'Awaiting Manifest';\r\n displayDateTime = lastEventDate;\r\n tooltip = '';\r\n imgSrc = cntrGreen;\r\n id = 'cntrGreenIcon';\r\n break;\r\n default:\r\n displayText = lastEvent;\r\n\r\n if (displayText != null && displayText.includes('eta')) displayText = displayText.replaceAll('eta', 'ETA');\r\n\r\n displayDateTime = lastEventDate;\r\n tooltip = `${displayText} ${formatDateTime(displayDateTime)}`;\r\n imgSrc = cntrGreen;\r\n id = 'cntrGreenIcon';\r\n break;\r\n }\r\n\r\n return
\r\n {\r\n window.open(link);\r\n }} />\r\n
\r\n {displayText} {formatDateTime(displayDateTime)}\r\n
\r\n
\r\n } else {\r\n return
\r\n
\r\n }\r\n}\r\n\r\nexport function ShipmentTypeFilterRenderer({ value, onChange, onEnter }: any) {\r\n return (\r\n onChange(e.target.value)}\r\n items={[\r\n { label: 'D - Direct Shipment', value: 'D' },\r\n { label: 'ID - InDirect Shipment', value: 'ID' },\r\n { label: 'PIMS', value: 'P' },\r\n ]}\r\n applySearchWithEnter={onEnter}\r\n />\r\n );\r\n}\r\n\r\nexport function LclFclRenderer({ cell }: any) {\r\n return (\r\n
{formatLclFcl(cell.value)}
\r\n );\r\n}\r\n\r\nexport function LclFclFilterRenderer({ value, onChange, onEnter }: any) {\r\n useEffect(() => {\r\n if (value !== unFormatLclFcl(value)) {\r\n onChange(unFormatLclFcl(value));\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n onChange(e.target.value)}\r\n items={[\r\n { value: 'L', label: 'Consol' },\r\n { value: 'F', label: 'FCL' },\r\n { value: 'O', label: 'LCL' },\r\n ]}\r\n applySearchWithEnter={onEnter}\r\n />\r\n );\r\n}\r\n\r\nexport function BillInvoiceCrdbFilterRenderer({ value, onChange, onEnter }: any) {\r\n return (\r\n onChange(e.target.value)}\r\n items={[\r\n { value: 'E', label: 'E - Empty' },\r\n { value: 'I', label: 'I - Issued' },\r\n { value: 'D', label: 'D - Draft' },\r\n ]}\r\n applySearchWithEnter={onEnter}\r\n />\r\n );\r\n}\r\n\r\nexport function RecognizedFilterRenderer({ value, onChange, onEnter }: any) {\r\n return (\r\n onChange(e.target.value)}\r\n items={[\r\n { value: '', label: '' },\r\n { value: 'R', label: 'Recognize' },\r\n ]}\r\n applySearchWithEnter={onEnter}\r\n />\r\n );\r\n}\r\n\r\nexport function TaxIdTypeFilterRenderer({ value, onChange, onEnter }: any) {\r\n return (\r\n onChange(e.target.value)}\r\n items={[\r\n { value: 'E', label: 'EIN - IRS Number' },\r\n { value: 'C', label: 'CBP - CBP Assigned Number' },\r\n { value: 'S', label: 'SSN - Social Security Number' },\r\n { value: 'O', label: 'OC - Organization Code' },\r\n { value: 'U', label: 'USCI - United Social Credit Identifier' },\r\n { value: 'R', label: 'EORI - Economic Operator Reg. ID' },\r\n ]}\r\n applySearchWithEnter={onEnter}\r\n />\r\n );\r\n}\r\n\r\n//Empty Renderer\r\nexport function StatusNotUseFileLockedRenderer({ value, onChange, onEnter }: any) {\r\n return (\r\n onChange(e.target.value)}\r\n items={[\r\n ]}\r\n applySearchWithEnter={onEnter}\r\n />\r\n );\r\n}\r\n\r\nexport function DraftFilterRenderer({ value, onChange, onEnter }: any) {\r\n return (\r\n onChange(e.target.value)}\r\n items={[\r\n { value: '', label: '' },\r\n { value: 'D', label: 'D - Draft' },\r\n ]}\r\n applySearchWithEnter={onEnter}\r\n />\r\n );\r\n}\r\n\r\nexport function VoidFilterRenderer({ value, onChange, onEnter }: any) {\r\n return (\r\n onChange(e.target.value)}\r\n items={[\r\n { value: '', label: '' },\r\n { value: 'V', label: 'V - Void' },\r\n ]}\r\n applySearchWithEnter={onEnter}\r\n />\r\n );\r\n}\r\n\r\nexport function InactiveFilterRenderer({ value, onChange, onEnter }: any) {\r\n return (\r\n onChange(e.target.value)}\r\n items={[\r\n { value: '', label: '' },\r\n { value: 'V', label: 'V - Inactive' },\r\n ]}\r\n applySearchWithEnter={onEnter}\r\n />\r\n );\r\n}\r\n\r\nexport function CTypeFilterRenderer({ value, onChange, onEnter }: any) {\r\n return (\r\n onChange(e.target.value)}\r\n items={[\r\n { value: 'C', label: 'Customer' },\r\n { value: 'ST', label: 'Ship To' },\r\n { value: 'SF', label: 'Ship From' },\r\n ]}\r\n applySearchWithEnter={onEnter}\r\n />\r\n );\r\n}\r\n\r\n// export function HeaderTooltipRenderer(caption: string, tooltip: string) {\r\n// return (\r\n//
{caption}
\r\n// );\r\n// }\r\n\r\n/**\r\n * Type Filter renderer for Bill, Invoice, CrDb list screens\r\n *\r\n * @export\r\n * @param {*} {opType, value, onChange}\r\n * @return {*} \r\n */\r\nexport function BicTypeFilterRenderer({ opType, value, onChange, onEnter }: any) {\r\n const items = [];\r\n switch (opType) {\r\n case constants.opTypes.oceanImport:\r\n items.push(...[\r\n { label: 'OIM', value: 'OIM' },\r\n { label: 'OIH', value: 'OIH' },\r\n ]);\r\n break;\r\n case constants.opTypes.oceanExport:\r\n items.push(...[\r\n { label: 'OOM', value: 'OOM' },\r\n { label: 'OOH', value: 'OOH' },\r\n ]);\r\n break;\r\n case constants.opTypes.airImport:\r\n items.push(...[\r\n { label: 'AIM', value: 'AIM' },\r\n { label: 'AIH', value: 'AIH' },\r\n ]);\r\n break;\r\n case constants.opTypes.airExport:\r\n items.push(...[\r\n { label: 'AOM', value: 'AOM' },\r\n { label: 'AOH', value: 'AOH' },\r\n ]);\r\n break;\r\n case constants.opTypes.otherShipment:\r\n items.push(...[\r\n { label: 'OTH', value: 'OTH' },\r\n ]);\r\n break;\r\n case constants.opTypes.warehousing:\r\n items.push(...[\r\n { label: '', value: '' },\r\n { label: 'WHR', value: 'WHR' },\r\n { label: 'WHS', value: 'WHS' },\r\n ]);\r\n break;\r\n default:\r\n items.push(...[\r\n { label: 'AIM', value: 'AIM' },\r\n { label: 'AIH', value: 'AIH' },\r\n { label: 'AOM', value: 'AOM' },\r\n { label: 'AOH', value: 'AOH' },\r\n { label: 'OIM', value: 'OIM' },\r\n { label: 'OIH', value: 'OIH' },\r\n { label: 'OOM', value: 'OOM' },\r\n { label: 'OOH', value: 'OOH' },\r\n { label: 'OTH', value: 'OTH' },\r\n { label: 'WHR', value: 'WHR' },\r\n { label: 'WHS', value: 'WHS' },\r\n ]);\r\n break;\r\n }\r\n return (\r\n onChange(e.target.value)}\r\n items={items}\r\n applySearchWithEnter={onEnter}\r\n />\r\n );\r\n}\r\n\r\nexport function RQFilterRenderer({ value, onChange, onEnter }: any) {\r\n return (\r\n <>\r\n onChange(e.target.value)}\r\n items={[\r\n { value: '', label: '' },\r\n { value: 'Q', label: 'Start to Request', icon: cntrYellow },\r\n { value: 'created', label: 'Under Movement', icon: cntrGreen },\r\n { value: 'tracking_stopped', label: 'End of Tracking', icon: cntrBlue },\r\n { value: 'failed', label: 'Invalid or Error', icon: cntrRed },\r\n ]}\r\n applySearchWithEnter={onEnter}\r\n />\r\n \r\n );\r\n}","import numeral from \"numeral\";\r\nimport { getDecimal } from \"../../util\";\r\nimport useSuntekSettings from \"../../hooks/useSuntekSettings\";\r\nimport { formatDateTime } from \"../../dateUtils\";\r\n\r\nexport function nullableCheckBoxValue(value: any) {\r\n return value ? 'checked' : '';\r\n}\r\n\r\nexport function intAsCheckBoxValue(value : any) {\r\n return value === 1 ? 'checked' : '';\r\n}\r\n\r\nexport function CurrencyAmountValue(currencyAccessor:any, value:any) {\r\n const currency = currencyAccessor;\r\n let amount = '';\r\n const cellValue = value;\r\n const decimals = getDecimal(currency);\r\n if (cellValue !== null && cellValue !== undefined && cellValue !== '') {\r\n const format = `0,0.${'0'.repeat(decimals)}`;\r\n amount = numeral(cellValue.toFixed(decimals)).format(format);\r\n }\r\n\r\n return amount;\r\n}\r\n\r\nexport function Decimalformat(value : any, decimalFormat : any){\r\n if(!!value) value = value;\r\n else value = 0;\r\n return value.toFixed(decimalFormat);\r\n}\r\n\r\nexport function DateTimeSecond(value: any,) {\r\n const suntekSettings = useSuntekSettings();\r\n return formatDateTime(value, suntekSettings.company?.dateFormat.toUpperCase() || '', true, true)\r\n}\r\n\r\nexport function TaxIdType(cellvalue:any) {\r\n let value = '';\r\n\r\n if (cellvalue === 'E') {\r\n value = 'EIN - IRS Number';\r\n } else if (cellvalue === 'C') {\r\n value = 'CBP - CBP Assigned Number';\r\n } else if (cellvalue === 'S') {\r\n value = 'SSN - Social Security Number';\r\n } else if (cellvalue === 'O') {\r\n value = 'OC - Organization Code';\r\n } else if (cellvalue === 'U') {\r\n value = 'USCI - United Social Credit Identifier';\r\n } else if (cellvalue === 'R') {\r\n value = 'EORI - Economic Operator Reg. ID';\r\n }\r\n\r\n return value ;\r\n}\r\n\r\nexport function paidValue(cell:any) {\r\n return cell !== 'x' ? 'checked' : '' ;\r\n}\r\n\r\nexport function CustomerTypeValue(cellvalue:any) {\r\n let value = '';\r\n\r\n if (cellvalue === 'C') {\r\n value = 'C';\r\n } else if (cellvalue === 'ST') {\r\n value = 'ST';\r\n } else if (cellvalue === 'SF') {\r\n value = 'SF';\r\n } else if (cellvalue === 'SFST') {\r\n value = 'SF+';\r\n } else {\r\n value = 'C+';\r\n }\r\n\r\n return value ;\r\n}","/**\r\n * !!! DO NOT CHANGE ENUMERATION NAME WITHOUT PERMISSION !!!\r\n * !!! Description WILL BE REMOVED !!!\r\n */\r\nexport enum DocumentType {\r\n Unknown,\r\n CarrierCert = 1,\r\n Devann = 2,\r\n ArrivalNotice = 3,\r\n Memo,\r\n OO_CargoManifest,\r\n OI_CargoManifest,\r\n AO_CargoManifest,\r\n AI_CargoManifest,\r\n USDA = 9,\r\n LienNotice,\r\n ReleaseOrder = 11,\r\n POD = 12,\r\n CheckReq = 13, // Bill\r\n Invoice,\r\n CRDB,\r\n\r\n Pickup = 18,\r\n \r\n IT = 20,\r\n \r\n AWB = 22,\r\n Profit = 23,\r\n Volume = 24,\r\n ExDec = 25,\r\n OOHBook = 26,\r\n \r\n CommPack = 28,\r\n MasterSet = 29,\r\n Check = 30,\r\n\r\n AgentStatement = 32,\r\n LocalStatement,\r\n \r\n OOHouseBL = 43,\r\n Correction = 44,\r\n AuthEntry = 45,\r\n Quotation = 46,\r\n BankDraft = 47,\r\n OriginCertificate = 48,\r\n OIHOutstanding = 49,\r\n OutofStateLogSheet = 50,\r\n ReleaseHistory = 51,\r\n \r\n Brokerage = 54,\r\n DockReceipt = 55,\r\n FreightAN = 56,\r\n ShippingAdvice = 57,\r\n \r\n DO = 59,\r\n TrailerLoad = 60,\r\n SecondAN = 61,\r\n GenFax,\r\n GenEmail,\r\n MasterArrivalNotice = 64,\r\n AgentPackage = 65,\r\n Label = 66,\r\n LabelComAddress = 67,\r\n LoadPlan = 68,\r\n \r\n EMPPerform = 70,\r\n MasterUSDA = 71,\r\n ETA = 72,\r\n DeferSummary = 73,\r\n \r\n Inland = 76,\r\n \r\n LabelFolder = 80,\r\n DeliveryOrderShort = 81,\r\n LabelAir = 82,\r\n \r\n C_ReleaseOrder = 87,\r\n OOHBookingReport = 88,\r\n MAuthEntry = 89,\r\n \r\n PreAlert = 92,\r\n AuditReport = 93,\r\n PickSlip = 94,\r\n AmsManifest = 96,\r\n InvenPick = 101,\r\n WarehouseReceipt = 102,\r\n AmsHistory = 103,\r\n Exdectransit = 106,\r\n DocumentPackage = 107,\r\n \r\n ShippingAdviceItaly = 114,\r\n AmsHistoryMaster = 118,\r\n AmsUsage = 120,\r\n AmsHistoryManifest = 121,\r\n ArrivalConfirmNotice = 122,\r\n CustomerNonActivity = 124,\r\n TelexRelease = 126,\r\n PrePickup = 127,\r\n \r\n CompanyProfile = 129,\r\n\r\n CheckSub = 131,\r\n ChkMessenger = 132,\r\n VesselAcct = 133,\r\n \r\n ANandROrder = 135,\r\n \r\n OILifting = 137,\r\n \r\n PuInvoice = 140,\r\n AMSOILifting = 141,\r\n DOShortLaser = 142,\r\n OEUSDA = 143,\r\n \r\n QuotationAir = 148,\r\n OOHBookAIFG = 149,\r\n ITLaser = 150,\r\n \r\n OIHouseBl = 154,\r\n PendingList = 155,\r\n \r\n TSASecurity = 158,\r\n Transfer = 159,\r\n \r\n CancelIT = 161,\r\n \r\n InvoiceS = 166,\r\n CheckS = 167,\r\n LabelPouch = 168,\r\n \r\n CrDbBatch = 172,\r\n PreliminaryClaim = 173,\r\n \r\n TSAUnknown = 175,\r\n \r\n MasterInvoice = 180,\r\n LabelBook = 181,\r\n ANMultiHouse = 182,\r\n \r\n InvenActivity = 186,\r\n InvenItemHistory = 187,\r\n \r\n WhseLabelReceive = 190,\r\n WhseLabelShip = 191,\r\n \r\n StraightBL = 196,\r\n CargoStatus = 197,\r\n\r\n WhseLabelOher = 200,\r\n ISFHistory = 201,\r\n ISFUsage = 202,\r\n \r\n ProfitSman = 206,\r\n \r\n VendorCostSummary = 208,\r\n VendorCostDetail = 209,\r\n EmptyCntrRtn = 210,\r\n ReturnGuarantee,\r\n AciHistory,\r\n IRC225 = 221,\r\n \r\n ExpenseSummary = 226,\r\n ExpenseDetail = 227,\r\n \r\n PeriodicGLSummary = 500,\r\n PeriodicGLDetail = 501,\r\n GeneralLedger,\r\n AcctBalanceByEntity = 503,\r\n GLAgingByEntry = 503,\r\n JournalBook,\r\n DailyAcctSummary,\r\n \r\n AgingAR = 506,\r\n NewARAging = AgingAR,\r\n AgingARDetail = 507,\r\n NewARAgingDetail = AgingARDetail,\r\n AgingAP = 508,\r\n NewAPAging = AgingAP,\r\n AgingAPDetail = 509,\r\n NewAPAgingDetail = AgingAPDetail,\r\n NewARAPAging = 750,\r\n NewARAPAgingDetail = 751,\r\n AgingAgentAR = 510,\r\n NewAgentARAging = AgingAgentAR,\r\n AgingAgentARDetail = 511,\r\n NewAgentARAgingDetail = AgingAgentARDetail,\r\n AgingAgentAP = 512,\r\n NewAgentAPAging = AgingAgentAP,\r\n AgingAgentAPDetail = 513,\r\n NewAgentAPAgingDetail = AgingAgentAPDetail,\r\n AgingAgent = 514,\r\n NewAgentAging = AgingAgent,\r\n AgingAgentDetail = 515,\r\n NewAgentAgingDetail = AgingAgentDetail,\r\n AgingCheckPayable = 516,\r\n NewCheckPayable = AgingCheckPayable,\r\n AgingCheckPayableDetail = 517,\r\n NewCheckPayableDetail = AgingCheckPayableDetail,\r\n AgingCheckReceivable = 518,\r\n NewCheckReceivable = AgingCheckReceivable,\r\n AgingCheckReceivableDetail = 519,\r\n NewCheckReceivableDetail = AgingCheckReceivableDetail,\r\n\r\n NewGeneralJournal = 520,\r\n NewTransactionQuery,\r\n\r\n BranchPerformanceDetail = 564,\r\n BranchPerformanceMonthly = 565,\r\n\r\n BranchPerformance = 566,\r\n PeriodicBankDetail,\r\n NewRecAging,\r\n NewRecAgingDetail,\r\n NewPayAging,\r\n NewPayAgingDetail,\r\n DutyBalance,\r\n DutyPendings,\r\n NewGLBalanceDetail,\r\n NewAgentBalanceDetail,\r\n IssueReady,\r\n DailyBankBalance,\r\n CustomerNonActivityHybrid,\r\n ArrivalNoticeL,\r\n NewCCPayableAgingSummary,\r\n\r\n DailyAccountActivitySub1,\r\n DailyAccountActivitySub2,\r\n DailyAccountActivitySub3,\r\n DailyAccountActivitySub3Detail,\r\n DailyAccountActivitySub4Detail,\r\n DailyAccountSub2,\r\n\r\n DutyBalanceDetail,\r\n DutyPendingsSub,\r\n DutyPendingsSubAP,\r\n VolumeSumByTEU, // 590\r\n VolumeSumA,\r\n VolumeSumBySalesman,\r\n VolumeSumOther,\r\n VolumeO, \r\n VolumeDetailA,\r\n VolumeDetailBySalesman,\r\n VolumeDetailOther,\r\n IssueReadyDraft, // 598\r\n \r\n NewTrialBalance = 600,\r\n NewBalanceSheet = 601,\r\n NewIncomeStatement = 602,\r\n CashFlow = 603,\r\n NewTrialBalanceM = 604,\r\n NewBalanceSheetM = 605,\r\n NewIncomeStatementM = 606,\r\n IncomeStatementYC = 607,\r\n NewIncomeStatementDetail,\r\n NewIncomeStatementDetailM,\r\n NewIncomeStatementY,\r\n NewIncomeStatementYDetail,\r\n NewIncomeStatementYDetailM,\r\n NewIncomeStatementYM,\r\n\r\n IncomeStatementKR = 620,\r\n BalanceSheetKR = 621,\r\n TrialBalanceKR = 622,\r\n PaymentPrep = 623,\r\n AcctBalanceByEntity2 = 624,\r\n AcctGLSummary12 = 625,\r\n \r\n SalesCostByCustomer = 626, //sjcho 20240619 - add Sales/Cost by Customer Report\r\n CustomerGrossProfit = 627, //sjcho 20240619 - add B/L Gross Profit Report\r\n CustomerEstProfit = 628, //sjcho 20240802 - add B/L Est. Profit Report\r\n NewProfitCustomerDetail = 629, //sjcho 20240726\r\n\r\n GrossProfitYears = 630, // \r\n TopSalesCustomer = 631, // \r\n TopSalesAgent = 632, // \r\n ProfitCargoTypeByYears = 633, // \r\n VolumeCargoTypeByYears = 634, // \r\n\r\n NewBankBalance = 700,\r\n OutStandingCheck = 701,\r\n NewProfitByOperation,\r\n NewProfitByCustomer,\r\n NewBankBalanceDetail,\r\n TentativeMargin, //705\r\n GLAgingByEntryDetail = 706,\r\n PreviousBankTransaction,\r\n PreviousTransaction,\r\n FutureTransaction,\r\n AgentBalance,\r\n AgentBalanceDetail,\r\n BankReconHistory,\r\n NewCCPayable, // mkpark 2019-07-05 Credit Card Payable Aging Report Ãß°¡\r\n NewCCPayableDetail,\r\n\r\n TruckerDO = 716,\r\n QuotationOT = 717,\r\n\r\n DeleteHistoryBillingsSummary = 720, // jhlee 2025-01-10 Delete History Billings Summary\r\n DeleteHistoryBLSummary = 721, // jhlee 2025-01-14 Delete History BL Summary\r\n DeleteHistoryPaymentsSummary = 722, // jhlee 2025-01-14 Delete History Payments Summary\r\n DeleteHistoryBillingsDetail = 723, // jhlee 2025-01-10 Delete History Detail\r\n DeleteHistoryPaymentsDetail = 724, // jhlee 2025-01-14 Delete History Payments Detail\r\n\r\n PayrollSummary = 725, // \r\n\r\n EstProfitYears = 726, // jhlee 2025-02-19 Est. Profit (5 Years) Report \r\n\r\n // Cloud Only\r\n LogEmail = 790,\r\n LogPrint,\r\n LogFax,\r\n LogCommunication,\r\n\r\n}\r\n","import { IApplicationContext } from '../../ApplicationContext';\r\nimport {Search} from '../../filtering';\r\nimport {SuntekSettings, SystemSettings, User} from '../../ifmsTypes';\r\nimport {TableSettings} from '../../tableSettings';\r\nimport {IJobListViewContext, RightClickContext} from './JobListViewContext';\r\n\r\nexport interface ListOrderBy {\r\n orderBy: string,\r\n orderByAscending: boolean,\r\n};\r\n\r\nexport interface ListCustomFilterRenderer {\r\n accessor: string,\r\n renderer: React.FunctionComponent|undefined,\r\n searchValueExtractor: (v:any|null|undefined) => any,\r\n};\r\n\r\nexport interface ListRowRenderer {\r\n accessor: string,\r\n Cell: React.FunctionComponent,\r\n Header?: React.FunctionComponent|undefined,\r\n};\r\n\r\nexport interface ExportRowRenderer {\r\n accessor: string,\r\n changedValue: (v:any|null|undefined) => any,\r\n};\r\n\r\nexport interface DataFetchResult {\r\n data: Array,\r\n totalCount: number,\r\n};\r\n\r\nexport interface ViewUrl {\r\n url: string,\r\n needAfterScreenUrl?: boolean,\r\n checkAllOperation?: boolean,\r\n};\r\n\r\nexport default abstract class AbstractListView {\r\n systemSettings: SystemSettings|null = null;\r\n suntekSettings: SuntekSettings|null = null;\r\n\r\n /**\r\n * Set system settings so concrete implementation can easily access it, if needed\r\n *\r\n * @param {SystemSettings} s\r\n * @memberof AbstractListView\r\n */\r\n setSystemSettings(s:SystemSettings) {\r\n this.systemSettings = s;\r\n }\r\n\r\n /**\r\n * Set suntek settings so concrete implementation can easily access it, if needed\r\n *\r\n * @param {SuntekSettings} s\r\n * @memberof AbstractListView\r\n */\r\n setSuntekSettings(s:SuntekSettings) {\r\n this.suntekSettings = s;\r\n }\r\n\r\n /**\r\n * Get table settings specific for implementation for SmartTable to render\r\n *\r\n * @abstract\r\n * @return {*} {TableSettings}\r\n * @memberof AbstractListView\r\n */\r\n abstract getTableSettings(opType?: string, systemSettings?: SystemSettings, suntekSettings?: SuntekSettings): TableSettings;\r\n\r\n /**\r\n * Gets default order by for screen\r\n *\r\n * @abstract\r\n * @return {*} {ListOrderBy}\r\n * @memberof AbstractListView\r\n */\r\n abstract getDefaultOrderBy(): ListOrderBy;\r\n\r\n /**\r\n * Gets custom filter renderers, if any\r\n *\r\n * @abstract\r\n * @return {*} {Array}\r\n * @memberof AbstractListView\r\n */\r\n abstract getCustomFilterRenderers(opType?: string, systemSettings?: SystemSettings, suntekSettings?: SuntekSettings): Array;\r\n\r\n /**\r\n * Gets row renderer definitions for all columns inside table settings for concrete implementation\r\n *\r\n * @abstract\r\n * @return {*} {Array}\r\n * @memberof AbstractListView\r\n */\r\n abstract getRowRenderers(opType?: string, systemSettings?: SystemSettings, suntekSettings?: SuntekSettings, listCount?: number, useDarkMode?: boolean): Array;\r\n\r\n /**\r\n * Provides data array, usually returned from the api\r\n *\r\n * @abstract\r\n * @param {*} api\r\n * @param {Search} search\r\n * @param {string} opType\r\n * @return {*} {Promise}\r\n * @memberof AbstractListView\r\n */\r\n abstract fetchAndFormatData(api: any, search:Search, opType: string|undefined, user?: User|null, jobListViewContext?: IJobListViewContext|null) : Promise;\r\n\r\n /**\r\n * Gets rendered commands (action buttons) for concrete implementation, which are rendered on top left bar, right next to Job title\r\n *\r\n * @abstract\r\n * @return {*} {React.ReactNode}\r\n * @memberof AbstractListView\r\n */\r\n abstract renderCommands(appContext?: IApplicationContext) : React.ReactNode;\r\n /**\r\n * Gets rendered commands (action buttons) for concrete implementation, which are rendered on top left bar, right to the Close button.\r\n * By default, screens don't render anything\r\n *\r\n * @abstract\r\n * @return {*} {React.ReactNode}\r\n * @memberof AbstractListView\r\n */\r\n public renderAdditionalCommands() : React.ReactNode | null {\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets additional rendered node, which is rendered before list columns \"Configure\" button\r\n *\r\n * @abstract\r\n * @return {*} {React.ReactNode}\r\n * @memberof AbstractListView\r\n */\r\n abstract renderBeforeConfigureButton() : React.ReactNode;\r\n\r\n /**\r\n * Gets extra rendered node (or empty if it does not exist), which is rendered after table list.\r\n * If concrete implementation has it, here is the place to render InfoArea drawer\r\n *\r\n * @abstract\r\n * @return {*} {React.ReactNode}\r\n * @memberof AbstractListView\r\n */\r\n abstract renderExtras(hideLogHistory?: boolean): React.ReactNode;\r\n\r\n /**\r\n * Get view url for row\r\n *\r\n * @abstract\r\n * @param {*} row\r\n * @memberof AbstractListView\r\n */\r\n abstract getViewUrlFor(row: any): ViewUrl | string;\r\n\r\n\r\n /**\r\n * In case list screen has popup for View, it should return true.\r\n * In that case, needed info will be stored in job list context for client to use in appropriate way.\r\n *\r\n * @return {*} {boolean}\r\n * @memberof AbstractListView\r\n */\r\n hasViewPopup(): boolean {\r\n return false;\r\n }\r\n\r\n\r\n /**\r\n * Gets list view title. Receives the operation (as defined in constants) as a parameter so the list can customize\r\n * the title based on given context.\r\n *\r\n * @abstract\r\n * @return {*} {string}\r\n * @memberof AbstractListView\r\n */\r\n abstract getListViewTitle(opType: string|undefined): string;\r\n\r\n\r\n /**\r\n * Row can require some extra rendering. For example, when cell is clicked to open dialog with details\r\n *\r\n * @abstract\r\n * @return {*} {React.ReactNode|null}\r\n * @memberof AbstractListView\r\n */\r\n renderRowExtras(rowId: number|null, context: IJobListViewContext, cell: any, applicationContext:any) : React.ReactNode|null {\r\n return null;\r\n }\r\n \r\n\r\n /**\r\n * List view can inject content inside top right operation menu (before Settings)\r\n *\r\n * @abstract\r\n * @return {*} {React.ReactNode|null}\r\n * @memberof AbstractListView\r\n */\r\n renderInsideTopRightOpMenu(context: IJobListViewContext) : React.ReactNode|null {\r\n return null;\r\n }\r\n\r\n /**\r\n * If list view has right click context to render\r\n *\r\n * @return {*} {boolean}\r\n * @memberof AbstractListView\r\n */\r\n hasRightClickContext(): boolean {\r\n return false;\r\n }\r\n\r\n\r\n /**\r\n * List can choose to display additional context (for example menu) on cell right click\r\n *\r\n * @abstract\r\n * @return {*} {React.ReactNode|null}\r\n * @memberof AbstractListView\r\n */\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction) : React.ReactNode|null {\r\n return null;\r\n }\r\n\r\n\r\n /**\r\n * Table relies on dom id for internal calculations. Implementation can manipulate it based on context.\r\n * For example OI Hbl list has different domId for show/hide milestone data - allowing user to customize (remember)\r\n * columns for each table types\r\n *\r\n * @abstract\r\n * @return {*} {string}\r\n * @memberof AbstractListView\r\n */\r\n getTableDomIdSuffix() : string {\r\n return '';\r\n }\r\n\r\n /**\r\n * Returns if list screen has memo button. True by default, can be overridden\r\n * @returns \r\n */\r\n hasMemo(): boolean {\r\n return true;\r\n }\r\n\r\n useLogHistory(): boolean {\r\n return false;\r\n }\r\n\r\n /**\r\n * Get Utilities(MailFaxPrint) open url for row\r\n */\r\n getOpenUrlFor(row: any): string{\r\n return '';\r\n };\r\n\r\n public commandsAfterMemoLogBtn() : React.ReactNode | null {\r\n return null;\r\n }\r\n\r\n transactionImpactBtn(userId: string): React.ReactNode {\r\n return null;\r\n }\r\n\r\n resizetitleLabel(): boolean{\r\n return false;\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, {useContext, useEffect, useRef, useState} from 'react';\r\nimport Modal from 'react-modal';\r\nimport {faTimes} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\nimport styled from 'styled-components';\r\nimport useFunctionKeys from '../hooks/useFunctionKeys';\r\nimport ApplicationContext from '../ApplicationContext';\r\n\r\nconst ModalBase = styled.div`\r\n .ifms-modal-header {\r\n display: flex;\r\n align-items: center;\r\n overflow: hidden;\r\n \r\n h1 {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n font-style: normal;\r\n font-weight: bold;\r\n height: 100%;\r\n // line-height: 20px;\r\n // display: inline-block;\r\n margin: 0 !important;\r\n }\r\n\r\n .ifms-modal-close {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n font-style: normal;\r\n font-weight: bold;\r\n // line-height: 20px;\r\n height: 60%;\r\n width: 30px;\r\n margin-left: auto;\r\n cursor: pointer;\r\n }\r\n }\r\n\r\n .ifms-modal-content {\r\n padding: 20px;\r\n }\r\n\r\n .ifms-modal-content-nopadding {\r\n padding: 0px;\r\n overflow: hidden;\r\n position: relative;\r\n left: -16px;\r\n }\r\n\r\n .ifms-modal-header-draggable {\r\n cursor: all-scroll;\r\n }\r\n`;\r\n\r\nconst DefaultModalContainer = styled(ModalBase)`\r\n padding: 16px;\r\n\r\n .ifms-modal-header {\r\n justify-content: center;\r\n border-bottom: 1px solid #cfcfcf;\r\n padding-bottom: 12px;\r\n margin-left: 16px;\r\n margin-right: 16px;\r\n\r\n h1 {\r\n font-family: Inter;\r\n font-size: 14px;\r\n }\r\n\r\n .ifms-modal-close {\r\n font-family: Inter;\r\n font-size: 14px;\r\n }\r\n }\r\n`;\r\n\r\nconst BlueModalContainer = styled(ModalBase)`\r\n .ifms-modal-header {\r\n padding: 0 40px;\r\n background: #0079a4;\r\n color: white;\r\n height: 50px;\r\n\r\n h1 {\r\n font-family: sans-serif;\r\n font-size: 12px;\r\n }\r\n\r\n .ifms-modal-close {\r\n font-family: sans-serif;\r\n font-size: 14px;\r\n }\r\n }\r\n`;\r\n\r\nconst DarkModeModalContainer = styled(ModalBase)`\r\n .ifms-modal-header {\r\n padding: 0 40px;\r\n background: #6C747E;\r\n color: white;\r\n height: 50px;\r\n\r\n h1 {\r\n font-family: sans-serif;\r\n font-size: 12px;\r\n }\r\n\r\n .ifms-modal-close {\r\n font-family: sans-serif;\r\n font-size: 14px;\r\n }\r\n }\r\n`;\r\n\r\nconst ModalContentStyle:React.CSSProperties = {\r\n top: '150px',\r\n // left: '50%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n // marginRight: '-50%',\r\n // transform: 'translate(-50%, -50%)',\r\n padding: 0,\r\n zIndex: 10000,\r\n border: 'none',\r\n};\r\nconst ModalOverlayStyle:React.CSSProperties = {\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backgroundColor: 'rgba(0, 0, 0, 0.55)',\r\n zIndex: 888888\r\n};\r\nconst SearchModalOverlayStyle:React.CSSProperties = {\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backgroundColor: 'rgba(0, 0, 0, 0.55)',\r\n zIndex: 888890 /* Tooltip is not visible in Search Modal */\r\n};\r\n\r\ninterface Coord {\r\n x: number|null,\r\n y: number|null,\r\n};\r\n\r\ninterface MovedCoord {\r\n left: string|null,\r\n top: string|null,\r\n};\r\n\r\nconst lastPosition:Coord = {\r\n x: null,\r\n y: null\r\n};\r\n\r\nfunction IfmsModal({\r\n isOpen,\r\n title = undefined,\r\n onCancel = undefined,\r\n width = undefined,\r\n height = undefined,\r\n top = undefined,\r\n left = undefined,\r\n children = undefined,\r\n onShow = () => {},\r\n onHide = () => {},\r\n onAfterOpen = () => {},\r\n draggable = false,\r\n noPadding = false,\r\n isBlueHeader = false,\r\n noVerticalScroll = false,\r\n cancelOnEsc = false,\r\n columnOptionCloseOnEsc = false,\r\n memoCloseOnEsc = false,\r\n isSearch = false,\r\n}: {\r\n isOpen: boolean,\r\n title?: React.ReactNode|string|undefined,\r\n onCancel?: ((x:React.MouseEvent|string) => void)|undefined,\r\n width?: string|undefined,\r\n height?: string|undefined,\r\n top?: string|undefined,\r\n left?: string|undefined,\r\n children?: React.ReactChild|React.ReactNode|string|null|undefined,\r\n onShow?: () => void,\r\n onHide?: () => void,\r\n onAfterOpen?: () => void,\r\n draggable? : boolean,\r\n noPadding? : boolean,\r\n isBlueHeader? : boolean,\r\n noVerticalScroll? : boolean,\r\n cancelOnEsc?: boolean,\r\n columnOptionCloseOnEsc?: boolean,\r\n memoCloseOnEsc?: boolean,\r\n isSearch?: boolean,\r\n}) {\r\n useFunctionKeys({onEsc: onEscape});\r\n const appContext = useContext(ApplicationContext);\r\n \r\n const [toggle, setToggle] = useState(isOpen);\r\n const [movedCoord, setMovedCoord] = useState(null);\r\n\r\n const dragRef = useRef(false);\r\n const modalRef = useRef(null);\r\n\r\n const widthStyle = !!width ? { width } : { width: '1320px'};\r\n const widthNumber = Number(widthStyle.width.replace('px', ''));\r\n\r\n useEffect(() => {\r\n document.addEventListener('mouseup', stopDrag);\r\n document.addEventListener('mousemove', handleDrag);\r\n return () => {\r\n document.removeEventListener('mouseup', stopDrag);\r\n document.removeEventListener('mousemove', handleDrag);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (toggle !== isOpen) {\r\n setToggle(isOpen);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n if (toggle) {\r\n if (onShow) {\r\n onShow();\r\n }\r\n } else {\r\n if (onHide) {\r\n onHide();\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [toggle]);\r\n\r\n function onEscape() {\r\n const modalName = (document.getElementsByClassName('ifms-modal-header-h')[0] as HTMLElement)?.textContent;\r\n const onCloseColumnOption = modalName === \"Column Option\"; // ListView > ColumnOption\r\n const onCloseMemoPopup = modalName === \"Memo\"; //ListView > Memo & Log List > Memo Popup\r\n if ((onCloseColumnOption && columnOptionCloseOnEsc) && onCancel) {\r\n onCancel('esc');\r\n return true;\r\n }\r\n else if ((onCloseMemoPopup && memoCloseOnEsc) && onCancel) {\r\n onCancel('esc');\r\n return true;\r\n }\r\n else if (cancelOnEsc && onCancel) {\r\n onCancel('esc');\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function handleDrag(e:MouseEvent) {\r\n if (!dragRef.current) {\r\n return;\r\n }\r\n\r\n if (!modalRef || !modalRef.current) {\r\n return;\r\n }\r\n const modal = modalRef.current as HTMLElement;\r\n if (!modal) {\r\n return;\r\n }\r\n\r\n const node = modal.parentNode as HTMLElement;\r\n const rect = node.getBoundingClientRect();\r\n\r\n let lastX = lastPosition.x || e.clientX;\r\n let lastY = lastPosition.y || e.clientY;\r\n\r\n const deltaX = lastX - e.clientX;\r\n const deltaY = lastY - e.clientY;\r\n\r\n node.style.left = `${rect.left - deltaX}px`;\r\n node.style.top = `${rect.top - deltaY}px`;\r\n\r\n lastPosition.x = e.clientX;\r\n lastPosition.y = e.clientY;\r\n }\r\n\r\n function stopDrag() {\r\n dragRef.current = false;\r\n\r\n if (modalRef && modalRef.current) {\r\n const modal = modalRef.current as HTMLElement;\r\n if (modal) {\r\n const node = modal.parentNode as HTMLElement;\r\n setMovedCoord({\r\n left: node.style.left,\r\n top: node.style.top,\r\n });\r\n }\r\n }\r\n\r\n lastPosition.x = null;\r\n lastPosition.y = null;\r\n }\r\n\r\n function handleDragStart(e:React.MouseEvent) {\r\n if (draggable && !dragRef.current) {\r\n dragRef.current = true;\r\n lastPosition.x = e.clientX;\r\n lastPosition.y = e.clientY;\r\n }\r\n }\r\n\r\n const headerBaseClass = draggable ? 'ifms-modal-header ifms-modal-header-draggable' : 'ifms-modal-header';\r\n\r\n const modalContentStyle = {\r\n ...ModalContentStyle,\r\n left: !!left ? left : `${window.innerWidth / 2 - (widthNumber / 2)}px`,\r\n height,\r\n };\r\n if (top) {\r\n modalContentStyle.top = top;\r\n }\r\n\r\n if (!!movedCoord) {\r\n if (!!movedCoord.left) {\r\n modalContentStyle.left = movedCoord.left;\r\n }\r\n if (!!movedCoord.top) {\r\n modalContentStyle.top = movedCoord.top;\r\n }\r\n }\r\n\r\n if (noVerticalScroll) {\r\n modalContentStyle.overflowY = 'hidden';\r\n }\r\n\r\n switch (appContext.backgroundColor) {\r\n case 'A':\r\n modalContentStyle.background = '#E5FFE5';\r\n break;\r\n case 'I':\r\n modalContentStyle.background = '#FFFFE3';\r\n break;\r\n case 'W':\r\n modalContentStyle.background = 'white';\r\n break;\r\n } \r\n const ModalContainer = appContext.useDarkMode ? DarkModeModalContainer : isBlueHeader ? BlueModalContainer : DefaultModalContainer ;\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n

{title}

\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n {children}\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nIfmsModal.defaultProps = {\r\n onCancel: () => {},\r\n isOpen: false,\r\n draggable: false,\r\n noPadding: false,\r\n isBlueHeader: false,\r\n noVerticalScroll: false,\r\n isSearch: false,\r\n};\r\n\r\nIfmsModal.propTypes = {\r\n onCancel: PropTypes.func.isRequired,\r\n isOpen: PropTypes.bool.isRequired,\r\n draggable: PropTypes.bool.isRequired,\r\n noPadding: PropTypes.bool.isRequired,\r\n title: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\r\n width: PropTypes.string,\r\n height: PropTypes.string,\r\n top: PropTypes.string,\r\n left: PropTypes.string,\r\n onShow: PropTypes.func,\r\n onHide: PropTypes.func,\r\n onAfterOpen: PropTypes.func,\r\n isBlueHeader: PropTypes.bool.isRequired,\r\n noVerticalScroll: PropTypes.bool.isRequired,\r\n};\r\n\r\n\r\nexport default React.memo(IfmsModal);\r\n","import React from 'react';\r\n\r\nexport interface ITableEditContextState {\r\n enabled: boolean, // in view mode to don't show controls\r\n tempEditColumnIndex: number,\r\n setTempEditColumnIndex: any,\r\n doSelectCell: boolean,\r\n setDoSelectCell: any,\r\n editRowIndex: number,\r\n setEditRowIndex: (x: number) => void,\r\n editColumnIndex: number,\r\n setEditColumnIndex: (x: number) => void,\r\n deleteLine: (rowIndex: number) => boolean | Promise,\r\n addLine: () => { setDataFunc: (data: any, focusRowIndex: number | undefined) => void, curListData: any, newData: any } | undefined,\r\n rowCount: number,\r\n data: Array,\r\n rowRenderers: Array,\r\n isCellLock: any,\r\n getCellData: any,\r\n getIndexOfFirstInvalidCell?: (rowIndex: number) => number | undefined,\r\n getIndexOfFirstInvalidCellAsync?: (rowIndex: number) => Promise,\r\n canDeleteRow: ((rowIndex: number) => boolean) | undefined,\r\n canAdd: boolean | undefined,\r\n tableParentDivId: string,\r\n showTotalLineNum?: boolean,\r\n controlsAfterAddLineBtn: any,\r\n controlsBeforeAddLineBtn: any,\r\n lineSeqChange: ((seqUpDown: string, rowIndex: number) => void) | undefined,\r\n initializeFocusedCell: boolean | undefined,\r\n addRowOnArrowDownInSpecialCase: ((rowIndex?: number) => number) | undefined,\r\n shouldConfirmBeforeDelete: ((rowIndex: number) => boolean) | undefined,\r\n useTableSearch: boolean,\r\n tableColumnLength: number,\r\n}\r\n\r\nconst defaultState: ITableEditContextState = {\r\n enabled: false,\r\n tempEditColumnIndex: -1,\r\n setTempEditColumnIndex: () => { },\r\n doSelectCell: false,\r\n setDoSelectCell: () => { },\r\n editRowIndex: -1,\r\n setEditRowIndex: () => { },\r\n editColumnIndex: -1,\r\n setEditColumnIndex: () => { },\r\n deleteLine: () => false,\r\n addLine: () => undefined,\r\n rowCount: 0,\r\n data: [],\r\n rowRenderers: [],\r\n isCellLock: undefined,\r\n getCellData: undefined,\r\n getIndexOfFirstInvalidCell: () => undefined,\r\n getIndexOfFirstInvalidCellAsync: () => Promise.resolve(undefined),\r\n canDeleteRow: undefined,\r\n canAdd: undefined,\r\n tableParentDivId: '',\r\n showTotalLineNum: false,\r\n controlsAfterAddLineBtn: null,\r\n controlsBeforeAddLineBtn: null,\r\n lineSeqChange: undefined,\r\n initializeFocusedCell: undefined,\r\n addRowOnArrowDownInSpecialCase: undefined,\r\n shouldConfirmBeforeDelete: undefined,\r\n useTableSearch: false,\r\n tableColumnLength: 0,\r\n};\r\n\r\nconst TableEditContext = React.createContext(defaultState);\r\n\r\nexport default TableEditContext;\r\n","import { useEffect, useRef, useState } from 'react';\r\nimport { compareIso, dateTextToIso, dateTimeTextToIso, getDate } from '../../dateUtils';\r\nimport { ITableEditContextState } from './editing/tableEditContext';\r\nimport postal from 'postal';\r\nimport { focusNextTabable, focusTabableByIndex, getCurrentTabableIndex, getTabableElementByIndex, selectInput } from '../../util/inputUtils';\r\n\r\nconst down = 40;\r\nconst up = 38;\r\nconst left = 37;\r\nconst right = 39;\r\nconst deleteKey = 46;\r\nconst tabKey = 9;\r\nconst enterKey = 13;\r\nconst F5Key = 116;\r\nconst insertKey = 45;\r\n\r\nfunction parseCellLocation(cellId: string) {\r\n const parts = cellId.split('-');\r\n\r\n let column = -1;\r\n let row = -1;\r\n\r\n if (parts.length < 2) {\r\n // Should never happen\r\n return { column, row };\r\n }\r\n column = parseInt(parts[parts.length - 1]);\r\n row = parseInt(parts[parts.length - 2]);\r\n\r\n return { column, row };\r\n}\r\n\r\n\r\nfunction scrollCellIntoView(tableId: string, cellNode: Element) {\r\n const tableNode = document.getElementById(tableId);\r\n const header = document.getElementById(`${tableId}-header-row`);\r\n if (!tableId || !header || !tableNode) {\r\n return;\r\n }\r\n\r\n const hrect = header.getBoundingClientRect();\r\n const crect = cellNode.getBoundingClientRect();\r\n\r\n const { xVisible, yVisible, xDelta, yDelta } = isCellScrolledIntoView(tableNode, crect, hrect);\r\n\r\n if (xVisible && yVisible) {\r\n return;\r\n }\r\n\r\n if (tableNode) {\r\n tableNode.scrollTo({\r\n top: tableNode.scrollTop + yDelta,\r\n left: tableNode.scrollLeft + xDelta,\r\n behavior: 'smooth'\r\n });\r\n }\r\n}\r\n\r\nfunction isCellScrolledIntoView(tableNode: Element, crect: DOMRect, hrect: DOMRect) {\r\n const prect = tableNode.getBoundingClientRect();\r\n\r\n const xVisible = crect.left >= prect.left && ((crect.left + crect.width) <= (prect.left + prect.width));\r\n const yStart = prect.top + hrect.height;\r\n const yEnd = yStart + tableNode.clientHeight - hrect.height;\r\n const yVisible = crect.top >= yStart && (crect.top + crect.height) <= yEnd;\r\n\r\n let xDelta = 0;\r\n let yDelta = 0;\r\n\r\n if (!xVisible) {\r\n if (prect.left > crect.left) {\r\n xDelta = -Math.abs(prect.left - crect.left);\r\n } else {\r\n xDelta = (crect.left + crect.width) - (prect.left + prect.width);\r\n }\r\n }\r\n\r\n if (!yVisible) {\r\n if (crect.top < yStart) {\r\n yDelta = -Math.abs(yStart - crect.top);\r\n } else {\r\n yDelta = (crect.top + crect.height) - yEnd;\r\n }\r\n }\r\n\r\n return { xVisible, yVisible, xDelta, yDelta };\r\n}\r\n\r\nfunction getChildrenTree(x: HTMLElement, result: Array) {\r\n if (!x) {\r\n return;\r\n }\r\n\r\n const children = x.childNodes;\r\n if (children.length <= 0) {\r\n return;\r\n }\r\n\r\n children.forEach(x => {\r\n result.push(x as HTMLElement);\r\n getChildrenTree(x as HTMLElement, result);\r\n });\r\n}\r\n\r\nfunction getCellId(tableId: string, col: number) {\r\n const headerId = `${tableId}-header-${col}`;\r\n const header = document.getElementById(headerId);\r\n return header?.dataset?.columnId;\r\n}\r\n\r\nfunction getCellType(tableId: string, accessor: string) {\r\n const tableEle = document.getElementById(tableId);\r\n const cell = tableEle?.querySelector(`div[id*=\"${accessor}\"]`);\r\n if (!cell) return 'text';\r\n\r\n // Check for check mark icons\r\n if (cell.classList.contains('e-ifms-checkbox-container') || cell.classList.contains('e-ifms-checkbox')) {\r\n return 'checkbox';\r\n }\r\n // Check for date/dateTime\r\n else if (cell.classList.contains('ifms-table-date')) {\r\n return 'date'\r\n }\r\n else if (cell.classList.contains('ifms-table-number')) {\r\n return 'number'\r\n }\r\n else return 'text'\r\n}\r\n\r\nfunction getCellText(tableId: string, row: number, col: number) {\r\n const cellId = `${tableId}-cell-${row}-${col}`;\r\n const cell = document.getElementById(cellId);\r\n if (!cell) {\r\n return '';\r\n }\r\n\r\n // Check for check mark icons\r\n if (cell.getElementsByClassName('ifms-check-box-icon-true').length > 0 || cell.getElementsByClassName('e-ifms-checkbox').length > 0) {\r\n return true;\r\n }\r\n if (cell.getElementsByClassName('ifms-check-box-icon-false').length > 0 || cell.getElementsByClassName('e-ifms-checkbox-unchecked').length > 0) {\r\n return false;\r\n }\r\n\r\n // Check for date/dateTime\r\n if (cell.getElementsByClassName('ifms-table-date').length > 0) {\r\n const parseResult = dateTextToIso(cell.innerText);\r\n return parseResult.valid ? parseResult.iso : '';\r\n //return '';\r\n }\r\n if (cell.getElementsByClassName('ifms-table-datetime').length > 0) {\r\n const parseResult = dateTimeTextToIso(cell.innerText);\r\n return parseResult.valid ? parseResult.iso : '';\r\n //return '';\r\n }\r\n\r\n // Check for customized value (for example custom renderers)\r\n let actualCellValue: string | null = null;\r\n if (cell.dataset?.cellActualValue) {\r\n actualCellValue = cell.dataset.cellActualValue;\r\n }\r\n if (!actualCellValue) {\r\n const childNodes: Array = [];\r\n getChildrenTree(cell, childNodes);\r\n\r\n const childWithActualValue = childNodes.find(x => !!x.dataset?.cellActualValue);\r\n if (childWithActualValue) {\r\n actualCellValue = childWithActualValue.dataset.cellActualValue ?? '';\r\n }\r\n }\r\n\r\n if (actualCellValue) {\r\n return actualCellValue;\r\n }\r\n\r\n if (col === 0 && cell.getElementsByTagName('img')[0]?.id) //status\r\n return cell.getElementsByTagName('img')[0].id === 'blueIcon' ? 'OC' : 'PC'\r\n\r\n return cell.innerText.split('\\n')[0].replace('\\r', '');\r\n}\r\n\r\nexport default function useEditableTableNavigation(\r\n tableId: string,\r\n tableEditContext: ITableEditContextState,\r\n onDelete: ((editRowIndex: number) => Promise),\r\n add: (focusRowIndex?: number) => any,\r\n tableRef: HTMLDivElement | undefined,\r\n useVirtual: boolean\r\n) {\r\n const channel = postal.channel('ifms-filter');\r\n const tableSearchChannel = postal.channel('ifms-table-search');\r\n const inputChannel = postal.channel('ifms');\r\n const tableDataLength = tableEditContext.data.length;\r\n let presetSubscription: ISubscriptionDefinition | null = null;\r\n let tableSearchSubscription: ISubscriptionDefinition | null = null;\r\n const startCell = useRef(null);\r\n const endCell = useRef(null);\r\n const [doRemoveCellSelectArea, setDoRemoveCellSelectArea] = useState(true);\r\n const directLookupOpenRef = useRef(false);\r\n const [paymentDetailSearch, setPaymentDetailSearch] = useState('');\r\n const [paymentDetailSearchType, setPaymentDetailSearchType] = useState('');\r\n const tableEle = document.getElementById(tableId);\r\n const waitBothChangedRef = useRef(false);\r\n\r\n let isUserScroll = false;\r\n const scrollHandler = () => isUserScroll = true;\r\n\r\n useEffect(() => {\r\n if (tableEditContext.editRowIndex === -1 && tableEditContext.editColumnIndex === -1 && !waitBothChangedRef.current) {\r\n const selectedCellClass = 'data-cell-selected';\r\n const currentCellSelections = document.getElementById(`${tableId}-body`)?.querySelectorAll(`.${selectedCellClass}`);\r\n currentCellSelections?.forEach((cell) => {\r\n cell.classList.remove(selectedCellClass);\r\n });\r\n }\r\n else {\r\n if (tableEditContext.editRowIndex !== -1 && tableEditContext.editColumnIndex !== -1 && !waitBothChangedRef.current) {\r\n checkSelectedRowDisplayed(() => { doSelectTableCell(tableEditContext.editRowIndex, tableEditContext.editColumnIndex) });\r\n }\r\n }\r\n\r\n if (doRemoveCellSelectArea) {\r\n removeCellSelectArea();\r\n setDoRemoveCellSelectArea(true);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [tableEditContext.editRowIndex, tableEditContext.editColumnIndex, doRemoveCellSelectArea]);\r\n\r\n useEffect(() => {\r\n initialize();\r\n\r\n return uninitialize;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [tableRef,\r\n tableEle,\r\n tableDataLength,\r\n tableEditContext.tableColumnLength,\r\n tableEditContext.editColumnIndex,\r\n tableEditContext.editRowIndex,\r\n tableEditContext.tempEditColumnIndex,\r\n tableEditContext.tableParentDivId,\r\n tableEditContext.enabled,\r\n tableEditContext.canAdd,\r\n tableEditContext.canDeleteRow,\r\n tableEditContext.initializeFocusedCell]\r\n );\r\n\r\n useEffect(() => {\r\n if (!tableRef) return;\r\n if (tableEditContext.doSelectCell) {\r\n const editCell = tableRef.querySelector('.data-cell-selected');\r\n if (editCell) {\r\n const inputElement = editCell.querySelector('input');\r\n if (inputElement) {\r\n setSelectedRowScrollTop(tableEditContext.editRowIndex);\r\n selectInput(inputElement, true);\r\n if (inputElement.classList.contains('ifms-lookup') && directLookupOpenRef.current) {\r\n inputChannel.publish('ifms.lookup-open', {\r\n targetId: inputElement.id\r\n });\r\n }\r\n else if (inputElement.classList.contains('ifms-select')) {\r\n inputChannel.publish('ifms.select-open', {\r\n targetId: inputElement.id\r\n });\r\n }\r\n else if (inputElement.classList.contains('ifms-checkbox')) {\r\n inputChannel.publish('ifms.checkbox-check', {\r\n targetId: inputElement.id\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }, [tableRef, tableEditContext.doSelectCell, directLookupOpenRef.current])\r\n\r\n useEffect(() => {\r\n let searchCol = -1;\r\n if (paymentDetailSearch !== '' && paymentDetailSearch !== null) {\r\n if (!tableRef) return;\r\n\r\n var colName = tableEditContext.rowRenderers[tableEditContext.editColumnIndex].accessor;\r\n\r\n if (paymentDetailSearchType === 'date') {\r\n searchCol = tableEditContext.data.findIndex((x, i) => i > tableEditContext.editRowIndex &&\r\n (compareIso((getDate(x[colName]) ?? ''), paymentDetailSearch) === 0));\r\n if (searchCol === -1)\r\n searchCol = tableEditContext.data.findIndex((x) => compareIso((getDate(x[colName]) ?? ''), paymentDetailSearch) === 0);\r\n }\r\n else if (paymentDetailSearchType === 'number') {\r\n searchCol = tableEditContext.data.findIndex((x, i) => i > tableEditContext.editRowIndex && (parseFloat((x[colName] ?? 0)) === parseFloat(paymentDetailSearch)));\r\n if (searchCol === -1)\r\n searchCol = tableEditContext.data.findIndex((x) => (parseFloat((x[colName] ?? 0)) === parseFloat(paymentDetailSearch)));\r\n }\r\n else {\r\n searchCol = tableEditContext.data.findIndex((x, i) => i > tableEditContext.editRowIndex &&\r\n ((x[colName] ?? '').toString().toLowerCase().includes(paymentDetailSearch.toLowerCase())));\r\n if (searchCol === -1)\r\n searchCol = tableEditContext.data.findIndex((x) => (x[colName] ?? '').toString().toLowerCase().includes(paymentDetailSearch.toLowerCase()));\r\n }\r\n\r\n }\r\n if (searchCol !== -1) {\r\n bothChange(searchCol, tableEditContext.editColumnIndex);\r\n checkSelectedRowDisplayed(() => { doSelectTableCell(searchCol, tableEditContext.editColumnIndex) }, true, searchCol);\r\n }\r\n setPaymentDetailSearch('');\r\n }, [paymentDetailSearch]);\r\n\r\n function removeCellSelectArea() {\r\n const selectedCellClass = 'data-cell-selected-inner'\r\n const selectCellArr = document.getElementById(`${tableId}-body`)?.querySelectorAll(`.${selectedCellClass}`);\r\n selectCellArr?.forEach((cell) => {\r\n cell.classList.remove(selectedCellClass);\r\n });\r\n startCell.current = null;\r\n endCell.current = null;\r\n }\r\n\r\n function checkCellSelectArea() {\r\n if (!tableRef) return;\r\n\r\n const selectCellArr = tableRef.querySelectorAll('.data-cell-selected-inner');\r\n if (selectCellArr && selectCellArr.length > 0) {\r\n const cellRange = selectCellArr.length - 1;\r\n\r\n console.log(`startCellId: ${selectCellArr[0].id}`);\r\n console.log(`endCellId: ${selectCellArr[cellRange].id}`);\r\n\r\n const startCellId = selectCellArr[0].id.split('-');\r\n const endCellId = selectCellArr[cellRange].id.split('-');\r\n\r\n startCell.current = { row: parseInt(startCellId[startCellId.length - 2] ?? 0), column: parseInt(startCellId[startCellId.length - 1] ?? 0) };\r\n endCell.current = { row: parseInt(endCellId[endCellId.length - 2] ?? 0), column: parseInt(endCellId[endCellId.length - 1] ?? 0) };\r\n return true;\r\n } else {\r\n startCell.current = null\r\n endCell.current = null\r\n return false;\r\n }\r\n }\r\n\r\n function copyCell() {\r\n if (checkCellSelectArea()) {\r\n // area로 선택 된 경우, 각 cell의 값을 text1 \\t text2 \\t test3 \\n ... 과 같은 패턴으로 클립보드에 저장해야 함.\r\n var textarea = document.createElement('textarea');\r\n\r\n let startCol = startCell.current.column;\r\n let endCol = endCell.current.column;\r\n let startRow = startCell.current.row;\r\n let endRow = endCell.current.row;\r\n\r\n if (startCol > endCol) {\r\n startCol = endCell.current.column;\r\n endCol = startCell.current.column;\r\n }\r\n\r\n if (startRow > endRow) {\r\n startRow = endCell.current.row;\r\n endRow = startCell.current.row;\r\n }\r\n\r\n let fullText = '';\r\n\r\n for (var i = startRow; i <= endRow; i++) {\r\n for (var j = startCol; j <= endCol; j++) {\r\n let text = getCellText(tableId, i, j)?.toString() ?? \"\";\r\n fullText += text + (j !== endCol ? '\\t' : '');\r\n }\r\n fullText += '\\n';\r\n }\r\n\r\n textarea.value = fullText;\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(textarea);\r\n return true;\r\n\r\n } else {\r\n const columnId = getCellId(tableId, getSelectedCol());\r\n if (columnId) {\r\n const text = getCellText(tableId, getSelectedRow(), getSelectedCol() ?? \"\")?.toString() ?? '';\r\n if (window.isSecureContext) {\r\n navigator.clipboard.writeText(text)\r\n .then(() => { console.log(\"Copy Success\"); })\r\n .catch(() => { console.log(\"Copy Fail\"); });\r\n return true;\r\n } else {\r\n textarea = document.createElement('textarea');\r\n textarea.value = text;\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(textarea);\r\n return true;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n function onEnterKey(directLookupOpen: boolean = true, isTabKey: boolean = false) {\r\n if (!tableRef) return false;\r\n const activeElement = document.activeElement as HTMLElement;\r\n directLookupOpenRef.current = directLookupOpen;\r\n\r\n removeCellSelectArea();\r\n\r\n const editCell = tableRef.querySelector('.data-cell-selected');\r\n if (editCell) {\r\n const curElement = editCell.querySelector(`.table-cell-disabled`);\r\n if (!curElement) {\r\n tableEditContext.setTempEditColumnIndex(tableEditContext.editColumnIndex);\r\n }\r\n else {\r\n tableEle?.focus();\r\n }\r\n }\r\n else {\r\n if (isLookupCell(tableEditContext.editRowIndex, tableEditContext.editColumnIndex) && !isTabKey)\r\n return false;\r\n else {\r\n if (tableRef.contains(activeElement)) activeElement.blur();\r\n tableEditContext.setTempEditColumnIndex(-1);\r\n doSelectTableCell(tableEditContext.editRowIndex, tableEditContext.editColumnIndex);\r\n }\r\n\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function bothChange(row: number, col: number) {\r\n if (tableEditContext.editColumnIndex === col) {\r\n setSelectedRow(row, false);\r\n }\r\n else if (tableEditContext.editRowIndex === row) {\r\n setSelectedCol(col, false);\r\n }\r\n else {\r\n setSelectedRow(row, true);\r\n setSelectedCol(col, false);\r\n }\r\n }\r\n\r\n function setSelectedCol(c: number, waitBothChanged: boolean = false) {\r\n waitBothChangedRef.current = waitBothChanged;\r\n if (c === 0 && hasIndicatorCell()) c = c + 1;\r\n tableEditContext.setEditColumnIndex(c);\r\n }\r\n\r\n function setSelectedRow(c: number, waitBothChanged: boolean = false) {\r\n waitBothChangedRef.current = waitBothChanged;\r\n tableEditContext.setEditRowIndex(c);\r\n }\r\n\r\n function getSelectedCol() {\r\n waitBothChangedRef.current = false;\r\n return tableEditContext.editColumnIndex;\r\n }\r\n\r\n function getSelectedRow() {\r\n return tableEditContext.editRowIndex;\r\n }\r\n\r\n function subscribeChannels() {\r\n presetSubscription = postal.subscribe({\r\n channel: 'ifms-filter',\r\n topic: 'ifms-filter.filterPreset',\r\n callback: () => onSearch(),\r\n });\r\n tableSearchSubscription = postal.subscribe({\r\n channel: 'ifms-table-search-value',\r\n topic: 'ifms-table-search-value.search',\r\n callback: ({ value, field }) => {\r\n setPaymentDetailSearch(value);\r\n setPaymentDetailSearchType(field);\r\n },\r\n });\r\n }\r\n\r\n function unsubscribeChannels() {\r\n if (presetSubscription) {\r\n postal.unsubscribe(presetSubscription);\r\n }\r\n if (tableSearchSubscription) {\r\n postal.unsubscribe(tableSearchSubscription);\r\n }\r\n }\r\n\r\n function initialize() {\r\n subscribeChannels();\r\n tableRef?.addEventListener('keydown', onTableKeyDown);\r\n tableRef?.addEventListener('click', onTableClick);\r\n tableRef?.addEventListener('focusout', onFocusOut);\r\n tableEle?.addEventListener('scroll', onScroll);\r\n tableEle?.addEventListener('wheel', scrollHandler);\r\n }\r\n\r\n function uninitialize() {\r\n unsubscribeChannels();\r\n tableRef?.removeEventListener('keydown', onTableKeyDown);\r\n tableRef?.removeEventListener('click', onTableClick);\r\n tableRef?.removeEventListener('focusout', onFocusOut);\r\n tableEle?.removeEventListener('scroll', onScroll);\r\n tableEle?.removeEventListener('wheel', scrollHandler);\r\n }\r\n\r\n function findCell(element: Element) {\r\n const cellIdPrefix = `${tableId}-cell-`;\r\n\r\n for (let i = 0; i <= 7; i++) {\r\n if (!element) {\r\n break;\r\n }\r\n\r\n if (element.id && element.id.startsWith(cellIdPrefix)) {\r\n return element;\r\n }\r\n\r\n element = element.parentNode as Element;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n function onScroll() {\r\n if (!tableRef || !useVirtual || !isUserScroll) return;\r\n\r\n const activeElement = document.activeElement as HTMLElement;\r\n const editCell = tableRef.getElementsByClassName('data-cell-selected');\r\n const rowId = `${tableId}-row-${getSelectedRow()}`;\r\n const row = tableRef.querySelector(`#${rowId}`);\r\n\r\n if (row && editCell.length === 0) {\r\n onEnterKey();\r\n if (tableRef.contains(activeElement)) tableEle?.focus();\r\n doSelectTableCell(tableEditContext.editRowIndex, tableEditContext.editColumnIndex, false);\r\n }\r\n\r\n isUserScroll = false;\r\n }\r\n\r\n function onFocusOut(e: FocusEvent) {\r\n setTimeout(() => {\r\n const relatedTarget = e.relatedTarget as Element;\r\n const reactModal = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n\r\n if (tableRef && relatedTarget && !tableRef.contains(relatedTarget)) {\r\n if ((reactModal && !reactModal.contains(tableRef)) || document.querySelector('[id*=lookuptable]') || document.querySelector('[class*=ifms-select-box]')) return;\r\n\r\n removeCellSelectArea();\r\n clearTableSelection();\r\n tableEditContext.setTempEditColumnIndex(-1);\r\n }\r\n }, 10);\r\n }\r\n\r\n function onTableClick(e: MouseEvent) {\r\n if (!tableRef || !tableRef.contains(document.activeElement)) return;\r\n\r\n const target = e.target as Element;\r\n\r\n if (Array.from(target?.classList).some(x => x.startsWith('ifms-dialog-button'))) return;\r\n\r\n const reactModal = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if ((reactModal && !reactModal.contains(tableRef)) || document.querySelector('[id*=lookuptable]') || document.querySelector('[class*=ifms-select-box]')) return;\r\n\r\n const { row, column } = parseCellLocation(findCell(target)?.id ?? '');\r\n\r\n if ((row === -1 || column === -1)) {\r\n const selectCellArr = tableRef.querySelectorAll('.data-cell-selected-inner');\r\n const header = document.getElementById(`${tableId}-header-row`);\r\n if (selectCellArr && selectCellArr.length === 0 && tableRef.contains(target) && !header?.contains(target)) {\r\n const newRowIndex = tableEditContext.addRowOnArrowDownInSpecialCase\r\n ? tableEditContext.addRowOnArrowDownInSpecialCase()\r\n : tableDataLength;\r\n add(newRowIndex);\r\n //tableEditContext.setTempEditColumnIndex(getFirsFocusableColumnIndex(getSelectedRow() + 1));\r\n }\r\n else {\r\n if (!document.getElementById('table-footer')?.contains(target)) {\r\n clearTableSelection();\r\n }\r\n setDoRemoveCellSelectArea(false);\r\n }\r\n }\r\n else {\r\n if (tableEditContext.editColumnIndex === column && tableEditContext.editRowIndex === row) {\r\n directLookupOpenRef.current = true;\r\n if (!target.closest('.table-cell-disabled') && !target.querySelectorAll('.table-cell-disabled').length)\r\n tableEditContext.setTempEditColumnIndex(column);\r\n }\r\n else {\r\n tableEditContext.setTempEditColumnIndex(-1);\r\n bothChange(row, column);\r\n }\r\n }\r\n }\r\n\r\n function handleTableFocusNavigation(currentNode: HTMLElement, elementClassName: string, isForward: boolean, e: Event) {\r\n if (elementClassName.includes('-hideforfocus-')) {\r\n const tableId = elementClassName.split('-hideforfocus-')[0];\r\n const tableElement = document.getElementById(tableId);\r\n\r\n if (tableElement) {\r\n currentNode?.blur();\r\n tableElement.focus();\r\n\r\n const tabKeyEvent = new KeyboardEvent('keydown', {\r\n key: 'Tab',\r\n code: 'Tab',\r\n keyCode: 9,\r\n which: 9,\r\n shiftKey: !isForward,\r\n bubbles: true,\r\n cancelable: true\r\n });\r\n\r\n tableElement.dispatchEvent(tabKeyEvent);\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n function onTableKeyDown(e: KeyboardEvent) {\r\n if (!tableRef || !tableRef.contains(document.activeElement)) return;\r\n\r\n const reactModal = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if ((reactModal && !reactModal.contains(tableRef)) || document.querySelector('[id*=lookuptable]') || document.querySelector('[class*=ifms-select-box]')) return;\r\n\r\n const currentNode = e.target as HTMLInputElement;\r\n if (Array.from(currentNode?.classList).some(x => x.startsWith('ifms-dialog-button'))) return;\r\n\r\n const editColIndex = getSelectedCol();\r\n const editRowIndex = getSelectedRow();\r\n const tempEditColumnIndex = tableEditContext.tempEditColumnIndex;\r\n\r\n if (e.keyCode === down || e.keyCode === up || e.keyCode === left || e.keyCode === right) {\r\n const cellId = `${tableId}-cell-${editRowIndex}-${editColIndex}`;\r\n const cell = tableRef.querySelector(`#${cellId}`);\r\n const inputElement = cell?.querySelector('input');\r\n if (tempEditColumnIndex === -1) {\r\n navigate(e.keyCode, editRowIndex, editColIndex);\r\n }\r\n else if (inputElement?.classList.contains('ifms-checkbox')) {\r\n onEnterKey();\r\n navigate(e.keyCode, editRowIndex, editColIndex);\r\n }\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n else if ((e.keyCode === deleteKey) || (e.keyCode === 68 && e.ctrlKey)) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n if (tempEditColumnIndex === -1)\r\n onDelete(editRowIndex);\r\n }\r\n else if (e.keyCode === tabKey) {\r\n const bottomHideFocusEle = document?.querySelector(`div[class*=\"${tableId}-hideforfocus-bottom\"]`) as HTMLElement;\r\n const topHideFocusEle = document?.querySelector(`div[class*=\"${tableId}-hideforfocus-top\"]`) as HTMLElement;\r\n if (e.shiftKey) { //Shift + Tab\r\n if (tempEditColumnIndex === -1) {\r\n const isFirstColumn = (editColIndex === 1 && hasIndicatorCell()) || editColIndex === 0;\r\n if (isFirstColumn) {\r\n if (editRowIndex === 0) {\r\n const newIndex = getCurrentTabableIndex(topHideFocusEle) - 1;\r\n if (newIndex !== -1) {\r\n const prevElementClassName = getTabableElementByIndex(newIndex).className;\r\n // Focus할 다음 필드가 Table이라면\r\n if (prevElementClassName.includes('-hideforfocus-'))\r\n handleTableFocusNavigation(currentNode, prevElementClassName, false, e);\r\n else\r\n clearTableSelection();\r\n\r\n focusTabableByIndex(newIndex);\r\n }\r\n else {\r\n bothChange(tableDataLength - 1, tableEditContext.tableColumnLength - 1);\r\n }\r\n }\r\n else {\r\n bothChange(editRowIndex - 1, tableEditContext.tableColumnLength - 1);\r\n }\r\n }\r\n else {\r\n if (editColIndex === -1 && editRowIndex === -1) {\r\n if (tableDataLength === 0) {\r\n const newIndex = getCurrentTabableIndex(topHideFocusEle) - 1;\r\n const prevElementClassName = getTabableElementByIndex(newIndex).className;\r\n // Focus할 다음 필드가 Table이라면\r\n if (prevElementClassName.includes('-hideforfocus-'))\r\n handleTableFocusNavigation(currentNode, prevElementClassName, false, e);\r\n else\r\n focusTabableByIndex(newIndex);\r\n }\r\n else {\r\n bothChange(tableDataLength - 1, tableEditContext.tableColumnLength - 1);\r\n }\r\n }\r\n else {\r\n setSelectedCol(editColIndex - 1);\r\n }\r\n }\r\n }\r\n else {\r\n onEnterKey();\r\n if (editColIndex !== 0) {\r\n setSelectedCol(editColIndex - 1);\r\n }\r\n else {\r\n if (editRowIndex !== 0) {\r\n bothChange(editRowIndex - 1, tableEditContext.tableColumnLength - 1);\r\n }\r\n else {\r\n clearTableSelection();\r\n const newIndex = getCurrentTabableIndex(topHideFocusEle) - 1;\r\n focusTabableByIndex(newIndex);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (tempEditColumnIndex === -1) {\r\n if (editColIndex !== tableEditContext.tableColumnLength - 1) {\r\n if (editColIndex === -1 && editRowIndex === -1) {\r\n if (tableDataLength === 0) {\r\n //다음 필드가 Table이라면\r\n const nextTabableElementClassName = focusNextTabable(bottomHideFocusEle as HTMLInputElement, true)?.className;\r\n if (nextTabableElementClassName && nextTabableElementClassName.includes('-hideforfocus-'))\r\n handleTableFocusNavigation(currentNode, nextTabableElementClassName, true, e);\r\n else\r\n focusNextTabable(bottomHideFocusEle, false, true);\r\n }\r\n else {\r\n bothChange(0, hasIndicatorCell() ? 1 : 0);\r\n }\r\n }\r\n else {\r\n setSelectedCol(editColIndex + 1);\r\n }\r\n }\r\n else {\r\n if (editRowIndex !== tableDataLength - 1) {\r\n bothChange(editRowIndex + 1, 0);\r\n }\r\n else {\r\n clearTableSelection();\r\n\r\n //다음 필드가 Table이라면\r\n const nextTabableElementClassName = focusNextTabable(bottomHideFocusEle as HTMLInputElement, true)?.className;\r\n if (nextTabableElementClassName && nextTabableElementClassName.includes('-hideforfocus-'))\r\n handleTableFocusNavigation(currentNode, nextTabableElementClassName, true, e);\r\n else\r\n focusNextTabable(bottomHideFocusEle, false, true);\r\n }\r\n }\r\n }\r\n else {\r\n onEnterKey(true, true);\r\n if (editColIndex !== tableEditContext.tableColumnLength - 1) {\r\n setSelectedCol(editColIndex + 1);\r\n }\r\n else {\r\n if (editRowIndex !== tableDataLength - 1) {\r\n bothChange(editRowIndex + 1, 0);\r\n }\r\n else {\r\n clearTableSelection();\r\n focusNextTabable(bottomHideFocusEle, false, true);\r\n }\r\n }\r\n }\r\n }\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n else if (e.keyCode === enterKey) {\r\n if (!isDisplayedRow(tableEditContext.editRowIndex)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n checkSelectedRowDisplayed(() => { onEnterKey(isDisplayedRow(tableEditContext.editRowIndex)) });\r\n }\r\n else if (e.ctrlKey && e.keyCode === 67) { //copy\r\n copyCell();\r\n }\r\n else if (e.keyCode === F5Key) {\r\n onSearch();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n else if (e.keyCode === insertKey) {\r\n checkSelectedRowDisplayed(() => { add(editRowIndex) });\r\n }\r\n else {\r\n if (editColIndex === -1 || editRowIndex === -1) return;\r\n if (e.key === 'Shift' || (e.keyCode === 83 && e.ctrlKey)) {\r\n return; // Shift만 혹은 Ctrl+S를 눌렀을 때는 이벤트 처리하지 않고 종료 \r\n }\r\n const isBasicLetter = e.keyCode >= 65 && e.keyCode <= 90; // A-Z\r\n const isBasicNumber = e.keyCode >= 48 && e.keyCode <= 57; // 0-9\r\n const isNumPadNumber = e.keyCode >= 96 && e.keyCode <= 105; // Numpad 0-9\r\n const numpadOperators = [\r\n 111, // Numpad / (나눗셈)\r\n 106, // Numpad * (곱셈)\r\n 109, // Numpad - (뺄셈)\r\n 107, // Numpad + (덧셈)\r\n 110 // Numpad . (소수점)\r\n ];\r\n const specialChars = [ // 특수문자 (Shift + 숫자키 등으로 입력되는 문자들)\r\n 192, // `(백틱)\r\n 189, // -(하이픈)\r\n 187, // =(등호)\r\n 219, // [(왼쪽 대괄호)\r\n 221, // ](오른쪽 대괄호)\r\n 220, // \\(백슬래시)\r\n 186, // ;(세미콜론)\r\n 222, // '(작은따옴표)\r\n 188, // ,(쉼표)\r\n 190, // .(마침표)\r\n 191 // /(슬래시)\r\n ];\r\n // 허용할 특수키들\r\n const allowedKeys = [\r\n //8, // Backspace\r\n 16, // Shift\r\n 32, // Spacebar\r\n ];\r\n\r\n const isAllowed =\r\n isBasicLetter ||\r\n isBasicNumber ||\r\n isNumPadNumber ||\r\n numpadOperators.includes(e.keyCode) ||\r\n specialChars.includes(e.keyCode) ||\r\n allowedKeys.includes(e.keyCode);\r\n\r\n if (isAllowed && tempEditColumnIndex === -1) {\r\n const editCell = tableRef.querySelector('.data-cell-selected');\r\n const inputElement = editCell?.querySelector('input');\r\n if (editCell && inputElement && inputElement?.classList.contains('ifms-checkbox') && e.keyCode !== 32)\r\n return;\r\n\r\n if (!isDisplayedRow(tableEditContext.editRowIndex)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n checkSelectedRowDisplayed(() => { onEnterKey(e.keyCode === 13); });\r\n }\r\n }\r\n }\r\n\r\n function onSearch() {\r\n const columnId = getCellId(tableId, getSelectedCol());\r\n if (columnId) {\r\n if (tableEditContext.useTableSearch) {\r\n if (tableEditContext.tempEditColumnIndex !== -1) onEnterKey();\r\n tableSearchChannel.publish('ifms-table-search.open',\r\n {\r\n columnId,\r\n value: getCellText(tableId, getSelectedRow(), tableEditContext.editColumnIndex),\r\n //GetcellText를 하면 amount 1000이 1,000으로 넘어와서 Getdecimal을 하면 1로 변환됨\r\n numValue: tableEditContext.data[tableEditContext.editRowIndex][columnId ?? ''],\r\n type: getCellType(tableId, columnId),\r\n cur: tableEditContext.data[tableEditContext.editRowIndex].currency\r\n });\r\n return true;\r\n }\r\n\r\n if (tableEditContext.initializeFocusedCell === undefined) return;\r\n\r\n channel.publish('ifms-filter.preset', { columnId, value: getCellText(tableId, getSelectedRow(), tableEditContext.editColumnIndex) });\r\n return true;\r\n }\r\n }\r\n\r\n function hasIndicatorCell(): boolean {\r\n return !!tableEle?.querySelector('.ifms-table-indicator')\r\n }\r\n\r\n function isLookupCell(rowIndex: number, colIndex: number): boolean {\r\n if (!tableRef) return true;\r\n const editCellClass = `.ifms-editable-cell-${rowIndex}-${colIndex}`;\r\n const editCell = tableRef.querySelector(editCellClass);\r\n if (!editCell) {\r\n return false;\r\n }\r\n\r\n return !!editCell.querySelector('.ifms-lookup');\r\n }\r\n\r\n function isDisplayedRow(rowNum: number) {\r\n if (!tableEle) return false;\r\n const rowsEle = document.getElementById(`${tableId}-body`)?.querySelector('div[role=\"row\"]') as HTMLDivElement;\r\n const header = document.getElementById(`${tableId}-header-row`);\r\n const rowHeight = rowsEle.clientHeight;\r\n const maxDisplayRowNum = Math.floor(((tableEle.clientHeight ?? 0) - (header?.clientHeight ?? 0)) / rowHeight);\r\n\r\n return Math.ceil((tableEle.scrollTop - 3) / rowHeight) <= rowNum && Math.floor(maxDisplayRowNum + ((tableEle.scrollTop + 3) / rowHeight)) >= rowNum\r\n }\r\n\r\n function setSelectedRowScrollTop(findIndex: number) {\r\n if (!tableEle) return;\r\n const selectedRowIndex = findIndex;\r\n if (isDisplayedRow(selectedRowIndex)) return;\r\n const rowsEle = document.getElementById(`${tableId}-body`)?.querySelector('div[role=\"row\"]') as HTMLDivElement;\r\n\r\n const rowHeight = rowsEle.clientHeight;\r\n const header = document.getElementById(`${tableId}-header-row`);\r\n const maxDisplayRowNum = Math.floor(((tableEle.clientHeight ?? 0) - (header?.clientHeight ?? 0)) / rowHeight);\r\n\r\n let newScrollTop = 0;\r\n\r\n if (selectedRowIndex + maxDisplayRowNum > tableDataLength)\r\n newScrollTop = (tableDataLength - maxDisplayRowNum) * rowHeight;\r\n else newScrollTop = selectedRowIndex * rowHeight;\r\n\r\n let scrollToOptions = {\r\n top: newScrollTop,\r\n }\r\n\r\n tableEle.scrollTo(scrollToOptions);\r\n }\r\n\r\n function checkSelectedRowDisplayed(callback: any, forceFind: boolean = false, findRowIndex: number = -1) {\r\n if (!tableRef) return;\r\n\r\n const waitForSelectedRowDisplayed = (renderCallback: () => void) => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(renderCallback);\r\n });\r\n };\r\n\r\n const selectedRowIndex = findRowIndex === -1 ? getSelectedRow() : findRowIndex;\r\n\r\n const rowId = `${tableId}-row-${selectedRowIndex}`;\r\n const row = tableRef.querySelector(`#${rowId}`);\r\n //const editCell = tableRef.querySelector('.data-cell-selected');\r\n\r\n if (row && !forceFind) {\r\n callback();\r\n }\r\n else {\r\n setSelectedRowScrollTop(selectedRowIndex);\r\n\r\n waitForSelectedRowDisplayed(() => {\r\n doSelectTableCell(selectedRowIndex, tableEditContext.editColumnIndex);\r\n callback();\r\n });\r\n }\r\n }\r\n\r\n function navigate(keyCode: number, rowIndex: number, columnIndex: number) {\r\n return checkSelectedRowDisplayed(() => {\r\n if (!tableRef || !tableRef.offsetParent) return;\r\n const isFirstColumn = (columnIndex === 1 && hasIndicatorCell()) || columnIndex === 0;\r\n\r\n if (keyCode === up) {\r\n if (rowIndex === 0) {\r\n return;\r\n }\r\n setSelectedRow(rowIndex - 1)\r\n } else if (keyCode === down) {\r\n if (tableEditContext.addRowOnArrowDownInSpecialCase) {\r\n const newRowIndex = tableEditContext.addRowOnArrowDownInSpecialCase(rowIndex);\r\n if (newRowIndex === -1) {\r\n if (rowIndex < tableDataLength - 1) {\r\n setSelectedRow(rowIndex + 1);\r\n }\r\n }\r\n else {\r\n if (rowIndex < tableDataLength - 1)\r\n setSelectedRow(rowIndex + 1);\r\n else\r\n add(newRowIndex);\r\n }\r\n } else if (rowIndex === tableDataLength - 1) {\r\n add(tableDataLength);\r\n } else {\r\n if (rowIndex < tableDataLength - 1) {\r\n setSelectedRow(rowIndex + 1);\r\n }\r\n }\r\n } else if (keyCode === left) {\r\n if (isFirstColumn) return;\r\n setSelectedCol(columnIndex - 1);\r\n } else if (keyCode === right) {\r\n if (columnIndex === tableEditContext.tableColumnLength - 1) return;\r\n setSelectedCol(columnIndex + 1);\r\n }\r\n });\r\n }\r\n\r\n function doSelectTableCell(row: number, col: number, moveScroll: boolean = true) {\r\n if (row < 0 || !tableRef) {\r\n return false;\r\n }\r\n const selectedCellClass = 'data-cell-selected';\r\n const cellId = `${tableId}-cell-${row}-${col}`;\r\n const currentCellSelections = tableRef.querySelectorAll(`.${selectedCellClass}`);\r\n\r\n if (currentCellSelections && currentCellSelections.length > 0) {\r\n // if (col === -1) {\r\n // currentCellSelections[0].classList.remove(selectedCellClass);\r\n // return;\r\n // }\r\n\r\n // if (currentCellSelections[0].id === cellId) {\r\n // // Required cell already selected\r\n // return false;\r\n // } else {\r\n currentCellSelections.forEach((cell) => {\r\n cell.classList.remove(selectedCellClass);\r\n });\r\n //}\r\n }\r\n\r\n const cell = tableRef.querySelector(`#${cellId}`);\r\n if (cell) {\r\n cell.classList.add(selectedCellClass);\r\n if (moveScroll) scrollCellIntoView(tableId, cell);\r\n const reactModal = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if (reactModal && !reactModal.contains(tableRef)) return true;\r\n tableEle?.focus();\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function clearTableSelection() {\r\n setSelectedRow(-1, true);\r\n setSelectedCol(-1, false);\r\n }\r\n\r\n return {\r\n clearTableSelection,\r\n };\r\n}\r\n","import React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport postal from 'postal';\r\nimport TableEditContext from './tableEditContext';\r\nimport useEditableTableNavigation from '../useEditableTableNavigation';\r\nimport _ from 'lodash';\r\nimport { ApplicableTableSettings } from '../../../tableSettings';\r\nimport useDeepCompareEffect from '../../../hooks/useDeepCompareEffect';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport { isEveryPropertyEmpty } from '../../../util';\r\n\r\nexport type TableEditControlsHandle = {\r\n setTableReference: (tableReference: HTMLDivElement) => void,\r\n add: () => void,\r\n};\r\n\r\ntype TableEditControlsProps = {\r\n tableOptions: ApplicableTableSettings,\r\n}\r\n\r\nconst TableEditControlsImpl: React.ForwardRefRenderFunction = (props, ref) => {\r\n const { tableOptions } = props;\r\n const tableIdRef = useRef('');\r\n const focusColumnRef = useRef(-1);\r\n\r\n let enterSubscription: ISubscriptionDefinition | null = null;\r\n\r\n function subscribeChannels() {\r\n enterSubscription = postal.subscribe({\r\n channel: 'ifms',\r\n topic: 'ifms.editable-table-onEnter',\r\n callback: (data = { backFocus: false, changeFocus: true, element:HTMLElement }) => {\r\n onEnter(data.backFocus, data.changeFocus, data.element);\r\n },\r\n }); \r\n }\r\n\r\n function unsubscribeChannels() {\r\n if (enterSubscription) {\r\n postal.unsubscribe(enterSubscription);\r\n }\r\n }\r\n const [tableId, _setTableId] = useState('');\r\n const [tick, setTick] = useState(0); // To be able to rerender based on observer changes\r\n\r\n const observer = useRef(null);\r\n const tableContainerRef = useRef();\r\n\r\n const tableEditContext = useContext(TableEditContext);\r\n //const [tempEditColumnIndex, setTempEditColumnIndex] = useState(tableEditContext.editColumnIndex); //Edit Mode일 때의 Edit Col Index\r\n const tableDataLength = tableEditContext.data.length;\r\n const tableParentDivId = tableEditContext.tableParentDivId;\r\n const { clearTableSelection } = useEditableTableNavigation(tableOptions.tableName, tableEditContext, onDelete, add, tableContainerRef.current, tableOptions.useVirtual);\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n \r\n function setTableId(id: string) {\r\n tableIdRef.current = id;\r\n _setTableId(id);\r\n }\r\n\r\n React.useImperativeHandle(ref, () => ({\r\n setTableReference,\r\n add,\r\n }));\r\n\r\n useEffect(() => {\r\n if (tableEditContext.initializeFocusedCell && tableDataLength > 0) {\r\n setTimeout(() => {\r\n setSelectedCol(1);\r\n setSelectedRow(0);\r\n }, 10);\r\n }\r\n }, [tableEditContext.initializeFocusedCell, tableDataLength])\r\n\r\n useDeepCompareEffect(() => {\r\n initialize();\r\n return uninitialize;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [tableParentDivId, tableEditContext, tableId]);\r\n\r\n function setSelectedCol(c: number) {\r\n tableEditContext.setEditColumnIndex(c);\r\n }\r\n\r\n function setSelectedRow(c: number) {\r\n tableEditContext.setEditRowIndex(c);\r\n }\r\n\r\n function initialize() {\r\n subscribeChannels();\r\n }\r\n\r\n function uninitialize() {\r\n unsubscribeChannels();\r\n uninitializeObserver();\r\n }\r\n\r\n function initializeObserver(targetNode: HTMLDivElement) {\r\n if (!targetNode) {\r\n return;\r\n }\r\n\r\n if (observer && observer.current) {\r\n uninitializeObserver();\r\n }\r\n\r\n const observerConfig = {\r\n attributes: true,\r\n childList: true,\r\n subtree: true,\r\n };\r\n\r\n observer.current = new MutationObserver(observe);\r\n observer.current.observe(targetNode, observerConfig);\r\n\r\n // Run initially for getting initial values\r\n observe();\r\n }\r\n\r\n function uninitializeObserver() {\r\n if (observer && observer.current) {\r\n observer.current.disconnect();\r\n }\r\n }\r\n\r\n function isScrolledIntoView(container: HTMLElement, row: HTMLElement) {\r\n const trect = container.getBoundingClientRect();\r\n const rect = row.getBoundingClientRect();\r\n\r\n const viewStart = trect.top;\r\n const viewEnd = trect.top + trect.height;\r\n\r\n return rect.top - 20 >= viewStart && (rect.top + rect.height) <= viewEnd; //20 = header height\r\n }\r\n\r\n function makeSureControlsAreScrolledIntoView() {\r\n if (!tableContainerRef.current) {\r\n return;\r\n }\r\n\r\n const tableNode = tableContainerRef.current.querySelector('div[role=\"table\"]') as HTMLElement;\r\n if (!tableNode) {\r\n return;\r\n }\r\n\r\n const controlsInTable = tableContainerRef.current.querySelector('.data-row-selected')?.parentElement as HTMLElement;\r\n if (!controlsInTable) {\r\n return;\r\n }\r\n\r\n if (!isScrolledIntoView(tableNode, controlsInTable)) {\r\n controlsInTable.scrollIntoView({ behavior: 'smooth', block: 'end' });\r\n }\r\n }\r\n\r\n function observe() {\r\n if (!tableContainerRef.current) {\r\n return;\r\n }\r\n\r\n const tableNode = tableContainerRef.current.querySelector('div[role=\"table\"]');\r\n if (tableNode && tableNode.id && tableNode.id !== tableId) {\r\n setTableId(tableNode.id);\r\n setTick(tick + 1);\r\n }\r\n }\r\n\r\n function setTableReference(container: HTMLDivElement) {\r\n if (container) {\r\n tableContainerRef.current = container;\r\n initializeObserver(container);\r\n }\r\n }\r\n\r\n async function onDelete(editRowIndex: number) {\r\n const curEditRowIndex = tableEditContext.editRowIndex;\r\n const tempEditRowIndex = typeof editRowIndex === 'number' ? editRowIndex : curEditRowIndex\r\n const canBeDeleted = tableEditContext.canDeleteRow ? tableEditContext.canDeleteRow(tableEditContext.editRowIndex) : true;\r\n if (tempEditRowIndex < 0 || !tableEditContext.enabled || !canBeDeleted) {\r\n return; // Should never happen\r\n }\r\n\r\n const editablePropertyNames = tableOptions.rowRenderers.filter((x: any) => !!x.EditCell).map((x: any) => x.accessor);\r\n\r\n const shouldConfirmDelete = (rowIndex: number): boolean => {\r\n if (tableEditContext.shouldConfirmBeforeDelete) {\r\n return tableEditContext.shouldConfirmBeforeDelete(rowIndex);\r\n }\r\n \r\n return !isEveryPropertyEmpty(\r\n _.pick(tableEditContext.data[rowIndex], editablePropertyNames)\r\n );\r\n };\r\n \r\n const showDeleteConfirmDialog = async () => {\r\n return await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n Do you want to delete line item?\r\n
\r\n );\r\n };\r\n\r\n if (shouldConfirmDelete(tempEditRowIndex)) {\r\n const confirmed = await showDeleteConfirmDialog();\r\n if (!confirmed) {\r\n return;\r\n }\r\n }\r\n\r\n const deleted = await tableEditContext.deleteLine(tempEditRowIndex);\r\n\r\n if (deleted) {\r\n if (tableDataLength === 1) {\r\n add(0, tableEditContext.editColumnIndex);\r\n }\r\n else if (curEditRowIndex === tableDataLength - 1)\r\n setSelectedRow(curEditRowIndex - 1)\r\n }\r\n\r\n focusColumnRef.current = -1;\r\n }\r\n\r\n function onEnter(backFocus: boolean, changeFocus:boolean, element:HTMLElement) {\r\n if(!tableContainerRef.current?.contains(element)) return;\r\n\r\n tableEditContext.setTempEditColumnIndex(-1);\r\n const curEditColIndex = tableEditContext.editColumnIndex;\r\n if (curEditColIndex === -1) return;\r\n\r\n const lastIndex = tableEditContext.tableColumnLength - 1;\r\n\r\n const shouldMoveColumn = changeFocus && ((backFocus && curEditColIndex !== 0) || (!backFocus && curEditColIndex !== lastIndex));\r\n\r\n if (shouldMoveColumn) {\r\n const newIndex = backFocus ? curEditColIndex - 1 : curEditColIndex + 1;\r\n setSelectedCol(newIndex);\r\n }\r\n else {\r\n const cellId = `${tableId}-cell-${tableEditContext.editRowIndex}-${curEditColIndex}`;\r\n const cell = document.getElementById(cellId);\r\n\r\n if (cell) {\r\n cell.classList.add('data-cell-selected');\r\n }\r\n }\r\n\r\n document.getElementById(tableId)?.focus();\r\n return true;\r\n }\r\n\r\n function getFirsFocusableColumnIndex(rowIndex: number): number {\r\n const tableNode = tableContainerRef.current as HTMLDivElement;\r\n let firstSelectableColumnIndex = 0;\r\n\r\n for (; firstSelectableColumnIndex < tableEditContext.tableColumnLength; firstSelectableColumnIndex++) {\r\n const editCellClass = `.ifms-editable-cell-${rowIndex}-${firstSelectableColumnIndex}`;\r\n const editCell = tableNode.querySelector(editCellClass);\r\n\r\n if (!editCell) {\r\n continue;\r\n }\r\n const hasDisabledChild = Array.from(editCell.children).some(child => \r\n child.classList.contains('table-cell-disabled')\r\n );\r\n if (!hasDisabledChild) {\r\n break;\r\n }\r\n }\r\n\r\n return firstSelectableColumnIndex;\r\n }\r\n\r\n function add(focusRowIndex?: number, focusColIndex?: number) {\r\n if (!tableEditContext.enabled || (tableEditContext.canAdd !== undefined && !tableEditContext.canAdd)) return;\r\n let added = false;\r\n\r\n const result = tableEditContext.addLine();\r\n if (result) {\r\n tableEditContext.setTempEditColumnIndex(-1);\r\n const { setDataFunc, newData, curListData } = result;\r\n let tempCurListData = _.cloneDeep(curListData);\r\n\r\n if (focusRowIndex !== undefined) {\r\n tempCurListData.splice(focusRowIndex, 0, newData);\r\n } else {\r\n tempCurListData.push(newData);\r\n }\r\n setDataFunc(tempCurListData, focusRowIndex);\r\n added = true;\r\n\r\n if (added) {\r\n let rowCount = 0;\r\n if (typeof added === 'boolean') rowCount = tableEditContext.rowCount - 1;\r\n\r\n clearTableSelection();\r\n setSelectedRow(focusRowIndex === undefined ? rowCount : focusRowIndex);\r\n setSelectedCol(focusColIndex === undefined ? getFirsFocusableColumnIndex(focusRowIndex === undefined ? rowCount : focusRowIndex) : focusColIndex);\r\n\r\n setTimeout(makeSureControlsAreScrolledIntoView, 200);\r\n }\r\n }\r\n\r\n return added;\r\n }\r\n\r\n function renderControlsBelowEditRow() {\r\n return (\r\n <>\r\n );\r\n }\r\n\r\n return renderControlsBelowEditRow();\r\n};\r\n\r\nconst TableEditControls = React.forwardRef(TableEditControlsImpl);\r\n\r\nexport default React.memo(TableEditControls);","export default __webpack_public_path__ + \"static/media/line-seq-swap-arrow-down-black.79f52384.svg\";","export default __webpack_public_path__ + \"static/media/line-seq-swap-arrow-down-white.97886b63.svg\";","export default __webpack_public_path__ + \"static/media/line-seq-swap-arrow-down-gray.f902ac15.svg\";","export default __webpack_public_path__ + \"static/media/line-seq-swap-arrow-up-black.dd60de58.svg\";","export default __webpack_public_path__ + \"static/media/line-seq-swap-arrow-up-white.8d4709aa.svg\";","export default __webpack_public_path__ + \"static/media/line-seq-swap-arrow-up-gray.18b93ee4.svg\";","import React, { useEffect, useState } from \"react\";\r\nimport _ from 'lodash';\r\nimport postal from 'postal';\r\nimport IfmsModal from \"../IfmsModal\";\r\nimport TextBox from \"../TextBox\";\r\nimport Date from '../Date';\r\nimport SecondaryButton from \"../SecondaryButton\";\r\nimport { useTypedFastStorage } from \"../../hooks/useFastStorage\";\r\nimport useFunctionKeys from \"../../hooks/useFunctionKeys\";\r\nimport Float from \"../Float\";\r\nimport { getDecimal } from \"../../util\";\r\nimport { height } from \"@fortawesome/free-solid-svg-icons/faAngleUp\";\r\n\r\nexport function TableSearch({\r\n searchField,\r\n searchValue,\r\n onCancel,\r\n onSave,\r\n ...other\r\n}: any) {\r\n\r\n\r\n const [showTableSearchConfiguration, setTableSearchConfiguration] = useState(false);\r\n const [fieldType, setFieldType] = useState('');\r\n\r\n const [search, setSearch, , searchRef] = useTypedFastStorage(`ifms-table-search-value`, null);\r\n const searchValueChannel = postal.channel('ifms-table-search-value');\r\n let openSubscription: ISubscriptionDefinition | null = null;\r\n let decimals = 2;\r\n useFunctionKeys({ onEsc: cancel});\r\n\r\n function cancel() {\r\n setTableSearchConfiguration(false);\r\n setSearch('');\r\n return true;\r\n }\r\n\r\n useEffect(() => {\r\n subscribeChannels();\r\n\r\n return () => {\r\n unsubscribeChannels();\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n\r\n function subscribeChannels() {\r\n openSubscription = postal.subscribe({\r\n channel: 'ifms-table-search',\r\n topic: 'ifms-table-search.open',\r\n callback: ({ columnId, value, numValue, type, cur }) => {\r\n if (type === 'checkbox' || columnId === undefined) {\r\n setTableSearchConfiguration(false);\r\n return;\r\n }\r\n else if (type === 'date') setFieldType('date');\r\n else if (type === 'number') setFieldType('number');\r\n else setFieldType('text');\r\n //decimals = getDecimal(cur);\r\n //setSearch(type === 'number' ? numValue : value);\r\n setTableSearchConfiguration(true);\r\n },\r\n });\r\n\r\n }\r\n\r\n function unsubscribeChannels() {\r\n if (openSubscription) {\r\n postal.unsubscribe(openSubscription);\r\n }\r\n }\r\n\r\n function onEnterKey(evt:KeyboardEvent) {\r\n if (searchRef && searchRef.current) {\r\n if(searchRef.current !== ''){\r\n setSearch(searchRef.current);\r\n }\r\n }\r\n console.log('onEnter : '+ search);\r\n searchRowCell();\r\n return true;\r\n }\r\n\r\n function onEnter() {\r\n if (searchRef && searchRef.current) {\r\n if(searchRef.current !== ''){\r\n setSearch(searchRef.current);\r\n }\r\n }\r\n console.log('onEnter : '+ search);\r\n searchRowCell();\r\n }\r\n\r\n function searchRowCell() {\r\n searchValueChannel.publish('ifms-table-search-value.search', { value: (searchRef && searchRef.current) ? searchRef.current : search, field : fieldType});\r\n setSearch('');\r\n setTableSearchConfiguration(false);\r\n }\r\n\r\n function focusEntry() {\r\n const dataEntryContainer = document.getElementById('table-search-field');\r\n if (!dataEntryContainer) {\r\n return;\r\n }\r\n if (dataEntryContainer) {\r\n let focusNode:any = null;\r\n const tabableElements = dataEntryContainer.querySelectorAll('.ifms-tabable-active');\r\n if (tabableElements && tabableElements.length > 0) {\r\n focusNode = tabableElements[0];\r\n }\r\n if (focusNode) {\r\n if (focusNode.focus) {\r\n focusNode.focus();\r\n }\r\n if (focusNode.select) {\r\n focusNode.select();\r\n }\r\n }\r\n }\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n {fieldType === 'date' &&\r\n
\r\n setSearch(date?.toString() ?? '')}\r\n onEnter={onEnter}\r\n />\r\n
\r\n }\r\n {fieldType === 'number' &&\r\n
\r\n setSearch((e ?? 0).toString())}\r\n onEnter={onEnter}\r\n decimals={4}\r\n />\r\n
\r\n }\r\n {fieldType === 'text' &&\r\n
\r\n setSearch(e.target.value)}\r\n onEnter={onEnter}\r\n //onBlur={onBlur}\r\n />\r\n
\r\n }\r\n
\r\n
\r\n \r\n Search\r\n \r\n \r\n CANCEL\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default React.memo(TableSearch);","import React, { useContext, useEffect, useRef, useState } from 'react';\r\n\r\nimport { ApplicableTableSettings } from '../../../tableSettings';\r\nimport SmartTable, { SmartTableHandle } from '../../../uiControls/SmartTable';\r\nimport TableEditContext, { ITableEditContextState } from './tableEditContext';\r\nimport TableEditControls, { TableEditControlsHandle } from './TableEditControls';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport { useTypedStorage } from '../../../hooks/useStorage';\r\nimport PrimaryButton from '../../PrimaryButton';\r\nimport arrowDownBlackIcon from '../../../img/line-seq-swap-arrow-down-black.svg';\r\nimport arrowDownWhiteIcon from '../../../img/line-seq-swap-arrow-down-white.svg';\r\nimport arrowDownGrayIcon from '../../../img/line-seq-swap-arrow-down-gray.svg';\r\nimport arrowUpBlackIcon from '../../../img/line-seq-swap-arrow-up-black.svg';\r\nimport arrowUpWhiteIcon from '../../../img/line-seq-swap-arrow-up-white.svg';\r\nimport arrowUpGrayIcon from '../../../img/line-seq-swap-arrow-up-gray.svg';\r\nimport { TableCheckBoxRenderer, TableDateRenderer, TableIndicatorRenderer, TableNumberRenderer, TableTextRenderer, TextAlignLeftRenderer } from '../../../uiControls/SmartTableRenderers';\r\nimport { TableSearch } from '../TableSearch';\r\nimport { useTableState } from '../useMultiTableContext';\r\n\r\nexport enum TableDateType {\r\n Date = 'dateonly',\r\n DateTime = 'datetime',\r\n DateTimeWhithSec = 'datetimesec'\r\n}\r\n\r\nexport enum TableCellTypes {\r\n Text = 'text',\r\n Checkbox = 'checkbox',\r\n Number = 'number',\r\n Date = 'date',\r\n}\r\n\r\nexport enum TableCellAligns {\r\n Left = 'left',\r\n Center = 'center',\r\n Right = 'right'\r\n}\r\n\r\nexport type CellData = {\r\n type: TableCellTypes;\r\n value: string | boolean | number;\r\n decimal?: number;\r\n align?: TableCellAligns;\r\n onChangeFunc?: any;\r\n showZero?: boolean;\r\n dateType?: TableDateType;\r\n onLabelClick?: any;\r\n specialRenderer?: any;\r\n}\r\n\r\nconst EditableCellStyle: React.CSSProperties = {\r\n width: '100%',\r\n};\r\n\r\nfunction GetCellRenderer(value: string | boolean | number, rowIndex: number, accessor: string, type: string, disabled: boolean, align?: string, decimal?: number, onChangeFunc?: any, onLabelClick?: any, dateType?: TableDateType, showZero: boolean = true): any {\r\n if (accessor === 'indicator')\r\n return ;\r\n else if (type === 'text') {\r\n return ;\r\n }\r\n else if (type === 'number') {\r\n return ;\r\n }\r\n else if (type === 'checkbox') {\r\n return ;\r\n }\r\n else if (type === 'date') {\r\n return ;\r\n }\r\n}\r\n\r\nfunction EditableCellRenderer(props: any) {\r\n // [241106] MSKim\r\n // 각 테이블마다 정의된 rowRenderers를 삭제하는 것이 최종 목표\r\n // Table마다 isCellLock와 getCellData를 정의하고 NonEditCell을 삭제할 수 있음\r\n const context = useContext(TableEditContext);\r\n const { row, allColumns, column, data } = props;\r\n const accessor: string = column.id;\r\n const columnIndex: number = allColumns.findIndex((x: any) => x.id === accessor);\r\n const rowRenderer = context.rowRenderers.find(x => x.accessor === accessor);\r\n const rowIndex: number = row.index;\r\n const rowData = data[rowIndex];\r\n\r\n const disabled: boolean = context.isCellLock ? context.isCellLock(accessor, rowData, columnIndex, rowIndex) : false;\r\n const cellData: CellData | undefined = context.getCellData ? context.getCellData(accessor, rowData, rowIndex) : undefined;\r\n let Renderer = cellData\r\n ?\r\n cellData.specialRenderer ? cellData.specialRenderer : GetCellRenderer(cellData.value, rowIndex, accessor, cellData.type, disabled, cellData.align, cellData.decimal, cellData.onChangeFunc, cellData.onLabelClick, cellData.dateType, cellData.showZero)\r\n :\r\n rowRenderer.NonEditCell;\r\n\r\n if (accessor === 'indicator') {\r\n Renderer = \r\n }\r\n\r\n if (!Renderer) {\r\n return null;\r\n }\r\n\r\n if (context.editRowIndex === rowIndex && context.editColumnIndex === columnIndex && context.tempEditColumnIndex !== -1 && rowRenderer.EditCell) { //edit cell\r\n Renderer = rowRenderer.EditCell;\r\n }\r\n\r\n return (\r\n \r\n {(context.editRowIndex === rowIndex && context.editColumnIndex === columnIndex && context.tempEditColumnIndex !== -1 && rowRenderer.EditCell)\r\n ?\r\n \r\n :\r\n (cellData && !cellData.specialRenderer) || accessor === 'indicator' ? Renderer : \r\n }\r\n \r\n );\r\n}\r\n\r\nexport type EditableTableProps = {\r\n tableOptions: ApplicableTableSettings,\r\n deleteLine: (rowIndex: number) => boolean | Promise,\r\n addLine: () => { setDataFunc: (data: any, focusRowIndex: number | undefined) => void, curListData: any, newData: any } | undefined,\r\n getIndexOfFirstInvalidCell?: (rowIndex: number) => number | undefined,\r\n getIndexOfFirstInvalidCellAsync?: (rowIndex: number) => Promise,\r\n summaryRowCount?: number,\r\n canDeleteRow?: ((rowIndex: number) => boolean) | undefined, \r\n canAdd?: boolean | undefined,\r\n tableParentDivId?: string,\r\n showTotalLineNum?: boolean,\r\n controlsAfterAddLineBtn?: any,\r\n controlsBeforeAddLineBtn?: any,\r\n showTopBtn?: boolean,\r\n showBottomBtn?: boolean,\r\n lineSeqChange?: ((seqUpDown: string, rowIndex: number) => boolean) | undefined,\r\n initializeFocusedCell?: boolean,\r\n tableTitle?:string,\r\n addRowOnArrowDownInSpecialCase?: ((rowIndex?: number) => number) | undefined,\r\n shouldConfirmBeforeDelete?: ((rowIndex: number) => boolean) | undefined,\r\n onInitialized?: VoidFunction,\r\n};\r\n\r\nexport type EditableTableHandle = {\r\n resizeColumn: (accessor: string, width: number, persist: boolean) => void,\r\n showColumn: (accessor: string, visible: boolean, persist: boolean) => void,\r\n getColumnWidth: (accessor: string) => number,\r\n add: () => void,\r\n};\r\n\r\n\r\nconst EditableTableImpl: React.ForwardRefRenderFunction = ({\r\n // function EditableTableImpl({\r\n tableOptions,\r\n deleteLine,\r\n addLine,\r\n getIndexOfFirstInvalidCell,\r\n getIndexOfFirstInvalidCellAsync,\r\n // Number of rows at the bottom that are not actual \"data\" rows, but provide some additional data.\r\n // Those rows are excluded when calculating where to put Add line/Edit controls.\r\n //\r\n // One example of usage is Profit Share row in crdb,\r\n summaryRowCount = 0,\r\n // Number of rows at the top that are not actual \"data\" rows, but provide some additional data.\r\n // Those rows are excluded when calculating where to put Add line/Edit controls.\r\n //\r\n // One example of usage is Chargeable items table inside AE HAWB Body Info,\r\n canDeleteRow = undefined,\r\n canAdd = undefined,\r\n tableParentDivId = `${tableOptions.customTableId ?? tableOptions.tableName}-editabletable`,\r\n showTotalLineNum = false,\r\n controlsAfterAddLineBtn = null,\r\n controlsBeforeAddLineBtn = null,\r\n showTopBtn = true,\r\n showBottomBtn = false,\r\n lineSeqChange = undefined,\r\n initializeFocusedCell = undefined,\r\n tableTitle = '',\r\n addRowOnArrowDownInSpecialCase = undefined,\r\n shouldConfirmBeforeDelete = undefined,\r\n onInitialized = undefined,\r\n}, ref) => {\r\n const appContext = useContext(ApplicationContext);\r\n const editControlsRef = useRef(null);\r\n\r\n const [doSelectCell, setDoSelectCell] = useState(false);\r\n const [lineSeqDownBtnHovered, setLineSeqDownBtnHovered] = useState(false);\r\n const [lineSeqUpBtnHovered, setLineSeqUpBtnHovered] = useState(false);\r\n\r\n const smartTableRef = useRef(null);\r\n\r\n tableOptions.tableName = tableOptions.customTableId ?? tableOptions.tableName;\r\n const tableId = tableOptions.tableName;\r\n\r\n const enableBranch = appContext?.systemSettings?.enableBranch ?? false;\r\n const useVat = appContext?.systemSettings?.useVat ?? false;\r\n\r\n const accessorsToFilter = [\r\n ...(!enableBranch ? ['branch', 'br'] : []),\r\n ...(!useVat ? ['useVat'] : [])\r\n ];\r\n\r\n const filteredRowRenderers = tableOptions.rowRenderers.filter(\r\n (x: any) => !accessorsToFilter.includes(x.accessor)\r\n );\r\n\r\n const { state:tableState, updateState } = useTableState(tableId);\r\n\r\n React.useImperativeHandle(ref, () => ({\r\n resizeColumn,\r\n showColumn,\r\n getColumnWidth,\r\n add\r\n }));\r\n\r\n function deleteCellSelected() {\r\n const selectedCellClass = 'data-cell-selected';\r\n const currentCellSelections = document.querySelectorAll(`.${selectedCellClass}`);\r\n currentCellSelections.forEach((cell) => {\r\n cell.classList.remove(selectedCellClass);\r\n });\r\n }\r\n\r\n function add() {\r\n if (editControlsRef.current) {\r\n editControlsRef.current.add();\r\n }\r\n }\r\n\r\n function resizeColumn(accessor: string, width: number, persist: boolean) {\r\n if (smartTableRef && smartTableRef.current) {\r\n smartTableRef.current.resizeColumn(accessor, width, persist);\r\n }\r\n }\r\n\r\n function showColumn(accessor: string, visible: boolean, persist: boolean) {\r\n if (smartTableRef && smartTableRef.current) {\r\n smartTableRef.current.showColumn(accessor, visible, persist);\r\n }\r\n }\r\n\r\n function getColumnWidth(accessor: string): number {\r\n if (smartTableRef && smartTableRef.current) {\r\n return smartTableRef.current.getColumnWidth(accessor);\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n function setTableContaineRef(c: HTMLDivElement) {\r\n if (editControlsRef.current) {\r\n editControlsRef.current.setTableReference(c);\r\n }\r\n }\r\n\r\n function setEditRowIndex(value: number) {\r\n updateState({ editRowIndex: value });\r\n }\r\n\r\n function setEditColumnIndex(value: number) {\r\n updateState({ editColumnIndex: value });\r\n }\r\n\r\n function setTempEditColumnIndex(value: number) {\r\n updateState({ tempEditColumnIndex: value });\r\n setDoSelectCell(value !== -1);\r\n if (value !== -1) {\r\n deleteCellSelected();\r\n }\r\n }\r\n\r\n const tableContextState: ITableEditContextState = {\r\n doSelectCell,\r\n setDoSelectCell,\r\n editRowIndex: tableState.editRowIndex,\r\n editColumnIndex: tableState.editColumnIndex,\r\n tempEditColumnIndex: tableState.tempEditColumnIndex,\r\n setEditRowIndex,\r\n setEditColumnIndex,\r\n setTempEditColumnIndex,\r\n deleteLine,\r\n addLine,\r\n rowCount: tableOptions.data.length - summaryRowCount,\r\n data: tableOptions.data,\r\n rowRenderers: tableOptions.rowRenderers ?? [],\r\n tableColumnLength: filteredRowRenderers.length,\r\n isCellLock:tableOptions.isCellLock,\r\n getCellData:tableOptions.getCellData,\r\n getIndexOfFirstInvalidCell,\r\n getIndexOfFirstInvalidCellAsync,\r\n enabled: tableOptions.useEditControls,\r\n canDeleteRow,\r\n canAdd,\r\n tableParentDivId,\r\n showTotalLineNum,\r\n controlsAfterAddLineBtn,\r\n controlsBeforeAddLineBtn,\r\n lineSeqChange,\r\n initializeFocusedCell,\r\n addRowOnArrowDownInSpecialCase,\r\n shouldConfirmBeforeDelete,\r\n useTableSearch: tableOptions.useTableSearch,\r\n };\r\n const [, setSelectedIndex] = useTypedStorage(`${tableOptions.tableName}-tableEditRowIndex`, 0);\r\n\r\n useEffect(() => {\r\n setSelectedIndex(tableState.editRowIndex);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [tableState.editRowIndex]);\r\n\r\n const enrichData = (d: any) => ({\r\n ...d,\r\n tableName: tableOptions.tableName,\r\n });\r\n\r\n tableOptions.data = tableOptions.data.map(enrichData);\r\n\r\n tableOptions.rowRenderers.forEach((r: any) => {\r\n r.Cell = EditableCellRenderer;\r\n });\r\n\r\n tableOptions.selectable = false;\r\n\r\n \r\n function LineSeqChangeButton() {\r\n if (!lineSeqChange) return <>;\r\n \r\n const disableBtn = !tableOptions.useEditControls || tableState.editRowIndex === -1;\r\n const dataLength = tableOptions.data.length;\r\n\r\n const useDarkMode = appContext.useDarkMode;\r\n let arrowUpSrc = useDarkMode ? arrowUpWhiteIcon : arrowUpBlackIcon;\r\n let arrowDownSrc = useDarkMode ? arrowDownWhiteIcon : arrowDownBlackIcon;\r\n\r\n if (disableBtn) {\r\n arrowUpSrc = arrowUpGrayIcon;\r\n arrowDownSrc = arrowDownGrayIcon;\r\n } else if (lineSeqUpBtnHovered) {\r\n arrowUpSrc = useDarkMode ? arrowUpBlackIcon : arrowUpWhiteIcon;\r\n } else if (lineSeqDownBtnHovered) {\r\n arrowDownSrc = useDarkMode ? arrowDownBlackIcon : arrowDownWhiteIcon;\r\n }\r\n\r\n return (\r\n
\r\n Line Up\r\n setLineSeqUpBtnHovered(true)}\r\n onMouseLeave={() => setLineSeqUpBtnHovered(false)}\r\n style={{ marginLeft: '10px' }}\r\n size=\"regular\"\r\n disabled={disableBtn}\r\n onClick={() => {\r\n if (!disableBtn) {\r\n const confirm = lineSeqChange('up', tableState.editRowIndex);\r\n if (confirm && tableState.editRowIndex > 0) {\r\n setEditRowIndex(tableState.editRowIndex - 1);\r\n }\r\n }\r\n }}\r\n >\r\n
\r\n \r\n
\r\n \r\n Line Down\r\n setLineSeqDownBtnHovered(true)}\r\n onMouseLeave={() => setLineSeqDownBtnHovered(false)}\r\n style={{ marginLeft: '10px' }}\r\n size=\"regular\"\r\n disabled={disableBtn}\r\n onClick={() => {\r\n if (!disableBtn) {\r\n const confirm = lineSeqChange('down', tableState.editRowIndex);\r\n if (confirm && tableState.editRowIndex >= 0 && tableState.editRowIndex < dataLength - 1) {\r\n setEditRowIndex(tableState.editRowIndex + 1);\r\n }\r\n }\r\n }}\r\n >\r\n
\r\n \r\n
\r\n \r\n
\r\n )\r\n }\r\n\r\n // function AddLineButton(location: string) {\r\n // if (hideDefaultAddLine) return;\r\n // const addLineLabel = useAltLShortcutForAddLine\r\n // ? Add Line\r\n // : 'Add Line';\r\n // const buttonStyle = useAltLShortcutForAddLine || addLineLabel === 'Add Line' ? { paddingLeft: '20px', paddingRight: '20px' } : {};\r\n\r\n // const disableAddBtn = !tableOptions.useEditControls;\r\n // if (location === 'Top') {\r\n // return (\r\n // \r\n // {customAddTitle || addLineLabel}\r\n // \r\n // );\r\n // }\r\n // else {\r\n // return (\r\n // // {\r\n // // if (!disableAddBtn) add();\r\n // // }}\r\n // // >\r\n // // {customAddTitle || 'Add Line'}\r\n // // \r\n // \r\n // {customAddTitle || addLineLabel}\r\n // \r\n // );\r\n // }\r\n // }\r\n\r\n function totalLineControl() {\r\n if (showTotalLineNum)\r\n return (\r\n <>\r\n {tableTitle &&\r\n \r\n {tableTitle}\r\n \r\n }\r\n \r\n {/* Total Line Items: {tableOptions.data.length - summaryRowCount} */}\r\n Total Line Items: {tableOptions.data.length}\r\n \r\n \r\n )\r\n else\r\n return null;\r\n }\r\n\r\n function renderTopControls() {\r\n return (\r\n
\r\n {!showTotalLineNum && ({tableTitle})}\r\n {totalLineControl()}\r\n {!!controlsBeforeAddLineBtn && controlsBeforeAddLineBtn()}\r\n {/* {AddLineButton('Top')} */}\r\n {!!controlsAfterAddLineBtn && controlsAfterAddLineBtn()}\r\n
\r\n )\r\n }\r\n\r\n function renderBottomControls() {\r\n return (\r\n
\r\n {/* {AddLineButton('Bottom')} */}\r\n {!!lineSeqChange && LineSeqChangeButton()}\r\n
\r\n )\r\n }\r\n\r\n return (\r\n
\r\n {tableOptions.useTableSearch &&
\r\n );\r\n};\r\n\r\nconst EditableTable = React.forwardRef(EditableTableImpl);\r\n\r\nexport default EditableTable;\r\n","import { useState, useEffect } from 'react';\r\n\r\ninterface ITableState {\r\n editRowIndex: number;\r\n editColumnIndex: number;\r\n tempEditColumnIndex: number;\r\n tableId: string;\r\n}\r\n\r\nclass TableStateStore {\r\n private tableStates: Record = {};\r\n private listeners: Set<(tableId: string) => void> = new Set();\r\n\r\n getState(tableId: string): ITableState {\r\n return this.tableStates[tableId] || {\r\n editRowIndex: -1,\r\n editColumnIndex: -1,\r\n tempEditColumnIndex: -1,\r\n tableId\r\n };\r\n }\r\n\r\n updateState(tableId: string, updates: Partial) {\r\n\r\n Object.keys(this.tableStates).forEach(currentTableId => {\r\n if (currentTableId !== tableId) {\r\n this.tableStates[currentTableId] = {\r\n ...this.tableStates[currentTableId],\r\n editRowIndex: -1,\r\n editColumnIndex: -1,\r\n tempEditColumnIndex: -1\r\n };\r\n }\r\n });\r\n\r\n this.tableStates[tableId] = {\r\n ...this.getState(tableId),\r\n ...updates\r\n };\r\n\r\n this.listeners.forEach(listener => listener(tableId));\r\n }\r\n\r\n subscribe(listener: (tableId: string) => void) {\r\n this.listeners.add(listener);\r\n return () => {\r\n this.listeners.delete(listener);\r\n };\r\n }\r\n\r\n removeTable(tableId: string) {\r\n delete this.tableStates[tableId];\r\n this.listeners.forEach(listener => listener(tableId));\r\n }\r\n}\r\n\r\nconst store = new TableStateStore();\r\n\r\nexport function useTableState(tableId: string) {\r\n const [state, setState] = useState(() => store.getState(tableId));\r\n\r\n useEffect(() => {\r\n const unsubscribe = store.subscribe((changedTableId) => {\r\n setState(store.getState(tableId));\r\n });\r\n\r\n return () => {\r\n unsubscribe();\r\n store.removeTable(tableId);\r\n };\r\n }, [tableId]);\r\n\r\n const updateState = (updates: Partial) => {\r\n store.updateState(tableId, updates);\r\n };\r\n\r\n return {\r\n state,\r\n updateState\r\n };\r\n}","/**\r\n * Revision History\r\n * \r\n * 11/30/2021 ptkim Add IFmsGlobal and its related\r\n */\r\nimport { IDictionary } from '../fms.core/data/TrackingModule';\r\nimport { Currency, User } from '../ifmsTypes';\r\nimport { MaintenanceSetup } from '../framework.core/setup/MaintenanceSetup';\r\nimport { SystemSetup } from '../framework.core/setup/SystemSetup';\r\nimport { ClientSetup } from '../framework.core/setup/ClientSetup';\r\nimport { FmsMaintenanceOption, FmsSystemOption, FmsClientOption, FmsMaintenanceComplianceOption } from '../fms.core/setup';\r\nimport { SecurityGrant } from '../framework.core/SecurityGrant';\r\nimport { FmsSecTask } from '../fms.core/constants';\r\n\r\nlet currencies:Array = [];\r\nlet primaryCurrency:Currency|null = null;\r\nlet defaultPageSize = 50;\r\nlet users:Array = [];\r\n\r\nlet dateFormat:string|undefined = undefined;\r\nlet dateTimeFormat:string|undefined = undefined;\r\n\r\n\r\nexport function getCurrencies() {\r\n return currencies;\r\n}\r\n\r\nexport function setCurrencies(c:Array) {\r\n if (c !== undefined && c !== null) {\r\n currencies = c;\r\n }\r\n}\r\n\r\nexport function setPrimaryCurrency(c:Currency|null) {\r\n primaryCurrency = c;\r\n}\r\n\r\nexport function getPrimaryCurrency() {\r\n return primaryCurrency;\r\n}\r\n\r\nexport function setDefaultPageSize(p:number) {\r\n if (p) {\r\n defaultPageSize = p;\r\n }\r\n}\r\n\r\nexport function getDefaultPageSize() {\r\n return defaultPageSize;\r\n}\r\n\r\nexport function getUsers() {\r\n return users;\r\n}\r\n\r\nexport function setUsers(u:Array|null|undefined) {\r\n if (u !== undefined && u !== null ) {\r\n users = u;\r\n }\r\n}\r\n\r\n//|null|undefined) {\r\n// if (c !== undefined && c !== null) {\r\n// billingCodes = c;\r\n// }\r\n// }\r\n\r\n// export function getBillingCodes() {\r\n// return billingCodes;\r\n// }\r\n\r\n// export function searchBillingCodes(queryString:string, context:string) {\r\n// if (!queryString) {\r\n// return [];\r\n// }\r\n\r\n// const b = getBillingCodes();\r\n\r\n// if (b && b.length > 0) {\r\n// const result = b.filter(x => x.codeLower === queryString.toLowerCase());\r\n\r\n// return context === 'OI'\r\n// ? result.filter(x => x.opType === 0)\r\n// : result;\r\n// }\r\n// }\r\n//pt220911>\r\nexport function setDateFormat(f:string|undefined) {\r\n dateFormat = f;\r\n\r\n fmsGlobal.DateBlank = dateFormat?.toLowerCase().replace('yyyy', '____').replace('mm', '__').replace('dd', '__');\r\n}\r\n\r\nexport function getDateFormat() {\r\n return dateFormat;\r\n}\r\n\r\nexport function setDateTimeFormat(f:string|undefined) {\r\n dateTimeFormat = f;\r\n}\r\n\r\nexport function getDateTimeFormat() {\r\n return dateTimeFormat;\r\n}\r\n\r\nexport function setFmsGlobalBySg(sg: SecurityGrant[], isSuntekAdmin: boolean) {\r\n fmsGlobal.CanFinalize = sg?.find(x => x.securityTaskCode === FmsSecTask.ToolRecog)?.grantAdd || isSuntekAdmin;\r\n fmsGlobal.CanFileLock = sg?.find(x => x.securityTaskCode === FmsSecTask.ToolOpClose)?.grantAdd || isSuntekAdmin;\r\n fmsGlobal.CanFileUnlock = sg?.find(x => x.securityTaskCode === FmsSecTask.ToolCancelOpClose)?.grantAdd || isSuntekAdmin;\r\n\r\n if (!isSuntekAdmin) {\r\n fmsGlobal.MnuCheckM = sg?.find(x => x.securityTaskCode === FmsSecTask.ToolBlock)?.grantAdd ?? false;\r\n\r\n //fmsGlobal.NoRelease = sg?.find(x => x.securityTaskCode === 'GROUP_BlockReleaseHBL')?.grantYesNo ?? false;\r\n fmsGlobal.NoProfitShow = sg?.find(x => x.securityTaskCode === 'GROUP_BlockOPProfitReport')?.grantYesNo ?? false;\r\n //fmsGlobal.NoBranchShow = sg?.find(x => x.securityTaskCode === 'GROUP_BlockBranch')?.grantYesNo ?? false; //Applied using other options\r\n //fmsGlobal.NoShowAllData = sg?.find(x => x.securityTaskCode === 'GROUP_BlockShowingAllBranchData')?.grantYesNo ?? false; // apply backend.\r\n fmsGlobal.NoBillingsShow = sg?.find(x => x.securityTaskCode === 'GROUP_BlockOPBillingsTab')?.grantYesNo ?? false; \r\n fmsGlobal.OPAcctBlockAfterClosed = sg?.find(x => x.securityTaskCode === 'GROUP_BlockAccountingAfterClose')?.grantYesNo ?? false;\r\n fmsGlobal.BlockAPApprove = sg?.find(x => x.securityTaskCode === 'GROUP_BlockAPApprove')?.grantYesNo ?? false; //No field to be applied (based on 3.3 Bill List > Bill information - Hold check)\r\n fmsGlobal.BlockAPHold = sg?.find(x => x.securityTaskCode === 'GROUP_BlockAPHold')?.grantYesNo ?? false; //No field to be applied (based on 3.3 Bill List > Bill information - Hold check)\r\n }\r\n\r\n}\r\n\r\n\r\n//\r\ninterface IFmsGlobal {\r\n SUNTEK_ID:string,\r\n SUNTEK_PW:string,\r\n SUPERUSER_ID:string,\r\n SUPERUSER_PW:string,\r\n NewAuth_SiS_EncSubsID:string,\r\n SuntekPhone:string,\r\n\r\n CanUseHybrid:boolean,\r\n IsDateDMY:boolean,\r\n CurrencyInfo:IDictionary,\r\n\r\n PAPER_SIZE_LETTER_LANDSCAPE:number,\r\n PAPER_SIZE_LETTER: number,\r\n PAPER_SIZE_A4:number,\r\n PAPER_SIZE_A4_LANDSCAPE:number,\r\n\r\n AcmeID:string,\r\n AmsMode:string,\r\n AcmeID3:string,\r\n AcmeID4:string,\r\n FsType:string,\r\n\r\n UseNewLog:boolean,\r\n UseNewAcct:boolean,\r\n UseAgentCostGL:boolean,\r\n ChkAutoRate:boolean,\r\n BrokerGroup:string,\r\n\r\n UseNewAuth:boolean,\t\t//\r\n\r\n // AcmeID dependent globals\r\n UseTruckBl:boolean,\r\n\r\n /**\r\n * LoginUser's SecurityGroupID\r\n */\r\n GroupID:string,\r\n\r\n readonly GLNO_DUTYAR:string,\r\n readonly GLNO_DUTYAP:string,\r\n readonly GLNO_DUTYAR_AGENT:string,\r\n readonly GLNO_DUTYAP_AGENT:string,\r\n readonly GLNO_DUTY_TO_CUST:string,\r\n readonly GLNO_DUTY_TO_AGENT:string,\r\n readonly GLNO_LOAN_TO_AGENT:string,\r\n readonly GLNO_COLLECT_FOR_AGENT:string,\r\n readonly GLNO_SECURITY_DEPOSIT:string,\r\n\r\n ARGLNo:string, // g_ArGlNo\r\n APGLNo:string, // g_ApGlNo\r\n AgentGLNo:string,\r\n AgentAPGLNo:string,\r\n PayGLNo:string, // g_PayGlno\r\n RcvGLNo:string, // g_RcvGLNo\r\n AdvPayGLNo:string, // g_AdvPay\r\n AdvRecGLNo:string, // g_AdvRec\r\n EarningGLNo:string,\r\n AGR1: number,\r\n AGR2: number,\r\n AGR3: number,\r\n HawbPSize:number,\r\n BlRemarks:string,\r\n FCountry:string,\r\n OohOfrtCode:string,\r\n OihFrtChg:string,\r\n OihChg: string,\r\n\r\n VatGLNo:string,\r\n VatRcvGLNo:string,\r\n VatRate:number,\r\n UseKorVat:boolean,\r\n\r\n CashInBankGLNo:string,\r\n SavingsGLNo:string,\r\n OtherSavingsGLNo:string,\r\n CheckReceivableGLNo:string,\r\n CheckPayableGLNo:string,\r\n\r\n BankLoan:string,\r\n SuspenseRcv:string,\r\n SuspensePay:string,\r\n LoanRcv:string,\r\n CreditCardRefund:string,\r\n LongTermLoan:string,\r\n AutoLoan:string,\r\n CashInBank:string,\r\n DividendPayable:string,\r\n SecurityDeposit:string,\r\n Capital:string,\r\n LoanInterIncome:string,\r\n LoanInterExpense:string,\r\n Investment:string,\r\n\r\n PrepaidExpense:string,\r\n DepreciationExpense:string,\r\n AmortizationExpense:string,\r\n BadDebtExpense:string,\r\n\r\n CreditCard:string,\r\n\r\n ShowChargesConfirmedAN:boolean,\r\n\r\n HowAmend:string,\r\n\r\n UseABIDB:boolean,\r\n\r\n /**\r\n * If v_blsumm.f_eta exists or not\r\n */\r\n ViewETA:boolean,\r\n\r\n LbsPerCbm:number,\r\n KgsPerCBM:number,\r\n AotherLocal:boolean,\r\n UseBranch:boolean,\r\n PimsID:string,\r\n PimsUserID:string, // iFms Login email\r\n PimsUserPwd:string,\t//\r\n PimsUserIDNo:string //PimsDB [User].Id where email = PimsUserID\r\n PimsOwnerID:number, //PimsDB [Customer].Id where isowner=1 && pimsid=pimsid\r\n SuspenseGl:string,\r\n\r\n IsCHBUser:boolean,\r\n IsFfmUser:boolean,\r\n IsXpenUser:boolean,\r\n IsCRMUser:boolean,\r\n\r\n LocalFontName:string,\r\n LocalFontCharset:string,\r\n MarkFontName:string,\r\n MarkFontCharset:string,\r\n\r\n UseNjour:boolean,\r\n UseCRDB:boolean,\r\n\r\n ReportNumber:number,\r\n ContainerTypes:string[],\r\n\r\n DateFormat:string,\r\n DateFormatYY:string,\r\n DateBlank:string,\r\n\r\n /**\r\n * MM/dd/yyyy hh:mm:ss\r\n */\r\n DateTimeFormat:string,\r\n\r\n /**\r\n * MM/dd/yyyy hh:mm (w/o seconds)\r\n */\r\n DateTimeMinFormat:string,\r\n\r\n /**\r\n * MM/dd/yyyy AM/PM hh:mm:ss\r\n */\r\n DateTimeAmPmFormat:string,\r\n\r\n /**\r\n * MM/dd/yyyy AM/PM hh:mm\r\n */\r\n DateTimeMinAmPmFormat:string,\r\n\r\n DateInterval:number,\r\n MnuCheckM:boolean,\r\n Center_No:string,\r\n\r\n FiscalEndMonth:number,\r\n FiscalStartMonth:number,\r\n\r\n IL3UserId:string,\r\n IL3UserPwd:string,\r\n\r\n IssuePlace:string,\r\n PsShareRatio:number,\r\n FsOptions:string,\r\n\r\n /**\r\n * SmartTrack public memo enable or not\r\n */\r\n EnableSTKMemo:boolean,\r\n\r\n ShareDocWIthABI:boolean,\r\n SharedABILicID:string,\r\n\r\n /**\r\n * frmMemo, modFunc.SubSetOIReminderMemo, frmMain.LoadMemoData\r\n */\r\n NewMemo:boolean,\r\n\r\n HeadType:string,\r\n ShowAmend: boolean,\r\n UseITNew: boolean,\r\n\r\n MSetup: MaintenanceSetup,\r\n FmsMOption: FmsMaintenanceOption,\r\n FmsMCplOption: FmsMaintenanceComplianceOption,\r\n SSetup: SystemSetup,\r\n FmsSOption: FmsSystemOption,\r\n CSetup: ClientSetup,\r\n FmsCOption: FmsClientOption,\r\n //\r\n bannedWords:Array,\r\n CloseDate:string|null,\r\n\r\n //\r\n\r\n //\r\n\r\n ChargeFscAE: string,\r\n ChargeSscAE: string,\r\n ChargeTsaAE: string,\r\n ChargeHandlingCAE: string,\r\n}\r\n\r\nlet fmsGlobal:Partial = {\r\n SUNTEK_ID: \"SiS\",\r\n SUNTEK_PW: \"\",\r\n SUPERUSER_ID: \"ssikor\",\r\n SUPERUSER_PW: \"\",\r\n NewAuth_SiS_EncSubsID: \"\",\r\n SuntekPhone: '949-789-0070',\r\n\r\n CanUseHybrid: false,\r\n IsDateDMY: false,\r\n CurrencyInfo: { USD: 2, CAD:2, KRW: 0, JPY: 0, EUR: 2},\r\n\r\n PAPER_SIZE_LETTER_LANDSCAPE: 11,\r\n PAPER_SIZE_LETTER: 8.5,\r\n PAPER_SIZE_A4: 8.27,\r\n PAPER_SIZE_A4_LANDSCAPE: 11.69,\r\n\r\n GLNO_DUTYAR: \"112600\",\r\n GLNO_DUTYAP: \"212600\",\r\n GLNO_DUTYAR_AGENT: \"112620\",\r\n GLNO_DUTYAP_AGENT: \"212620\",\r\n GLNO_DUTY_TO_CUST: \"212630\",\r\n GLNO_DUTY_TO_AGENT: \"112630\",\r\n GLNO_LOAN_TO_AGENT: \"112500\",\r\n GLNO_COLLECT_FOR_AGENT: \"212500\",\r\n GLNO_SECURITY_DEPOSIT: \"121100\",\t\r\n\r\n AdvRecGLNo: \"212100\",\t\r\n AdvPayGLNo: \"112100\",\t\r\n\r\n //Payment\r\n BankLoan: \"211200\",\t\r\n SuspenseRcv: \"212110\",\t\r\n SuspensePay: \"112110\",\t\r\n LoanRcv: \"112700\",\t\r\n CreditCardRefund: \"431451\",\t\r\n LongTermLoan: \"211210\",\t\r\n AutoLoan: \"211220\",\t\r\n CashInBank: \"111200\",\t\r\n DividendPayable: \"211610\",\t\r\n SecurityDeposit: \"121100\",\t\r\n Capital: \"311100\",\t\r\n LoanInterIncome: \"551110\",\t\r\n LoanInterExpense: \"451110\",\t\r\n Investment: \"121200\",\r\n\r\n //Adjustment\r\n PrepaidExpense: \"112200\",\t\r\n DepreciationExpense: \"431520\",\t\r\n AmortizationExpense: \"431510\",\t\r\n BadDebtExpense: \"431530\",\t\r\n\r\n //Etc\r\n CreditCard: \"211620\",\t\r\n bannedWords: ['N/A', 'N.A', 'NA', 'NOT ISSUED'],\r\n DateInterval: 99,\r\n};\r\n\r\nexport function getFmsGlobal() {\r\n return fmsGlobal;\r\n}","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useContext } from 'react';\r\n\r\nimport './menu.css';\r\n\r\nimport Menu, {Item as MenuItem, SubMenu} from 'rc-menu';\r\n\r\nimport {faAngleDown, faTimes} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\nimport {MenuMode} from 'rc-menu/lib/interface';\r\nimport ApplicationContext from '../../ApplicationContext';\r\n\r\nexport interface IfmsMenuItem {\r\n menuId?: string | null,\r\n selected: boolean,\r\n items?: Array | undefined,\r\n separator?: boolean,\r\n text: React.ReactNode | string | null | undefined,\r\n index?: number | undefined,\r\n job?: any | null, // Job Switching Tab item can be attached to the menu item\r\n variant?: 'plain' | 'highlight',\r\n disabled?:boolean,\r\n icon?: React.ReactNode|null,\r\n icon2?: React.ReactNode|null,\r\n url?:string,\r\n name?:string,\r\n};\r\n\r\ninterface MenuItemMap {\r\n [indexer: string]: IfmsMenuItem\r\n};\r\n\r\ntype IfmsMenuProps = {\r\n onMenuItemSelected: (menuItem: IfmsMenuItem, e: React.MouseEvent) => void,\r\n mode: MenuMode,\r\n items: IfmsMenuItem[][][],\r\n specialMenu?: string | undefined,\r\n menuStyle: (i: number) => React.CSSProperties,\r\n subMenuStyle?: React.CSSProperties,\r\n menuWidth?: string | undefined,\r\n variant?: 'plain' | 'highlight',\r\n dismiss?: VoidFunction,\r\n};\r\n\r\ntype MenuItemFactoryProps = {\r\n item: IfmsMenuItem,\r\n customSubmenuArrow: boolean,\r\n style: React.CSSProperties,\r\n variant?: 'plain' | 'highlight',\r\n disabled?:boolean,\r\n icon?: React.ReactNode|null,\r\n specialMenu:string,\r\n name?:string,\r\n useDarkMode?: boolean|undefined,\r\n};\r\n\r\nconst MenuItemFactory: React.FC = ({ item, customSubmenuArrow, style, variant, specialMenu, useDarkMode, ...other }) => {\r\n if (!item.items || item.items.length <= 0) {\r\n let menuItemClasses = item.separator ? 'ifms-custom-menu-item-highlight ifms-custom-menu-item-separator' : 'ifms-custom-menu-item-highlight';\r\n if (variant === 'plain') {\r\n if (specialMenu === 'user') menuItemClasses = 'ifms-custom-usermenu-item-plain';\r\n else if (specialMenu === 'jobswitchinghelper') menuItemClasses = !useDarkMode ? 'ifms-custom-jobswitchinghelpermenu-item-plain' : 'ifms-custom-jobswitchinghelpermenu-item-darkmode-plain';\r\n else if (specialMenu === 'tooltip') menuItemClasses = 'ifms-custom-tooltipmenu-item-plain';\r\n else menuItemClasses = !useDarkMode ? 'ifms-custom-menu-item-plain' : 'ifms-custom-menu-item-darkmode-plain';\r\n }\r\n if (item.icon && item.icon2) {\r\n return {item.icon} {item.text}  {item.icon2} \r\n } else {\r\n return (\r\n <>\r\n {\r\n item.icon\r\n ?\r\n {item.icon} {item.text} {item.icon2} \r\n :\r\n {item.text} \r\n }\r\n \r\n );\r\n }\r\n }\r\n const submenuContent = customSubmenuArrow\r\n ? {item.text} \r\n : {item.text};\r\n\r\n return (\r\n \r\n {item.items.map(si => (\r\n \r\n ))}\r\n \r\n );\r\n}\r\n\r\nfunction withMenuId(items: Array, menuItemMap: MenuItemMap, selectedKeys: Array): Array {\r\n return items.map(x => {\r\n const menuId = _.uniqueId();\r\n if (x.selected) {\r\n selectedKeys.push(menuId);\r\n }\r\n\r\n const result: IfmsMenuItem = {\r\n ...x,\r\n menuId,\r\n items: x.items ? withMenuId(x.items, menuItemMap, []) : undefined,\r\n };\r\n\r\n menuItemMap[menuId] = result;\r\n\r\n return result;\r\n });\r\n\r\n}\r\n\r\nconst IfmsMenu: React.FC = ({\r\n items,\r\n specialMenu,\r\n onMenuItemSelected,\r\n mode,\r\n menuStyle,\r\n subMenuStyle,\r\n variant,\r\n menuWidth = undefined,\r\n dismiss = undefined,\r\n ...other\r\n }) => {\r\n const appContext = useContext(ApplicationContext); \r\n const menuItemMap: MenuItemMap = {};\r\n const selectedKeys: Array = [];\r\n const menuItems = items.map(subItems => subItems.map((subSubItems) => withMenuId(subSubItems, menuItemMap, selectedKeys)))\r\n const useDarkMode = appContext.useDarkMode;\r\n\r\n let totalGroups = -1;\r\n\r\n // let className = '';\r\n // if (specialMenu === 'user')\r\n // className = `ifms-custom-usermenu-${variant}`;\r\n // else if (specialMenu === 'jobswitchinghelper')\r\n // className = !useDarkMode ? `ifms-custom-jobswitchinghelpermenu-${variant}` : `ifms-custom-jobswitchinghelpermenu-darkmode-${variant}`;\r\n // else if (specialMenu === 'tooltip')\r\n // className = `ifms-custom-tooltipmenu-${variant}`;\r\n // else {\r\n // className = !useDarkMode ? `ifms-custom-menu-${variant}` : `ifms-custom-menu-darkmode-${variant}`;\r\n // }\r\n\r\n // // let subMenuClassName = !useDarkMode || specialMenu === 'tooltip' ? `ifms-custom-menu-submenu-${variant}` : `ifms-custom-menu-submenu-darkmode-${variant}`\r\n // let subMenuClassName = `ifms-custom-menu-submenu-darkmode-${variant}`;\r\n // if (specialMenu === 'user') {\r\n // subMenuClassName = `ifms-custom-usermenu-submenu-${variant}`;\r\n // } else if (!useDarkMode || specialMenu === 'tooltip') {\r\n // subMenuClassName = `ifms-custom-menu-submenu-${variant}`;\r\n // } \r\n \r\n let className = !useDarkMode ? `ifms-custom-menu-${variant}` : `ifms-custom-menu-darkmode-${variant}`;\r\n let subMenuClassName = !useDarkMode || specialMenu === 'tooltip' ? `ifms-custom-menu-submenu-${variant}` : `ifms-custom-menu-submenu-darkmode-${variant}`;\r\n \r\n switch (specialMenu) {\r\n case 'user':\r\n className = `ifms-custom-usermenu-${variant}`;\r\n subMenuClassName = !useDarkMode ? `ifms-custom-usermenu-submenu-${variant}` : `ifms-custom-menu-submenu-darkmode-${variant}`;\r\n break;\r\n case 'jobswitchinghelper':\r\n className = !useDarkMode ? `ifms-custom-jobswitchinghelpermenu-${variant}` : `ifms-custom-jobswitchinghelpermenu-darkmode-${variant}`;\r\n subMenuClassName = \"\";\r\n break;\r\n case 'tooltip':\r\n className = `ifms-custom-tooltipmenu-${variant}`;\r\n break;\r\n case 'rightClickContext':\r\n className = !useDarkMode ? 'ifms-custom-rightclickmenu' : 'ifms-custom-rightclickmenu-darkmode';\r\n break;\r\n }\r\n\r\n function procesMenuSelection(e: any) {\r\n const menuKey: string = e.key as string;\r\n onMenuItemSelected(menuItemMap[menuKey], e.domEvent ? e.domEvent : e);\r\n }\r\n\r\n function MenuItems() {\r\n return (\r\n <>\r\n {menuItems.map((subMenuItem, ind) => {\r\n return (\r\n
\r\n {subMenuItem.map((menuItem, i) => {\r\n totalGroups += 1;\r\n return (\r\n \r\n {menuItem.map(subMenuItem => )}\r\n \r\n )\r\n })}\r\n
\r\n )\r\n })}\r\n \r\n )\r\n }\r\n\r\n if (specialMenu === 'rightClickContext') {\r\n return (\r\n
\r\n
\r\n { if (dismiss) dismiss()}}\r\n >\r\n \r\n \r\n
\r\n
\r\n {MenuItems()}\r\n
\r\n
\r\n );\r\n } else {\r\n return (\r\n
\r\n {MenuItems()}\r\n
\r\n )\r\n }\r\n};\r\n\r\nIfmsMenu.defaultProps = {\r\n onMenuItemSelected: () => {\r\n },\r\n items: [],\r\n mode: 'horizontal',\r\n variant: 'plain',\r\n};\r\n\r\nIfmsMenu.propTypes = {\r\n onMenuItemSelected: PropTypes.func.isRequired,\r\n items: PropTypes.array.isRequired,\r\n mode: PropTypes.oneOf(['horizontal', 'vertical'] as const).isRequired,\r\n subMenuStyle: PropTypes.object,\r\n variant: PropTypes.oneOf(['plain', 'highlight'] as const).isRequired,\r\n};\r\n\r\n\r\nexport default React.memo(IfmsMenu);","import React from 'react';\r\n// import {Portal} from 'react-portal';\r\n// import ActionButton from '../../ui/ActionButton';\r\n// import ToolboxMenuItem from '../../uiControls/ToolboxMenuItem';\r\n\r\n// import {ReactComponent as ShortcutIcon} from \"../../img/shortcut-blue.svg\";\r\n\r\nfunction ListViewShortcutMenu() {\r\n return null;\r\n // return (\r\n // \r\n //
\r\n // , separator: false, fkey: 'F2' },\r\n // { label: , separator: false, fkey: 'F3' },\r\n // { label: , separator: false, fkey: 'F9' },\r\n // { label: , separator: false, fkey: 'Ctrl+F2' },\r\n // { label: , separator: false, fkey: 'F5' },\r\n // { label: , separator: false, fkey: 'F6' },\r\n // { label: , separator: false, fkey: 'F8' },\r\n // { label: , separator: false, fkey: 'F11' },\r\n // { label: , separator: false, fkey: 'F1' },\r\n // ]}\r\n // onItemSelected={item => {\r\n // window.console.log(item);\r\n // }}\r\n // >\r\n // \r\n // \r\n //
\r\n //
\r\n // );\r\n}\r\nexport default React.memo(ListViewShortcutMenu);","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, {useCallback, useContext, useEffect, useRef, useState} from 'react';\r\nimport localforage from 'localforage';\r\nimport {arrayMoveImmutable} from 'array-move';\r\n\r\nimport {storageVersion, TableColumn, TableOrderBy, TableRowRenderer, TableSettings} from '../tableSettings';\r\nimport PrimaryButton from '../ui/PrimaryButton';\r\nimport PrimaryInverseButton from '../ui/PrimaryInverseButton';\r\nimport DarkInverseButton from '../ui/DarkInverseButton';\r\nimport CheckBoxIcon from '../ui/CheckBoxIcon';\r\nimport Table from '../ui/tables/Table';\r\nimport ApplicationContext from '../ApplicationContext';\r\nimport useGlobalOkDialog from '../hooks/useGlobalOkDialog';\r\nimport IfmsModal from '../ui/IfmsModal';\r\nimport SecondaryButton from '../ui/SecondaryButton';\r\nimport { TextRenderer } from './SmartTableRenderers';\r\nimport useTableNavigation from '../ui/tables/useTableNavigation';\r\nimport useFastStorage from '../hooks/useFastStorage';\r\nimport { sortingListData } from '../components/referenceFiles/ReferenceFiles';\r\nimport * as XCol from '../framework.core/XExportColumn';\r\n\r\nfunction createDefaultSettings(\r\n overflowX:string|undefined,\r\n overflowY:string|undefined,\r\n columns:Array,\r\n containerWidth:number,\r\n) {\r\n const result:TableSettings = {\r\n overflowX,\r\n overflowY,\r\n columns: [],\r\n };\r\n const calcFixedWidth = columns.filter(x => x.width).reduce((sum, column) => sum + (column.width ?? 0), 0);\r\n let totalWidth = 0;\r\n let width = 50; \r\n\r\n for (let i = 0; i < columns.length; ++i) {\r\n const column = columns[i];\r\n \r\n if (column.width) {\r\n totalWidth += column.width;\r\n result.columns.push({...column});\r\n continue;\r\n }\r\n\r\n if (column.initialWidthPercentage && containerWidth > 0) {\r\n width = (column.initialWidthPercentage / 100) * (containerWidth - calcFixedWidth);\r\n }\r\n\r\n if (overflowY !== 'hidden') {\r\n if (i === columns.length - 2) {\r\n width = containerWidth - totalWidth - 18;\r\n }\r\n else if (i === columns.length - 1) { // Scroll size = 18\r\n width = 18;\r\n }\r\n }\r\n else {\r\n if (i === columns.length - 1)\r\n width = containerWidth - totalWidth;\r\n }\r\n totalWidth += width;\r\n\r\n result.columns.push({\r\n ...column,\r\n width,\r\n })\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction ColumnNameRenderer({row}:any) {\r\n return
{row.original.columnName}
;\r\n}\r\n\r\nfunction VisibleRenderer({row, data}:any) {\r\n const toggleColumn = data[0].toggleColumn;\r\n\r\n return (\r\n
\r\n toggleColumn(row.original.accessor)} style={{height: '20px'}}>\r\n \r\n \r\n
\r\n );\r\n}\r\n\r\ninterface SettingsDataElement {\r\n accessor: string,\r\n columnName: any,\r\n visible: boolean,\r\n canBeToggled: boolean,\r\n hiddenInColumnSetup: boolean,\r\n};\r\n\r\n// Implementation note:\r\n// New requirement is to remove columns that cannot be toggled from the list completely.\r\n// In case that is changed again, remove x.canBeToggled condition.\r\nfunction ColumnSettings({\r\n originalColumns,\r\n currentColumns,\r\n onCancel,\r\n onSave\r\n}: {\r\n originalColumns: Array,\r\n currentColumns: Array,\r\n onCancel: VoidFunction,\r\n onSave: (c:Array) => void\r\n}) {\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const [isHoverVisibleButton, setIsHoverVisibleButton] = useState(false);\r\n const [isHoverSettingButton, setIsHoverSettingButton] = useState(false);\r\n\r\n const initialData = currentColumns.map(x => ({\r\n accessor: x.accessor,\r\n columnName: x.Header,\r\n visible: findIsCurrentlyVisible(x.accessor),\r\n canBeToggled: !!x.canBeHidden,\r\n hiddenInColumnSetup: !!x.hiddenInColumnSetup,\r\n }));\r\n\r\n const [data, _setData] = useState>(initialData);\r\n const dataRef = useRef(initialData);\r\n\r\n function setData(x: Array) {\r\n dataRef.current = x;\r\n _setData(x);\r\n }\r\n\r\n const [selectedRowIndex, setSelectedRowIndex] = useState(getActualIndexOfFirstVisibleEntryInTable()); // Actual row index: note some data might be hidden in column setup\r\n const [selectedRowIndexInTable, setSelectedRowIndexInTable] = useState(0); // Selected row index in table\r\n const { selectTableRow, tableNavigationCleanup } = useTableNavigation('ifms-table-settings', onRowIndexChanged, onRowSelect, [], false, true, false);\r\n\r\n const [orderBy, setOrderBy] = useFastStorage(`columnSettings-orderby`, {\r\n orderBy: '',\r\n orderByAscending: true,\r\n });\r\n const [isSorting, setIsSorting] = useState(false);\r\n \r\n useEffect(() => {\r\n selectTableRow(0);\r\n\r\n return () => {\r\n tableNavigationCleanup();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function findIsCurrentlyVisible(accessor:string) {\r\n const match = currentColumns.find(x => x.accessor === accessor);\r\n if (match) {\r\n return match.visible;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function getActualIndexOfFirstVisibleEntryInTable() {\r\n const dd = getDisplayData();\r\n if (dd.length <= 0) {\r\n return -1;\r\n }\r\n\r\n const accessor = dd[0].accessor;\r\n\r\n return data.findIndex(x => x.accessor === accessor);\r\n }\r\n\r\n function getDisplayData() {\r\n let displayedData = dataRef.current.filter(x => !x.hiddenInColumnSetup && x.canBeToggled);\r\n let enableBranch = (appContext?.systemSettings?.enableBranch ?? false);\r\n let useVat = (appContext?.systemSettings?.useVat ?? false);\r\n\r\n if (!enableBranch) {\r\n displayedData = displayedData.filter(x => x.accessor !== 'br' && x.accessor !== 'branch');\r\n }\r\n if (!useVat) {\r\n displayedData = displayedData.filter(x => x.accessor !== 'vatAmount');\r\n }\r\n\r\n return displayedData;\r\n }\r\n\r\n function applyVisibilityToAll() {\r\n const visibleColumns = getDisplayData();\r\n \r\n const newCurrentState = [...data];\r\n\r\n visibleColumns.forEach(x => {\r\n let updateIndex = newCurrentState.findIndex(l => l.accessor === x.accessor);\r\n\r\n if (updateIndex >= 0 && newCurrentState[updateIndex].canBeToggled) {\r\n newCurrentState[updateIndex].visible = true;\r\n } \r\n });\r\n\r\n setData(newCurrentState);\r\n }\r\n\r\n function doProcessRowSelection(rowIndexInTable: number) {\r\n if(rowIndexInTable === -1){\r\n setSelectedRowIndex(-1);\r\n setSelectedRowIndexInTable(-1);\r\n return;\r\n }\r\n const accessor = getDisplayData()[rowIndexInTable].accessor;\r\n\r\n setSelectedRowIndex(dataRef.current.findIndex(x => x.accessor === accessor));\r\n\r\n setSelectedRowIndexInTable(rowIndexInTable);\r\n }\r\n\r\n function onRowIndexChanged(rowIndex: number) {\r\n doProcessRowSelection(rowIndex);\r\n }\r\n\r\n function onRowSelect(rowIndex: number) {\r\n doProcessRowSelection(rowIndex);\r\n }\r\n\r\n function toggleColumn(accessor:string) {\r\n const updateIndex = data.findIndex(x => x.accessor === accessor );\r\n if (updateIndex >= 0) {\r\n const newCurrentState = [...data];\r\n newCurrentState[updateIndex].visible = !newCurrentState[updateIndex].visible;\r\n setData(newCurrentState);\r\n }\r\n }\r\n\r\n function scrollSelectedTableRowIntoView() {\r\n const processSelection = () => {\r\n const table = document.getElementById('ifms-table-settings');\r\n if (!table) {\r\n return;\r\n }\r\n\r\n const selectedRows = table.getElementsByClassName('data-row-selected');\r\n if (selectedRows.length > 0) {\r\n selectedRows[0].scrollIntoView({behavior: 'smooth', block: 'end'});\r\n }\r\n };\r\n\r\n setTimeout(processSelection, 10);\r\n }\r\n\r\n function moveFirst() {\r\n //const includeDID = data.find(x => x.columnName === 'D/ID') ? 1 : 0;\r\n //const newIndex = includeDID + data.filter(x => x.hiddenInColumnSetup).length;\r\n const newIndex = data.filter(x => x.hiddenInColumnSetup && x.visible).length ?? 0;\r\n\r\n const newData = arrayMoveImmutable(data, selectedRowIndex, newIndex);\r\n setData(newData);\r\n\r\n setSelectedRowIndex(newIndex);\r\n\r\n selectTableRow(0, true);\r\n setSelectedRowIndexInTable(0);\r\n\r\n scrollSelectedTableRowIntoView();\r\n }\r\n\r\n function moveLast() {\r\n const newData = arrayMoveImmutable(data, selectedRowIndex, data.length - 1);\r\n setData(newData);\r\n\r\n setSelectedRowIndexInTable(getDisplayData().length - 1);\r\n setSelectedRowIndex(data.length - 1);\r\n\r\n selectTableRow(getDisplayData().length - 1, true);\r\n scrollSelectedTableRowIntoView();\r\n }\r\n\r\n function moveUp() {\r\n if (selectedRowIndex < 0) {\r\n return;\r\n }\r\n\r\n let newIndex = selectedRowIndex - 1;\r\n if (newIndex < 0) {\r\n return;\r\n }\r\n\r\n while (data[newIndex].hiddenInColumnSetup || (!appContext.suntekSettings?.company?.enableBranch && data[newIndex].columnName === 'BR')) {\r\n --newIndex;\r\n if (newIndex < 0) {\r\n return;\r\n }\r\n }\r\n\r\n const newData = arrayMoveImmutable(data, selectedRowIndex, newIndex);\r\n setData(newData);\r\n\r\n setSelectedRowIndexInTable(selectedRowIndexInTable - 1);\r\n setSelectedRowIndex(newIndex);\r\n\r\n selectTableRow(selectedRowIndexInTable - 1, true);\r\n scrollSelectedTableRowIntoView();\r\n }\r\n\r\n function moveDown() {\r\n if (selectedRowIndex < 0) {\r\n return;\r\n }\r\n\r\n let newIndex = selectedRowIndex + 1;\r\n if (newIndex >= data.length) {\r\n return;\r\n }\r\n\r\n while (data[newIndex].hiddenInColumnSetup || (!appContext.suntekSettings?.company?.enableBranch && data[newIndex].columnName === 'BR')) {\r\n ++newIndex;\r\n if (newIndex >= data.length) {\r\n return;\r\n }\r\n }\r\n\r\n const newData = arrayMoveImmutable(data, selectedRowIndex, newIndex);\r\n setData(newData);\r\n\r\n setSelectedRowIndexInTable(selectedRowIndexInTable + 1);\r\n setSelectedRowIndex(newIndex);\r\n\r\n selectTableRow(selectedRowIndexInTable + 1, true);\r\n scrollSelectedTableRowIntoView();\r\n }\r\n\r\n function reorder() {\r\n //setRequireReorder(true);\r\n\r\n // const findCurrentVisibilitySetting = (accessor: string, defaultValue: boolean): boolean => {\r\n // const el = data.find(x => x.accessor === accessor);\r\n // if (el) {\r\n // return el.visible;\r\n // }\r\n\r\n // return defaultValue;\r\n // };\r\n\r\n const initialData = originalColumns.map(x => ({\r\n accessor: x.accessor,\r\n columnName: x.Header,\r\n // visible: findCurrentVisibilitySetting(x.accessor, findIsCurrentlyVisible(x.accessor)),\r\n visible: x.visible,\r\n canBeToggled: !!x.canBeHidden,\r\n hiddenInColumnSetup: !!x.hiddenInColumnSetup,\r\n }));\r\n\r\n setData(initialData);\r\n\r\n setSelectedRowIndex(getActualIndexOfFirstVisibleEntryInTable());\r\n setSelectedRowIndexInTable(0);\r\n selectTableRow(0, true);\r\n }\r\n\r\n async function processSave() {\r\n if (data.every(x => !x.visible || x.hiddenInColumnSetup)) {\r\n await showGlobalOkDialog('Cannot save column option without any selection');\r\n return;\r\n }\r\n\r\n let newColumns:Array = [];\r\n\r\n function findVisibility(accessor:string) {\r\n const match = data.find(x => x.accessor === accessor);\r\n if (match) {\r\n return match.visible;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n // if (requireReorder) {\r\n // originalColumns.forEach(o => {\r\n // const c = currentColumns.find(x => x.accessor === o.accessor);\r\n // if (!c) {\r\n // return;\r\n // }\r\n\r\n // newColumns.push({\r\n // ...c,\r\n // visible: findVisibility(c.accessor)\r\n // });\r\n // });\r\n // } else {\r\n // data.forEach(d => {\r\n // const c = currentColumns.find(x => x.accessor === d.accessor);\r\n // if (!c) {\r\n // // Should never happen\r\n // return;\r\n // }\r\n\r\n // newColumns.push({\r\n // ...c,\r\n // visible: findVisibility(c.accessor),\r\n // });\r\n // });\r\n // }\r\n\r\n data.forEach(d => {\r\n const c = currentColumns.find(x => x.accessor === d.accessor);\r\n if (!c) {\r\n // Should never happen\r\n return;\r\n }\r\n\r\n newColumns.push({\r\n ...c,\r\n visible: findVisibility(c.accessor),\r\n });\r\n });\r\n\r\n onSave(newColumns);\r\n }\r\n\r\n const displayColumns = [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n Cell: TextRenderer,\r\n width: 30,\r\n },\r\n {\r\n Header: 'Column Name',\r\n accessor: 'columnName',\r\n resizable: false,\r\n sortable: true,\r\n canBeHidden: false,\r\n visible: true,\r\n Cell: ColumnNameRenderer,\r\n width: 180,\r\n },\r\n {\r\n Header: 'Visible',\r\n accessor: 'visible',\r\n resizable: false,\r\n sortable: true,\r\n canBeHidden: false,\r\n visible: true,\r\n Cell: VisibleRenderer,\r\n width: 70,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 20,\r\n },\r\n ];\r\n\r\n const displayedData = getDisplayData();\r\n \r\n //const canNotMoveColumn = displayedData[0].columnName === 'D/ID' && selectedRowIndex === 2;\r\n // const canNotClickUp = selectedRowIndexInTable === 0;\r\n // const canNotClickDown = selectedRowIndexInTable === displayedData.length - 1;\r\n\r\n function onHeaderClick(header:any) {\r\n if (header && header.id !== 'indicator') {\r\n if (header.id === orderBy.orderBy) {\r\n setOrderBy({orderByAscending: !orderBy.orderByAscending});\r\n } else {\r\n setOrderBy({orderBy: header.id, orderByAscending: true});\r\n }\r\n setIsSorting(true);\r\n sortingListData(ColSetting, displayedData, setData, orderBy);\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n setIsHoverVisibleButton(true)} onMouseLeave={() => setIsHoverVisibleButton(false)}>\r\n Select all visible\r\n  \r\n
\r\n\r\n
\r\n {reorder(); setIsSorting(false); setOrderBy({orderBy: '', orderByAscending: true});}} onMouseEnter={() => setIsHoverSettingButton(true)} onMouseLeave={() => setIsHoverSettingButton(false)}>\r\n Set default setting\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n Up\r\n Down\r\n Top\r\n Bottom\r\n
\r\n\r\n
\r\n ({...x, indicator: i + 1, toggleColumn }))}\r\n height=\"500px\"\r\n overflowX=\"hidden\"\r\n overflowY=\"scroll\"\r\n headersColor=\"white\"\r\n selectable\r\n orderBy={[orderBy]}\r\n useHighlightCellOnMouseover={false}\r\n useSetClickedCellWhenClick={false}\r\n onHeaderClick={onHeaderClick}\r\n />\r\n
\r\n\r\n
\r\n
\r\n \r\n SAVE\r\n \r\n {setOrderBy({orderBy: '', orderByAscending: true}); onCancel();}}>\r\n CANCEL\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport type SmartTableHandle = {\r\n showColumnSettings: VoidFunction,\r\n makeSureColumnsAreVisible: (c:Array) => void,\r\n resizeColumn: (accessor: string, width: number, persist: boolean) => void,\r\n showColumn: (accessor: string, visible: boolean, persist: boolean) => void,\r\n getColumnWidth: (accessor: string) => number,\r\n};\r\n\r\ntype SmartTableProps = {\r\n tableName: string,\r\n overflowX?: string|undefined,\r\n overflowY?: string|undefined,\r\n columns: Array,\r\n data: Array,\r\n rowRenderers?: Array,\r\n width?: string|undefined,\r\n height?: string|undefined,\r\n useStorage?: boolean,\r\n flexResizer?: boolean,\r\n customStorage?: {\r\n setItem: (storageKey:string, settings:any) => void,\r\n getItem: (storageKey:string) => Promise,\r\n }|undefined,\r\n headersColor?: 'gray'|'yellow'|'white'|'teal'|'lightgray',\r\n footerRow?: Array|undefined,\r\n headerRow?: Array|undefined,\r\n selectable?: boolean,\r\n alternateRows?: boolean,\r\n orderBy?: Array|undefined,\r\n onHeaderClick?: ((x:TableColumn) => void)|undefined,\r\n customTableId?: string|undefined,\r\n getCustomCellProps?: any|undefined,\r\n rowProps?: any|undefined,\r\n tableStyle?: any|undefined,\r\n selectedRowIndex?: number,\r\n selectedColIndex?: number,\r\n tableVersion?: number|undefined,\r\n isListView?: boolean,\r\n noTooltip?: boolean,\r\n useHighlightCellOnMouseover?:boolean\r\n \r\n useSetClickedCellWhenClick?:boolean,\r\n onInitialized?: VoidFunction,\r\n noHeaders?: boolean,\r\n renderBottomControls?: any,\r\n tableTitle?:string,\r\n cellRangeSelect?:boolean,\r\n useHeaderFilterParams?: {\r\n setData: (data: any[]) => void, \r\n useHeaderFilter: boolean,\r\n oriListData: Array, \r\n disableBtnNameWhenFilterModalOpen: string,\r\n },\r\n useVirtual?:boolean\r\n};\r\n\r\nconst SmartTableImpl: React.ForwardRefRenderFunction = ({\r\n tableName,\r\n overflowX = undefined,\r\n overflowY = undefined,\r\n columns,\r\n data = [],\r\n rowRenderers = [],\r\n width = undefined,\r\n height = undefined,\r\n useStorage = true,\r\n flexResizer = false,\r\n customStorage=undefined,\r\n footerRow = undefined,\r\n headerRow = undefined,\r\n headersColor = 'yellow',\r\n selectable = false,\r\n alternateRows = false,\r\n orderBy = undefined,\r\n onHeaderClick = undefined,\r\n customTableId = undefined,\r\n getCustomCellProps = undefined,\r\n rowProps = undefined,\r\n tableStyle = undefined,\r\n selectedRowIndex,\r\n selectedColIndex,\r\n tableVersion = undefined,\r\n isListView = false,\r\n noTooltip = false,\r\n useHighlightCellOnMouseover = false,\r\n useSetClickedCellWhenClick= false,\r\n onInitialized = undefined,\r\n noHeaders = false,\r\n renderBottomControls,\r\n tableTitle,\r\n cellRangeSelect = true,\r\n useHeaderFilterParams = { setData: () => { }, useHeaderFilter: false, oriListData: [], disableBtnNameWhenFilterModalOpen: '' },\r\n useVirtual = false,\r\n}, ref) => {\r\n const appContext = useContext(ApplicationContext);\r\n const storageNameBase = `table-v-${(tableVersion ?? '')}-${storageVersion}-`;\r\n \r\n const storageKey = `${storageNameBase}${tableName}`;\r\n const storage = customStorage || localforage;\r\n const appliedTableId = customTableId ?? tableName;\r\n\r\n const [initialized, setInitialized] = useState(false);\r\n const [settings, setSettings] = useState({columns: columns || []});\r\n const [showColumnConfiguration, setShowColumnConfiguration] = useState(false);\r\n \r\n function onCloumnOptionClose(){\r\n setShowColumnConfiguration(false);\r\n }\r\n\r\n React.useImperativeHandle(ref, () => ({\r\n showColumnSettings: () => {\r\n setShowColumnConfiguration(true);\r\n },\r\n makeSureColumnsAreVisible: columnList => doMakeSureColumnsAreVisible(columnList),\r\n resizeColumn,\r\n showColumn,\r\n getColumnWidth: getCurrentWidthInDom\r\n }));\r\n\r\n useEffect(() => {\r\n if (initialized && onInitialized) {\r\n onInitialized();\r\n }\r\n return () => {\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [initialized]\r\n );\r\n\r\n const divRef = useCallback(node => {\r\n if (!node) {\r\n return; // Should never happen\r\n }\r\n\r\n if (useStorage) {\r\n initializeFromStorage(node.getBoundingClientRect().width);\r\n } else {\r\n intializeInMemory(node.getBoundingClientRect().width);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [width, tableName]);\r\n\r\n function intializeInMemory(containerWidth:number) {\r\n const settings = createDefaultSettings(overflowX, overflowY, columns, containerWidth);\r\n setSettings(settings);\r\n\r\n setInitialized(true);\r\n }\r\n\r\n async function initializeFromStorage(containerWidth:number) {\r\n let settingsFromStorage = await storage.getItem(storageKey);\r\n\r\n if (!settingsFromStorage) {\r\n settingsFromStorage = createDefaultSettings(overflowX, overflowY, columns, containerWidth);\r\n await storage.setItem(storageKey, settingsFromStorage);\r\n }\r\n\r\n setSettings(settingsFromStorage);\r\n\r\n setInitialized(true);\r\n }\r\n\r\n function doMakeSureColumnsAreVisible(columnAccessors:Array) {\r\n if (!columnAccessors || columnAccessors.length <= 0) {\r\n return;\r\n }\r\n //const columns = _.cloneDeep(settings.columns);\r\n columnAccessors.forEach(a => {\r\n showColumn(a, true, true);\r\n // const index = columns.findIndex(x => x.accessor === a);\r\n // if (index >= 0) {\r\n // columns[index].visible = true;\r\n // }\r\n });\r\n\r\n //saveColumnsSettings(columns);\r\n }\r\n\r\n function showColumn(accessor: string, visible: boolean, persist: boolean) {\r\n if (flexResizer) {\r\n showColumnFlexResizer(accessor, visible, persist);\r\n } else {\r\n showColumnFixResizer(accessor, visible, persist);\r\n }\r\n }\r\n\r\n function showColumnFlexResizer(accessor: string, visible: boolean, persist: boolean) {\r\n const currentWidthInDom = getCurrentWidthInDom(accessor);\r\n\r\n const columns = _.cloneDeep(settings.columns);\r\n const changeIndex = columns.findIndex(c => c.accessor === accessor);\r\n if (changeIndex < 0) {\r\n return;\r\n }\r\n\r\n if (columns[changeIndex].visible === visible) {\r\n return;\r\n }\r\n\r\n columns[changeIndex].visible = visible;\r\n\r\n // When modifying column visibility, transfer its width to or from the neighboring (depending is it hide or show) column:\r\n // 1. If exists column on the left, then on the left column\r\n // 2. If (1) is false and there is column on the right, transfer width to it\r\n // 3. If this is the only column, don't transfer any width\r\n\r\n let neighboringIndex = -1;\r\n for (let i = changeIndex - 1; i>= 0; --i) {\r\n if (columns[i].visible) {\r\n neighboringIndex = i;\r\n break;\r\n }\r\n }\r\n\r\n if (neighboringIndex < 0) {\r\n for (let i = changeIndex + 1; i < columns.length; ++i) {\r\n if (columns[i].visible) {\r\n neighboringIndex = i;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (neighboringIndex >= 0) {\r\n const neighboringWidthInDom = getCurrentWidthInDom(columns[neighboringIndex].accessor);\r\n\r\n if (!visible) {\r\n const newNeighboringWidth = neighboringWidthInDom + currentWidthInDom;\r\n resizeTableColumnInDom(columns[neighboringIndex].accessor, newNeighboringWidth);\r\n columns[neighboringIndex].width = newNeighboringWidth;\r\n } else {\r\n const newNeighboringWidth = neighboringWidthInDom - (columns[changeIndex].width ?? 0);\r\n resizeTableColumnInDom(columns[neighboringIndex].accessor, newNeighboringWidth);\r\n columns[neighboringIndex].width = newNeighboringWidth;\r\n }\r\n }\r\n\r\n if (persist) {\r\n saveColumnsSettings(columns);\r\n } else {\r\n const settingsCopy = _.cloneDeep(settings);\r\n settingsCopy.columns = columns;\r\n setSettings(settingsCopy);\r\n }\r\n }\r\n\r\n function showColumnFixResizer(accessor: string, visible: boolean, persist: boolean) {\r\n const columns = _.cloneDeep(settings.columns);\r\n const changeIndex = columns.findIndex(c => c.accessor === accessor);\r\n if (changeIndex < 0) {\r\n return;\r\n }\r\n\r\n if (columns[changeIndex].visible === visible) {\r\n return;\r\n }\r\n\r\n columns[changeIndex].visible = visible;\r\n\r\n if (persist) {\r\n saveColumnsSettings(columns);\r\n } else {\r\n const settingsCopy = _.cloneDeep(settings);\r\n settingsCopy.columns = columns;\r\n setSettings(settingsCopy);\r\n }\r\n }\r\n\r\n function getCurrentWidthInDom(accessor: string): number {\r\n const table = document.getElementById(appliedTableId);\r\n if (!table) {\r\n return 0;\r\n }\r\n\r\n const header = table.querySelector(`[data-column-id='${accessor}']`) as HTMLElement|null;\r\n if (!header) {\r\n return 0;\r\n }\r\n\r\n const rect = header.getBoundingClientRect();\r\n return rect.width;\r\n }\r\n\r\n function resizeTableColumnInDom(accessor: string, width: number) {\r\n const table = document.getElementById(appliedTableId);\r\n if (!table) {\r\n return;\r\n }\r\n\r\n const header = table.querySelector(`[data-column-id='${accessor}']`) as HTMLElement|null;\r\n if (!header) {\r\n return;\r\n }\r\n\r\n header.style.width = `${width}px`;\r\n\r\n let columnIndex = 0;\r\n const parts = header.id.split('-');\r\n if (parts.length > 0) {\r\n columnIndex = parseInt(parts[parts.length - 1]);\r\n }\r\n\r\n\r\n let row = 0;\r\n let element = document.getElementById(`${appliedTableId}-cell-${row}-${columnIndex}`);\r\n\r\n while (element) {\r\n element.style.width = width + 'px';\r\n row = row + 1;\r\n element = document.getElementById(`${appliedTableId}-cell-${row}-${columnIndex}`);\r\n }\r\n }\r\n\r\n function resizeColumn(accessor: string, width: number, persist: boolean) {\r\n if (flexResizer) {\r\n resizeColumnFlexResizer(accessor, width, persist);\r\n } else {\r\n resizeColumnFixResizer(accessor, width, persist);\r\n }\r\n resizeTableColumnInDom(accessor, width);\r\n }\r\n\r\n function resizeColumnFixResizer(accessor: string, width: number, persist: boolean) {\r\n const columns = _.cloneDeep(settings.columns);\r\n const changeIndex = columns.findIndex(c => c.accessor === accessor);\r\n if (changeIndex < 0) {\r\n return;\r\n }\r\n\r\n if (columns[changeIndex].width === width) {\r\n return;\r\n }\r\n\r\n resizeTableColumnInDom(accessor, width);\r\n\r\n columns[changeIndex].width = width;\r\n\r\n if (persist) {\r\n saveColumnsSettings(columns);\r\n } else {\r\n const settingsCopy = _.cloneDeep(settings);\r\n settingsCopy.columns = columns;\r\n setSettings(settingsCopy);\r\n }\r\n }\r\n\r\n function resizeColumnFlexResizer(accessor: string, width: number, persist: boolean) {\r\n const columns = _.cloneDeep(settings.columns);\r\n const changeIndex = columns.findIndex(c => c.accessor === accessor);\r\n if (changeIndex < 0) {\r\n return;\r\n }\r\n\r\n if (columns[changeIndex].width === width) {\r\n return;\r\n }\r\n\r\n\r\n // resizeTableColumnInDom(accessor, width);\r\n\r\n // When modifying column size, transfer its delta width to the neighboring column:\r\n // 1. If exists column on the right AND that column is not scroll column (it has little bit special function), transfer width to that column\r\n // 2. If (1) is false and there is column on the left, transfer width to it\r\n // 3. Don't transfer otherwise\r\n\r\n let neighboringIndex = -1;\r\n for (let i = changeIndex + 1; i < columns.length; ++i) {\r\n if (columns[i].visible && columns[i].accessor !== 'scroll') {\r\n neighboringIndex = i;\r\n break;\r\n }\r\n }\r\n if (neighboringIndex < 0) {\r\n for (let i = changeIndex - 1; i >= 0; --i) {\r\n if (columns[i].visible) {\r\n neighboringIndex = i;\r\n break;\r\n } \r\n }\r\n }\r\n\r\n if (neighboringIndex >= 0) {\r\n const delta = width - (columns[changeIndex].width ?? 0);\r\n const newNeighboringWidth = (columns[neighboringIndex].width ?? 0) - delta;\r\n\r\n resizeTableColumnInDom(columns[neighboringIndex].accessor, newNeighboringWidth);\r\n\r\n columns[neighboringIndex].width = newNeighboringWidth;\r\n }\r\n\r\n resizeTableColumnInDom(accessor, width);\r\n\r\n columns[changeIndex].width = width;\r\n\r\n if (persist) {\r\n saveColumnsSettings(columns);\r\n } else {\r\n const settingsCopy = _.cloneDeep(settings);\r\n settingsCopy.columns = columns;\r\n setSettings(settingsCopy);\r\n }\r\n }\r\n\r\n function saveColumnsSettings(columns:Array) {\r\n setShowColumnConfiguration(false);\r\n\r\n const settingsCopy = _.cloneDeep(settings);\r\n settingsCopy.columns = columns;\r\n\r\n if (useStorage) {\r\n storage.setItem(storageKey, settingsCopy);\r\n }\r\n\r\n setSettings(settingsCopy);\r\n }\r\n\r\n function onColumnsResized(resizedColumns:Array) {\r\n const settingsCopy = _.cloneDeep(settings);\r\n resizedColumns.forEach(r => {\r\n const actualIndex = settingsCopy.columns.findIndex(c => c.accessor === r.id); // Some columns could be hidden. Index in r param is not correct\r\n if (actualIndex >= 0) {\r\n settingsCopy.columns[actualIndex].width = r.width;\r\n }\r\n });\r\n\r\n if (useStorage) {\r\n storage.setItem(storageKey, settingsCopy);\r\n }\r\n\r\n setSettings(settingsCopy);\r\n }\r\n\r\n function getActualIndex(visibleIndex:number) {\r\n if (visibleIndex < 0 || visibleIndex > settings.columns.length - 1) {\r\n return visibleIndex;\r\n }\r\n\r\n let visiblePassed = 0;\r\n let numOfInvisible = 0;\r\n\r\n for (let i = 0; i < settings.columns.length; ++i) {\r\n if (settings.columns[i].visible) {\r\n ++visiblePassed;\r\n } else {\r\n ++numOfInvisible\r\n }\r\n\r\n if (visiblePassed === visibleIndex) {\r\n break;\r\n }\r\n }\r\n\r\n return visibleIndex + numOfInvisible;\r\n }\r\n\r\n function onColumnReorder({from, to}:{from:number, to: number}) {\r\n if( to === 0 ) return; //fixed first column\r\n // Take into conideration possible hidden columns -> from, to parameters are indeces of visible columns\r\n let actualFrom = getActualIndex(from);\r\n let actualTo = getActualIndex(to);\r\n\r\n const hasStatusColumn = settings.columns.some(function (elem) {\r\n return elem?.accessor === 'status';\r\n });\r\n const hasRecogColumn = settings.columns.some(function (elem) {\r\n return elem?.accessor === 'recognized';\r\n });\r\n // const hasDIDColumn = settings.columns.some(function (elem) {\r\n // return elem?.accessor === 'shipmentType';\r\n // });\r\n // const hasINVColumn = settings.columns.some(function (elem) {\r\n // return elem?.accessor === 'invStat';\r\n // });\r\n // const hasBILColumn = settings.columns.some(function (elem) {\r\n // return elem?.accessor === 'billStat';\r\n // });\r\n // const hasCrDbColumn = settings.columns.some(function (elem) {\r\n // return elem?.accessor === 'crDbStat';\r\n // }); \r\n const hiddenColumnNum = settings.columns.filter(x => x.hiddenInColumnSetup && x.Header !== '').length;\r\n\r\n const canNotDropIndex = Number(hasStatusColumn) + Number(hasRecogColumn);\r\n // + Number(hasDIDColumn) + Number(hasINVColumn) + Number(hasBILColumn) + Number(hasCrDbColumn);\r\n\r\n const settingsCopy = _.cloneDeep(settings);\r\n\r\n if(actualTo < canNotDropIndex || actualTo < hiddenColumnNum) //can not drop lower than canNotDropIndex || hiddenColumnNum\r\n return;\r\n else\r\n settingsCopy.columns = arrayMoveImmutable(settingsCopy.columns, actualFrom, actualTo);\r\n\r\n if (useStorage) {\r\n storage.setItem(storageKey, settingsCopy);\r\n }\r\n\r\n setSettings(settingsCopy);\r\n }\r\n\r\n let displayColumns:Array = [];\r\n\r\n if (initialized) {\r\n //<230616.dwshin. branch setting option에 따라서 column width 조정 되도록 수정>\r\n let enableBranch = (appContext?.systemSettings?.enableBranch ?? false);\r\n let useVat = (appContext?.systemSettings?.useVat ?? false);\r\n let colBranch = settings.columns.find(x => x.accessor === 'br' || x.accessor === 'branch');\r\n\r\n // let enableTrackRequest = (appContext.suntekSettings?.company?.trackingService ?? false);\r\n // let colTrackingDate = settings.columns.find(x => x.accessor === 'trDate');\r\n\r\n let maxWidthAccessor = '';\r\n // option false 경우만 width 가공.\r\n //if ((!enableBranch && colBranch) || (!enableTrackRequest && colTrackingDate)) {\r\n if (!enableBranch && colBranch) {\r\n let colWidths = settings.columns.map(x => { return x.width ?? 0 });\r\n let colInitWidths = settings.columns.map(x => { return x.initialWidthPercentage ?? 0 });\r\n let max = Math.max(...colWidths, ...colInitWidths);\r\n if (colWidths && max > 0) {\r\n maxWidthAccessor = settings.columns.find(x => x.width === max || x.initialWidthPercentage === max)?.accessor ?? '';\r\n }\r\n }\r\n\r\n let tempColumns = settings.columns.filter(x => x.visible);\r\n if (!enableBranch) {\r\n tempColumns = tempColumns.filter(x => x.accessor !== 'br' && x.accessor !== 'branch');\r\n }\r\n if(!useVat){\r\n tempColumns = tempColumns.filter(x => x.accessor !== 'vatAmount' );\r\n }\r\n // if (!enableTrackRequest)\r\n // tempColumns = tempColumns.filter(x => x.accessor !== 'trDate');\r\n\r\n //displayColumns = settings.columns.filter(x => enableBranch ? x.visible : x.visible && x.accessor !== 'br' && x.accessor !== 'branch').map(x => {\r\n displayColumns = tempColumns.map(x => {\r\n const renderer = rowRenderers.find(r => r.accessor === x.accessor);\r\n if (renderer) {\r\n const result = { ...x };\r\n if (renderer.Cell) {\r\n result.Cell = renderer.Cell;\r\n }\r\n if (renderer.Header) {\r\n result.Header = renderer.Header;\r\n }\r\n\r\n if (maxWidthAccessor && result.accessor === maxWidthAccessor) {\r\n if (result.width)\r\n result.width += colBranch?.width ?? 0;\r\n\r\n if (result.initialWidthPercentage)\r\n result.initialWidthPercentage += colBranch?.initialWidthPercentage ?? 0;\r\n }\r\n \r\n result.headerFilterType = x.headerFilterType;\r\n\r\n return result;\r\n } else {\r\n return x;\r\n }\r\n });\r\n }\r\n\r\n const doNotSetHeaderWhite = !appliedTableId.includes('ReviewProfit');\r\n\r\n if (!isListView && doNotSetHeaderWhite) {\r\n headersColor = 'white';\r\n }\r\n\r\n return (\r\n
\r\n {initialized &&\r\n \r\n }\r\n \r\n {showColumnConfiguration &&\r\n setShowColumnConfiguration(false)}\r\n onSave={saveColumnsSettings}\r\n />\r\n }\r\n \r\n
\r\n );\r\n};\r\n\r\nconst SmartTable = React.forwardRef(SmartTableImpl);\r\n\r\nSmartTable.defaultProps = {\r\n columns: [],\r\n data: [],\r\n onHeaderClick: () => {},\r\n \r\n rowRenderers: [],\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'yellow',\r\n selectable: false,\r\n alternateRows: false,\r\n selectedRowIndex: undefined,\r\n noTooltip: false,\r\n noHeaders: false,\r\n cellRangeSelect: true,\r\n};\r\n\r\nSmartTable.propTypes = {\r\n tableName: PropTypes.string.isRequired,\r\n columns: PropTypes.array.isRequired,\r\n data: PropTypes.array.isRequired,\r\n onHeaderClick: PropTypes.func.isRequired,\r\n overflowX: PropTypes.string,\r\n overflowY: PropTypes.string,\r\n rowRenderers: PropTypes.array.isRequired,\r\n height: PropTypes.string,\r\n width: PropTypes.string,\r\n useStorage: PropTypes.bool.isRequired,\r\n flexResizer: PropTypes.bool.isRequired,\r\n customStorage: PropTypes.shape({\r\n setItem: PropTypes.func.isRequired,\r\n getItem: PropTypes.func.isRequired,\r\n }),\r\n footerRow: PropTypes.array,\r\n headerRow: PropTypes.array,\r\n headersColor: PropTypes.oneOf(['gray', 'yellow', 'white', 'teal', 'lightgray']),\r\n selectable: PropTypes.bool.isRequired,\r\n alternateRows: PropTypes.bool.isRequired,\r\n orderBy: PropTypes.array,\r\n customTableId: PropTypes.string,\r\n getCustomCellProps: PropTypes.func,\r\n selectedRowIndex: PropTypes.number,\r\n selectedColIndex: PropTypes.number,\r\n noTooltip: PropTypes.bool.isRequired,\r\n onInitialized: PropTypes.func,\r\n noHeaders: PropTypes.bool.isRequired,\r\n cellRangeSelect: PropTypes.bool,\r\n};\r\n\r\nexport default React.memo(SmartTable);\r\n\r\n\r\nexport class ColSetting { //for headerSorting\r\n private static ExportCollection: XCol.XExportColumn[] = [ //for list sorting when header click\r\n XCol.Create({ col: 0, text: '', width: 10, dataIndex: 'columnName', type: XCol.XCellType.String }),\r\n XCol.Create({ col: 1, text: '', width: 10, dataIndex: 'visible', type: XCol.XCellType.Bool }),\r\n ];\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] { //for list sorting when header click\r\n return this.ExportCollection;\r\n };\r\n}","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nfunction ToolboxMenuItem({\r\n label,\r\n shortcut,\r\n width = undefined,\r\n name = undefined,\r\n}: {\r\n label: string|undefined\r\n shortcut: string|undefined\r\n width?: string|undefined\r\n name?: string|undefined\r\n}) {\r\n return (\r\n
\r\n
{label}
\r\n
{shortcut}
\r\n
\r\n
\r\n );\r\n}\r\n\r\nToolboxMenuItem.defaultProps = {\r\n};\r\n\r\nToolboxMenuItem.propTypes = {\r\n label: PropTypes.string,\r\n shortcut: PropTypes.string,\r\n width: PropTypes.string,\r\n};\r\n\r\nexport default React.memo(ToolboxMenuItem);\r\n","import _ from 'lodash';\r\nimport { useState } from 'react';\r\n\r\nexport default function useMemento(initialValue:any) {\r\n const [value, _setValue] = useState(initialValue);\r\n const [history, setHistory] = useState([initialValue]);\r\n\r\n function setValue(value:any) {\r\n if (!_.isEqual(value, lastHistoryElement())) {\r\n setHistory([...history, value]);\r\n _setValue(value);\r\n }\r\n }\r\n\r\n function popHistory() {\r\n if (history.length > 1) {\r\n setHistory(_.initial(history));\r\n }\r\n }\r\n\r\n function lastHistoryElement() {\r\n return history[history.length - 1];\r\n }\r\n\r\n function memento() {\r\n const m = lastHistoryElement();\r\n\r\n if (!_.isEqual(value, lastHistoryElement())) {\r\n setValue(lastHistoryElement());\r\n }\r\n\r\n popHistory();\r\n\r\n return m;\r\n }\r\n\r\n return [value, setValue, memento];\r\n}\r\n ","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdcAAAGtCAYAAABEPT5mAAAACXBIWXMAAC4jAAAuIwF4pT92AAAGWmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMS0xMS0wN1QxNToxMTowMyswMTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjItMDUtMTNUMTE6Mzg6MTYrMDI6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjItMDUtMTNUMTE6Mzg6MTYrMDI6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjE3ZjQ1ODAtYTcyZS1kZjQzLWI0MjctNTY2OTI0NzVlYmE4IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZDlkYzY2NDgtYjQzNS00NzQ3LWI3ZTMtYTUwYWRlYWEzMDQ3IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6Mzg3M2QzN2ItMGYyMS1iNDQ4LTkzZWEtNWEzMjMzMmZiOGZhIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDozODczZDM3Yi0wZjIxLWI0NDgtOTNlYS01YTMyMzMyZmI4ZmEiIHN0RXZ0OndoZW49IjIwMjEtMTEtMDdUMTU6MTE6MDMrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMy4wIChXaW5kb3dzKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoyMTdmNDU4MC1hNzJlLWRmNDMtYjQyNy01NjY5MjQ3NWViYTgiIHN0RXZ0OndoZW49IjIwMjItMDUtMTNUMTE6Mzg6MTYrMDI6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMy4wIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4ScjWyAAAMeUlEQVR4nO3dz3Fb5xXG4aMM92EHZiowsop2oSpIUoGkElRB7ApsVxC6A3UQamfvkAqCDgJXwCwgWpLNP6D0Xhzg+55nBsOxh7o8xL38fsS9APjspgCApD90DwAAoxFXAAgTVwAIE1cA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\"","import './date.css';\r\n\r\nimport _ from 'lodash';\r\nimport {Portal} from 'react-portal';\r\nimport PropTypes from 'prop-types';\r\nimport React, {useEffect, useRef, useState} from 'react';\r\nimport { faAngleLeft, faAngleRight} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\nimport {usePopper} from 'react-popper';\r\nimport InputMask from \"react-input-mask\";\r\nimport Calendar from 'react-calendar';\r\nimport TextBox from './TextBox';\r\nimport useGlobalOkDialog from '../hooks/useGlobalOkDialog';\r\nimport useSystemSettings from '../hooks/useSystemSettings';\r\nimport useMemento from '../hooks/useMemento';\r\nimport calendarIcon from '../img/calendar-red-top.png';\r\nimport {addMonths, dateTextToIso, formatDate, getLongDateFromIso, isoToDate, jsDateToIso, now, nowDate,} from '../dateUtils';\r\nimport moment from 'moment';\r\nimport useSuntekSettings from '../hooks/useSuntekSettings';\r\n\r\nconst currentYear = `${new Date().getFullYear()}`;\r\nconst currentDate = getLongDateFromIso(nowDate());\r\n\r\nconst DayNames = [\r\n \"Sunday\",\r\n \"Monday\",\r\n \"Tuesday\",\r\n \"Wednesday\",\r\n \"Thursday\",\r\n \"Friday\",\r\n \"Saturday\"\r\n];\r\n\r\n//const today = DayNames[moment(currentDate).day()]; //<240315.dwshin. remove warning>\r\nconst today = DayNames[moment().day()];\r\n\r\nfunction onlyYearPartIsMissing(dateParam:string, format:string) {\r\n let date = _.cloneDeep(dateParam);\r\n\r\n if (!date || !format) {\r\n return false;\r\n }\r\n\r\n // This operation makes sense only for date formats that ends with 'yyyy';\r\n if (!format.toLowerCase().endsWith('-yyyy')) {\r\n return false;\r\n }\r\n\r\n // Fill remaining dateParts with blanks for easier calculation\r\n if (date.length < format.length) {\r\n const missingElements = format.length - date.length;\r\n for (let i = 0; i < missingElements; ++i) {\r\n date = `${date}_`;\r\n }\r\n }\r\n\r\n const currentYearPositionStart = format.search(/yyyy/i);\r\n if (currentYearPositionStart < 0) {\r\n return false;\r\n }\r\n\r\n if ((currentYearPositionStart + 4) > date.length) {\r\n return false;\r\n }\r\n\r\n // Check if only year part is missing\r\n for (let i = 0; i < date.length; ++i) {\r\n if (i >= currentYearPositionStart && i < (currentYearPositionStart + 4)) {\r\n // year characters must not be numbers\r\n if (!isNaN(parseInt(date[i]))) {\r\n return false;\r\n }\r\n } else if (format[i] === '-') {\r\n // if format has '-' at that position, date must also\r\n if (date[i] !== '-') {\r\n return false;\r\n }\r\n } else {\r\n // remaining part of the date must be filled with numbers\r\n if (isNaN(parseInt(date[i]))) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction applyCurrentYearToValue(date:string, format:string) {\r\n return `${date}${currentYear}`;\r\n}\r\n\r\nexport type DateHandle = {\r\n setOpen: (x:boolean) => void,\r\n};\r\n\r\ntype DateProps = {\r\n dateId?: string|undefined,\r\n value: string|null|undefined,\r\n onChange?: (x:string|null) => void,\r\n onEnter?: VoidFunction|undefined,\r\n disabled?: boolean,\r\n noRangeCheck?: boolean,\r\n startDateCheck?:boolean,\r\n noSetLastValidDateWhenOutOfRange?: boolean,\r\n noborder?: boolean,\r\n nopopup?: boolean,\r\n hideIcon?: boolean,\r\n validationFor?: string|undefined,\r\n onTabNext?: (() => boolean)|undefined,\r\n onTabPrevious?: (() => boolean)|undefined,\r\n onCalendarSelect?: VoidFunction|undefined,\r\n iconOffset?: string|undefined,\r\n formatString?: string|undefined,\r\n onBlur?: (() => void) | undefined,\r\n fireBlur?: boolean,\r\n name?:string|undefined,\r\n showPlaceHolder?:boolean,\r\n style?:any,\r\n doNotCheckRange?: boolean,\r\n};\r\n\r\nconst IfmsDateImpl: React.ForwardRefRenderFunction = (\r\n {\r\n value,\r\n onChange = () => {},\r\n onEnter = undefined,\r\n disabled = false,\r\n onTabNext = undefined,\r\n onTabPrevious = undefined,\r\n dateId = undefined,\r\n onCalendarSelect = undefined,\r\n noRangeCheck = false,\r\n startDateCheck = false,\r\n noSetLastValidDateWhenOutOfRange = false,\r\n noborder = false,\r\n nopopup = false,\r\n hideIcon = false,\r\n validationFor = undefined,\r\n iconOffset = undefined,\r\n formatString = '',\r\n onBlur = undefined,\r\n fireBlur = false,\r\n name=undefined,\r\n showPlaceHolder = true,\r\n style={},\r\n doNotCheckRange = false, \r\n },\r\n ref,\r\n) => {\r\n React.useImperativeHandle(ref, () => ({\r\n setOpen,\r\n }));\r\n\r\n const dark = false;\r\n const suntekSettings = useSuntekSettings();\r\n const systemSettings = useSystemSettings();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const format = formatString || suntekSettings.company?.dateFormat.toUpperCase() || '';\r\n\r\n const inputId = !!dateId ? dateId : _.uniqueId('ifms-date-');\r\n\r\n const [textValue, setTextValue] = useState(''); // Represents formatted value, like 12-28-2021 (MM-DD-YYYY)\r\n const [isoValue, setIsoValue, memento] = useMemento(null);\r\n const [open, _setOpen] = useState(false);\r\n const openRef = useRef(false);\r\n const calendarContainerRef = useRef(null);\r\n const inputContainerRef = useRef(null);\r\n const iconRef = useRef(null);\r\n \r\n const [referenceElement, setReferenceElement] = useState(null);\r\n const [popperElement, setPopperElement] = useState(null);\r\n const [arrowElement, setArrowElement] = useState(null);\r\n const [activeStartDate, setActiveStartDate] = useState(new Date());\r\n const { styles, attributes } = usePopper(referenceElement, popperElement, {\r\n modifiers: [{ name: 'arrow', options: { element: arrowElement } }],\r\n placement: 'right-start',\r\n strategy: 'fixed'\r\n });\r\n\r\n\r\n\r\n\r\n let mask = format.replace(/m/g, '9').replace(/M/g, '9').replace(/y/g, '9').replace(/Y/g, '9').replace(/d/g, '9').replace(/D/g, '9');\r\n const placeholder = format.replace(/m/g, ' ').replace(/M/g, ' ').replace(/y/g, ' ').replace(/d/g, ' ').replace(/D/g, ' ');\r\n\r\n if(formatString) {\r\n mask = format.replace(/m/g, 'a').replace(/M/g, 'a').replace(/y/g, '9').replace(/Y/g, '9').replace(/d/g, '9').replace(/D/g, '9');\r\n }\r\n\r\n function setOpen(v:boolean) {\r\n openRef.current = v;\r\n if(textValue === ''){\r\n setActiveStartDate(new Date());\r\n }else{\r\n setActiveStartDate(new Date(value??''));\r\n }\r\n _setOpen(v);\r\n }\r\n\r\n useEffect(() => {\r\n mapValueToState();\r\n\r\n document.addEventListener('click', handleClickOutside, true);\r\n return () => {\r\n document.removeEventListener('click', handleClickOutside, true);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [value, format]);\r\n \r\n\r\n function onKeyUp(e:React.KeyboardEvent) {\r\n if (e.key === 'Enter' && onEnter) {\r\n setOpen(false);\r\n mapValueToState();\r\n onEnter();\r\n }\r\n }\r\n\r\n function isOutOfRange(iso:string|null) {\r\n if (!iso) {\r\n return false;\r\n }\r\n\r\n if (noRangeCheck) {\r\n return false;\r\n }\r\n\r\n if(startDateCheck){\r\n return false;\r\n }\r\n\r\n if (!systemSettings.intervalOfInputDate) {\r\n return false;\r\n }\r\n \r\n return iso > addMonths(now(),systemSettings.intervalOfInputDate) || iso < addMonths(now(),-systemSettings.intervalOfInputDate);\r\n }\r\n\r\n async function onChangeRaw(e:React.ChangeEvent) {\r\n const value = e.target.value;\r\n\r\n if (value === '' || value === placeholder) {\r\n onChange(null);\r\n setTextValue(value);\r\n } else {\r\n const formatResult = dateTextToIso(value, format);\r\n if (formatResult.valid) {\r\n if (isOutOfRange(formatResult.iso) && !doNotCheckRange) {\r\n if (!noSetLastValidDateWhenOutOfRange) {\r\n const lastValid = memento();\r\n onChange(lastValid);\r\n }\r\n else\r\n onChange(formatResult.iso);\r\n \r\n await showGlobalOkDialog(

The entered date is out of range

);\r\n\r\n if (referenceElement) {\r\n referenceElement.focus();\r\n referenceElement.select();\r\n }\r\n return;\r\n\r\n } else if (startDateCheck){\r\n onChange(formatResult.iso);\r\n\r\n const startDateYear = suntekSettings.accounting?.startDateYear ?? '';\r\n const startDateMonth = suntekSettings.accounting?.startDateMonth ?? '';\r\n\r\n const startDate = startDateYear && startDateMonth ? moment(new Date(\r\n Number(startDateYear),\r\n Number(startDateMonth) - 1, 1)).format(\"YYYY-MM-DDTHH:mm:ss\") : moment(new Date(2000, 0, 1)).format(\"YYYY-MM-DDTHH:mm:ss\");\r\n\r\n if (startDate > (formatResult.iso ?? '')) {\r\n onChange(startDate);\r\n let errMsg = `The entered date is smaller than the start date of new accounting.\\n(The start date of new accounting is on ${formatDate(startDate)})`;\r\n\r\n await showGlobalOkDialog(

{errMsg}

);\r\n \r\n }\r\n\r\n if (referenceElement) {\r\n referenceElement.focus();\r\n referenceElement.select();\r\n }\r\n\r\n return;\r\n\r\n }else {\r\n onChange(formatResult.iso);\r\n }\r\n }\r\n setTextValue(value);\r\n }\r\n }\r\n\r\n function mapValueToState() {\r\n const textValue = formatDate(value, format);\r\n setTextValue(textValue);\r\n setIsoValue(value);\r\n }\r\n\r\n function handleClickOutside(e:MouseEvent) {\r\n const target = e.target as Node|null;\r\n\r\n if (openRef.current && inputContainerRef && inputContainerRef.current && calendarContainerRef && calendarContainerRef.current) {\r\n const shouldClose = !inputContainerRef.current.contains(target) && !calendarContainerRef.current.contains(target);\r\n\r\n if (shouldClose) {\r\n setOpen(false);\r\n }\r\n }\r\n }\r\n\r\n function handleIconClick() {\r\n if (referenceElement) { \r\n referenceElement.focus();\r\n referenceElement.select();\r\n }\r\n setOpen(true);\r\n }\r\n\r\n function handleFocus() {\r\n // Always show icon\r\n \r\n // if (iconRef && iconRef.current) {\r\n // iconRef.current.style.display = 'none';\r\n // }\r\n }\r\n\r\n function handleBlur() {\r\n // Always show icon\r\n\r\n // if (iconRef && iconRef.current) {\r\n // iconRef.current.style.display = 'block';\r\n // }\r\n\r\n if (onlyYearPartIsMissing(textValue, format)) {\r\n const valueWithCurrentYear = applyCurrentYearToValue(textValue, format);\r\n const formatResult = dateTextToIso(valueWithCurrentYear, format);\r\n\r\n if (!formatResult.valid || isOutOfRange(formatResult.iso)) {\r\n if (referenceElement) {\r\n referenceElement.focus();\r\n referenceElement.select();\r\n }\r\n mapValueToState();\r\n } else {\r\n onChange(formatResult.iso);\r\n }\r\n }\r\n\r\n mapValueToState();\r\n if(onBlur) onBlur();\r\n }\r\n\r\n async function handleCalendarChange(e: Date) {\r\n const iso = jsDateToIso(e);\r\n setOpen(false);\r\n if (isOutOfRange(iso) && !doNotCheckRange) {\r\n if (!noSetLastValidDateWhenOutOfRange) {\r\n const lastValid = memento();\r\n onChange(lastValid);\r\n }\r\n else\r\n onChange(iso);\r\n\r\n await showGlobalOkDialog(

The entered date is out of range

);\r\n\r\n if (referenceElement) {\r\n referenceElement.focus();\r\n referenceElement.select();\r\n }\r\n return;\r\n\r\n } else if (startDateCheck){\r\n onChange(iso);\r\n\r\n const startDateYear = suntekSettings.accounting?.startDateYear ?? '';\r\n const startDateMonth = suntekSettings.accounting?.startDateMonth ?? '';\r\n\r\n const startDate = startDateYear && startDateMonth ? moment(new Date(\r\n Number(startDateYear),\r\n Number(startDateMonth) - 1, 1)).format(\"YYYY-MM-DDTHH:mm:ss\") : moment(new Date(2000, 0, 1)).format(\"YYYY-MM-DDTHH:mm:ss\");\r\n\r\n if (startDate > (iso ?? '')) {\r\n onChange(startDate);\r\n let errMsg = `The entered date is smaller than the start date of new accounting.\\n(The start date of new accounting is on ${formatDate(startDate)})`;\r\n\r\n await showGlobalOkDialog(

{errMsg}

);\r\n \r\n }\r\n\r\n if (referenceElement) {\r\n referenceElement.focus();\r\n referenceElement.select();\r\n }\r\n\r\n return;\r\n\r\n }else {\r\n onChange(iso);\r\n }\r\n if (onCalendarSelect) {\r\n onCalendarSelect();\r\n }\r\n \r\n }\r\n\r\n function processTabNext(e:React.KeyboardEvent) {\r\n if (onTabNext) {\r\n const tabProcessed = onTabNext();\r\n if (tabProcessed) {\r\n setOpen(false);\r\n mapValueToState();\r\n if (e) {\r\n e.preventDefault();\r\n }\r\n return;\r\n }\r\n }\r\n }\r\n\r\n function processTabPrevious(e:React.KeyboardEvent) {\r\n if (onTabPrevious) {\r\n const tabProcessed = onTabPrevious();\r\n if (tabProcessed) {\r\n setOpen(false);\r\n mapValueToState();\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n function processSpecialKeys(e:React.KeyboardEvent) {\r\n if (!e || !e.keyCode) {\r\n return;\r\n }\r\n\r\n const tab = 9;\r\n const up = 38;\r\n const down = 40;\r\n\r\n if (e.keyCode === up || e.keyCode === down) {\r\n // const parentId = (e?.target as Element|null)?.parentElement?.parentElement?.id;\r\n // if (!!parentId) {\r\n // channel.publish('ifms.control-navigation', {\r\n // parentId,\r\n // keyCode: e.keyCode\r\n // });\r\n // }\r\n // setOpen(false);\r\n // mapValueToState();\r\n\r\n // e.preventDefault();\r\n // e.stopPropagation();\r\n\r\n return;\r\n }\r\n\r\n if (e.keyCode === tab) {\r\n if (e.shiftKey) {\r\n processTabPrevious(e);\r\n } else {\r\n processTabNext(e);\r\n }\r\n }\r\n\r\n if (fireBlur && e.key === 'Enter') {\r\n handleBlur();\r\n }\r\n }\r\n\r\n if (disabled) {\r\n return (\r\n {}} />\r\n );\r\n } else {\r\n const isCurrentlyValid = textValue === '' || textValue === placeholder || dateTextToIso(textValue, format).valid;\r\n let className = isCurrentlyValid ? 'e-ifms-input e-outline ifms-tabable' : 'e-ifms-input e-outline e-ifms-invalid-input ifms-tabable';\r\n if (!disabled) {\r\n className = `${className} ifms-tabable-active`;\r\n }\r\n if (noborder) {\r\n className = `${className} ifms-noborder-input`;\r\n }\r\n\r\n const appliedPopperStyles = {\r\n ...styles.popper,\r\n };\r\n\r\n const iconStyle = iconOffset ? { right: iconOffset } : undefined;\r\n\r\n return (\r\n <>\r\n
\r\n \r\n {(inputProps:any) => }\r\n \r\n {!hideIcon &&\r\n \"Date\"\r\n }\r\n
\r\n {(open && !nopopup) &&\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n }\r\n prevLabel={}\r\n next2Label={null /**/}\r\n prev2Label={null /**/}\r\n activeStartDate={activeStartDate}\r\n onActiveStartDateChange={({activeStartDate}) => {setActiveStartDate(activeStartDate);}}\r\n />\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n }\r\n \r\n );\r\n }\r\n};\r\n\r\nconst IfmsDate = React.forwardRef(IfmsDateImpl);\r\n\r\nIfmsDate.defaultProps = {\r\n onChange: () => {},\r\n disabled: false,\r\n noRangeCheck: false,\r\n startDateCheck:false,\r\n noSetLastValidDateWhenOutOfRange: true,\r\n noborder: false,\r\n nopopup: false,\r\n hideIcon: false,\r\n fireBlur: false,\r\n style: {},\r\n};\r\n\r\nIfmsDate.propTypes = {\r\n onChange: PropTypes.func.isRequired,\r\n onEnter: PropTypes.func,\r\n value: PropTypes.string,\r\n disabled: PropTypes.bool.isRequired,\r\n onTabNext: PropTypes.func,\r\n onTabPrevious: PropTypes.func,\r\n dateId: PropTypes.string,\r\n onCalendarSelect: PropTypes.func,\r\n noRangeCheck: PropTypes.bool.isRequired,\r\n startDateCheck: PropTypes.bool.isRequired,\r\n noSetLastValidDateWhenOutOfRange: PropTypes.bool.isRequired,\r\n noborder: PropTypes.bool.isRequired,\r\n nopopup: PropTypes.bool.isRequired,\r\n hideIcon: PropTypes.bool.isRequired,\r\n validationFor: PropTypes.string,\r\n iconOffset: PropTypes.string,\r\n formatString: PropTypes.string,\r\n fireBlur: PropTypes.bool,\r\n style: PropTypes.any,\r\n};\r\n\r\n\r\nexport default IfmsDate;\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\n\r\nfunction Left({\r\n left,\r\n leftSize,\r\n leftProps\r\n}: {\r\n left:React.ReactNode|string|undefined,\r\n leftSize: string|undefined,\r\n leftProps:any\r\n}) {\r\n const { style, ...additionalProps } = leftProps;\r\n\r\n const basicStyle = {\r\n float: 'left',\r\n width: leftSize,\r\n };\r\n\r\n const leftStyle = style\r\n ? {\r\n ...style,\r\n ...basicStyle,\r\n }\r\n : basicStyle;\r\n\r\n return (\r\n
\r\n {left}\r\n
\r\n );\r\n}\r\n\r\nfunction Right({\r\n right,\r\n rightSize,\r\n rightProps\r\n}:{\r\n right:React.ReactNode|string|undefined,\r\n rightSize: string|undefined,\r\n rightProps:any\r\n}) {\r\n const { style, ...additionalProps } = rightProps;\r\n\r\n const basicStyle = {\r\n float: 'left',\r\n width: rightSize,\r\n };\r\n\r\n const rightStyle = style\r\n ? {\r\n ...style,\r\n ...basicStyle,\r\n }\r\n : basicStyle;\r\n\r\n return (\r\n
\r\n {right}\r\n
\r\n );\r\n}\r\n\r\nfunction LeftRightSplit({\r\n left,\r\n right,\r\n leftSize,\r\n rightSize,\r\n leftProps,\r\n rightProps\r\n}:{\r\n left:React.ReactNode|string|undefined,\r\n leftSize: string|undefined,\r\n leftProps:any,\r\n right:React.ReactNode|string|undefined,\r\n rightSize: string|undefined,\r\n rightProps:any\r\n}) {\r\n const containerStyle = { width: '100%', display: 'block' };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nLeftRightSplit.defaultProps = {\r\n leftSize: '50%',\r\n rightSize: '50%',\r\n leftProps: {},\r\n rightProps: {},\r\n};\r\n\r\nLeftRightSplit.propTypes = {\r\n left: PropTypes.node,\r\n right: PropTypes.node,\r\n leftSize: PropTypes.string.isRequired,\r\n rightSize: PropTypes.string.isRequired,\r\n leftProps: PropTypes.object.isRequired,\r\n rightProps: PropTypes.object.isRequired,\r\n};\r\n\r\n\r\nexport default React.memo(LeftRightSplit);\r\n","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, {ReactNode, useEffect, useRef, useState} from 'react';\r\nimport postal from 'postal';\r\nimport Label from \"./Label\";\r\n\r\nfunction createCheckedClass(disabled: boolean, dark: boolean, noTopOffset: boolean) {\r\n const offsetBaseClass = noTopOffset ? 'e-ifms-checkbox-no-top-offset ' : '';\r\n\r\n if (disabled) {\r\n return dark ? `${offsetBaseClass}e-ifms-checkbox-icon-base e-ifms-checkbox-disabled-dark checked` : `${offsetBaseClass}e-ifms-checkbox-icon-base e-ifms-checkbox-disabled checked`;\r\n } else {\r\n return `${offsetBaseClass}e-ifms-checkbox-icon-base e-ifms-checkbox`;\r\n }\r\n}\r\n\r\nfunction createUncheckedClass(disabled: boolean, dark: boolean, noTopOffset: boolean) {\r\n const offsetBaseClass = noTopOffset ? 'e-ifms-checkbox-no-top-offset ' : '';\r\n\r\n if (disabled) {\r\n return dark ? `${offsetBaseClass}e-ifms-checkbox-icon-base e-ifms-checkbox-unchecked-disabled-dark unchecked` : `${offsetBaseClass}e-ifms-checkbox-icon-base e-ifms-checkbox-unchecked-disabled unchecked`;\r\n } else {\r\n return `${offsetBaseClass}e-ifms-checkbox-icon-base e-ifms-checkbox-unchecked`;\r\n }\r\n}\r\n\r\nconst createChekedCustomStyles = (disabled: boolean, focus: boolean): React.CSSProperties | undefined => !focus ? undefined : {\r\n border: '1px dotted', width: \"14px\", height: \"14px\" \r\n};\r\n\r\nconst Checked = ({disabled, dark, focus, noTopOffset}: { disabled: boolean, dark: boolean, focus: boolean, noTopOffset: boolean }) => (\r\n \r\n {disabled\r\n ? \r\n : \r\n }\r\n \r\n);\r\n\r\nconst createUncheckedCustomStyles = (disabled: boolean, focus: boolean): React.CSSProperties | undefined => !focus ? undefined : {\r\n border: '1px dotted', width: \"14px\", height: \"14px\" \r\n};\r\n\r\nconst Unchecked = ({disabled, dark, focus, noTopOffset}: { disabled: boolean, dark: boolean, focus: boolean, noTopOffset: boolean }) => (\r\n \r\n \r\n \r\n);\r\n\r\nfunction CheckBox({\r\n value,\r\n onChange = () => {\r\n },\r\n disabled = false,\r\n dark,\r\n onTabNext = undefined,\r\n onTabPrevious = undefined,\r\n focusId = undefined,\r\n inlist = false,\r\n reverse = false,\r\n highlightOnFocus = false,\r\n skipFocusOnClick = false,\r\n // Checkboxes with label are positioned to be vertically centered inside \r\n // Under some conditions this position causes rendering issue. To avoid it, the following property can be used\r\n noTopOffset = false,\r\n label,\r\n labelColor,\r\n bold = false,\r\n ...other\r\n}: {\r\n value: boolean,\r\n onChange?: (x: boolean) => void,\r\n disabled?: boolean,\r\n onTabNext?: (() => boolean) | undefined,\r\n onTabPrevious?: (() => boolean) | undefined,\r\n focusId?: string | undefined,\r\n inlist?: boolean,\r\n label?: string | ReactNode,\r\n labelColor?: string,\r\n reverse?: boolean,\r\n highlightOnFocus?: boolean,\r\n skipFocusOnClick?: boolean,\r\n noTopOffset?: boolean,\r\n bold?: boolean,\r\n [x: string]: any\r\n}) {\r\n // const dark = false;\r\n\r\n let notificationSubscription: ISubscriptionDefinition | null = null;\r\n let toggleSubscription: ISubscriptionDefinition | null = null;\r\n\r\n const [focus, setFocus] = useState(false);\r\n const [toggleRequestedByParent, setToggleRequestedByParent] = useState(false);\r\n const inputRef = useRef(null);\r\n\r\n function subscribeChannels() {\r\n notificationSubscription = postal.subscribe({\r\n channel: 'ifms',\r\n topic: 'ifms.parent-click',\r\n callback: onParentToggle\r\n });\r\n toggleSubscription = postal.subscribe({\r\n channel: 'ifms',\r\n topic: 'ifms.parent-toggle',\r\n callback: onParentToggle\r\n });\r\n toggleSubscription = postal.subscribe({\r\n channel: 'ifms',\r\n topic: 'ifms.checkbox-check',\r\n callback: (data) => handleClick(data.targetId)\r\n });\r\n }\r\n\r\n function unsubscribeChannels() {\r\n if (notificationSubscription) {\r\n postal.unsubscribe(notificationSubscription);\r\n }\r\n if (toggleSubscription) {\r\n postal.unsubscribe(toggleSubscription);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n subscribeChannels();\r\n return unsubscribeChannels;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [value]);\r\n\r\n const inputId = !!focusId ? focusId : _.uniqueId('ifms-checkbox-');\r\n\r\n function onInnerFocus() {\r\n if (toggleRequestedByParent) {\r\n setToggleRequestedByParent(false);\r\n handleClick();\r\n }\r\n }\r\n\r\n function onParentToggle(parentId: string) {\r\n const myParentId = inputRef.current?.parentElement?.parentElement?.id;\r\n\r\n if (myParentId === parentId) {\r\n setToggleRequestedByParent(true);\r\n }\r\n }\r\n\r\n function handleClick(targetId?: string) {\r\n if (!inputRef.current || (targetId && targetId !== inputRef.current.id)) return;\r\n\r\n if (!disabled) {\r\n if (inputRef && inputRef.current && !skipFocusOnClick) {\r\n inputRef.current.focus();\r\n }\r\n onChange(!value);\r\n }\r\n }\r\n\r\n function processTabNext(e: React.KeyboardEvent) {\r\n if (onTabNext) {\r\n const tabProcessed = onTabNext();\r\n if (tabProcessed) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n function processTabPrevious(e: React.KeyboardEvent) {\r\n if (onTabPrevious) {\r\n const tabProcessed = onTabPrevious();\r\n if (tabProcessed) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n function onKeyDown(e: React.KeyboardEvent) {\r\n const down = 40;\r\n const up = 38;\r\n const left = 37;\r\n const right = 39;\r\n\r\n if (e.keyCode === up || e.keyCode === down || e.keyCode === left || e.keyCode === right) {\r\n // const parentId = (e?.target as Element | null)?.parentElement?.id;\r\n // if (!!parentId) {\r\n // channel.publish('ifms.control-navigation', {\r\n // parentId,\r\n // keyCode: e.keyCode\r\n // });\r\n // }\r\n // e.preventDefault();\r\n // e.stopPropagation();\r\n return;\r\n }\r\n\r\n const tab = 9;\r\n const space = 32;\r\n\r\n if (e.keyCode === tab) {\r\n if (e.shiftKey) {\r\n processTabPrevious(e);\r\n } else {\r\n processTabNext(e);\r\n }\r\n } else if (e.keyCode === space) {\r\n handleClick();\r\n }\r\n }\r\n\r\n const containerBase = inlist ? 'e-ifms-checkbox-container e-ifms-checkbox-inlist' : 'e-ifms-checkbox-container';\r\n let containerClass = `${containerBase} ifms-tabable ifms-tabable-wrapper`;\r\n // if (!disabled) {\r\n // containerClass = `${containerClass} ifms-tabable-active`;\r\n // }\r\n if (highlightOnFocus && focus) {\r\n containerClass = `${containerClass} ifms-checkbox-focus-highlight`;\r\n }\r\n\r\n function renderCheckboxWithLabel() {\r\n if (reverse) {\r\n return (\r\n
\r\n
\r\n
{ handleClick(); }}>
\r\n
\r\n { handleClick(); }}\r\n onFocus={() => {\r\n setFocus(true);\r\n const focusElement = document.getElementById(inputId);\r\n if (focusElement && !skipFocusOnClick) {\r\n focusElement.focus();\r\n }\r\n }}\r\n onBlur={() => {\r\n setFocus(false);\r\n }}\r\n tabIndex={-1}\r\n {..._.omit(other, ['dark', 'name'])}\r\n >\r\n {!disabled &&\r\n {\r\n }}\r\n />\r\n }\r\n {value ? :\r\n }\r\n
\r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n { handleClick(); }}\r\n onFocus={() => {\r\n setFocus(true);\r\n const focusElement = document.getElementById(inputId);\r\n if (focusElement && !skipFocusOnClick) {\r\n focusElement.focus();\r\n }\r\n }}\r\n onBlur={() => {\r\n setFocus(false);\r\n }}\r\n tabIndex={-1}\r\n {..._.omit(other, ['dark', 'name'])}\r\n >\r\n {!disabled &&\r\n {\r\n }}\r\n />\r\n }\r\n {value ? :\r\n }\r\n
\r\n
{ handleClick(); }}>
\r\n
\r\n );\r\n }\r\n\r\n // Be careful when changing the implemenation.\r\n // Other controls like SelectableOverlay are tightly coupled with the implementation to be able to provide custom behaviour\r\n return (\r\n !!label ? (\r\n renderCheckboxWithLabel()\r\n ) : (\r\n { handleClick(); }}\r\n onFocus={() => {\r\n setFocus(true);\r\n const focusElement = document.getElementById(inputId);\r\n if (focusElement && !skipFocusOnClick) {\r\n focusElement.focus();\r\n }\r\n }}\r\n onBlur={() => {\r\n setFocus(false);\r\n }}\r\n tabIndex={-1}\r\n {..._.omit(other, ['dark', 'name'])}\r\n >\r\n {!disabled &&\r\n {\r\n }}\r\n />\r\n }\r\n {value ? :\r\n }\r\n
\r\n )\r\n );\r\n}\r\n\r\nCheckBox.defaultProps = {\r\n onChange: () => {\r\n },\r\n value: false,\r\n disabled: false,\r\n dark: false,\r\n inlist: false,\r\n reverse: false,\r\n highlightOnFocus: false,\r\n skipFocusOnClick: false,\r\n noTopOffset: false,\r\n bold: false,\r\n};\r\n\r\nCheckBox.propTypes = {\r\n onChange: PropTypes.func.isRequired,\r\n value: PropTypes.bool.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n onTabNext: PropTypes.func,\r\n onTabPrevious: PropTypes.func,\r\n focusId: PropTypes.string,\r\n inlist: PropTypes.bool.isRequired,\r\n label: PropTypes.any,\r\n reverse: PropTypes.bool.isRequired,\r\n highlightOnFocus: PropTypes.bool.isRequired,\r\n skipFocusOnClick: PropTypes.bool.isRequired,\r\n noTopOffset: PropTypes.bool.isRequired,\r\n bold: PropTypes.bool.isRequired,\r\n};\r\n\r\n\r\nexport default React.memo(CheckBox);\r\n","import './layout.css';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nfunction InlineInputControlRowNoLabel({\r\n smallMargin = false,\r\n children = undefined\r\n}: {\r\n smallMargin?: boolean,\r\n children?: React.ReactChild|React.ReactNode|string|null|undefined\r\n}) {\r\n const rowClass = smallMargin ? 'ifms-input-ctr-row3-small-margin' : 'ifms-input-ctr-row3';\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\n\r\nInlineInputControlRowNoLabel.defaultProps = {\r\n smallMargin: false,\r\n};\r\n\r\nInlineInputControlRowNoLabel.propTypes = {\r\n smallMargin: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport default React.memo(InlineInputControlRowNoLabel);\r\n","import './bottomdrawer.css';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nfunction BottomDrawer({\r\n open,\r\n children\r\n}: {\r\n open: boolean,\r\n children: any|null,\r\n}) {\r\n const drawerStyle = undefined;\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\n\r\nBottomDrawer.defaultProps = {\r\n open: false,\r\n};\r\n\r\nBottomDrawer.propTypes = {\r\n open: PropTypes.bool.isRequired,\r\n};\r\n\r\n\r\nexport default React.memo(BottomDrawer);\r\n","import {TrackableEntity} from '../fms.core/data/ChangeTrackable';\r\nimport { IDictionary } from '../fms.core/data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\nimport {LogFileDetail} from './document/LogFileDetail';\r\n\r\nexport class Memo extends TrackableEntity {\r\n id: number = 0;\r\n memoType: string = '';\r\n jobName: string = '';\r\n tbName: string = '';\r\n jobId: number = 0;\r\n title: string = '';\r\n to: string = '';\r\n from: string = '';\r\n cc: string = '';\r\n description: string = '';\r\n isPublic: boolean = false;\r\n logFileId: number = 0;\r\n createdAt: string = '';\r\n createdBy: string = '';\r\n modifiedAt: string = '';\r\n modifiedBy: string = '';\r\n logFileDetails: LogFileDetail[] = [];\r\n pimsLinkId: number = 0;\r\n operator: string = '';\r\n creator: string = '';\r\n remind: string | null = null;\r\n remindDate: string | null = null;\r\n remindTime: string | null = null;\r\n due: string | null = null;\r\n dueDate: string | null = null;\r\n dueTime: string | null = null;\r\n addAsTaskReminder: boolean = false;\r\n reminderStatus: number = 1;\r\n \r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('id', 'jobName', 'to', 'from', 'cc', 'pimsLinkId');\r\n this.getdateProps.push('createdAt', 'modifiedAt'); \r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n return Memo.dicFieldMappings;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_ID', table: 'T_MEMO' }),\r\n 'title': new DBMappingInfo({ field: 'F_TITLE', table: 'T_MEMO' }),\r\n 'memoType': new DBMappingInfo({ field: 'F_MEMOTYPE', table: 'T_MEMO' }),\r\n 'description': new DBMappingInfo({ field: 'F_CONTENTS', table: 'T_MEMO' }),\r\n 'tbName': new DBMappingInfo({ field: 'F_TBNAME', table: 'T_MEMO' }),\r\n 'jobId': new DBMappingInfo({ field: 'F_TBID', table: 'T_MEMO' }),\r\n 'createdBy': new DBMappingInfo({ field: 'F_U1ID', table: 'T_MEMO' }),\r\n 'createdAt': new DBMappingInfo({ field: 'F_U1Date', table: 'T_MEMO' }),\r\n 'modifiedBy': new DBMappingInfo({ field: 'F_U2ID', table: 'T_MEMO' }),\r\n 'modifiedAt': new DBMappingInfo({ field: 'F_U2Date', table: 'T_MEMO' }),\r\n\r\n };\r\n}\r\n","export default __webpack_public_path__ + \"static/media/memo_doc_excel.b0bb33e0.svg\";","export default __webpack_public_path__ + \"static/media/memo_doc_pdf.739392c5.svg\";","export default __webpack_public_path__ + \"static/media/memo_doc_ppt.e19ee06d.svg\";","export default __webpack_public_path__ + \"static/media/memo_doc_text.1714ab2a.svg\";","export default __webpack_public_path__ + \"static/media/memo_doc_word.9bbba4e5.svg\";","export default __webpack_public_path__ + \"static/media/memo_doc_png.af3b7cb8.svg\";","export default __webpack_public_path__ + \"static/media/memo-up-down.7666c479.svg\";","/* Copyright 2021 Yury Karpovich\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/*\r\n MSG Reader\r\n */\r\n\r\n import { DataStream } from \"./DataStream\";\r\n\r\n\r\n// constants\r\nvar CONST = {\r\n FILE_HEADER: uInt2int([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1]),\r\n MSG: {\r\n UNUSED_BLOCK: -1,\r\n END_OF_CHAIN: -2,\r\n\r\n S_BIG_BLOCK_SIZE: 0x0200,\r\n S_BIG_BLOCK_MARK: 9,\r\n\r\n L_BIG_BLOCK_SIZE: 0x1000,\r\n L_BIG_BLOCK_MARK: 12,\r\n\r\n SMALL_BLOCK_SIZE: 0x0040,\r\n BIG_BLOCK_MIN_DOC_SIZE: 0x1000,\r\n HEADER: {\r\n PROPERTY_START_OFFSET: 0x30,\r\n\r\n BAT_START_OFFSET: 0x4c,\r\n BAT_COUNT_OFFSET: 0x2C,\r\n\r\n SBAT_START_OFFSET: 0x3C,\r\n SBAT_COUNT_OFFSET: 0x40,\r\n\r\n XBAT_START_OFFSET: 0x44,\r\n XBAT_COUNT_OFFSET: 0x48\r\n },\r\n PROP: {\r\n NO_INDEX: -1,\r\n PROPERTY_SIZE: 0x0080,\r\n\r\n NAME_SIZE_OFFSET: 0x40,\r\n MAX_NAME_LENGTH: (/*NAME_SIZE_OFFSET*/0x40 / 2) - 1,\r\n TYPE_OFFSET: 0x42,\r\n PREVIOUS_PROPERTY_OFFSET: 0x44,\r\n NEXT_PROPERTY_OFFSET: 0x48,\r\n CHILD_PROPERTY_OFFSET: 0x4C,\r\n START_BLOCK_OFFSET: 0x74,\r\n SIZE_OFFSET: 0x78,\r\n TYPE_ENUM: {\r\n DIRECTORY: 1,\r\n DOCUMENT: 2,\r\n ROOT: 5\r\n }\r\n },\r\n FIELD: {\r\n PREFIX: {\r\n ATTACHMENT: '__attach_version1.0',\r\n RECIPIENT: '__recip_version1.0',\r\n DOCUMENT: '__substg1.'\r\n },\r\n // example (use fields as needed)\r\n NAME_MAPPING: {\r\n // email specific\r\n '0037': 'subject',\r\n '0c1a': 'senderName',\r\n '5d02': 'senderEmail',\r\n '1000': 'body',\r\n '1013': 'bodyHTML',\r\n '007d': 'headers',\r\n // attachment specific\r\n '3703': 'extension',\r\n '3704': 'fileNameShort',\r\n '3707': 'fileName',\r\n '3712': 'pidContentId',\r\n '370e': 'mimeType',\r\n // recipient specific\r\n '3001': 'name',\r\n '39fe': 'email'\r\n },\r\n CLASS_MAPPING: {\r\n ATTACHMENT_DATA: '3701'\r\n },\r\n TYPE_MAPPING: {\r\n '001e': 'string',\r\n '001f': 'unicode',\r\n '0102': 'binary'\r\n },\r\n DIR_TYPE: {\r\n INNER_MSG: '000d'\r\n }\r\n }\r\n }\r\n};\r\n\r\n// unit utils\r\nfunction arraysEqual(a, b) {\r\n if (a === b) return true;\r\n if (a == null || b == null) return false;\r\n if (a.length != b.length) return false;\r\n\r\n for (var i = 0; i < a.length; i++) {\r\n if (a[i] !== b[i]) return false;\r\n }\r\n return true;\r\n}\r\n\r\nfunction uInt2int(data) {\r\n var result = new Array(data.length);\r\n for (var i = 0; i < data.length; i++) {\r\n result[i] = data[i] << 24 >> 24;\r\n }\r\n return result;\r\n}\r\n\r\n// MSG Reader implementation\r\n\r\n// check MSG file header\r\nfunction isMSGFile(ds) {\r\n ds.seek(0);\r\n return arraysEqual(CONST.FILE_HEADER, ds.readInt8Array(CONST.FILE_HEADER.length));\r\n}\r\n\r\n// FAT utils\r\nfunction getBlockOffsetAt(msgData, offset) {\r\n return (offset + 1) * msgData.bigBlockSize;\r\n}\r\n\r\nfunction getBlockAt(ds, msgData, offset) {\r\n var startOffset = getBlockOffsetAt(msgData, offset);\r\n ds.seek(startOffset);\r\n return ds.readInt32Array(msgData.bigBlockLength);\r\n}\r\n\r\nfunction getNextBlockInner(ds, msgData, offset, blockOffsetData) {\r\n var currentBlock = Math.floor(offset / msgData.bigBlockLength);\r\n var currentBlockIndex = offset % msgData.bigBlockLength;\r\n\r\n var startBlockOffset = blockOffsetData[currentBlock];\r\n\r\n return getBlockAt(ds, msgData, startBlockOffset)[currentBlockIndex];\r\n}\r\n\r\nfunction getNextBlock(ds, msgData, offset) {\r\n return getNextBlockInner(ds, msgData, offset, msgData.batData);\r\n}\r\n\r\nfunction getNextBlockSmall(ds, msgData, offset) {\r\n return getNextBlockInner(ds, msgData, offset, msgData.sbatData);\r\n}\r\n\r\n// convert binary data to dictionary\r\nfunction parseMsgData(ds) {\r\n var msgData = headerData(ds);\r\n msgData.batData = batData(ds, msgData);\r\n msgData.sbatData = sbatData(ds, msgData);\r\n if (msgData.xbatCount > 0) {\r\n xbatData(ds, msgData);\r\n }\r\n msgData.propertyData = propertyData(ds, msgData);\r\n msgData.fieldsData = fieldsData(ds, msgData);\r\n\r\n return msgData;\r\n}\r\n\r\n// extract header data\r\nfunction headerData(ds) {\r\n var headerData = {};\r\n\r\n // system data\r\n headerData.bigBlockSize =\r\n ds.readByte(/*const position*/30) == CONST.MSG.L_BIG_BLOCK_MARK ? CONST.MSG.L_BIG_BLOCK_SIZE : CONST.MSG.S_BIG_BLOCK_SIZE;\r\n headerData.bigBlockLength = headerData.bigBlockSize / 4;\r\n headerData.xBlockLength = headerData.bigBlockLength - 1;\r\n\r\n // header data\r\n headerData.batCount = ds.readInt(CONST.MSG.HEADER.BAT_COUNT_OFFSET);\r\n headerData.propertyStart = ds.readInt(CONST.MSG.HEADER.PROPERTY_START_OFFSET);\r\n headerData.sbatStart = ds.readInt(CONST.MSG.HEADER.SBAT_START_OFFSET);\r\n headerData.sbatCount = ds.readInt(CONST.MSG.HEADER.SBAT_COUNT_OFFSET);\r\n headerData.xbatStart = ds.readInt(CONST.MSG.HEADER.XBAT_START_OFFSET);\r\n headerData.xbatCount = ds.readInt(CONST.MSG.HEADER.XBAT_COUNT_OFFSET);\r\n\r\n return headerData;\r\n}\r\n\r\nfunction batCountInHeader(msgData) {\r\n var maxBatsInHeader = (CONST.MSG.S_BIG_BLOCK_SIZE - CONST.MSG.HEADER.BAT_START_OFFSET) / 4;\r\n return Math.min(msgData.batCount, maxBatsInHeader);\r\n}\r\n\r\nfunction batData(ds, msgData) {\r\n var result = new Array(batCountInHeader(msgData));\r\n ds.seek(CONST.MSG.HEADER.BAT_START_OFFSET);\r\n for (var i = 0; i < result.length; i++) {\r\n result[i] = ds.readInt32()\r\n }\r\n return result;\r\n}\r\n\r\nfunction sbatData(ds, msgData) {\r\n var result = [];\r\n var startIndex = msgData.sbatStart;\r\n\r\n for (var i = 0; i < msgData.sbatCount && startIndex != CONST.MSG.END_OF_CHAIN; i++) {\r\n result.push(startIndex);\r\n startIndex = getNextBlock(ds, msgData, startIndex);\r\n }\r\n return result;\r\n}\r\n\r\nfunction xbatData(ds, msgData) {\r\n var batCount = batCountInHeader(msgData);\r\n var batCountTotal = msgData.batCount;\r\n var remainingBlocks = batCountTotal - batCount;\r\n\r\n var nextBlockAt = msgData.xbatStart;\r\n for (var i = 0; i < msgData.xbatCount; i++) {\r\n var xBatBlock = getBlockAt(ds, msgData, nextBlockAt);\r\n nextBlockAt = xBatBlock[msgData.xBlockLength];\r\n\r\n var blocksToProcess = Math.min(remainingBlocks, msgData.xBlockLength);\r\n for (var j = 0; j < blocksToProcess; j++) {\r\n var blockStartAt = xBatBlock[j];\r\n if (blockStartAt == CONST.MSG.UNUSED_BLOCK || blockStartAt == CONST.MSG.END_OF_CHAIN) {\r\n break;\r\n }\r\n msgData.batData.push(blockStartAt);\r\n }\r\n remainingBlocks -= blocksToProcess;\r\n }\r\n}\r\n\r\n// extract property data and property hierarchy\r\nfunction propertyData(ds, msgData) {\r\n var props = [];\r\n\r\n var currentOffset = msgData.propertyStart;\r\n\r\n while (currentOffset != CONST.MSG.END_OF_CHAIN) {\r\n convertBlockToProperties(ds, msgData, currentOffset, props);\r\n currentOffset = getNextBlock(ds, msgData, currentOffset);\r\n }\r\n createPropertyHierarchy(props, /*property with index 0 (zero) always as root*/props[0]);\r\n return props;\r\n}\r\n\r\nfunction convertName(ds, offset) {\r\n var nameLength = ds.readShort(offset + CONST.MSG.PROP.NAME_SIZE_OFFSET);\r\n if (nameLength < 1) {\r\n return '';\r\n } else {\r\n return ds.readStringAt(offset, nameLength / 2);\r\n }\r\n}\r\n\r\nfunction convertProperty(ds, index, offset) {\r\n return {\r\n index: index,\r\n type: ds.readByte(offset + CONST.MSG.PROP.TYPE_OFFSET),\r\n name: convertName(ds, offset),\r\n // hierarchy\r\n previousProperty: ds.readInt(offset + CONST.MSG.PROP.PREVIOUS_PROPERTY_OFFSET),\r\n nextProperty: ds.readInt(offset + CONST.MSG.PROP.NEXT_PROPERTY_OFFSET),\r\n childProperty: ds.readInt(offset + CONST.MSG.PROP.CHILD_PROPERTY_OFFSET),\r\n // data offset\r\n startBlock: ds.readInt(offset + CONST.MSG.PROP.START_BLOCK_OFFSET),\r\n sizeBlock: ds.readInt(offset + CONST.MSG.PROP.SIZE_OFFSET)\r\n };\r\n}\r\n\r\nfunction convertBlockToProperties(ds, msgData, propertyBlockOffset, props) {\r\n\r\n var propertyCount = msgData.bigBlockSize / CONST.MSG.PROP.PROPERTY_SIZE;\r\n var propertyOffset = getBlockOffsetAt(msgData, propertyBlockOffset);\r\n\r\n for (var i = 0; i < propertyCount; i++) {\r\n var propertyType = ds.readByte(propertyOffset + CONST.MSG.PROP.TYPE_OFFSET);\r\n switch (propertyType) {\r\n case CONST.MSG.PROP.TYPE_ENUM.ROOT:\r\n case CONST.MSG.PROP.TYPE_ENUM.DIRECTORY:\r\n case CONST.MSG.PROP.TYPE_ENUM.DOCUMENT:\r\n props.push(convertProperty(ds, props.length, propertyOffset));\r\n break;\r\n default:\r\n /* unknown property types */\r\n props.push(null);\r\n }\r\n\r\n propertyOffset += CONST.MSG.PROP.PROPERTY_SIZE;\r\n }\r\n}\r\n\r\nfunction createPropertyHierarchy(props, nodeProperty) {\r\n\r\n if (nodeProperty.childProperty == CONST.MSG.PROP.NO_INDEX) {\r\n return;\r\n }\r\n nodeProperty.children = [];\r\n\r\n var children = [nodeProperty.childProperty];\r\n while (children.length != 0) {\r\n var currentIndex = children.shift();\r\n var current = props[currentIndex];\r\n if (current == null) {\r\n continue;\r\n }\r\n nodeProperty.children.push(currentIndex);\r\n\r\n if (current.type == CONST.MSG.PROP.TYPE_ENUM.DIRECTORY) {\r\n createPropertyHierarchy(props, current);\r\n }\r\n if (current.previousProperty != CONST.MSG.PROP.NO_INDEX) {\r\n children.push(current.previousProperty);\r\n }\r\n if (current.nextProperty != CONST.MSG.PROP.NO_INDEX) {\r\n children.push(current.nextProperty);\r\n }\r\n }\r\n}\r\n\r\n// extract real fields\r\nfunction fieldsData(ds, msgData) {\r\n var fields = {\r\n attachments: [],\r\n recipients: []\r\n };\r\n fieldsDataDir(ds, msgData, msgData.propertyData[0], fields);\r\n return fields;\r\n}\r\n\r\nfunction fieldsDataDir(ds, msgData, dirProperty, fields) {\r\n\r\n if (dirProperty.children && dirProperty.children.length > 0) {\r\n for (var i = 0; i < dirProperty.children.length; i++) {\r\n var childProperty = msgData.propertyData[dirProperty.children[i]];\r\n\r\n if (childProperty.type == CONST.MSG.PROP.TYPE_ENUM.DIRECTORY) {\r\n fieldsDataDirInner(ds, msgData, childProperty, fields)\r\n } else if (childProperty.type == CONST.MSG.PROP.TYPE_ENUM.DOCUMENT\r\n && childProperty.name.indexOf(CONST.MSG.FIELD.PREFIX.DOCUMENT) == 0) {\r\n fieldsDataDocument(ds, msgData, childProperty, fields);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction fieldsDataDirInner(ds, msgData, dirProperty, fields) {\r\n if (dirProperty.name.indexOf(CONST.MSG.FIELD.PREFIX.ATTACHMENT) == 0) {\r\n\r\n // attachment\r\n var attachmentField = {};\r\n fields.attachments.push(attachmentField);\r\n fieldsDataDir(ds, msgData, dirProperty, attachmentField);\r\n } else if (dirProperty.name.indexOf(CONST.MSG.FIELD.PREFIX.RECIPIENT) == 0) {\r\n\r\n // recipient\r\n var recipientField = {};\r\n fields.recipients.push(recipientField);\r\n fieldsDataDir(ds, msgData, dirProperty, recipientField);\r\n } else {\r\n\r\n // other dir\r\n var childFieldType = getFieldType(dirProperty);\r\n if (childFieldType != CONST.MSG.FIELD.DIR_TYPE.INNER_MSG) {\r\n fieldsDataDir(ds, msgData, dirProperty, fields);\r\n } else {\r\n // MSG as attachment currently isn't supported\r\n fields.innerMsgContent = true;\r\n }\r\n }\r\n}\r\n\r\nfunction isAddPropertyValue(fieldName, fieldTypeMapped) {\r\n return fieldName !== 'body' || fieldTypeMapped !== 'binary';\r\n}\r\n\r\nfunction fieldsDataDocument(ds, msgData, documentProperty, fields) {\r\n var value = documentProperty.name.substring(12).toLowerCase();\r\n var fieldClass = value.substring(0, 4);\r\n var fieldType = value.substring(4, 8);\r\n\r\n var fieldName = CONST.MSG.FIELD.NAME_MAPPING[fieldClass];\r\n var fieldTypeMapped = CONST.MSG.FIELD.TYPE_MAPPING[fieldType];\r\n\r\n if (fieldName) {\r\n var fieldValue = getFieldValue(ds, msgData, documentProperty, fieldTypeMapped);\r\n\r\n if (isAddPropertyValue(fieldName, fieldTypeMapped)) {\r\n fields[fieldName] = applyValueConverter(fieldName, fieldTypeMapped, fieldValue);\r\n }\r\n }\r\n if (fieldClass == CONST.MSG.FIELD.CLASS_MAPPING.ATTACHMENT_DATA) {\r\n\r\n // attachment specific info\r\n fields['dataId'] = documentProperty.index;\r\n fields['contentLength'] = documentProperty.sizeBlock;\r\n }\r\n}\r\n\r\nfunction applyValueConverter(fieldName, fieldTypeMapped, fieldValue) {\r\n if (fieldTypeMapped === 'binary' && fieldName === 'bodyHTML') {\r\n return convertUint8ArrayToString(fieldValue);\r\n }\r\n return fieldValue\r\n}\r\n\r\nfunction getFieldType(fieldProperty) {\r\n var value = fieldProperty.name.substring(12).toLowerCase();\r\n return value.substring(4, 8);\r\n}\r\n\r\n// extractor structure to manage bat/sbat block types and different data types\r\nvar extractorFieldValue = {\r\n sbat: {\r\n 'extractor': function extractDataViaSbat(ds, msgData, fieldProperty, dataTypeExtractor) {\r\n var chain = getChainByBlockSmall(ds, msgData, fieldProperty);\r\n if (chain.length == 1) {\r\n return readDataByBlockSmall(ds, msgData, fieldProperty.startBlock, fieldProperty.sizeBlock, dataTypeExtractor);\r\n } else if (chain.length > 1) {\r\n return readChainDataByBlockSmall(ds, msgData, fieldProperty, chain, dataTypeExtractor);\r\n }\r\n return null;\r\n },\r\n dataType: {\r\n 'string': function extractBatString(ds, msgData, blockStartOffset, bigBlockOffset, blockSize) {\r\n ds.seek(blockStartOffset + bigBlockOffset);\r\n return ds.readString(blockSize);\r\n },\r\n 'unicode': function extractBatUnicode(ds, msgData, blockStartOffset, bigBlockOffset, blockSize) {\r\n ds.seek(blockStartOffset + bigBlockOffset);\r\n return ds.readUCS2String(blockSize / 2);\r\n },\r\n 'binary': function extractBatBinary(ds, msgData, blockStartOffset, bigBlockOffset, blockSize) {\r\n ds.seek(blockStartOffset + bigBlockOffset);\r\n return ds.readUint8Array(blockSize);\r\n }\r\n }\r\n },\r\n bat: {\r\n 'extractor': function extractDataViaBat(ds, msgData, fieldProperty, dataTypeExtractor) {\r\n var offset = getBlockOffsetAt(msgData, fieldProperty.startBlock);\r\n ds.seek(offset);\r\n return dataTypeExtractor(ds, fieldProperty);\r\n },\r\n dataType: {\r\n 'string': function extractSbatString(ds, fieldProperty) {\r\n return ds.readString(fieldProperty.sizeBlock);\r\n },\r\n 'unicode': function extractSbatUnicode(ds, fieldProperty) {\r\n return ds.readUCS2String(fieldProperty.sizeBlock / 2);\r\n },\r\n 'binary': function extractSbatBinary(ds, fieldProperty) {\r\n return ds.readUint8Array(fieldProperty.sizeBlock);\r\n }\r\n }\r\n }\r\n};\r\n\r\nfunction readDataByBlockSmall(ds, msgData, startBlock, blockSize, dataTypeExtractor) {\r\n var byteOffset = startBlock * CONST.MSG.SMALL_BLOCK_SIZE;\r\n var bigBlockNumber = Math.floor(byteOffset / msgData.bigBlockSize);\r\n var bigBlockOffset = byteOffset % msgData.bigBlockSize;\r\n\r\n var rootProp = msgData.propertyData[0];\r\n\r\n var nextBlock = rootProp.startBlock;\r\n for (var i = 0; i < bigBlockNumber; i++) {\r\n nextBlock = getNextBlock(ds, msgData, nextBlock);\r\n }\r\n var blockStartOffset = getBlockOffsetAt(msgData, nextBlock);\r\n\r\n return dataTypeExtractor(ds, msgData, blockStartOffset, bigBlockOffset, blockSize);\r\n}\r\n\r\nfunction readChainDataByBlockSmall(ds, msgData, fieldProperty, chain, dataTypeExtractor) {\r\n var resultData = new Int8Array(fieldProperty.sizeBlock);\r\n\r\n for (var i = 0, idx = 0; i < chain.length; i++) {\r\n var data = readDataByBlockSmall(ds, msgData, chain[i], CONST.MSG.SMALL_BLOCK_SIZE, extractorFieldValue.sbat.dataType.binary);\r\n for (var j = 0; j < data.length; j++) {\r\n resultData[idx++] = data[j];\r\n }\r\n }\r\n var localDs = new DataStream(resultData, 0, DataStream.LITTLE_ENDIAN);\r\n return dataTypeExtractor(localDs, msgData, 0, 0, fieldProperty.sizeBlock);\r\n}\r\n\r\nfunction getChainByBlockSmall(ds, msgData, fieldProperty) {\r\n var blockChain = [];\r\n var nextBlockSmall = fieldProperty.startBlock;\r\n while (nextBlockSmall != CONST.MSG.END_OF_CHAIN) {\r\n blockChain.push(nextBlockSmall);\r\n nextBlockSmall = getNextBlockSmall(ds, msgData, nextBlockSmall);\r\n }\r\n return blockChain;\r\n}\r\n\r\nfunction getFieldValue(ds, msgData, fieldProperty, typeMapped) {\r\n var value = null;\r\n\r\n var valueExtractor =\r\n fieldProperty.sizeBlock < CONST.MSG.BIG_BLOCK_MIN_DOC_SIZE ? extractorFieldValue.sbat : extractorFieldValue.bat;\r\n var dataTypeExtractor = valueExtractor.dataType[typeMapped];\r\n\r\n if (dataTypeExtractor) {\r\n value = valueExtractor.extractor(ds, msgData, fieldProperty, dataTypeExtractor);\r\n }\r\n return value;\r\n}\r\n\r\nfunction convertUint8ArrayToString(uint8ArraValue) {\r\n return new TextDecoder(\"utf-8\").decode(uint8ArraValue);\r\n}\r\n\r\n// MSG Reader\r\nexport var MSGReader = function (arrayBuffer) {\r\n this.ds = new DataStream(arrayBuffer, 0, DataStream.LITTLE_ENDIAN);\r\n};\r\n\r\nMSGReader.prototype = {\r\n /**\r\n Converts bytes to fields information\r\n\r\n @return {Object} The fields data for MSG file\r\n */\r\n getFileData: function () {\r\n if (!isMSGFile(this.ds)) {\r\n return {error: 'Unsupported file type!'};\r\n }\r\n if (this.fileData == null) {\r\n this.fileData = parseMsgData(this.ds);\r\n }\r\n return this.fileData.fieldsData;\r\n },\r\n /**\r\n Reads an attachment content by key/ID\r\n\r\n @return {Object} The attachment for specific attachment key\r\n */\r\n getAttachment: function (attach) {\r\n var attachData = typeof attach === 'number' ? this.fileData.fieldsData.attachments[attach] : attach;\r\n var fieldProperty = this.fileData.propertyData[attachData.dataId];\r\n var fieldTypeMapped = CONST.MSG.FIELD.TYPE_MAPPING[getFieldType(fieldProperty)];\r\n var fieldData = getFieldValue(this.ds, this.fileData, fieldProperty, fieldTypeMapped);\r\n\r\n return {fileName: attachData.fileName, content: fieldData};\r\n }\r\n};\r\n\r\n//window.MSGReader = MSGReader;\r\n\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAADAFBMVEUBAAAAAAD///8AAICAAIAAgIDA3MCmyvAqP6oqP/8qXwAqX1UqX6oqX/8qfwAqf1Uqf6oqf/8qnwAqn1Uqn6oqn/8qvwAqv1Uqv6oqv/8q3wAq31Uq36oq3/8q/wAq/1Uq/6oq//9VAABVAFVVAKpVAP9VHwBVH1VVH6pVH/9VPwBVP1VVP6pVP/9VXwBVX1VVX6pVX/9VfwBVf1VVf6pVf/9VnwBVn1VVn6pVn/9VvwBVv1VVv6pVv/9V3wBV31VV36pV3/9V/wBV/1VV/6pV//9/AAB/AFV/AKp/AP9/HwB/H1V/H6p/H/9/PwB/P1V/P6p/P/9/XwB/X1V/X6p/X/9/fwB/f1V/f6p/f/9/nwB/n1V/n6p/n/9/vwB/v1V/v6p/v/9/3wB/31V/36p/3/9//wB//1V//6p///+qAACqAFWqAKqqAP+qHwCqH1WqH6qqH/+qPwCqP1WqP6qqP/+qXwCqX1WqX6qqX/+qfwCqf1Wqf6qqf/+qnwCqn1Wqn6qqn/+qvwCqv1Wqv6qqv/+q3wCq31Wq36qq3/+q/wCq/1Wq/6qq///UAADUAFXUAKrUAP/UHwDUH1XUH6rUH//UPwDUP1XUP6rUP//UXwDUX1XUX6rUX//UfwDUf1XUf6rUf//UnwDUn1XUn6rUn//UvwDUv1XUv6rUv//U3wDU31XU36rU3//U/wDU/1XU/6rU////AFX/AKr/HwD/H1X/H6r/H///PwD/P1X/P6r/P///XwD/X1X/X6r/X//WvLzk1bXLsoz/3/9oaGj//NGfg3j1xYb/45DlxYPTqXH106XGgx3OfTLpk0T/sFj/wn3GrI3o6OhSUlJnT0vGfUX/o0X0kTTGYCCoQha2UBvmgCvLeDaqZz2YdmHb29s2NjhZWVlcQjySUizLciyuYy6PVzX/7r/buaDDw8MqP1VyWVL/4rTr26W5ubn/+/B2dnb/47Ls39l6enqgoKReXl7Jw6lhYWGampozM09WVlY/Pz/19fU+PldgYHl0dHTXke7WAAAAAXRSTlMAQObYZgAAALxJREFUeNpjZGBgZ/jPCES1zT8ZgICRgYHtpfBbBmEGhrosMYgA+28GMPgk/FgMLNBSBxGI6nPdLQZW8ULuPwPDn18MUQx9YIGGJpD8eqF3QnuzxCBauBhBShiWrl//FSQQs4zhrfBqsVcMDO7foFq4/4M03Tu8HmJGzGSGQ0KvQC7RZGUFCrxgZZXawsjIrMTKysrGzMB4hIkRGQAFGARQBRgYjsiCmUAdTBABoBCIsGE4YsYIEkICQAkbAMk1MK1yHlhxAAAAAElFTkSuQmCC\"","import _, { isEmpty } from 'lodash';\r\nimport './infoarea.css';\r\nimport React, { MutableRefObject, useContext, useEffect, useRef, useState} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport Skeleton, { SkeletonTheme } from \"react-loading-skeleton\";\r\nimport { Portal } from 'react-portal';\r\nimport { useDropzone } from 'react-dropzone';\r\n\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport config from '../../config';\r\nimport SmartTable from '../SmartTable';\r\nimport { faUpload, faTimes, faPlus } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { TextAlignLeftRenderer, TextRenderer, DateTimeRenderer, DateTimeIncludeSecRenderer } from '../SmartTableRenderers';\r\n\r\nimport BottomDrawer from '../../ui/BottomDrawer';\r\nimport DarkInverseButton from '../../ui/DarkInverseButton';\r\nimport FilterableSelect2 from '../../ui/FilterableSelect2';\r\nimport Label from '../../ui/Label';\r\nimport MultilineTextBox from '../../ui/MultilineTextBox';\r\nimport SecondaryButton from '../../ui/SecondaryButton';\r\nimport TextBox from '../../ui/TextBox';\r\nimport useTableRowSelection from '../../ui/tables/useTableRowSelection';\r\n\r\nimport useGlobalOkDialog from '../../hooks/useGlobalOkDialog';\r\nimport useGlobalYesNoDialog from '../../hooks/useGlobalYesNoDialog';\r\nimport useSystemSettings from '../../hooks/useSystemSettings';\r\nimport { useTypedFastStorage } from '../../hooks/useFastStorage';\r\n\r\nimport { Search } from '../../filtering';\r\nimport { Memo } from '../../framework.core/Memo';\r\nimport { getTbNameByJobName, JobNames } from '../../framework.core/JobNames';\r\nimport { SQLField, SQLInfo, SQLType } from '../../framework.core/data/SQLInfo';\r\nimport { CodeMemoTitleListItem } from '../../fms.data/models/CodeMemoTitleListItem';\r\nimport { MemoPanelItem } from '../../fms.data/models/MemoPanelItem';\r\nimport { checkPropDirty, getSQLInfoList } from '../../fms.core/data/TrackingModule';\r\nimport { TrackableEntity } from '../../fms.core/data/ChangeTrackable';\r\nimport { ApiResult, InsertResultsWithData } from '../../framework.core/data/ApiResult';\r\nimport postal from 'postal';\r\nimport { infoAreaMemoTable, infoAreaLogHistoryTable, ApplicableTableSettings } from '../../tableSettings';\r\nimport excelImg from '../../img/memo_doc_excel.svg';\r\nimport pdfImg from '../../img/memo_doc_pdf.svg';\r\nimport pptImg from '../../img/memo_doc_ppt.svg';\r\nimport textImg from '../../img/memo_doc_text.svg';\r\nimport wordImg from '../../img/memo_doc_word.svg';\r\nimport msgImg from '../../img/memo_doc_msg.png';\r\nimport pngImg from '../../img/memo_doc_png.svg';\r\nimport constants from '../../constants';\r\nimport { MemoArgs } from '../../fms.report/args';\r\nimport useReportViewer from '../../hooks/useReportViewer';\r\nimport { appendLine, findSecurityTask } from '../../util';\r\nimport IfmsModal from '../../ui/IfmsModal';\r\nimport { FmsSecTask } from '../../fms.core/constants';\r\nimport { FmsSecCntr } from '../../fms.core/constants/FmsSecCntr';\r\nimport { FormType } from '../../fms.enum';\r\nimport memoUpDownIcon from '../../img/memo-up-down.svg';\r\nimport {MSGReader} from '../../msg.reader/msg.reader';\r\nimport { DocumentType } from '../../framework.core/DocumentType';\r\nimport EmailIcon from '../../img/loghistory/Email.png';\r\nimport FaxIcon from '../../img/loghistory/Fax.png';\r\nimport OutLookIcon from '../../img/loghistory/Outlook.png';\r\nimport PrintIcon from '../../img/loghistory/Print.png';\r\nimport SharedIcon from '../../img/loghistory/Shared.png';\r\nimport SharedPDFICon from '../../img/loghistory/Shared_PDF.png';\r\nimport UnSharedIcon from '../../img/loghistory/Unshared.png';\r\nimport UploadIcon from '../../img/loghistory/Upload.png';\r\nimport CheckBox from '../../ui/CheckBox';\r\nimport GrayButtonTabs from \"../../ui/GrayButtonTabs\";\r\nimport PrimaryButtonTabs from \"../../ui/PrimaryButtonTabs\";\r\nimport InlineInputControlRow from '../../ui/layout/InlineInputControlRow';\r\nimport LeftRightSplit from '../../ui/LeftRightSplit';\r\nimport RadioButton from '../../ui/RadioButton';\r\nimport UsersDropDown from '../UsersDropDown';\r\nimport DateTime from '../../ui/DateTime';\r\nimport { compareIso, now } from '../../dateUtils';\r\nimport DeepBlueButtonTabs from '../../ui/DeepBlueButtonTabs';\r\nimport { useHistory } from 'react-router';\r\nimport useSuntekSettings from '../../hooks/useSuntekSettings';\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n/*\r\nconst ModalContentStyle:React.CSSProperties = {\r\n top: '50%',\r\n left: '50%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-50%',\r\n transform: 'translate(-50%, -50%)',\r\n zIndex: 10000,\r\n border: 'none',\r\n padding: '0px'\r\n\r\n};\r\nconst ModalOverlayStyle:React.CSSProperties = {\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backgroundColor: 'rgba(0, 0, 0, 0.55)',\r\n zIndex: 999997 //999999 -> 999998 <-- No show Subject List Value / 999998 -> 999997 <-- No show \"Please input the Memo Subject\" message\r\n};\r\n*/\r\n\r\nconst MemoDropzoneContainer = styled.div`\r\n border: 1px solid #e5e5e5;\r\n height: 130px;\r\n background-color: #f8fafb;\r\n overflow-y: auto;\r\n\r\n h3 {\r\n margin-top: 15px;\r\n color: #767373;\r\n text-align: center;\r\n font-size: 22px;\r\n }\r\n h4 {\r\n color: #767373;\r\n text-align: center;\r\n font-size: 18px;\r\n }\r\n\r\n .upload-icon {\r\n color: #e5e5e5;\r\n text-align: center;\r\n font-size: 36px;\r\n }\r\n`;\r\n\r\nclass AttachFile {\r\n logId: number;\r\n logFileId: number;\r\n file: File;\r\n\r\n constructor(init?:Partial) {\r\n // super();\r\n this.logId = 0;\r\n this.logFileId = 0;\r\n this.file = new File([],\"\");\r\n\r\n Object.assign(this, init);\r\n };\r\n}\r\nconst channel = postal.channel('ajax');\r\n\r\nfunction getFileIcon(filename: string)\r\n{\r\n if (filename) {\r\n if (filename.indexOf('.pdf') >= 0) return pdfImg\r\n if (filename.indexOf('.xls') >= 0) return excelImg\r\n if (filename.indexOf('.xlsx') >= 0) return excelImg\r\n if (filename.indexOf('.doc') >= 0) return wordImg\r\n if (filename.indexOf('.docx') >= 0) return wordImg\r\n if (filename.indexOf('.ppt') >= 0) return pptImg\r\n if (filename.indexOf('.pptx') >= 0) return pptImg\r\n if (filename.indexOf('.msg') >= 0) return msgImg\r\n if (filename.indexOf('.png') >= 0) return pngImg\r\n }\r\n return textImg\r\n}\r\n\r\nasync function openLogFile(logFileId: number, logFileName: string, userToken: string) {\r\n if (logFileId <= 0 || !logFileName) return;\r\n\r\n try {\r\n const response = await fetch(`${config.serverUrl}memo/openLogFile?logFileId=${logFileId}&logFileName=${logFileName}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': `Bearer ${userToken}`\r\n }\r\n });\r\n\r\n if (response.ok) {\r\n const contentType = response.headers.get('content-type');\r\n\r\n //pdf\r\n if (contentType && contentType.toLowerCase().includes('application/pdf')) {\r\n const pdfBlob = await response.blob();\r\n const newWindow = window.open('', '_blank');\r\n\r\n if (newWindow) {\r\n const pdfUrl = URL.createObjectURL(pdfBlob);\r\n\r\n const iframe = document.createElement('iframe');\r\n iframe.src = pdfUrl;\r\n iframe.width = '100%';\r\n iframe.height = '100%';\r\n\r\n newWindow.document.body.style.margin = '0';\r\n newWindow.document.body.style.overflow = 'hidden';\r\n newWindow.document.title = logFileName;\r\n newWindow.document.body.appendChild(iframe);\r\n } else {\r\n console.error('error');\r\n }\r\n } else {\r\n const blob = await response.blob();\r\n const url = window.URL.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.href = url;\r\n a.download = logFileName;\r\n a.click();\r\n }\r\n } else {\r\n console.error('error', response.status);\r\n }\r\n } catch (error) {\r\n console.error('error', error);\r\n }\r\n}\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nfunction renderTitleButton(label: React.ReactNode | string | null | undefined, selected: boolean, onClick: VoidFunction, useDarkMode: boolean) {\r\n const Button = !selected ? GrayButtonTabs : !useDarkMode ? PrimaryButtonTabs : DeepBlueButtonTabs;\r\n\r\n return \r\n}\r\n\r\nfunction MemoDetails({ memo, setMemo, memoTitle, files, setFiles }: {\r\n memo: Memo,\r\n setMemo: (change: Partial) => void,\r\n memoTitle: any,\r\n files: Array,\r\n setFiles: (change: Partial>) => void,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [tabIndex, setTabIndex, //removeTabIndexFromStorage\r\n ] = useTypedFastStorage('0'); \r\n const suntekSettings = useSuntekSettings();\r\n const [useReminder, setUseReminder] = useState(false);\r\n useEffect(() => {\r\n if (memo && memo.id <= 0 && !memo.title) setMemo({ title: \"General\" });\r\n setUseReminder(memo.addAsTaskReminder);\r\n setTabIndex(memo.addAsTaskReminder ? 1 : 0);\r\n }, \r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []);\r\n\r\n const fontColorItem: Array = memoTitle.map((x: any)=>({\r\n title: x, \r\n color: x === \"Task Reminder\" ? 'red': 'black'\r\n }))\r\n \r\n\r\n function onChange(change: Partial) {\r\n // setMemo({\r\n // ...memo,\r\n // ...change,\r\n // });\r\n setMemo(change);\r\n }\r\n\r\n async function odFileDrop(acceptedFiles: any[]) {\r\n const oriFiles = [...files];\r\n let duplicateFileName = '';\r\n\r\n for (let i = 0; i < oriFiles.length; i++) {\r\n for (let j = 0; j < acceptedFiles.length; j++) {\r\n if (oriFiles[i].file.name === acceptedFiles[j].name\r\n && oriFiles[i].file.size === acceptedFiles[j].size\r\n && oriFiles[i].file.lastModifiedDate.toString() === acceptedFiles[j].lastModifiedDate.toString()) {\r\n duplicateFileName = appendLine(duplicateFileName, acceptedFiles[j].name);\r\n //acceptedFiles = acceptedFiles.filter(x => (x.name !== acceptedFiles[j].name));\r\n acceptedFiles.splice(j,1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < acceptedFiles.length; i++) {\r\n if(acceptedFiles[i].size > 0 && acceptedFiles[i].size > (suntekSettings.accounting?.memoAttachedFileMaxSize??5000)*1000000){\r\n await showGlobalOkDialog(

{acceptedFiles[i].name} is larger than {suntekSettings.accounting?.memoAttachedFileMaxSize}MB

);\r\n }else if(acceptedFiles[i].size > 0){\r\n const newFile: AttachFile = new AttachFile({ logId: 0, logFileId: 0, file: acceptedFiles[i] });\r\n oriFiles.push(newFile);\r\n }else{\r\n await showGlobalOkDialog(

{acceptedFiles[i].name} is a Null File, Please Check it again!

);\r\n }\r\n }\r\n\r\n setFiles(oriFiles);\r\n\r\n if (!_.isEmpty(duplicateFileName))\r\n await showGlobalOkDialog(

Duplicate file is not attached
\r\n {duplicateFileName}\r\n

);\r\n }\r\n\r\n function deleteFile(e:any, i:number) {\r\n const newFiles = [...files];\r\n newFiles.splice(i, 1);\r\n\r\n setFiles(newFiles);\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n async function openFile(e:any, i:number)\r\n {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n const logFileId = files[i].logFileId;\r\n const logFileName = files[i].file.name;\r\n const userToken = appContext.user ? appContext.user.accessToken ?? '' : '';\r\n\r\n openLogFile(logFileId, logFileName, userToken);\r\n }\r\n\r\n function renderDetails() {\r\n if (tabIndex === 0) {\r\n return
\r\n \r\n
\r\n {files.map((f, i) =>\r\n
\r\n  \r\n \r\n  \r\n {f.logId > 0\r\n ?\r\n \r\n :\r\n ''\r\n }\r\n  \r\n {f.file.name}\r\n
\r\n )}\r\n
\r\n \r\n

Drop files here (or click)

\r\n

\r\n
\r\n
;\r\n }\r\n if (tabIndex === 1) {\r\n memo.operator = ((memo.operator === '' ? (appContext.user ? appContext.user.id ?? '' : '') : memo.operator));\r\n memo.remind = ((memo.remind === null||memo.remind === '') ? now() : memo.remind);\r\n memo.due = ((memo.due === null||memo.due === '') ? now() : memo.due);\r\n return
\r\n \r\n {setMemo({operator : operator ?? ''})}}\r\n />\r\n }\r\n right={\r\n
\r\n \r\n \r\n \r\n
\r\n }\r\n />\r\n
\r\n \r\n
\r\n {setMemo({remind : remind})}}\r\n />
\r\n
\r\n \r\n
\r\n {setMemo({due: due})}}\r\n />
\r\n \r\n
\r\n
\r\n { setMemo({reminderStatus : 1})}} />
\r\n {setMemo({reminderStatus : 0}) }} />
\r\n
\r\n
;\r\n }\r\n\r\n return null;\r\n }\r\n const { getRootProps, getInputProps } = useDropzone({ onDrop: odFileDrop })\r\n\r\n return (\r\n
\r\n
Subject
\r\n `${i}-${x}`}\r\n getLabel={x => x}\r\n onSelect={title => {onChange({ title });\r\n if(title === \"Task Reminder\") {\r\n onChange({addAsTaskReminder: true});\r\n setUseReminder(true);\r\n setTabIndex(1);\r\n }\r\n }}\r\n onTextChange={title => onChange({ title })}\r\n items={memoTitle}\r\n initialValue={memo?.title ?? \"\"}\r\n maxLength={50}\r\n fontColorItem = {fontColorItem}\r\n />\r\n
 
\r\n\r\n
Memo
\r\n onChange({ description: e.target.value ?? '' })} style={{ height: '300px' }} />\r\n\r\n
\r\n {setMemo({isPublic : e, memoType: e ? 'C' : ''})}} />\r\n
\r\n {setMemo({addAsTaskReminder : e}); setUseReminder(e) ; setTabIndex(e === true ? 1 : 0);}} />\r\n
\r\n
\r\n {renderTitleButton(Attached File(s), tabIndex === 0, () => setTabIndex(0), appContext.useDarkMode)}\r\n {useReminder && renderTitleButton(Task Reminder, tabIndex === 1, () => setTabIndex(1), appContext.useDarkMode)}\r\n
\r\n {renderDetails()}\r\n
\r\n );\r\n}\r\n\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n * InfoAreaDrawer/Memo component\r\n */\r\nfunction MemoView({\r\n data,\r\n onSave,\r\n onDelete,\r\n onPrint,\r\n memoTitle,\r\n logData,\r\n hideLogHistory,\r\n hideMemoList,\r\n jobName, jobId,\r\n files, \r\n setFiles, \r\n startFiles, \r\n selectedMemoListIndex,\r\n setSelectedMemoListIndex,\r\n editMemo,\r\n setEditMemo,\r\n removeEditMemo\r\n}:{\r\n data:Array,\r\n onSave: any,\r\n onDelete: any,\r\n onPrint: any,\r\n memoTitle:Array,\r\n logData: Array,\r\n hideLogHistory: boolean,\r\n hideMemoList: boolean,\r\n jobName: string, jobId: number,\r\n files: Array, \r\n setFiles: (change: Partial>) => void, \r\n startFiles: MutableRefObject | null>,\r\n selectedMemoListIndex: number,\r\n setSelectedMemoListIndex:any,\r\n editMemo:any,\r\n setEditMemo:any,\r\n removeEditMemo:any,\r\n\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [selectedIndex, setSelectedIndex] = useState(selectedMemoListIndex);\r\n const { selectTableRow } = useTableRowSelection('ifms-app-bottom', `info-area-memo-table${hideLogHistory ? '-offlog' : '-onlog'}`, /*onDoubleClick*/null, onClick);\r\n const { getRootProps } = useDropzone({ onDrop: attachFileDrop, noKeyboard: true })\r\n const memoAndUpdateTableWidth = hideLogHistory ? '890px' : '560px';\r\n const logHistoryTableWidth = '600px';\r\n const memoDetailTextWidth = hideLogHistory ? '870px' : '560px';\r\n //const listSec = appContext.securityGrants?.find(x=>x.securityTaskCode == FmsSecTask.ToolMemo);\r\n // const [editByDoubleClick, setEditByDoubleClick] = useState(-1); // not used\r\n\r\n // useEffect(() => {\r\n // // selectDefault();\r\n // // eslint-disable-next-line react-hooks/exhaustive-deps\r\n // }, []);\r\n\r\n // useEffect(() => {\r\n // if (editByDoubleClick >= 0) {\r\n // prepareMemoForEdit(editByDoubleClick);\r\n // setEditByDoubleClick(-1);\r\n // }\r\n // // eslint-disable-next-line react-hooks/exhaustive-deps\r\n // }, [editByDoubleClick]);\r\n\r\n useEffect(() => {\r\n selectDefault();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [data]);\r\n\r\n function selectDefault() {\r\n if (data && data.length > 0) {\r\n //Task Reminder List에서 이동했을때 해당 Memo Row를 클릭하기 위함\r\n if(appContext.myMemoId !== 0){ \r\n //기존에 열려있던 Memo Detail이 있다면 창을 닫음\r\n const memoDetailCancelButton = document.getElementsByName('memo-log-cancel-button')[0];\r\n if(memoDetailCancelButton){\r\n memoDetailCancelButton.click();\r\n } \r\n let index = 0;\r\n index = data.findIndex((x:any) => x.id === appContext.myMemoId);\r\n if(index >= 0) {\r\n selectTableRow(index);\r\n setSelectedIndex(index);\r\n setSelectedMemoListIndex(index);\r\n }else{\r\n selectTableRow(0);\r\n setSelectedIndex(0);\r\n setSelectedMemoListIndex(0);\r\n }\r\n }else{\r\n selectTableRow(0);\r\n setSelectedIndex(0);\r\n setSelectedMemoListIndex(0);\r\n }\r\n }\r\n}\r\n // function onDoubleClick(index:number) {\r\n // setSelectedIndex(index);\r\n // setEditByDoubleClick(index);\r\n // }\r\n\r\n function onClick(index:number) {\r\n setSelectedIndex(index);\r\n setSelectedMemoListIndex(index);\r\n }\r\n\r\n function onMemoPopupClose(){\r\n appContext.setMyMemoTaskReminder(false);\r\n appContext.setMyMemoId(0);\r\n removeEditMemo();\r\n }\r\n\r\n function prepareMemoForEdit(index:number) {\r\n //\r\n // setEditMemo({\r\n // // @ts-ignore:next-line\r\n // id: index >= 0 ? data[index].id : 0,\r\n // title: index >= 0 ? data[index].title : '',\r\n // description: index >= 0 ? data[index].contents : '',\r\n // });\r\n setMemoDetail(index, false);\r\n }\r\n\r\n async function setMemoDetail(index:number, isView: boolean){\r\n // selectedIndex --> index\r\n\r\n if(index >= 0 && index < data.length && _.isEmpty(editMemo)){\r\n const apiResult: ApiResult = await appContext.api.getJobDetail(JobNames.Memo, { id: data[index].id});\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

{apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

);\r\n return null;\r\n } else {\r\n const obj = { ...apiResult.result, jobId: jobId, jobName: jobName, edit: true, view: isView, editIndex: selectedIndex};\r\n const tEntity = new Memo(obj);\r\n setEditMemo(tEntity);\r\n tEntity.trackable = true;\r\n // LogDetails --> files\r\n const newfiles:Array = [];\r\n tEntity.logFileDetails.map((logFile, index) => {\r\n const file = new AttachFile({\r\n logId: logFile.id,\r\n logFileId: logFile.logFileId,\r\n file: new File([], logFile.oFileName),\r\n });\r\n \r\n newfiles.push(file);\r\n return logFile;\r\n });\r\n setFiles(newfiles);\r\n const starts:Array = [...newfiles]\r\n startFiles.current = starts;\r\n }\r\n } else {\r\n const tEntity2 = new Memo();\r\n tEntity2.tbName = getTbNameByJobName(jobName);\r\n tEntity2.jobName = jobName;\r\n tEntity2.jobId = jobId;\r\n setEditMemo(tEntity2);\r\n tEntity2.trackable = true;\r\n\r\n const files:Array = [];\r\n setFiles(files);\r\n const starts:Array = [...files]\r\n startFiles.current = starts;\r\n }\r\n }\r\n\r\n async function saveMemo() {\r\n //const newMemo = ({...editMemo});\r\n //setEditMemo(null);\r\n const result = await onSave(editMemo)\r\n if (result) {\r\n removeEditMemo();\r\n await showGlobalOkDialog(

{constants.SAVE_SUCCESS_DEFAULT_MSG}

);\r\n }\r\n }\r\n\r\n // function deleteMemo() {\r\n // const noSelection = selectedIndex < 0 || selectedIndex >= data.length;\r\n // if (noSelection) {\r\n // return;\r\n // }\r\n\r\n // onDelete(data[selectedIndex].id);\r\n // }\r\n \r\n function deleteMemoByIndex(index:number) {\r\n onDelete(data[index].id);\r\n }\r\n\r\n function printMemo(index:number) {\r\n onPrint(data[index].id);\r\n }\r\n\r\n function MemoAttachRenderer({data, row}:any) {\r\n let attaches:Array = data[row.index].attachments;\r\n\r\n function openFile(fileinfo:string)\r\n {\r\n const file = fileinfo.split('|');\r\n if (file && file.length === 3) {\r\n const logFileId = +file[0];\r\n const logFileName = file[1];\r\n const userToken = appContext.user ? appContext.user.accessToken ?? '' : '';\r\n \r\n openLogFile(logFileId, logFileName, userToken);\r\n }\r\n }\r\n \r\n return (\r\n
\r\n {attaches.map((f, i) => \r\n openFile(f)} style={{ paddingLeft: '0px', paddingRight: '2px', paddingTop: '2px'}}>\r\n \r\n \"\"\r\n \r\n \r\n )}\r\n
\r\n );\r\n }\r\n\r\n function LogTypeRenderer({ data, row }: any) {\r\n let memoType: string = data[row.index].type;\r\n let returnLabel = '';\r\n let imgSrc = '';\r\n async function openFile() {\r\n const item = data[row.index];\r\n if (item.logFileId <= 0) return;\r\n\r\n const logFileId = item.logFileId;\r\n const logFileName = item.oFileName;\r\n const userToken = appContext.user ? appContext.user.accessToken ?? '' : '';\r\n\r\n await openLogFile(logFileId, logFileName, userToken);\r\n }\r\n\r\n async function openViewer() {\r\n let docType = DocumentType.Unknown;\r\n switch (data[row.index].type) {\r\n case \"F\":\r\n docType = DocumentType.LogFax;\r\n break;\r\n case \"P\":\r\n docType = DocumentType.LogPrint;\r\n break;\r\n case \"E\":\r\n docType = DocumentType.LogEmail;\r\n break;\r\n }\r\n\r\n const item = data[row.index];\r\n if (item.logFileId <= 0) return;\r\n \r\n let left = (document.body.offsetWidth / 2) - (980 / 2);\r\n left += window.screenLeft;\r\n\r\n window.open(`${config.serverUrl}report/logViewer?jwt=${appContext.api.getAuthKey()}&logFileId=${item.logFileId}&docType=${docType}`,\r\n '_blank',\r\n `width=980, height=${window.screen.availHeight},left=${left}, top=0, scrollbars=yes` \r\n );\r\n }\r\n\r\n switch (memoType) {\r\n case \"F\":\r\n returnLabel = \"Fax\"\r\n imgSrc = FaxIcon;\r\n break;\r\n case \"E\":\r\n returnLabel = \"Email\"\r\n imgSrc = EmailIcon;\r\n break;\r\n case \"P\":\r\n returnLabel = \"Print\"\r\n imgSrc = PrintIcon;\r\n break;\r\n case \"M\":\r\n returnLabel = \"Outlook\"\r\n imgSrc = OutLookIcon;\r\n break;\r\n case \"D\":\r\n returnLabel = \"Upload\"\r\n imgSrc = UploadIcon;\r\n break;\r\n case \"R\":\r\n returnLabel = \"Shared_R\"\r\n imgSrc = SharedIcon;\r\n break;\r\n case \"S\":\r\n returnLabel = \"Shared_S\"\r\n imgSrc = SharedIcon;\r\n break;\r\n case \"X\":\r\n returnLabel = \"Unshared\"\r\n imgSrc = UnSharedIcon;\r\n break;\r\n case \"A\":\r\n returnLabel = \"Shared_PDF\"\r\n imgSrc = SharedPDFICon;\r\n break;\r\n }\r\n\r\n return (\r\n
\r\n \r\n {\r\n switch (data[row.index].type) {\r\n case \"F\":\r\n case \"P\":\r\n case \"E\":\r\n await openViewer();\r\n break;\r\n default:\r\n await openFile();\r\n break;\r\n }\r\n }}\r\n style={{ width: '60px', display: 'inline-block', cursor: 'pointer', color: 'blue', fontWeight: 'bold' }} >\r\n {returnLabel}\r\n {data[row.index].oFileName}\r\n
\r\n );\r\n }\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n tableName: `info-area-memo-table${hideLogHistory ? '-offlog' : '-onlog'}`,\r\n ...infoAreaMemoTable,\r\n width: memoAndUpdateTableWidth,\r\n height: `${document.getElementsByClassName('ia-drawer-content-list')[0]?.clientHeight - 6}px`,\r\n data: data.map(d => ({...d, prepareMemoForEdit, deleteMemoByIndex, printMemo})),\r\n \r\n selectable: true,\r\n cellRangeSelect: false,\r\n rowRenderers: [\r\n { accessor: 'updateAt', Cell: DateTimeRenderer },\r\n { accessor: 'jobType', Cell: TextRenderer },\r\n { accessor: 'title', Cell: TextAlignLeftRenderer },\r\n { accessor: 'updateBy', Cell: TextAlignLeftRenderer },\r\n { accessor: 'attachment', Cell: MemoAttachRenderer },\r\n ],\r\n };\r\n\r\n const showDetails = !isNaN(selectedIndex) && selectedIndex >= 0 && selectedIndex < data.length\r\n ? data[selectedIndex].details\r\n : '';\r\n const showTitle = !isNaN(selectedIndex) && selectedIndex >= 0 && selectedIndex < data.length\r\n ? data[selectedIndex].title\r\n : '';\r\n\r\n const logHistoryTableOptions:ApplicableTableSettings = {\r\n tableName: 'info-area-loghistory-table',\r\n ...infoAreaLogHistoryTable,\r\n data: logData,\r\n width: logHistoryTableWidth,\r\n height: `${document.getElementsByClassName('ia-drawer-content-list')[0]?.clientHeight - 6}px`,\r\n \r\n rowRenderers: [\r\n { accessor: 'postDate', Cell: DateTimeIncludeSecRenderer },\r\n { accessor: 'type', Cell: LogTypeRenderer },\r\n { accessor: 'senderId', Cell: TextAlignLeftRenderer },\r\n //{ accessor: 'title', Cell: LogTitleRenderer },\r\n ],\r\n };\r\n\r\n // const canBeAdd = listSec?.grantAdd;\r\n // const canBeEdit = !(selectedIndex < 0 || data.length <= 0 || data[selectedIndex]?.title === \"History Update\") && listSec?.grantEdit\r\n // && !appContext.getControlDisableStatus(JobNames.Main, 'btnMemoEdit', FormType.ModeEdit);\r\n // const canBeDeleted = !(selectedIndex < 0 || data.length <= 0 || data[selectedIndex]?.title === \"History Update\") && listSec?.grantDel\r\n // && !appContext.getControlDisableStatus(JobNames.Main, 'btnMemoDelete', FormType.ModeEdit);\r\n\r\n async function attachFileDrop(acceptedFiles: any[]) {\r\n setMemoDetailWithFile(acceptedFiles); \r\n }\r\n\r\n interface MailInfo {\r\n subject?: string,\r\n body?: string,\r\n header?: string,\r\n senderName?: string,\r\n senderEmail?: string,\r\n attachments?: any [],\r\n error?: string,\r\n };\r\n interface AttachInfo {\r\n content: Uint8Array,\r\n fileName: string,\r\n };\r\n\r\n async function setMemoInfo(subject: string, body: string, attachFiles: any[]){\r\n const tEntity2 = new Memo();\r\n tEntity2.tbName = getTbNameByJobName(jobName);\r\n tEntity2.jobName = jobName;\r\n tEntity2.jobId = jobId;\r\n tEntity2.title = subject?.slice(0, 50);\r\n tEntity2.description = body;\r\n setEditMemo(tEntity2);\r\n tEntity2.trackable = true;\r\n\r\n setFiles(attachFiles);\r\n\r\n const starts:Array = [];\r\n startFiles.current = starts;\r\n}\r\n\r\n async function setMemoDetailWithFile(dropFiles: any[]){\r\n let cntMail = 0;\r\n let mailFile: any;\r\n let subject = \"\", body = \"\";\r\n const files:Array = [];\r\n\r\n dropFiles.map((aFile, index) => {\r\n if (aFile.size > 0) {\r\n if (aFile.name.indexOf('.msg') >= 0) {\r\n mailFile = aFile;\r\n cntMail++;\r\n }\r\n else {\r\n const newFile: AttachFile = new AttachFile({ logId: 0, logFileId: 0, file: aFile });\r\n files.push(newFile);\r\n }\r\n }\r\n return aFile;\r\n });\r\n\r\n if (cntMail > 1) {\r\n await showGlobalOkDialog(

There is not one mail file, please select only one mail data.

);\r\n return;\r\n }\r\n else if (cntMail === 1 && !!mailFile) {\r\n // msg.reader 이용해서 Outlook 메일을 읽어온다.\r\n const fileReader = new FileReader();\r\n fileReader.onload = (e) => {\r\n const buffer = e.target?.result;\r\n const msgReader = new MSGReader(buffer);\r\n const fileData: MailInfo = msgReader.getFileData() as MailInfo;\r\n if (!fileData.error) {\r\n subject = fileData.subject??'';\r\n body = fileData.body??'';\r\n\r\n fileData.attachments?.map((attachment, index) => {\r\n const attactfile = msgReader.getAttachment(index) as AttachInfo;\r\n const file = new File([attactfile.content], attactfile.fileName );\r\n const newFile: AttachFile = new AttachFile({ logId: 0, logFileId: 0, file: file });\r\n files.push(newFile);\r\n return attachment;\r\n });\r\n\r\n setMemoInfo(subject, body, files);\r\n } else {\r\n showGlobalOkDialog(

Failed to parse mail data.

);\r\n }\r\n };\r\n fileReader.readAsArrayBuffer(mailFile);\r\n }\r\n else {\r\n await setMemoInfo(subject, body, files);\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {/*
\r\n {!hideMemoList &&\r\n
\r\n prepareMemoForEdit(-1)} disabled={!canBeAdd} >\r\n  New\r\n  \r\n prepareMemoForEdit(selectedIndex)}>\r\n Edit\r\n  \r\n deleteMemoByIndex(selectedIndex)}>\r\n Delete\r\n  \r\n printMemo(selectedIndex)}>\r\n Print\r\n \r\n
\r\n }\r\n
*/}\r\n\r\n
\r\n {!hideMemoList &&\r\n <>\r\n
\r\n
\r\n
\r\n
\r\n \r\n }\r\n {!hideLogHistory &&\r\n <>\r\n
\r\n
\r\n \r\n }\r\n
\r\n \r\n
\r\n
\r\n {!!editMemo &&\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n SAVE\r\n   \r\n \r\n CANCEL\r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nfunction usePrevious(value:any):any|null {\r\n const ref = useRef();\r\n useEffect(() => {\r\n ref.current = value;\r\n });\r\n return ref.current;\r\n}\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n/**\r\n * InfoAreaDrawer React component\r\n * 12/23/2021 ptkim entityId, entityName => jobId, jobName\r\n */\r\nfunction InfoAreaDrawer({\r\n jobName,\r\n jobId,\r\n customTabs = [],\r\n showContent,\r\n onClose,\r\n hideLogHistory = false,\r\n hideMemoList = false,\r\n com1Id = 0\r\n}: {\r\n jobName:string, \r\n jobId:number,\r\n customTabs?: Array,\r\n showContent: string,\r\n onClose: VoidFunction,\r\n hideLogHistory?: boolean,\r\n hideMemoList?: boolean,\r\n com1Id?: number,\r\n}) {\r\n const [editMemo, setEditMemo, removeEditMemo, ] = useTypedFastStorage(`ifms-memo-editable`, null);\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const [memoTitle, setMemoTitle] = useState>([]);\r\n const [loading, setLoading] = useState(false);\r\n const [memo, setMemo] = useState(null);\r\n const [selectedIndex, setSelectedIndex] = useState(0);\r\n const [selectedMemoListIndex, setSelectedMemoListIndex] = useState(0);\r\n const [extraTabContent, setExtraTabContent] = useState(null);\r\n const prevContent = usePrevious(showContent);\r\n const systemSettings = useSystemSettings();\r\n \r\n const startFiles = useRef>([]);\r\n const [files, setFiles] = useState>([]);\r\n const {viewReport} = useReportViewer();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.ToolMemo);\r\n\r\n const history = useHistory();\r\n const currentUrl = `${history.location.pathname}${history.location.search}`;\r\n const isListView = currentUrl.includes('common/joblistview');\r\n\r\n async function loadMemoTitle() {\r\n const search = {\r\n orderBy: 'code',\r\n orderByAscending: true,\r\n pageSize: systemSettings.defaultPageSize\r\n } as Search;\r\n\r\n const apiResult = await appContext.api.getListItems(JobNames.MemoTitle, \r\n 'CodeMemoTitleListItem',\r\n CodeMemoTitleListItem.calculateSearchParameters(search),\r\n 1,\r\n search.pageSize\r\n );\r\n if (apiResult?.entities && apiResult?.totalCount > 0) {\r\n const nonEmptyTitles = apiResult.entities.filter((x:any) => !!x.description && !x.inactive).map((x:any) => x.description);\r\n if ( nonEmptyTitles.length > 0) {\r\n nonEmptyTitles.unshift(\"Task Reminder\");\r\n nonEmptyTitles.unshift(\"General\");\r\n setMemoTitle(nonEmptyTitles);\r\n }\r\n }else {\r\n setMemoTitle([\"General\", \"Task Reminder\"]);\r\n }\r\n }\r\n\r\n async function loadData() {\r\n loadMemoTitle();\r\n\r\n if(!jobName || !jobId) {\r\n return;\r\n }\r\n\r\n // if (!!memo && memo.jobId === jobId && memo.jobName === jobName) {\r\n // return;\r\n // }\r\n\r\n setLoading(true);\r\n const apiResult = await appContext.api.getJobListPanelItems(jobName, jobId, com1Id);\r\n\r\n setMemo(apiResult);\r\n setLoading(false);\r\n }\r\n\r\n async function saveMemo(memo:any) : Promise{\r\n if (!jobId || !jobName) {\r\n return false;\r\n }\r\n\r\n if(isEmpty(memo.title)){\r\n await showGlobalOkDialog(`Please input the Memo Subject`);\r\n return false;\r\n }\r\n\r\n if (memo.addAsTaskReminder) {\r\n if (compareIso(memo.remind, memo.due) > 0) {\r\n await showGlobalOkDialog(`Please Set the Due Date Later than Remind Date&Time!`);\r\n return false;\r\n }\r\n }\r\n\r\n channel.publish('ajax.loadingstart', {});\r\n \r\n setLoading(true);\r\n\r\n const userId = appContext.user ? appContext.user.id ?? '' : '';\r\n const mainChange: Partial = {};\r\n if (memo.id <= 0){\r\n mainChange.createdBy = userId;\r\n mainChange.createdAt = now();\r\n } \r\n mainChange.modifiedBy = userId; \r\n mainChange.modifiedAt = now(); //dirty 발생\r\n \r\n if (!_.isEmpty(mainChange)) {\r\n setEditMemo(mainChange);\r\n }\r\n\r\n\r\n const sqlInfoList = getSQLInfoList(memo as TrackableEntity);\r\n\r\n // Check Attach Files\r\n let i: number, k: number;\r\n const deletedFiles:Array = [];\r\n\r\n if (startFiles?.current) {\r\n for (i = 0; i < startFiles.current.length; i++) {\r\n for (k = 0; k < files.length; k++) {\r\n if (startFiles.current[i].logId === files[k].logId && startFiles.current[i].file.name === files[k].file.name) break; \r\n }\r\n if (k < files.length) files.splice(k, 1);\r\n else deletedFiles.push(startFiles.current[i]);\r\n }\r\n }\r\n const addedFiles: Array = [...files];\r\n\r\n deletedFiles.map((delFile, index) => {\r\n sqlInfoList.push(new SQLInfo({\r\n tableName: \"T_NLOGFILE\",\r\n type: SQLType.Delete,\r\n where: `F_Idex = (select F_LogFileID from T_NLogMain where F_Idex=${delFile.logId ?? 0})`\r\n }));\r\n sqlInfoList.push(new SQLInfo({\r\n tableName: \"T_NLOGMAIN\",\r\n type: SQLType.Delete,\r\n key: new SQLField({ fieldName: \"F_Idex\", propertyName: \"idex\", value: delFile.logId ?? 0 }),\r\n }));\r\n return delFile;\r\n });\r\n\r\n const reminderSql: SQLInfo[] = [];\r\n if (checkPropDirty(memo, 'addAsTaskReminder')) {\r\n if (memo.addAsTaskReminder) {\r\n reminderSql.push(new SQLInfo({\r\n tableName: \"T_AOTHERINFO\",\r\n type: SQLType.Insert,\r\n fields: [\r\n new SQLField({ fieldName: \"F_C1\", propertyName: \"C1\", value: memo.operator }),\r\n new SQLField({ fieldName: \"F_C2\", propertyName: \"C2\", value: memo.operator }),\r\n new SQLField({ fieldName: \"F_D1\", propertyName: \"D1\", value: memo.remind }),\r\n new SQLField({ fieldName: \"F_D2\", propertyName: \"D2\", value: memo.due }),\r\n new SQLField({ fieldName: \"F_N1\", propertyName: \"N1\", value: memo.addAsTaskReminder }),\r\n new SQLField({ fieldName: \"F_N2\", propertyName: \"N2\", value: memo.reminderStatus }),\r\n ],\r\n whereFields: [\r\n new SQLField({ fieldName: 'f_tbname', propertyName: 'TbName', value: 'T_MEMO' }),\r\n new SQLField({ fieldName: 'f_tbid', propertyName: 'TbId', value: memo.id }),\r\n new SQLField({ fieldName: 'f_type', propertyName: 'Type', value: 0 })\r\n ]\r\n }));\r\n } else {\r\n reminderSql.push(new SQLInfo({\r\n tableName: \"T_AOTHERINFO\",\r\n type: SQLType.Delete,\r\n whereFields: [\r\n new SQLField({ fieldName: 'f_tbname', propertyName: 'TbName', value: 'T_MEMO' }),\r\n new SQLField({ fieldName: 'f_tbid', propertyName: 'TbId', value: memo.id }),\r\n new SQLField({ fieldName: 'f_type', propertyName: 'Type', value: 0 })\r\n ]\r\n }));\r\n }\r\n } else if (memo.addAsTaskReminder) {\r\n reminderSql.push(new SQLInfo({\r\n tableName: \"T_AOTHERINFO\",\r\n type: SQLType.Update,\r\n fields: [\r\n new SQLField({ fieldName: \"F_C1\", propertyName: \"C1\", value: memo.operator }),\r\n new SQLField({ fieldName: \"F_C2\", propertyName: \"C2\", value: memo.creator }),\r\n new SQLField({ fieldName: \"F_D1\", propertyName: \"D1\", value: memo.remind }),\r\n new SQLField({ fieldName: \"F_D2\", propertyName: \"D2\", value: memo.due }),\r\n new SQLField({ fieldName: \"F_N1\", propertyName: \"N1\", value: memo.addAsTaskReminder }),\r\n new SQLField({ fieldName: \"F_N2\", propertyName: \"N2\", value: memo.reminderStatus }),\r\n ],\r\n whereFields: [\r\n new SQLField({ fieldName: 'f_tbname', propertyName: 'TbName', value: 'T_MEMO' }),\r\n new SQLField({ fieldName: 'f_tbid', propertyName: 'TbId', value: memo.id }),\r\n new SQLField({ fieldName: 'f_type', propertyName: 'Type', value: 0 })\r\n ]\r\n }));\r\n }\r\n\r\n sqlInfoList.push(...reminderSql);\r\n const apiResult: ApiResult = await appContext.api.saveJobDetail(JobNames.Memo, sqlInfoList, {});\r\n\r\n const insertResult = apiResult?.result?.insertList.find(x => x.model === 'Memo');\r\n const savedId = insertResult?.newId ?? memo.id;\r\n\r\n // setMemo({id: savedId});\r\n\r\n if (apiResult && apiResult.success) {\r\n // Added Files\r\n const formData = new FormData();\r\n for (let i = 0; i < addedFiles.length; i++) {\r\n formData.append(\"file\", addedFiles[i].file);\r\n }\r\n formData.append(\"memoId\", '' + savedId);\r\n formData.append(\"jobName\", '' + jobName);\r\n formData.append(\"memoType\", 'D');\r\n if (memo.addAsTaskReminder) {\r\n //Task Reminder가 활성화되어있고, Reminder 관련 Dirty 발생시\r\n if (checkPropDirty(memo, 'operator')|| checkPropDirty(memo,'creator')||checkPropDirty(memo,'remind') ||checkPropDirty(memo,'due') || checkPropDirty(memo,'reminderStatus')) {\r\n appContext.setUseCheckReminder(!appContext.useCheckReminder);\r\n }\r\n }\r\n\r\n const apiResult2: ApiResult = await appContext.api.upload(formData);\r\n if (apiResult2 && apiResult2.success) {\r\n }\r\n\r\n\r\n } else {\r\n await showGlobalOkDialog(`Failed to save : ${apiResult?.message}`);\r\n return false;\r\n }\r\n\r\n setLoading(false);\r\n appContext.setMyMemoTaskReminder(false);\r\n appContext.setMyMemoId(0);\r\n loadData();\r\n\r\n channel.publish('ajax.loadingend', {});\r\n return true;\r\n }\r\n\r\n async function deleteMemo(id:string|number) {\r\n if (!jobId || !jobName) {\r\n return;\r\n }\r\n\r\n const confirmDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n , false, 0, true, 'warning');\r\n\r\n if (!confirmDelete) {\r\n return;\r\n }\r\n\r\n setLoading(true);\r\n\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.Memo, { id });\r\n if (apiResult && !apiResult.success) {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n showGlobalOkDialog(message);\r\n }\r\n\r\n setLoading(false);\r\n loadData();\r\n }\r\n\r\n async function printMemo(id:number) {\r\n if (!jobId || !jobName || id <= 0) {\r\n return;\r\n }\r\n\r\n const confirmPrint = await showGlobalYesNoDialog(\r\n
\r\n

Do you want to print?

\r\n
\r\n ,false, 0, true);\r\n\r\n if (!confirmPrint) {\r\n return;\r\n }\r\n const title = 'Memo Log';\r\n const args = new MemoArgs({\r\n formCaption: title,\r\n subject: title,\r\n tbId: jobId?.toString(),\r\n tbName: getTbNameByJobName(jobName),\r\n });\r\n viewReport(args, \"\", true); \r\n }\r\n\r\n useEffect(() => {\r\n let memoTableEle = document.getElementById(`info-area-memo-table${hideLogHistory ? '-offlog' : '-onlog'}`);\r\n let logHistoryTableEle = document.getElementById('info-area-loghistory-table');\r\n if (memoTableEle)\r\n //51 = 20 + 22 + 3 + 6 (ia-drawer-content-title + info-area-title + memo-resizer + custom margin)\r\n memoTableEle.style.height = `${appContext.appInfoAreaDrawerHeight - 51 }px`;\r\n if (logHistoryTableEle)\r\n //51 = 20 + 22 + 3 + 6 (ia-drawer-content-title + info-area-title + memo-resizer + custom margin)\r\n logHistoryTableEle.style.height = `${appContext.appInfoAreaDrawerHeight - 51}px`;\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [appContext.appInfoAreaDrawerHeight])\r\n\r\n useEffect(() => {\r\n if (!showContent || showContent === 'none' || jobId <= 0) {\r\n return;\r\n }\r\n\r\n setTimeout(() => {\r\n const table = document.querySelectorAll('[id*=tbl-list]')[0] as HTMLElement;\r\n if (!table && isListView) { //listview에서 더블클릭했을 때는 아래 코드를 수행할 필요 없음\r\n return;\r\n }\r\n loadData();\r\n if (selectedIndex > 0) {\r\n loadExtraTabContent(selectedIndex - 1);\r\n }\r\n\r\n setSecurityControl();\r\n }, 500);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [jobId, jobName, showContent]);\r\n\r\n function setSecurityControl() {\r\n let secCont = appContext.securityControls ? appContext.securityControls[JobNames.Main] : null;\r\n if (!secCont) {\r\n secCont = [{ secCntr: FmsSecCntr.MemoEdit, contName: 'btnMemoEdit' },\r\n { secCntr: FmsSecCntr.MemoDelete, contName: 'btnMemoDelete' }];\r\n appContext.setSecurityControls(JobNames.Main, secCont);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (prevContent !== 'custom' && showContent === 'custom') {\r\n setSelectedIndex(1);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [showContent]);\r\n\r\n useEffect(() => {\r\n if (selectedIndex > 0) {\r\n loadExtraTabContent(selectedIndex - 1);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [selectedIndex]);\r\n\r\n async function loadExtraTabContent(i:number) {\r\n setLoading(true);\r\n //\r\n const extraContent = await extraTabs[i].contentLoader({ jobName, jobId, ...extraTabs[i].params});\r\n setExtraTabContent(extraContent);\r\n setLoading(false);\r\n }\r\n\r\n let renderedMemo;\r\n if (showContent === 'memo') {\r\n renderedMemo = \r\n } else if (showContent === 'custom') {\r\n renderedMemo = extraTabContent;\r\n }\r\n\r\n const extraTabs = !!customTabs ? customTabs : [];\r\n\r\n\r\n const resizable = function (resizer: any) {\r\n const prevSibling = document.getElementById('ifms-info-area-drawer');\r\n let y = 0;\r\n let prevSiblingHeight = 0;\r\n let memoTableEle = document.getElementById(`info-area-memo-table${hideLogHistory ? '-offlog' : '-onlog'}`);\r\n let logHistoryTableEle = document.getElementById('info-area-loghistory-table');\r\n\r\n const mouseDownHandler = function (e: MouseEvent) {\r\n y = e.clientY;\r\n if (prevSibling) {\r\n const rect = prevSibling.getBoundingClientRect();\r\n prevSiblingHeight = rect.height;\r\n }\r\n\r\n document.addEventListener(\"mousemove\", mouseMoveHandler);\r\n document.addEventListener(\"mouseup\", mouseUpHandler);\r\n };\r\n\r\n const mouseMoveHandler = function (e: MouseEvent) {\r\n const dy = e.clientY - y;\r\n\r\n if (prevSibling) {\r\n const tempHeight = prevSiblingHeight + (-dy);\r\n prevSibling.style.height = `${tempHeight < 100 ? 100 : tempHeight}px`;\r\n appContext.setAppInfoAreaDrawerHeight(prevSiblingHeight);\r\n\r\n const cursor = \"row-resize\";\r\n resizer.style.cursor = cursor;\r\n document.body.style.cursor = cursor;\r\n\r\n prevSibling.style.userSelect = \"none\";\r\n prevSibling.style.pointerEvents = \"none\";\r\n\r\n const drawerContentListHeight = document.getElementsByClassName('ia-drawer-content-list')[0]?.clientHeight;\r\n\r\n if (memoTableEle)\r\n memoTableEle.style.height = `${drawerContentListHeight - 6}px`;\r\n else\r\n memoTableEle = document.getElementById(`info-area-memo-table${hideLogHistory ? '-offlog' : '-onlog'}`);\r\n\r\n if (logHistoryTableEle)\r\n logHistoryTableEle.style.height = `${drawerContentListHeight - 6}px`;\r\n else\r\n logHistoryTableEle = document.getElementById('info-area-loghistory-table');\r\n }\r\n };\r\n\r\n const mouseUpHandler = function () {\r\n if (prevSibling) {\r\n resizer.style.removeProperty(\"cursor\");\r\n document.body.style.removeProperty(\"cursor\");\r\n appContext.setAppInfoAreaDrawerHeight(prevSibling.clientHeight);\r\n\r\n prevSibling.style.removeProperty(\"user-select\");\r\n prevSibling.style.removeProperty(\"pointer-events\");\r\n\r\n const table = document.querySelectorAll('[id*=tbl-list]')[0] as HTMLElement;\r\n if (table)\r\n doAdjustTableHeight(table);\r\n\r\n document.removeEventListener(\"mousemove\", mouseMoveHandler);\r\n document.removeEventListener(\"mouseup\", mouseUpHandler);\r\n }\r\n };\r\n\r\n resizer.addEventListener(\"mousedown\", mouseDownHandler);\r\n };\r\n\r\n // document.querySelectorAll(\".memo-resizer\").forEach(function (ele) {\r\n // resizable(ele);\r\n // });\r\n\r\n const element = document.getElementById('memo-up-down-button');\r\n if(element) resizable(element);\r\n\r\n async function setMemoDetail(index:number, isView: boolean){\r\n if(index >= 0 && index < memo?.memo.length && _.isEmpty(editMemo)){\r\n const apiResult: ApiResult = await appContext.api.getJobDetail(JobNames.Memo, { id: memo?.memo[index].id});\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

{apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

);\r\n return null;\r\n } else {\r\n const obj = { ...apiResult.result, jobId: jobId, jobName: jobName, edit: true, view: isView, editIndex: selectedMemoListIndex};\r\n const tEntity = new Memo(obj);\r\n setEditMemo(tEntity);\r\n tEntity.trackable = true;\r\n // LogDetails --> files\r\n const newfiles:Array = [];\r\n tEntity.logFileDetails.map((logFile, index) => {\r\n const file = new AttachFile({\r\n logId: logFile.id,\r\n logFileId: logFile.logFileId,\r\n file: new File([], logFile.oFileName),\r\n });\r\n \r\n newfiles.push(file);\r\n return logFile;\r\n });\r\n setFiles(newfiles);\r\n const starts:Array = [...newfiles]\r\n startFiles.current = starts;\r\n }\r\n } else {\r\n const tEntity2 = new Memo();\r\n tEntity2.tbName = getTbNameByJobName(jobName);\r\n tEntity2.jobName = jobName;\r\n tEntity2.jobId = jobId;\r\n setEditMemo(tEntity2);\r\n tEntity2.trackable = true;\r\n\r\n const files:Array = [];\r\n setFiles(files);\r\n const starts:Array = [...files]\r\n startFiles.current = starts;\r\n }\r\n }\r\n\r\n function doAdjustTableHeight(table: HTMLElement) {\r\n if (!table) {\r\n return;\r\n }\r\n\r\n const tableScrollbarHeight = table.getBoundingClientRect().height - table.clientHeight;\r\n\r\n let titleBarHeight = 0;\r\n let infoAreaHeight = 0;\r\n\r\n const titleBars = document.getElementsByClassName(!appContext.useDarkMode ? 'ifms-screen-title-bar' : 'ifms-screen-title-bar-darkmode');\r\n if (titleBars && titleBars.length > 0) {\r\n var tbRect = titleBars[0].getBoundingClientRect();\r\n titleBarHeight = tbRect.bottom;\r\n }\r\n\r\n const infoArea = document.getElementById('ifms-info-area-drawer');\r\n if (infoArea && infoArea.dataset.open === 'true')\r\n infoAreaHeight = infoArea.clientHeight - tableScrollbarHeight; // In case info area is open don't make list appear above info area\r\n\r\n const vh = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\r\n\r\n table.style.height = showContent !== 'none' ? `${vh - titleBarHeight - infoAreaHeight - 19}px` : `${vh - titleBarHeight - infoAreaHeight}px`;\r\n }\r\n\r\n useEffect(() => {\r\n if (appContext.appInfoAreaDrawerHeight === 0) appContext.setAppInfoAreaDrawerHeight(243);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const memoLen = memo?.memo?.length??0;\r\n const memoTitleIsUpdate = memoLen > 0 && memo?.memo?.length >= memoLen && memo?.memo[selectedMemoListIndex]?.title === \"Update History\";\r\n\r\n const canBeAdd = listSec?.grantAdd;\r\n const canBeEdit = memo && !(selectedMemoListIndex < 0 || memoLen <= 0 || memoTitleIsUpdate) && listSec?.grantEdit\r\n && !appContext.getControlDisableStatus(JobNames.Main, 'btnMemoEdit', FormType.ModeEdit);\r\n const canBeDeleted = memo && !(selectedMemoListIndex < 0 || memoLen <= 0 || memoTitleIsUpdate) && listSec?.grantDel\r\n && !appContext.getControlDisableStatus(JobNames.Main, 'btnMemoDelete', FormType.ModeEdit);\r\n\r\n return (\r\n \r\n \r\n
\r\n {/*
*/}\r\n
\r\n
\r\n {showContent === 'memo' &&\r\n <>Memo / Task / Log\r\n }\r\n {showContent === 'custom' &&\r\n <>{extraTabs[selectedIndex - 1]?.headline || ''}\r\n }\r\n
\r\n {/* */}\r\n
\r\n {!hideMemoList &&\r\n <>\r\n setMemoDetail(-1, false)} disabled={!canBeAdd} >\r\n  New\r\n  \r\n setMemoDetail(selectedMemoListIndex, false)}>\r\n Edit\r\n  \r\n deleteMemo(memo?.memo[selectedMemoListIndex]?.id)}>\r\n Delete\r\n  \r\n printMemo(memo?.memo[selectedMemoListIndex]?.id)}>\r\n Print\r\n \r\n \r\n }\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {loading &&\r\n \r\n \r\n \r\n }\r\n
\r\n
\r\n {renderedMemo}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nInfoAreaDrawer.defaultProps = {\r\n showContent: 'none',\r\n onClose: () => {},\r\n hideCustomHeadline: false,\r\n};\r\n\r\nInfoAreaDrawer.propTypes = {\r\n //entityId: \r\n jobId:PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n //entityName: \r\n jobName: PropTypes.string.isRequired,\r\n customTabs: PropTypes.arrayOf(PropTypes.shape({\r\n headline: PropTypes.node.isRequired,\r\n contentLoader: PropTypes.oneOfType([\r\n PropTypes.shape({\r\n then: PropTypes.func.isRequired,\r\n catch: PropTypes.func.isRequired\r\n }),\r\n PropTypes.func]\r\n ).isRequired,\r\n })),\r\n showContent: PropTypes.oneOf(['custom', 'memo', 'none']).isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n hideCustomHeadline: PropTypes.bool.isRequired,\r\n};\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nexport default React.memo(InfoAreaDrawer);\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABRUExURQAAAP/Naf/FUv/BRP/MZvr39f3NbP3Obfr28/r18vvmwfrpyP7Nafvmv/vlvPr29P7Ref7QdP7Pcv7Se/r18fvoxPvpyf7Pcf/JXP/HUP/HWJ5ibwIAAAAbdFJOUwD/H/8U//////////////////////////8gIAhr3eUAAAAJcEhZcwAAIdUAACHVAQSctJ0AAADYSURBVEhL7ZVJAsIgEAQzxrhG4xLX/z9UZmjZAgY8eDF16h4oSE5UE19ABYgwq9HymCulLlPUPXWpQj9VmqbRPY3ZYpURx+6AshhzeH2po/kXnq0kRVjzKrLz+zxNXOQvWYU2KYfnW2SFo1DLazsUw56nLQrjKtGPG458hbpwA/cOGQQKHXjPEYVO3M4ob0JFn9vr2HPW0WGo2K83wSei0EX2CleMXGIKzleg+sQVurFwQwlIKJ+YlH9XCh1R7ih5iFJ2jzwwRahX7IGYyVNeS5QsRJgooapeZ+cMpv92t84AAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAADAFBMVEUBAAAAAAAAgACAgAAAAICAAIAAgICAgIDAwMD/AAAA/wD//wAAAP//AP8A//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJRqB8AAAAAXRSTlMAQObYZgAAAHpJREFUeNpdjzsOBCEMQ+1mQrX3PycVocnaYT+jQQjlOZZliMfhfwwg70IMYCH5XWL0NNk4sD5ctDdRxzBLGWJh2jijkmbdfcmbgZKwzK9pBbWpxB8X0IL6pLgcu0mN4YrNEkC3ijx7hbLs6P32K0eXqYMSeOX59MnAG60KOh1e2dAgAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAADAFBMVEUBAAAAAACAAACAgAAAAICAAIAAgICAgIDAwMD/AAAA/wD//wAAAP//AP8A//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAskMZcAAAAAXRSTlMAQObYZgAAAGZJREFUeNpdjtEKwCAIRZXBDIL9/3e6l/Ywmje1tUmZ93DVmDzE7oWCQxdL2icY2gkvehAAiT6M6SxewXPSDoCylXZT/QAc6xigUVETW00QC47FgaEquSUd/iyO7uR1JJi/TEC/eACJkCwRclqBcAAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAADAFBMVEUBAAAAAAAAgACAgAAAAICAAIAAgICAgIDAwMD/AAAA/wD//wAAAP//AP8A//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJRqB8AAAAAXRSTlMAQObYZgAAAF5JREFUeNpdjjsSACEIQ5PZgs77n9OOYocF/OFSqMk8EonfsJw+Np5sU/dt9Lia6zQqMI0JRAgrICrK04DQIGUbmgTrrwS6iMx3wJbxAC80Wu4VJ3BSYyNKC2OXGvMBp7QhFTfOdc8AAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAACzklEQVR42kVS60tUURCfY7qtXfehV1evm09EMsnW8EMRVkYRSKRQERhlH6IiiP6AirSo1h5WbkVkC0H0pBDKSIkSH0TRSxFXs121rVbTdldN7+7e8+pcv3SY+fFj5swZZs4P8efrgXNKKdOdUEIYphhrglDhmiCYCkqxcM4oYs/W4bxK+ucz5wSYCGFONaCaIAzHECWMRHVOMeJxifIiRFrWxqxLl2x4CACMTIX72xGjCXK+Kbcc/h8qkhNdTeZwI9KerNaSM6WNT/Gsd+jB8cKdh/HMMP41OB8O2ytdCBhwYXrBeM8tS9iFIo/LqFVJrHAPuI+sqD0DPBj49DKzuHTa06UZHTZHFTAMehkN9Nw2BV1o7p6DyxlqRq1ZkY2LjWDAQ20Pl1VsZZO+1quN266PAJ7RO3D2s9ttmrqKZu4Uo1SbmrkvJTc7AWkQRzwv7ptsGXZ7asulpu3NAQBV7wDM/+qKeaIJBZsL49NsUOqM+dtTi1aJwTnFAoOf2z509pesNOJYlBM66/fIWxol3yk0eTPfkJ5qqX4//KhGKShIMqeIQf2f3nW3v60+Xi+ZGP3eoY7/GO37Yik/JXnrUOBa1pL0FMuOXs6igy6HdzgaVf/m5ylFe09LZg4sNN1xQ534ORFUk9fXSUN16MdlJUmxWnd5gEV+PyhP3/2a++7iaATPjrNYyFS8BmgI2Pw7V0Pa5rPSQB0aOy+bM5OTd38TUb+7LHt/Z/RNDVY1MjfNUIK86SBExkWqq+mCUtmQ1HcC+c5ZrHZryp4RoPPeGyUFh94AJUDngIQAT+pGwsDUVxcv5FQ5pd4T6OvpJDnLIteOAlUHnAph8ZzFiL4qITmhQyBCYgyCk1B6wCl9PIYG641pOTacd5STCDKYdCUwzheQLVBhXEc01t+zPNaKPCcNuWV2oDH9BmFi5fpPEPEyW2jBGGVcF75eGPqL/gEWe8wFdi+EJQAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAADAFBMVEUBAAAAAAD8/Pz9/f1WVlZeXl5cXFz+/v7x8fHp6elUVFRZWVn29vZMTEzt7e3w8PBpaWn39/dgYGBjY2NISEhYWFhXV1fs7OxoaGj7+/tRUVFLS0tdXV34+Phra2tVVVVQUFD19fXq6upNTU35+fnf399TU1P09PRhYWFbW1t8AACbAAC6AADZAADwAAD/JCT/SEj/bGz/kJD/tLQ+FABdHgB8KACbMgC6PADZRgDwVQD/bST/hUj/nWz/tZD/zbQ+KgBdPwB8VACbaQC6fgDZkwDwqgD/tiT/wkj/zmz/2pD/5rQ+PgBdXQB8fACbmwC6ugDZ2QDw8AD//yT//0j//2z//5D//7QqPgA/XQBUfABpmwB+ugCT2QCq8AC2/yTC/0jO/2za/5Dm/7QUPgAeXQAofAAymwA8ugBG2QBV8ABt/ySF/0id/2y1/5DN/7QAPgAAXQAAfAAAmwAAugAA2QAA8AAk/yRI/0hs/2yQ/5C0/7QAPhQAXR4AfCgAmzIAujwA2UYA8FUk/21I/4Vs/52Q/7W0/80APioAXT8AfFQAm2kAun4A2ZMA8Kok/7ZI/8Js/86Q/9q0/+YAPj4AXV0AfHwAm5sAuroA2dkA8PAk//9I//9s//+Q//+0//8AKj4AP10AVHwAaZsAfroAk9kAqvAktv9Iwv9szv+Q2v+05v8AFD4AHl0AKHwAMpsAPLoARtkAVfAkbf9Ihf9snf+Qtf+0zf8AAD4AAF0AAHwAAJsAALoAANkAAPAkJP9ISP9sbP+QkP+0tP8UAD4eAF0oAHwyAJs8ALpGANlVAPBtJP+FSP+dbP+1kP/NtP8qAD4/AF1UAHxpAJt+ALqTANmqAPC2JP/CSP/ObP/akP/mtP8+AD5dAF18AHybAJu6ALrZANnwAPD/JP//SP//bP//kP//tP8+ACpdAD98AFSbAGm6AH7ZAJPwAKr/JLb/SML/bM7/kNr/tOY+ABRdAB58ACibADK6ADzZAEbwAFX/JG3/SIX/bJ3/kLX/tM03lkCSAAAAAXRSTlMAQObYZgAAAHZJREFUeNpjZEADjLgEWBgZfyELsP5mYOD6hiTA/ZWBgfczkoDAB6F3Qu/gAsJvRd6IvkYSEHsl8ULqGUgbVEDkjfRTmScsf+ACco+knsk/FH0NF1B4wCDxggFJi8wTEKl8F2Gt/EMGBrVbyC7llmW8TsBzcAAA8/EgEXkxcr4AAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAADAFBMVEUBAAAAAAD///8AAICAAIAAgIDA3MCmyvAqP6oqP/8qXwAqX1UqX6oqX/8qfwAqf1Uqf6oqf/8qnwAqn1Uqn6oqn/8qvwAqv1Uqv6oqv/8q3wAq31Uq36oq3/8q/wAq/1Uq/6oq//9VAABVAFVVAKpVAP9VHwBVH1VVH6pVH/9VPwBVP1VVP6pVP/9VXwBVX1VVX6pVX/9VfwBVf1VVf6pVf/9VnwBVn1VVn6pVn/9VvwBVv1VVv6pVv/9V3wBV31VV36pV3/9V/wBV/1VV/6pV//9/AAB/AFV/AKp/AP9/HwB/H1V/H6p/H/9/PwB/P1V/P6p/P/9/XwB/X1V/X6p/X/9/fwB/f1V/f6p/f/9/nwB/n1V/n6p/n/9/vwB/v1V/v6p/v/9/3wB/31V/36p/3/9//wB//1V//6p///+qAACqAFWqAKqqAP+qHwCqH1WqH6qqH/+qPwCqP1WqP6qqP/+qXwCqX1WqX6qqX/+qfwCqf1Wqf6qqf/+qnwCqn1Wqn6qqn/+qvwCqv1Wqv6qqv/+q3wCq31Wq36qq3/+q/wCq/1Wq/6qq///UAADUAFXUAKrUAP/UHwDUH1XUH6rUH//UPwDUP1XUP6rUP//UXwDUX1XUX6rUX//UfwDUf1XUf6rUf//UnwDUn1XUn6rUn//UvwDUv1XUv6rUv//U3wDU31XU36rU3//U/wDU/1XU/6rU////AFX/AKr/HwD/H1X/H6r/H///PwD/P1X/P6r/P///XwD/X1X/X6r/X//WvLzk1bXLsoz/3/9oaGj//NGfg3j1xYb/45DlxYPTqXH106XGgx3OfTLpk0T/sFj/wn3GrI3o6OhSUlJnT0vGfUX/o0X0kTTGYCCoQha2UBvmgCvLeDaqZz2YdmHb29s2NjhZWVlcQjySUizLciyuYy6PVzX/7r/buaDDw8MqP1VyWVL/4rTr26W5ubn/+/B2dnb/47Ls39l6enqgoKReXl7Jw6lhYWGampozM09WVlY/Pz/19fU+PldgYHl0dHTXke7WAAAAAXRSTlMAQObYZgAAANJJREFUeNpNj7FKA1EQRc9keVlJyoUt0tiq5RbaBMHGhNSpZL8g/2AQtbbxH6yEh01IZZNF3H/IB4TAFomuYAjEmUeQXF4x99y5A08gZif6bh9+UQlTLpKKBMajdErfAAOLWCdvGPgnN7l6rRBrMGS7mUCWGri713HgY/gcBfA4br2GI7X3tYH8hao0T+9nX2nvbCWb+acA8mfKUDk6dU7BwrkPaEVfcNmMkKIhK0hEZAkdUcA3HItpDifhL5yZdc7N4MpAv7CTXYrzd66FA2nQ/QPkujWthAJNoAAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAADAFBMVEUBAAAAAAD////VBAb3BQaJCQr+Jin6Nzn1TE74YWL7cnTliYronp/OnJ3/xcbpsbPqv8HWsrP/qq7ry83MvL3s29zr09XZwsXezM/j19nu6On5AYPq5+m9trv/AfmBAX3Y1Njt6+3a19vQzdFnZWh5d3rl4+bd2965rsGjXd2pddWvjc20n8adm6DNy9CRj5W6ub7U09hoZ22Yl52qqbERAdkBAX0RERKfn6ehoadra2+vr7Wbm6DFxcvBwce/v8WxsbatrbKrq7Cpqa6np6ylpaqjo6ifn6SdnaKKio5nZ2plZWhiYmVfX2LPz9TNzdLLy9DJyc7Hx8zDw8i9vcK7u8C3t7y1tbqzs7ihoaWZmZ2VlZmRkZWPj5N3d3pxcXRvb3LFxcmTk5aHh4qFhYiCgoXh4eXX19vV1dnT09fR0dWXl5ptbW9ra21paWvf3+Ld3eDb297Z2dzBwcRISEnv7/Hr6+3p6eutra/y8vPn5+jl5ebj4+R6e37DxcqvsbXLzdGTlZirrbCjpajT1djHys5rbW9naWtjZWfP0tW9v8Hd3+Hb3d/X2dvNz9HJy83g5urm6evp7vGho6TV19ju9vgB4PcBf3/4+voBexgI6Sr//jANDQvZ2deIgCY2NTT/axpOAQH5FRXZIiK7NzfIWlrcd3eyfX3BjY3Pqqr/3Ny9pKTu4+Pu7u7h4eHf39/d3d3b29vZ2dnX19fV1dXT09PR0dHPz8/Nzc3Ly8vJycnHx8fFxcXDw8PBwcG/v7+9vb27u7u5ubm3t7e1tbWzs7Pr26Xs39nk1bXLsoz//NHbuaB6enp2dnbTqXH106XGgx3OfTL/7r//4rReXl7pk0T1xYbWvLz/sFj0kTT/45D/47I/Pz/GYCDlxYPJw6moQhb/wn22UBv19fUpKSnGrI3mgCtnT0vo6OiYdmFhYWGamprLeDaSUiz/o0XGfUWfg3h0dHRWVlbLciyqZz2uYy5SUlI+PldyWVKPVzVcQjw2NjgzM09ZWVloaGhgYHnYnZc5AAAAAXRSTlMAQObYZgAAAOZJREFUeNo1z89qwkAQBvBvNuN2zaG0BWvABITah+i99tBrwLu5+ggeeupb2AcR8ayQq1KkVUoD0j8XtbWHhLjdTdNh5vJj+JghAJco68kMWfAEsPJPHu+6BlytAdv5zRAPXQO5HkRmTYvmEkaomg8Q2R1x/Qy0OuSI/8jaBV6aaRGaBQnu+6lEkNQL2Eu8yjNABsughDTbVX48yLQEvKmeSV5XXHNYnFE43hIpUszHoMNuzbwhInaq7FjAu9Kf7AiWaj+9tb8cdP4lBev50Tmd/j23sHf5cvX90VAWZjHQHrURToCrX8MxRmzTFFVWAAAAAElFTkSuQmCC\"","import { DocumentType } from \"../../framework.core/DocumentType\";\r\n\r\nexport class ReportArgs {\r\n docType: DocumentType = DocumentType.Unknown;\r\n formCaption: string = '';\r\n subject: string = '';\r\n stamp : boolean = false;\r\n useMultiCur: boolean = false;\r\n toCompanyid: string = '';\r\n tbName: string = '';\r\n tbId: string = '';\r\n userID: string = '';\r\n memo: string = '';\r\n copies: number = 0;\r\n isExportToExcel: boolean = false;\r\n ccEmail: string = '';\r\n bccEmail: string = '';\r\n\r\n emailTemplateName: string = '';\r\n fileAttachments: string[] = [];\r\n\r\n constructor(init?:Partial) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n\r\n// ** FrontEnd 에서 사용되지 않는 Property는 주석 처리함.\r\n\r\n//#region #A, B, C, D\r\n\r\nexport class AciHistoryArgs extends ReportArgs {\r\n dataCompanyID: number = 0;\r\n houseID: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class AccountBalanceByEntityArgs extends ReportArgs {\r\n dataCompanyID: number = 0;\r\n toDate: string | null = null;\r\n comType: string = '';\r\n comId: number = 0;\r\n comName: string = '';\r\n subCode: string = '';\r\n fromGLNo: string = '';\r\n toGLNo: string = '';\r\n branch: string = '';\r\n showForeign: boolean = false;\r\n salesCostOnly: string = ''; // Empty : ''(Account Code 모두 표시), Sales : 'S', Cost : 'C', Sales & Cost : 'ALL' \r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class AgntStatementArgs extends ReportArgs {\r\n dataCompanyID: number = 0;\r\n agent: number = 0;\r\n departments: string = '';\r\n stDate: string | null = null;\r\n edDate: string | null = null;\r\n paidType: string = '';\r\n sortNum: number = 0;\r\n dateType: string = '';\r\n eurRate: number = 0;\r\n currency: string = '';\r\n showDetail: boolean = false;\r\n showPstatus: boolean = false;\r\n branch: string = '';\r\n received: boolean = false;\r\n customForm: boolean = false;\r\n //accountID: string = '';\r\n billto: number = 0;\r\n descptDetail: boolean = false;\r\n confirmed: boolean = false;\r\n //recognizedOnly: boolean = false; 사용하지 않는 필드\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class AIManifestArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //sOrB: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class AmsHistoryArgs extends ReportArgs {\r\n dataCompanyID: number = 0;\r\n houseID: number = 0;\r\n amsMode: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class AmsHistoryMasterArgs extends ReportArgs {\r\n dataCompanyID: number = 0;\r\n masterID: number = 0;\r\n amsMode: string = '';\r\n\r\n constructor(init?: Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class AmsUsageArgs extends ReportArgs {\r\n acctType: string = '';\r\n //amsId: string = '';\r\n amsGroupId: string = '';\r\n dateFrom: string = '';\r\n dateTo: string = '';\r\n hblNumber: boolean = false;\r\n amsMode: string = '';\r\n useEManifest: boolean = false;\r\n aciSearchStr: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class APArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n requestBy: string = '';\r\n branch: string = '';\r\n country: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class ArrivalNoticeArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n showCharge: string = '';\r\n hidePPCC: string = '';\r\n customForm: boolean = false;\r\n //legalTerms: boolean = false;\r\n message: string = '';\r\n useMultiCur: boolean = false;\r\n caption: string = '';\r\n legalTerms: boolean = true;\r\n \r\n //FOR ATTACH GURANTEE LETTER\r\n turnInCode: string = ''\r\n emptyRtnID:number = 0;\r\n fileNo: string = '';\r\n opEmail: string = '';\r\n withAttachGuaranteeLetter: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class AuthEntryArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //customForm: boolean = false;\r\n //useSignature: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class IRC225Args extends ReportArgs {\r\n customForm: boolean = false;\r\n useSignature: boolean = false;\r\n totalHawb: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class AWBArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n forUse: string = '';\r\n orgCpy: string = '';\r\n shipperName: string = '';\r\n pShipperName: string = '';\r\n carrierName: string = '';\r\n firstCarrier: string = '';\r\n destCountry: string = '';\r\n //tFontName: string = '';\r\n branch: string = '';\r\n companyName: string = '';\r\n remark: string = '';\r\n remarkFont: string = '';\r\n notShowRule: boolean = false;\r\n useSignature: boolean = false;\r\n deliveryOption: boolean = false;\r\n showSellingRate: boolean = false;\r\n attachIATATerm: boolean = false;\r\n carrierOption: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\n\r\nexport class BalanceSheetArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n strDate: string | null = null;\r\n edDate: string | null = null;\r\n previousDate: string | null = null;\r\n printYears: number = 0;\r\n branch: string = '';\r\n reportType: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class BalanceSheetKRArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n strDate: string | null = null;\r\n endDate: string | null = null;\r\n branch: string = '';\r\n showPreviousYear: boolean = false;\r\n isDetail: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class BankDraftArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n dataOnly: string = '';\r\n issueDate: string = '';\r\n usDollar: string = '';\r\n atSight: string = '';\r\n payTo: string = '';\r\n payToAddr: string = '';\r\n lCno: string = '';\r\n openBank: string = '';\r\n openDate: string = '';\r\n cnee: string = '';\r\n cneeAddr: string = '';\r\n drawnBank: string = '';\r\n drawnBankAddr: string = '';\r\n bankRef: string = '';\r\n signature: string = '';\r\n negoBank: string = '';\r\n negoBankAddr: string = '';\r\n draftNo: string = '';\r\n checkOP: string = '';\r\n initial: string = '';\r\n otherInst: string = '';\r\n branch: string = '';\r\n multiName: string = '';\r\n title: string = '';\r\n billsLanding: string = '';\r\n blCopy: string = '';\r\n com: string = '';\r\n ins: string = '';\r\n ctf: string = '';\r\n con: string = '';\r\n pkn: string = '';\r\n wgt: string = '';\r\n amdDate: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class BankReconHistoryArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n strDate: string | null = null;\r\n endDate: string | null = null;\r\n bankID: number = 0;\r\n //edate: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class BookConfirmArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //customForm: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class BookingAIFGArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class BookingArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //tFontName: string = '';\r\n userID: string = '';\r\n date1: string | null = null;\r\n date2: string | null = null;\r\n branch: string = '';\r\n period: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class BranchPerformanceArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n strDate: string = '';\r\n edDate: string = '';\r\n actStartDate: string = '';\r\n type: string = '';\r\n reportType: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class BrokerageArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n carrier: number = 0;\r\n stDate: string = '';\r\n edDate: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\n\r\nexport class CancelITArgs extends ReportArgs {\r\n tableName: string = '';\r\n username: string = '';\r\n attn: string = '';\r\n place: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class CarrierCertArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n } \r\n}\r\nexport class CertCompArgs extends ReportArgs {\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class CheckArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n copyOnly: boolean = false;\r\n formName: string = '';\r\n //tPrinterPath: string = '';\r\n //tFontName: string = '';\r\n fromNo: string = '';\r\n toNo: string = '';\r\n bank: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class CheckSubArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //isCheckAttach: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class CheckReqArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //requestBy: string = '';\r\n //branch: string = '';\r\n //recordList: CheckReq[] = [];\r\n //isNodata: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class CheckReqCommonArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n requestBy: string = '';\r\n branch: string = '';\r\n //country: string = '';\r\n reportType: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class CheckReqNoDetailArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //requestBy: string = '';\r\n //branch: string = '';\r\n //recordList: CheckReqNoDetail[] = [];\r\n //isNodata: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class ChkMessengerArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class COArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n branch: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class CombineArgs extends ReportArgs {\r\n //args: ReportArgs[] = [];\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class CommInvArgs extends ReportArgs {\r\n //date: string = '';\r\n caption: string = '';\r\n //dataCompanyID: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class CommInvPackRiderArgs extends ReportArgs {\r\n //riderMemo: string = '';\r\n //heading: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class CompanyDetailArgs extends ReportArgs {\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class ContainerNumbersArgs extends ReportArgs {\r\n //columnCount: number = 0;\r\n //containerCount: number = 0;\r\n //containerNoOnly: boolean = false;\r\n //outbound: boolean = false;\r\n //showPickupNo: boolean = false;\r\n //showLastFreeDay: boolean = false;\r\n //showWeight: boolean = false;\r\n //showPackage: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class ContainerRider2Args extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //title: string = '';\r\n //header: boolean = false;\r\n //branch: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class CorrNoticeArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n branch: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class CRDBArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n batchPrintInfos: { tbName: string, tbId: string }[] = []\r\n customForm: boolean = false;\r\n dbConnOname: string = '';\r\n billto: number = 0;\r\n stDate: string | null = null;\r\n edDate: string | null = null;\r\n sortBy: number = 0;\r\n dateType: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class CustomerNonActivityArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n department: string = '';\r\n salesMan: string = '';\r\n dateFrom: string = '';\r\n dateTo: string = '';\r\n type: string = '';\r\n type1: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class DailyAccountActivitySub3DetailArgs extends ReportArgs \r\n{\r\n //dataCompanyID: number = 0;\r\n branch: string = '';\r\n date: string = '';\r\n reportType: string = '';\r\n showInactive: string = '';\r\n showBadARBank: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class DailyAccountActivitySub4DetailArgs extends ReportArgs {\r\n date: string = '';\r\n //dataCompanyID: number = 0;\r\n branch: string = '';\r\n reportType: string = '';\r\n isFuture: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\n\r\nexport class PaymentPrepArgs extends ReportArgs {\r\n date: string = '';\r\n TbName: string = '';\r\n TbId: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\n\r\nexport class DailyAccountCommonArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n branch: string = '';\r\n reportType: string = '';\r\n showInactive: string = '';\r\n date: string = '';\r\n edate: string = '';\r\n showBadARBank: string = '';\r\n bankInfos: string = '';\r\n //viewType: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class DailyAccountSub2Args extends ReportArgs {\r\n stDate: string | null = null;\r\n edDate: string | null = null;\r\n branch: string = '';\r\n bankID: number = 0;\r\n valStr: string = '';\r\n currency: string = '';\r\n //dataCompanyID: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class DevannArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n instruction: string = '';\r\n cfs: number = 0;\r\n cy: number = 0;\r\n branch: string = '';\r\n country: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class DOArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //tFontName: string = '';\r\n branch: string = '';\r\n deliveryTo: string = '';\r\n trucker: string = '';\r\n remark: string = '';\r\n ppcc: string = '';\r\n carrierFieldType: number = 0;\r\n remarkAdd: string = '';\r\n forCnee: boolean = false;\r\n truckingCoID: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class DockReceiptArgs extends ReportArgs {\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class DutyBalanceArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n date: string | null = null;\r\n reportType: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class DutyPendingsArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n rptType: string = '';\r\n date: string | null = null;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\n//#endregion\r\n\r\n//#region #E, F, G, H\r\n\r\nexport class EmptyCntrRtnArgs extends ReportArgs {\r\n fileNo: string = '';\r\n emptyRtnID: number = 0;\r\n turnInCode: string = '';\r\n opEmail: string = '';\r\n //customForm: boolean = false;\r\n //acmeID: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class ETAArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n stDate: string | null = null;\r\n edDate: string | null = null;\r\n customer: number = 0;\r\n agent: number = 0;\r\n ref: string = '';\r\n branch: string = '';\r\n finalETA: string = '';\r\n operatorName: string = '';\r\n svcRep: string = '';\r\n companyGroup: string = '';\r\n notReleased: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class ExdecArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n branch: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class EmpPerformanceArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n periodFrom: string = '';\r\n periodTo: string = '';\r\n sortFieldNum: string = '';\r\n //branch: string = '';\r\n type: string = '';\r\n empName: string = '';\r\n viewType: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class ExdectransitArgs extends ReportArgs {\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class FreightANArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //international: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class GeneralLedgerArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n branch: string = '';\r\n dateFrom: string | null = null;\r\n dateTo: string | null = null;\r\n glNoFrom: string = '';\r\n glNoTo: string = '';\r\n subCode: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class GLAgingByEntryArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n branch: string = '';\r\n glCode: string = '';\r\n subCode: string = '';\r\n dateTo: string | null = null;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class GLAgingByEntryDetailArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n branch: string = '';\r\n glCode: string = '';\r\n subCode: string = '';\r\n dateTo: string | null = null;\r\n customerId: number = 0;\r\n customerType: string = '';\r\n isForeignBank: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class GermanSAdviceArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //customForm: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\n//#endregion\r\n\r\n//#region #I, J, K, L\r\n\r\nexport class IncomeStatementArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n strDate: string = '';\r\n edDate: string = '';\r\n previousStrdate: string | null = null;\r\n previousEndDate: string | null = null;\r\n previousStrdate2: string | null = null;\r\n previousEndDate2: string | null = null;\r\n previousStrdate3: string | null = null;\r\n previousEndDate3: string | null = null;\r\n //previousYear: string = '';\r\n reportOption: string = '';\r\n reportType: string = '';\r\n useLocalLanguage: string = '';\r\n branch: string = '';\r\n acualStartDate: string | null = null;\r\n reportType2: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class IncomeStatementKRArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n beginDate: string | null = null;\r\n fromDate: string = '';\r\n toDate: string = '';\r\n prevFromDate: string | null = null;\r\n prevToDate: string | null = null;\r\n showPreviousYear: boolean = false;\r\n byMonth: boolean = false;\r\n isDetail: boolean = false;\r\n branch: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class InvoiceArgs extends ReportArgs {\r\n batchPrintInfos: { tbName: string, tbId: string }[] = []\r\n\r\n constructor(init?: Partial) {\r\n super();\r\n //this.docType = DocumentType.Invoice;\r\n //this.formCaption = \"Invoice\"\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class ITArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //tFontName: string = '';\r\n branch: string = '';\r\n nos: string = '';\r\n //customForm: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class ISFUsageArgs extends ReportArgs {\r\n groupID: string = '';\r\n startDate: string = '';\r\n endDate: string = '';\r\n showdetail: boolean = false;\r\n user: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class InlandArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n stDate: string | null = null;\r\n edDate: string | null = null;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class InvenPickArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n stDate: string | null = null;\r\n edDate: string | null = null;\r\n centerNo: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class InvenActivityArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n stDate: string | null = null;\r\n edDate: string | null = null;\r\n centerNo: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class InvenItemHistoryArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n stDate: string | null = null;\r\n edDate: string | null = null;\r\n centerNo: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class IssueReadyArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n reportType: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class ITLaserArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //tPrinterPath: string = '';\r\n //customForm: boolean = false;\r\n //tFontName: string = '';\r\n nos: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class JournalVoucherArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n stDate: string | null = null;\r\n edDate: string | null = null;\r\n language: string = '';\r\n branch: string = '';\r\n slipType: string = '';\r\n seqNo: string = '';\r\n journalKey: string = '';\r\n fromSeqNo: string = '';\r\n toSeqNo: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class LabelArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //tFontName: string = '';\r\n customer: string = '';\r\n formName: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class LienNoticeArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n remark: string = '';\r\n branch: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class LiftingArgs extends ReportArgs {\r\n branch: string = '';\r\n startDate: string | null = null;\r\n endDate: string | null = null;\r\n option: string = '';\r\n agent: string = '';\r\n gr_40HTEU: string = '';\r\n gr_45TEU: string = '';\r\n //scac: string = '';\r\n amsMode: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class LocalStatementArgs extends ReportArgs {\r\n dataCompanyID: number = 0;\r\n advance: string = '';\r\n completeInvo: string = '';\r\n //customForm: boolean = false;\r\n showDetail: boolean = false;\r\n useMultiCur: boolean = false;\r\n departs: string = '';\r\n departsIL: string = '';\r\n startDate: string | null = null;\r\n endDate: string | null = null;\r\n pastDue: string = '';\r\n excl0Term: boolean = false;\r\n currency: string = '';\r\n pBalShow: boolean = false;\r\n notShowOver: boolean = false;\r\n branch: string = '';\r\n reportType: string = '';\r\n asOf: string = '';\r\n dateType: string = '';\r\n billto: number = 0;\r\n invoiceOnly: boolean = false;\r\n paidType: string = '';\r\n sortType: string = '';\r\n invoiceIDs: string = '';\r\n //recognizedOnly: boolean = false; 사용하지 않는 필드\r\n //tRs: number[] | null = null;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n this.docType = DocumentType.LocalStatement;\r\n\t}\r\n}\r\nexport class LoadPlanArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n instruction: string = '';\r\n agent: number = 0;\r\n rstation: number = 0;\r\n branch: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class LabelAirArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //tFontName: string = '';\r\n masterPieceCount: number = 0;\r\n housePieceCount: number = 0;\r\n range: string = '';\r\n headerType: string = '';\r\n mutipleComID: number = 0;\r\n showHousePieceCount: number = 0;\r\n showHouseBLNo: number = 0;\r\n //formName: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class LabelPouchArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //tFontName: string = '';\r\n pieceCount: string = '';\r\n //range: string = '';\r\n //formName: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class LabelComAddressArgs extends ReportArgs {\r\n skipCount: number = 0;\r\n companyGroup: string = '';\r\n companyID: string = '';\r\n incudeCountry: string = '';\r\n formName: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class LabelFolderArgs extends ReportArgs {\r\n field1: string = '';\r\n field2: string = '';\r\n field3: string = '';\r\n field4: string = '';\r\n field5: string = '';\r\n field6: string = '';\r\n field7: string = '';\r\n field8: string = '';\r\n field9: string = '';\r\n field10: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class LogDetailArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class LabelBookArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //tFontName: string = '';\r\n housePieceCount: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\n//#endregion\r\n\r\n//#region #M, N, O, P\r\n\r\nexport class ManifestArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class MasterSetArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class MemoArgs extends ReportArgs {\r\n subject: string = 'Memo Log';\r\n tbName: string = '';\r\n tbId: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n this.docType = DocumentType.Memo;\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class NewAgingCommonArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n endingDate: string | null = null;\r\n branch: string = '';\r\n acmeID: string = '';\r\n useNewAcct: string = '';\r\n glNo: string = '';\r\n subCode: string = '';\r\n type: string = '';\r\n comId: number = 0;\r\n comId2: string = '';\r\n comType: string = '';\r\n showCurrency: boolean = false;\r\n showBalanceOnly: boolean = false;\r\n fromOtherReport: boolean = false;\r\n doNotShowZeroBal: boolean = false;\r\n groupSalesman: boolean = false;\r\n salesMan: string = '';\r\n isFromMain: boolean = false;\r\n constructor(init?: Partial) {\r\n super();\r\n this.docType = DocumentType.AgingAR;\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class NewDeferredArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n salesFrom: string | null = null;\r\n salesTo: string | null = null;\r\n departments: string = '';\r\n viewType: string = '';\r\n sortOrder: string = '';\r\n branch: string = '';\r\n showNoBilling: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class NewGeneralJournalArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n startDate: string | null = null;\r\n endingDate: string | null = null;\r\n branch: string = '';\r\n subCode: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class NewProfitArgs extends ReportArgs {\r\n isHouseMode: boolean = false;\r\n //dataCompanyID: number = 0;\r\n groupFieldName: string = '';\r\n selectFieldValue: string = '';\r\n periodType: string = '';\r\n periodFrom: string | null = null;\r\n periodTo: string | null = null;\r\n sortFieldNum: number = 0;\r\n branch: string = '';\r\n viewType: string = '';\r\n lineItems: string = '';\r\n reportType: string = '';\r\n dataBLName: string = '';\r\n isSPReport: boolean = false;\r\n departments: string = '';\r\n lossOnly:boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class NewVendorCostDetailArgs extends ReportArgs {\r\n reportType: string = '';\r\n departments: string = '';\r\n strDate: string | null = null;\r\n endDate: string | null = null;\r\n vendor: string = '';\r\n vendorID: number = 0;\r\n paidStatus: string = '';\r\n //dataCompanyID: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class NewVendorCostSummaryArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n reportType: string = '';\r\n departments: string = '';\r\n strDate: string | null = null;\r\n endDate: string | null = null;\r\n paidStatus: string = '';\r\n sortVendorCost: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class OIHouseBLArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n houseBLNo: string = '';\r\n branch: string = '';\r\n //customForm: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class OIAuditArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n dateType: string = '';\r\n stDate: string = '';\r\n edDate: string = '';\r\n branch: string = '';\r\n agent: number = 0;\r\n actMgr: string = '';\r\n svcRep: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class OutstandArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n reportType: string = '';\r\n type: string = '';\r\n custWare: string = '';\r\n agent: string = '';\r\n stDate: string | null = null;\r\n edDate: string | null = null;\r\n dateType: string = '';\r\n branch: string = '';\r\n moveType: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class OOHouseBLArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n dataOnly: boolean = false;\r\n formName: string = '';\r\n fcr: string = '';\r\n authorized: string = '';\r\n fcR_RecBy: string = '';\r\n fcR_RecDateTime: string = '';\r\n fcR_RecPerson: string = '';\r\n //tFontName: string = '';\r\n showRemark: boolean = false;\r\n totalNoContPkgs: string = '';\r\n showBLType: string = '';\r\n agentRef: string = '';\r\n actCarrier: string = '';\r\n showVessel: boolean = false;\r\n showOnBoard: boolean = false;\r\n showErrorAttach: boolean = false;\r\n pageCount: number = 0;\r\n showIssue: boolean = false;\r\n showExRate: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class OutboundCargoManifestArgs extends ReportArgs {\r\n dataCompanyID: number = 0;\r\n manifestType: string = '';\r\n houseAgentIDs: string = '';\r\n branch: string = '';\r\n contact: string = '';\r\n from: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class OEUSDAArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class OutStateArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class PayrollSummaryArgs extends ReportArgs {\r\n payrollId: number = 0;\r\n payrollGroupId: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class PeriodicGLDetailArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n reportType: string = '';\r\n stDate: string | null = null;\r\n edDate: string | null = null;\r\n stnum: string = '';\r\n ednum: string = '';\r\n custType: string = '';\r\n custID: number = 0;\r\n custName: string = '';\r\n glSubCode: string = '';\r\n branch: string = '';\r\n showForeign: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class PickupArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n date: string | null = null;\r\n toTrucking: string = '';\r\n pickupRefNo: string = '';\r\n pickupDate: string | null = null;\r\n pickupAt: string = '';\r\n pickupContact: string = '';\r\n deliverRefNo: string = '';\r\n deliverDate: string | null = null;\r\n deliverTo: string = '';\r\n deliveryContact: string = '';\r\n billto: string = '';\r\n instruction: string = '';\r\n branch: string = '';\r\n commodity: string = '';\r\n //customForm: boolean = false;\r\n hbLnos: string = '';\r\n pkgs: string = '';\r\n weight: string = '';\r\n measurement: string = '';\r\n straightBlRider: boolean = false;\r\n flexiTankBlRider: boolean = false;\r\n\r\n id: string = '';\r\n tableName: string = '';\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class PreliminaryClaimArgs extends ReportArgs {\r\n username: string = '';\r\n noticeTo: string = '';\r\n remark: string = '';\r\n vendorFlag: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class PODArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n date: string | null = null;\r\n toCustomer: string = '';\r\n deliveryTo: string = '';\r\n remarks: string = '';\r\n branch: string = '';\r\n title: string = '';\r\n deliveryDate: string = '';\r\n signedBy: string = '';\r\n //show: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class PreAlertArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n customer: string = '';\r\n stDate: string = '';\r\n edDate: string = '';\r\n repType: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class PendingListArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n shipper: string = '';\r\n stDate: string | null = null;\r\n edDate: string | null = null;\r\n reportType: string = '';\r\n branch: string = '';\r\n //shipped: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class PickSlipArgs extends ReportArgs {\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class PickUpOtherCountriesArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n date: string | null = null;\r\n toTrucking: string = '';\r\n pickupRefNo: string = '';\r\n pickupDate: string | null = null;\r\n pickupTime: string | null = null;\r\n pickupAt: string = '';\r\n deliverDate: string | null = null;\r\n deliverTime: string | null = null;\r\n deliverTo: string = '';\r\n billTo: string = '';\r\n instruction: string = '';\r\n branch: string = '';\r\n cargoDetails: string = '';\r\n poRefNo: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\n//#endregion\r\n\r\n//#region #Q, R, S, T, U\r\n\r\nexport class QuotationArgs extends ReportArgs {\r\n quoteID: number = 0;\r\n //dataCompanyID: number = 0;\r\n branch: string = '';\r\n //customForm: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class ReportANandROrderPackageArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n caption: string = '';\r\n branch: string = '';\r\n country: string = '';\r\n showCharge: string = '';\r\n hidePPCC: string = '';\r\n //customForm: boolean = false;\r\n //legalTerms: boolean = false;\r\n //message: string = '';\r\n useMultiCur: boolean = false;\r\n date: string = '';\r\n sendID: number = 0;\r\n releaseTo: string = '';\r\n specialInstructions: string = '';\r\n title: string = '';\r\n\r\n //FOR ATTACH GURANTEE LETTER\r\n turnInCode: string = ''\r\n emptyRtnID:number = 0;\r\n fileNo: string = '';\r\n opEmail: string = '';\r\n withAttachGuaranteeLetter: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class ReleaseArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n date: string = '';\r\n sendID: number = 0;\r\n releaseTo: string = '';\r\n specialInstructions: string = '';\r\n branch: string = '';\r\n title: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class ReleaseHistArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n agent: string = '';\r\n stDate: string = '';\r\n edDate: string = '';\r\n fldName: string = '';\r\n //oaType: string = '';\r\n ocean: boolean = false;\r\n air: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class ReportDocumentPackageArgs extends ReportArgs {\r\n sendToType: string = '';\r\n reportTypes: string = '';\r\n blFormName: string = '';\r\n companyID: number = 0;\r\n branch: string = '';\r\n authorized: string = '';\r\n shipperName: string = '';\r\n carrierName: string = '';\r\n firstCarrier: string = '';\r\n destCountry: string = '';\r\n awbRemark: string = '';\r\n awbRemarkFont: string = '';\r\n stamp: boolean = false;\r\n country: string = '';\r\n master: boolean = false;\r\n //entryTime: string | null = null;\r\n //customsDate: string | null = null;\r\n remark: string = '';\r\n awbShowUserSign: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class ReportAgentPackageArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n agentReportType: string = '';\r\n houseAgentID: string = '';\r\n reportTypes: string = '';\r\n blFormName: string = '';\r\n companyID: number = 0;\r\n branch: string = '';\r\n awbRemark: string = '';\r\n awbRemarkFont: string = '';\r\n billTo: number = 0;\r\n shipperName: string = '';\r\n showAwbUserSign: boolean = false;\r\n dlvryOption: boolean = false;\r\n contact: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class SecondANArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n type: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class StraightBLArgs extends ReportArgs {\r\n toTrucking: string = '';\r\n sName: string = '';\r\n cName: string = '';\r\n pkgs: string = '';\r\n weight: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class SAArgs extends ReportArgs {\r\n dataCompanyID: number = 0;\r\n forUse: string = '';\r\n remarks: string = '';\r\n branch: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class FiveYearsDataReportArgs extends ReportArgs {\r\n year: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class TopSalesByYearsArgs extends ReportArgs {\r\n customerType: string = '';\r\n fromDate: string | null = null;\r\n toDate: string | null = null;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class TSAArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n masterBLNo: string = '';\r\n branch: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class TrialBalanceNewArgs extends ReportArgs {\r\n strDate: string | null = null;\r\n endDate: string | null = null;\r\n branch: string = '';\r\n //dataCompanyID: number = 0;\r\n useLocalLanguage: string = '';\r\n reportType: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\nexport class TransferArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n masterBLNo: string = '';\r\n branch: string = '';\r\n //sOrB: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class TelexReleaseArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class TrailerLoadArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //branch: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class TransactionISArgs extends ReportArgs {\r\n jobId: number = 0;\r\n transaction: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class TruckBLArgs extends ReportArgs {\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\n\r\nexport class USDAArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n date: string = '';\r\n faxTo: string = '';\r\n chargeTo: string = '';\r\n faxTo1: string = '';\r\n title: string = '';\r\n remark: string = '';\r\n branch: string = '';\r\n //customForm: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n \r\n\t}\r\n}\r\n\r\n\r\n//#endregion\r\n\r\n//#region #V, W, X, Y, Z\r\n\r\nexport class VolumeCommonArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n departments: string = '';\r\n fieldOptionNum: string = '';\r\n viewType: string = '';\r\n groupFieldName: string = '';\r\n selectFieldValue: string = '';\r\n periodFrom: string | null = null;\r\n periodTo: string | null = null;\r\n //sortFieldNum: number = 0;\r\n //showFieldNum: number = 0;\r\n period: string = '';\r\n branch: string = '';\r\n //customForm: boolean = false;\r\n sortFieldName: string = '';\r\n nomi: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class VatARAPArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n viewType: string = '';\r\n yearValue: string = '';\r\n periodType: string = '';\r\n periodValue: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class VesselAcctArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n vesselName: string = '';\r\n voyage: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class WhseLabelOthArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //tFontName: string = '';\r\n //customer: string = '';\r\n //formName: string = '';\r\n range: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class WarehouseReceiptArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class WhseAPArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class WhseLabelRcptArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //tFontName: string = '';\r\n //customer: string = '';\r\n //formName: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class WhseLabelShipArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //tFontName: string = '';\r\n //customer: string = '';\r\n //formName: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\nexport class WhseRcptPanpArgs extends ReportArgs {\r\n //dataCompanyID: number = 0;\r\n //branch: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class GenEmailArgs extends ReportArgs {\r\n generalMode: boolean = false;\r\n cfsType: string = '';\r\n companyEmailAddr: string = '';\r\n\r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\n\r\nexport class BatchPrintInfo {\r\n tbName: string = '';\r\n tbId: string = '';\r\n}\r\n\r\nexport class NewProfitCustomerDetailArgs extends ReportArgs {\r\n fromDate: string | null = null;\r\n toDate: string | null = null;\r\n department: string = '';\r\n shipmentType: string = '';\r\n documentFileName: string = '';\r\n headerTitle: string = '';\r\n productCode: string = '';\r\n formCaption: string = '';\r\n parameter: string = '';\r\n directPrint: boolean = false;\r\n copies: number = 0;\r\n subject: string = '';\r\n toCompanyid: string = '';\r\n memo: string = '';\r\n useDefaultPrinter: boolean = false;\r\n isExportToExcel: boolean = false;\r\n bccEmail: string = '';\r\n tbName: string = '';\r\n tbId: string = '';\r\n exportPath: string = '';\r\n silentMode: boolean = false;\r\n customForm: boolean = false;\r\n emailTemplateName: string = '';\r\n fileAttachments: string[] = [];\r\n batchPrintInfos: BatchPrintInfo[] = [];\r\n \r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class SalesCostByCustomerArgs extends ReportArgs {\r\n // 241218: jhlee - Date Range 추가로 인해 변경\r\n //date: string | null = null; \r\n \r\n fromDate: string | null = null;\r\n toDate: string | null = null;\r\n type: string = '';\r\n rType: string = '';\r\n department = {}; // <250219 - BI에서 operation을 선택하여 레포트를 뽑을 수 있도록 추가 />\r\n documentFileName: string = '';\r\n headerTitle: string = '';\r\n productCode: string = '';\r\n formCaption: string = '';\r\n parameter: string = '';\r\n directPrint: boolean = false;\r\n copies: number = 0;\r\n subject: string = '';\r\n toCompanyid: string = '';\r\n memo: string = '';\r\n useDefaultPrinter: boolean = false;\r\n isExportToExcel: boolean = false;\r\n bccEmail: string = '';\r\n tbName: string = '';\r\n tbId: string = '';\r\n exportPath: string = '';\r\n silentMode: boolean = false;\r\n customForm: boolean = false;\r\n emailTemplateName: string = '';\r\n fileAttachments: string[] = [];\r\n batchPrintInfos: BatchPrintInfo[] = [];\r\n \r\n constructor(init?:Partial) {\r\n\t\tsuper();\r\n\t\tObject.assign(this, init);\r\n\t}\r\n}\r\n\r\nexport class AmsManifestArgs extends ReportArgs {\r\n amsMasterId: number = 0;\r\n amsVoyageId: number = 0;\r\n amsMode: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\n\r\n\r\nexport class DeleteHistoryArgs extends ReportArgs {\r\n reportType: string = '';\r\n fromDate: string | null = null;\r\n toDate: string | null = null;\r\n jobName: string = '';\r\n jobIndex: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\n\r\nexport class ISFHistoryArgs extends ReportArgs {\r\n dataCompanyID: string = '';\r\n isfNo: string = '';\r\n jobId: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n Object.assign(this, init);\r\n }\r\n}\r\n//#endregion\r\n","import _ from \"lodash\";\r\nimport { DBMappingInfo } from \"../../framework.core/data/DBMappingInfo\";\r\nimport { SQLField, SQLInfo, SQLType } from \"../../framework.core/data/SQLInfo\";\r\nimport { ChangedProperty, ChangeTrackable, CollectionChangedItem, CollectionChangedProperty, ComplexChangedProperty, TrackableEntity } from \"./ChangeTrackable\";\r\nimport { stringsEqualIgnoreCase } from \"../../util\";\r\n\r\nexport interface IDictionary {\r\n [key:string]: T\r\n}\r\n\r\nexport function getSQLInfoList2(ct: ChangeTrackable | null, dicMappings: IDictionary, sqlType:SQLType = SQLType.InsertOrUpdate, pKey: SQLField|undefined = undefined): SQLInfo[] {\r\n const sqlList:SQLInfo[] = [];\r\n\r\n if(ct === null) return sqlList;\r\n let key: SQLField|undefined = undefined;\r\n let keyTable = '';\r\n let keyMappingInfo: DBMappingInfo|null = null;\r\n if(pKey) {\r\n keyMappingInfo = dicMappings[_.lowerFirst(pKey.propertyName)]; // Ensure camelCase\r\n if(keyMappingInfo) {\r\n keyTable = keyMappingInfo.dbTable;\r\n key = pKey;\r\n if(!key.fieldName) key.fieldName = keyMappingInfo.dbField;\r\n }\r\n }\r\n\r\n // Delete\r\n if(sqlType === SQLType.Delete && key != null) {\r\n keyMappingInfo = dicMappings[_.lowerFirst(key.propertyName)]; // camelCase\r\n if(keyMappingInfo) {\r\n sqlList.push(new SQLInfo({\r\n tableName: keyMappingInfo.dbTable,\r\n type: SQLType.Delete,\r\n whereFields: _.cloneDeep(keyMappingInfo.dbParams),\r\n key: key\r\n }));\r\n }\r\n } else {\r\n // Add or change\r\n /// Primitives\r\n ct.changedProps.forEach(x => {\r\n keyMappingInfo = dicMappings[_.lowerFirst(x.propertyName)]; // camelCase\r\n if(keyMappingInfo) {\r\n if(stringsEqualIgnoreCase(keyMappingInfo.dbTable, keyTable)) key = pKey;\r\n else key = undefined;\r\n\r\n if(!key || !stringsEqualIgnoreCase(x.propertyName, key.propertyName)) {\r\n let sqlInfo = sqlList.find(w => stringsEqualIgnoreCase(w.tableName, keyMappingInfo?.dbTable) && \r\n SQLFieldListEquals(w.whereFields, keyMappingInfo?.dbParams??[]) && w.key === key);\r\n if(!sqlInfo) {\r\n sqlInfo = new SQLInfo( {\r\n tableName: keyMappingInfo.dbTable,\r\n type: sqlType,\r\n whereFields: _.cloneDeep(keyMappingInfo.dbParams),\r\n key: key\r\n });\r\n sqlList.push(sqlInfo);\r\n }\r\n sqlInfo.fields.push(new SQLField({\r\n fieldName: keyMappingInfo.dbField,\r\n propertyName: _.upperFirst(x.propertyName), // PascalCase\r\n value: x.newValue\r\n }));\r\n }\r\n }\r\n });\r\n\r\n /// Complex object\r\n ct.complexChangedProps.forEach(x => { \r\n if(x.complexItem === null || !x.complexItem.keyPropertyName) return;\r\n keyMappingInfo = dicMappings[_.lowerFirst(x.complexItem.keyPropertyName)]; // camelCase\r\n if(keyMappingInfo) {\r\n sqlList.push(...getSQLInfoList2(x.complexItem.changeTrackable, \r\n dicMappings, // top Entity's dicMapping\r\n SQLType.InsertOrUpdate, \r\n new SQLField({\r\n fieldName: keyMappingInfo.dbField,\r\n propertyName: _.upperFirst(x.complexItem.keyPropertyName), // PascalCase\r\n value: x.complexItem.keyValue\r\n })\r\n ));\r\n }\r\n });\r\n\r\n /// object Collection\r\n ct.changedCollectionProps.forEach(x => {\r\n // insert\r\n x.addedItems.forEach(t => {\r\n if(!t.keyPropertyName) return;\r\n keyMappingInfo = dicMappings[_.lowerFirst(t.keyPropertyName)]; // camelCase\r\n if(keyMappingInfo) {\r\n sqlList.push(...getSQLInfoList2(t.changeTrackable, \r\n dicMappings, // top Entity's dicMapping\r\n SQLType.Insert, \r\n new SQLField({\r\n fieldName: keyMappingInfo.dbField,\r\n propertyName: _.upperFirst(t.keyPropertyName), // PascalCase\r\n value: t.keyValue\r\n })\r\n ));\r\n }\r\n });\r\n\r\n // update\r\n x.changedItems.forEach(t => {\r\n if(!t.keyPropertyName) return;\r\n keyMappingInfo = dicMappings[_.lowerFirst(t.keyPropertyName)]; // camelCase\r\n if(keyMappingInfo) {\r\n sqlList.push(...getSQLInfoList2(t.changeTrackable, \r\n dicMappings, \r\n SQLType.Update, \r\n new SQLField({\r\n fieldName: keyMappingInfo.dbField,\r\n propertyName: _.upperFirst(t.keyPropertyName), // PascalCase\r\n value: t.keyValue\r\n })\r\n ));\r\n }\r\n });\r\n\r\n // delete\r\n x.deletedItems.forEach(t => {\r\n if(!t.keyPropertyName) return;\r\n keyMappingInfo = dicMappings[_.lowerFirst(t.keyPropertyName)]; // camelCase\r\n if(keyMappingInfo) {\r\n sqlList.push(...getSQLInfoList2(t.changeTrackable, dicMappings, SQLType.Delete, new SQLField({\r\n fieldName: keyMappingInfo.dbField,\r\n propertyName: _.upperFirst(t.keyPropertyName), // PascalCase\r\n value: t.keyValue\r\n })));\r\n }\r\n });\r\n });\r\n }\r\n return sqlList;\r\n}\r\n\r\n/**\r\n * @param te \r\n */\r\nexport function getSQLInfoList(te:T): SQLInfo[] {\r\n let sqlType: SQLType|undefined = undefined;\r\n let keyField: SQLField|undefined = undefined;\r\n\r\n if(te.key) {\r\n let hasKey = false;\r\n let keyVal = (te as any)[te.key];\r\n if(typeof keyVal === 'number') hasKey = keyVal > 0;\r\n else {\r\n // key type is not number (In this case, key must not included in noTrackProps array)\r\n const cp = te.changedProps.find(x => x.propertyName === te.key);\r\n hasKey = cp ? false : true;\r\n }\r\n\r\n sqlType = hasKey ? SQLType.Update : SQLType.Insert;\r\n keyField = hasKey ? getSQLInfoKey(keyVal, te.key) : undefined;\r\n } else {\r\n sqlType = SQLType.InsertOrUpdate;\r\n }\r\n\r\n // Make new ChangeTrackable to manuplate\r\n const changeTrackable = getChangeTrackable(te, sqlType);\r\n let dicMappings = te.getDbMappings();\r\n return getSQLInfoList2(changeTrackable, dicMappings, sqlType, keyField);\r\n}\r\n\r\nfunction SQLFieldListEquals(list1: SQLField[], list2: SQLField[]): boolean {\r\n return _.isEqual(list1, list2);\r\n}\r\n\r\nfunction getSQLInfoKey(keyValue: any, keyPropertyName: string = \"id\") {\r\n return new SQLField({\r\n propertyName: _.upperFirst(keyPropertyName), // PascalCase\r\n value: keyValue\r\n });\r\n}\r\n\r\n/**\r\n * Make a ChangeTrackable object from trackableEntity to generate SQLInfo list\r\n * @param trackableObj \r\n * @param sqlType \r\n * @param parentName \r\n */\r\nexport function getChangeTrackable(trackableObj: ChangeTrackable | null, sqlType: SQLType = SQLType.Update, parentName: string = ''): ChangeTrackable | null {\r\n if(trackableObj == null) return null;\r\n const ct:ChangeTrackable = { \r\n key: trackableObj.key,\r\n changedProps: [],\r\n complexChangedProps: [],\r\n changedCollectionProps: [],\r\n isDirty: trackableObj.isDirty,\r\n trackable: trackableObj.trackable,\r\n noTrackProps: trackableObj.noTrackProps,\r\n //\r\n //acceptChanges: trackableObj.acceptChanges,\r\n //rejectChanges: trackableObj.rejectChanges\r\n };\r\n\r\n if(sqlType === SQLType.Insert) {\r\n // Apply all props in dicFieldMappins to changedProps, complexChangedProps, changedCollectionProps\r\n checkPropertyChangesOfAddedItem(trackableObj, parentName);\r\n }\r\n\r\n // Adjust property name path, getdate\r\n trackableObj.changedCollectionProps?.forEach(x => {\r\n let collPropName = `${parentName ? parentName + '.' : ''}${x.collectionName}`;\r\n const ccProp = { \r\n collectionName: x.collectionName,\r\n addedItems: [],\r\n changedItems: [],\r\n deletedItems: []\r\n } as CollectionChangedProperty;\r\n ct.changedCollectionProps.push(ccProp);\r\n\r\n // Added\r\n x.addedItems.forEach(o => {\r\n if(!o.keyPropertyName) return;\r\n let oc = _.cloneDeep(o);\r\n oc.keyPropertyName = `${collPropName}.${o.keyPropertyName}`;\r\n \r\n // Make changeProps for addItem\r\n checkPropertyChangesOfAddedItem(o.changeTrackable as ChangeTrackable, collPropName);\r\n oc.changeTrackable = getChangeTrackable(o.changeTrackable, sqlType, collPropName);\r\n ccProp.addedItems.push(oc);\r\n });\r\n\r\n // Changed\r\n x.changedItems.forEach(o => {\r\n if(!o.keyPropertyName) return;\r\n let oc = _.cloneDeep(o);\r\n oc.keyPropertyName = `${collPropName}.${o.keyPropertyName}`;\r\n oc.changeTrackable = getChangeTrackable(o.changeTrackable, sqlType, collPropName);\r\n ccProp.changedItems.push(oc);\r\n });\r\n\r\n // Deleted\r\n x.deletedItems.forEach(o => {\r\n let oc = _.cloneDeep(o);\r\n oc.keyPropertyName = `${collPropName}.${o.keyPropertyName}`;\r\n oc.changeTrackable = getChangeTrackable(o.changeTrackable, sqlType, collPropName);\r\n ccProp.deletedItems.push(oc);\r\n });\r\n\r\n });\r\n\r\n trackableObj.complexChangedProps?.forEach(x => {\r\n let propName = `${parentName ? parentName + '.' : ''}${x.complexName}`;\r\n const ccProp: ComplexChangedProperty = {\r\n complexName: propName,\r\n complexItem: null\r\n };\r\n\r\n const cci = { \r\n keyPropertyName: undefined, \r\n keyValue: undefined, \r\n changeTrackable: null \r\n } as CollectionChangedItem;\r\n \r\n if(x.complexItem === null) return;\r\n cci.changeTrackable = getChangeTrackable(x.complexItem.changeTrackable, sqlType, propName);\r\n if(!x.complexItem.keyPropertyName && cci.changeTrackable !== null) {\r\n // With no key defined, add to parent changedProps/changedCollectionProps\r\n if(cci.changeTrackable.changedProps.length > 0)\r\n ct.changedProps.push(...cci.changeTrackable.changedProps);\r\n if(cci.changeTrackable.changedCollectionProps.length > 0)\r\n ct.changedCollectionProps.push(...cci.changeTrackable.changedCollectionProps);\r\n } else {\r\n cci.keyPropertyName = `${propName}.${x.complexItem.keyPropertyName}`;\r\n cci.keyValue = x.complexItem.keyValue;\r\n ccProp.complexItem = cci;\r\n ct.complexChangedProps.push(ccProp);\r\n }\r\n });\r\n\r\n trackableObj.changedProps?.forEach(x => {\r\n let propPath = `${parentName ? parentName + '.' : ''}${x.propertyName}`;\r\n // const cp = { propertyName: propName, oldValue: x.oldValue, newValue: x.newValue} as ChangedProperty;\r\n // if((trackableObj as TrackableEntity).getdateProps.indexOf(x.propertyName) >= 0)\r\n // cp.newValue = \"GetDate()\";\r\n \r\n // ct.changedProps.push(cp);\r\n ct.changedProps.push(createChangedProperty(trackableObj, propPath, x.oldValue, x.newValue));\r\n });\r\n return ct;\r\n}\r\n\r\nfunction createChangedProperty(trackableObj: ChangeTrackable, propPath:string, oldValue?:any, newValue?:any):ChangedProperty {\r\n const lastdot = propPath.lastIndexOf('.');\r\n let propName = //`${parentName ? parentName + '.' : ''}${propertyName}`;\r\n //propertyName;\r\n lastdot < 0 ? propPath : propPath.substring(lastdot + 1);\r\n \r\n // if(propertyName === 'crDbDetail.revenue') {\r\n // debugger;\r\n // }\r\n const cp = { \r\n propertyName: propPath, // propName, \r\n oldValue: oldValue || getOriginalValue(trackableObj as TrackableEntity, propName), \r\n newValue: newValue || trackableObj[propName] // caution: 0 || undefined -> undefined, undefined || 0 -> 0\r\n } as ChangedProperty;\r\n\r\n if((trackableObj as TrackableEntity).getdateProps.indexOf(propName) >= 0) {\r\n cp.newValue = \"GetDate()\";\r\n } else {\r\n // keep null, but undefined to ''\r\n if(cp.oldValue === undefined) cp.oldValue = '';\r\n if(cp.newValue === undefined) cp.newValue = '';\r\n }\r\n return cp;\r\n}\r\n\r\n/**\r\n * Called only for addItem in changedCollectionProps\r\n * @param ctObj \r\n * @returns \r\n */\r\nfunction checkPropertyChangesOfAddedItem(ctObj: ChangeTrackable, parentName:string) {\r\n if(ctObj === null) return; // Nothing to do\r\n //const newObj = _.omitBy(_.omit(ctObj, ctObj.noTrackProps??[]), _.isFunction);\r\n const dicMap = (ctObj as TrackableEntity).getDbMappings(parentName);\r\n const propSet = new Set();\r\n // Treat dotted key as one parent key name\r\n _.keys(dicMap).forEach(k => {\r\n if(k === ctObj.key) return;\r\n const dotIndex = k.indexOf('.');\r\n propSet.add(dotIndex > 0 ? k.substring(0, dotIndex) : k);\r\n });\r\n\r\n //_.forOwn(newObj, function(val, key) {\r\n propSet.forEach(value => {\r\n const key = value as string;\r\n const val = ctObj[key]\r\n\r\n if(Array.isArray(val)) {\r\n // Collection\r\n if(val.length <= 0) return;\r\n if(ctObj.changedCollectionProps.find(ccp => ccp.collectionName === key)) return;\r\n\r\n // ApHd.changedCollectonProps\r\n const ccProps:CollectionChangedProperty = {\r\n collectionName: key,\r\n addedItems: [],\r\n changedItems:[],\r\n deletedItems:[]\r\n };\r\n ctObj.changedCollectionProps.push(ccProps);\r\n\r\n // ApHd.billDateil.forEach\r\n val.forEach(x => {\r\n ccProps.addedItems.push({\r\n keyPropertyName: `${key}.${x[key]}`, // billDetail.id\r\n keyValue: x[x[key]], // x[id]\r\n changeTrackable: x // apDetail\r\n }); \r\n });\r\n\r\n ccProps.addedItems.forEach(x => {\r\n // Recursive call\r\n if(x.changeTrackable !== null) {\r\n checkPropertyChangesOfAddedItem(x.changeTrackable, key);\r\n }\r\n });\r\n }\r\n else if(val !== null && typeof val === 'object') {\r\n // Complex props\r\n checkPropertyChangesOfAddedItem(val, key);\r\n } else {\r\n // simple props\r\n //const keyPath = parentName ? `${parentName}.${key}` : key;\r\n if(!ctObj.changedProps.find(x => x.propertyName === key)) {\r\n ctObj.changedProps.push({\r\n propertyName: key, //keyPath,\r\n oldValue: typeof val === 'number' ? 0 : '',\r\n newValue: val\r\n });\r\n }\r\n }\r\n });\r\n}\r\n\r\n// function getInitialValue(val: any): any {\r\n// switch(typeof val) {\r\n// case 'number': return 0;\r\n// case 'string': return '';\r\n// default: return null;\r\n// }\r\n// }\r\n\r\nexport function checkPropDirty(trackableObj:TrackableEntity, propName:string):boolean {\r\n return trackableObj.changedProps.findIndex(x => x.propertyName === propName) >= 0;\r\n}\r\n\r\nexport function getOriginalValue(trackableObj:TrackableEntity, propName:string):any {\r\n const index = trackableObj.changedProps.findIndex(x => x.propertyName === propName);\r\n if(index >= 0)\r\n return trackableObj.changedProps[index].oldValue;\r\n else\r\n return (trackableObj as IDictionary)[propName];\r\n}","import React from 'react';\r\n\r\nimport TextBox from '../../ui/TextBox';\r\nimport DateTime from '../../ui/DateTime';\r\n\r\nimport CheckBox from '../../ui/CheckBox';\r\n\r\nfunction BlStatusRowImpl({\r\n label,\r\n disabled,\r\n checked,\r\n onToggle,\r\n dateTime = null,\r\n onDateTimeChange = () => {},\r\n userId = '',\r\n onTabNext,\r\n noStatus = false,\r\n labelColor = '',\r\n name=undefined,\r\n showDatePlaceHolder = true,\r\n}: {\r\n label: string,\r\n disabled: boolean,\r\n checked: boolean,\r\n onToggle: (checked: boolean) => void,\r\n dateTime?: string | null,\r\n onDateTimeChange?: (dt: string|null) => void,\r\n userId?: string,\r\n onTabNext?: (() => boolean) | undefined,\r\n noStatus?: boolean,\r\n name?: string|undefined,\r\n labelColor?:string,\r\n showDatePlaceHolder?: boolean\r\n}) {\r\n function onCheckTabNext(): boolean {\r\n if (checked || !onTabNext) {\r\n // If it is checked, date/time component is enabled so let the default tab flow handle it\r\n return false;\r\n }\r\n\r\n onTabNext();\r\n return true;\r\n }\r\n\r\n function renderStatus() {\r\n if (noStatus) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n );\r\n }\r\n\r\n // with internal padding between check mark and label (9px) => 21 + 9 = 30px\r\n const renderedCheckbox = \r\n // const renderedCheckbox = \r\n\r\n return (\r\n
\r\n
\r\n {renderedCheckbox}\r\n
\r\n
\r\n {renderStatus()}\r\n
\r\n
\r\n );\r\n}\r\n\r\nconst BlStatusRow = React.memo(BlStatusRowImpl);\r\n\r\nexport default BlStatusRow;\r\n","import { History } from 'history';\r\n\r\nimport { getDefaultPageSize } from '../globals';\r\nimport { ListFilterType } from '../fms.core/constants';\r\n\r\nexport const FilterStorageVersion = 1;\r\n\r\nexport interface SearchExtra {\r\n general: string|null,\r\n date: string|null,\r\n number: string|null,\r\n generalText: string|null,\r\n dateFrom: string|null,\r\n dateTo: string|null,\r\n numberFrom: number|null,\r\n numberTo: number|null,\r\n};\r\n\r\nexport interface Search {\r\n general1: string|null,\r\n general2: string|null,\r\n general3: string|null,\r\n date: string|null,\r\n date1: string|null,\r\n date2: string|null,\r\n location1: string|null,\r\n location2: string|null,\r\n location3: string|null,\r\n number: string|null,\r\n number1: string|null,\r\n number2: string|null,\r\n generalText1: string|null,\r\n generalText2: string|null,\r\n generalText3: string|null,\r\n generalNullOrEmpty: boolean,\r\n dateFrom: string|null,\r\n dateTo: string|null,\r\n dateFrom1: string|null,\r\n dateTo1: string|null,\r\n dateFrom2: string|null,\r\n dateTo2: string|null,\r\n dateNullOrEmpty: boolean,\r\n location1Text: string|null,\r\n location2Text: string|null,\r\n location3Text: string|null,\r\n numberFrom: number|null,\r\n numberTo: number|null,\r\n numberFrom1: number|null,\r\n numberTo1: number|null,\r\n numberFrom2: number|null,\r\n numberTo2: number|null,\r\n numberNullOrEmpty: boolean,\r\n pageSize: number,\r\n orderBy: string|null,\r\n orderByAscending: boolean,\r\n extras: Array,\r\n version: number,\r\n listType: ListFilterType,\r\n isSearchByReport: boolean,\r\n isExpressSearch: boolean,\r\n extraWhere: string,\r\n};\r\n\r\nexport const initialSearch:Search = {\r\n general1: '',\r\n general2: '',\r\n general3: '',\r\n date: '',\r\n date1: '',\r\n date2: '',\r\n location1: '',\r\n location2: '',\r\n location3: '',\r\n number: '',\r\n number1: '',\r\n number2: '',\r\n generalText1: '',\r\n generalText2: '',\r\n generalText3: '',\r\n generalNullOrEmpty: false,\r\n dateFrom: null,\r\n dateTo: null,\r\n dateFrom1: null,\r\n dateTo1: null,\r\n dateFrom2: null,\r\n dateTo2: null,\r\n location1Text: '',\r\n location2Text: '',\r\n location3Text: '',\r\n numberFrom: null,\r\n numberTo: null,\r\n numberFrom1: null,\r\n numberTo1: null,\r\n numberFrom2: null,\r\n numberTo2: null,\r\n numberNullOrEmpty: false,\r\n pageSize: getDefaultPageSize(),\r\n orderBy: null,\r\n orderByAscending: false,\r\n extras: [],\r\n version: 1,\r\n dateNullOrEmpty: false,\r\n listType: 0,\r\n isSearchByReport: false,\r\n isExpressSearch: false,\r\n extraWhere: '',\r\n};\r\n\r\nfunction hasValue(x:any) {\r\n if (x === null || x === undefined) {\r\n return false;\r\n }\r\n\r\n if (typeof x !== 'number') {\r\n return !!x;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction hasExtras(e:Array) {\r\n if (!e || e.length <= 0) {\r\n return false;\r\n }\r\n\r\n return e.some(x =>\r\n (hasValue(x.general)/* && hasValue(x.generalText)*/) ||\r\n (hasValue(x.date)/* && (hasValue(x.dateFrom) || hasValue(x.dateTo))*/) ||\r\n (hasValue(x.number)/* && (hasValue(x.numberFrom) || hasValue(x.numberTo))*/)\r\n );\r\n}\r\n\r\nexport function isFilterObjectEmpty(filter:Search|null) {\r\n if (!filter) {\r\n return true;\r\n }\r\n\r\n return !(\r\n (hasValue(filter.generalNullOrEmpty)) ||\r\n (hasValue(filter.dateNullOrEmpty)) ||\r\n (hasValue(filter.numberNullOrEmpty)) ||\r\n (hasValue(filter.general1)/* && hasValue(filter.generalText1)*/) ||\r\n (hasValue(filter.general2)/* && hasValue(filter.generalText2)*/) ||\r\n (hasValue(filter.general3)/* && hasValue(filter.generalText3)*/) ||\r\n (hasValue(filter.date)/* && (hasValue(filter.dateFrom) || hasValue(filter.dateTo))*/) ||\r\n (hasValue(filter.date1)/* && (hasValue(filter.dateFrom1) || hasValue(filter.dateTo1))*/) ||\r\n (hasValue(filter.date2)/* && (hasValue(filter.dateFrom2) || hasValue(filter.dateTo2))*/) ||\r\n (hasValue(filter.number)/* && (hasValue(filter.numberFrom) || hasValue(filter.numberTo))*/) ||\r\n (hasValue(filter.number1)/* && (hasValue(filter.numberFrom1) || hasValue(filter.numberTo1))*/) ||\r\n (hasValue(filter.number2)/* && (hasValue(filter.numberFrom2) || hasValue(filter.numberTo2))*/) ||\r\n (hasValue(filter.location1)/* && hasValue(filter.location1Text)*/) ||\r\n (hasValue(filter.location2)/* && hasValue(filter.location2Text)*/) ||\r\n (hasValue(filter.location3)/* && hasValue(filter.location3Text)*/) ||\r\n (hasExtras(filter.extras)) ||\r\n (hasValue(filter.extraWhere))\r\n );\r\n}\r\n\r\nexport function getInitialSearch(history:History, currentUser:string|null) {\r\n const result = initialSearch;\r\n\r\n //const locationState = history.location?.state as any;\r\n // if (history && locationState?.metadata?.filterMyOnly === true) {\r\n // result.general2 = 'updatedBy';\r\n // result.generalText2 = currentUser;\r\n // }\r\n\r\n return result;\r\n}\r\n","import './select.css';\r\n\r\nimport _ from 'lodash';\r\nimport { Portal } from 'react-portal';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport postal from 'postal';\r\nimport { usePopper } from 'react-popper';\r\n\r\nimport { faAngleDown } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nimport { stringsStartsWithIgnoreCase } from '../util';\r\nimport useDeepCompareEffect from '../hooks/useDeepCompareEffect';\r\nimport { focusNextTabable } from '../util/inputUtils';\r\n\r\nexport interface SelectItem {\r\n value: string|number,\r\n label: string,\r\n activeLabel?: string|undefined,\r\n icon?: any\r\n}\r\n\r\nfunction Select({\r\n selectId = undefined,\r\n value,\r\n onChange = () => {},\r\n disabled = false,\r\n items = [],\r\n selectWidth = undefined,\r\n hideCaretWhenDisabled = false,\r\n dark = false,\r\n blankWhenDisabled = false,\r\n alignCenter = false,\r\n onEnterSameValue,\r\n onTabNext = undefined,\r\n onTabPrevious = undefined,\r\n placeholder = undefined,\r\n hideCaret = false,\r\n maxLength = undefined,\r\n rollBackPrevValue = true,\r\n applySearchWithEnter = undefined,\r\n name=undefined,\r\n notFocusNextEleWhenSelectItem = false,\r\n roundborder = false,\r\n focusable = true,\r\n forExSerach = false,\r\n useBlank = false,\r\n}: {\r\n selectId?: string|undefined,\r\n value: string|number,\r\n onChange: (e:React.ChangeEvent) => void,\r\n disabled?: boolean,\r\n items?: Array,\r\n selectWidth?: string|undefined,\r\n hideCaretWhenDisabled?: boolean,\r\n dark?: boolean,\r\n blankWhenDisabled?: boolean,\r\n alignCenter?: boolean,\r\n onEnterSameValue?: VoidFunction,\r\n onTabNext?: (() => boolean)|undefined,\r\n onTabPrevious?: (() => boolean)|undefined,\r\n placeholder?: string|undefined,\r\n hideCaret?: boolean,\r\n maxLength?: number|undefined,\r\n rollBackPrevValue?: boolean,\r\n applySearchWithEnter?: (() => void)|undefined,\r\n name?:string|undefined,\r\n notFocusNextEleWhenSelectItem?: boolean, //oeh > po list > c.origin 데이터를 선택한 경우엔 Focus가 유지돼야함\r\n roundborder?: boolean, \r\n focusable?: boolean,\r\n forExSerach?: boolean,\r\n useBlank? : boolean,\r\n}) {\r\n // const dark = false;\r\n // const blankWhenDisabled = false;\r\n const channel = postal.channel('ifms');\r\n\r\n const autocompleteOffGuard = _.uniqueId('autocomplete-off-');\r\n\r\n const itemsRef = useRef(items);\r\n\r\n const containerIdRef = useRef(_.uniqueId('ifms-select-container-'));\r\n const selectInputIdRef = useRef(selectId || _.uniqueId('ifms-select-'));\r\n let openSelectSubscription: ISubscriptionDefinition | null = null;\r\n\r\n function subscribeChannels() {\r\n openSelectSubscription = postal.subscribe({\r\n channel: 'ifms',\r\n topic: 'ifms.select-open',\r\n callback: (data) => openWithoutFilter(data.targetId)\r\n });\r\n }\r\n\r\n function unsubscribeChannels() {\r\n if (openSelectSubscription) {\r\n postal.unsubscribe(openSelectSubscription);\r\n }\r\n }\r\n\r\n const [, _setSelectedItem] = useState(\r\n (value !== undefined && value !== null)\r\n ? items.findIndex(x => x.value === value)\r\n : -1\r\n );\r\n const selectedItemRef = useRef(\r\n (value !== undefined && value !== null)\r\n ? items.findIndex(x => x.value === value)\r\n : -1\r\n );\r\n\r\n function setSelectedItem(index:number) {\r\n scrollIntoView(index);\r\n selectedItemRef.current = index;\r\n _setSelectedItem(index);\r\n }\r\n\r\n const [open, _setOpen] = useState(false);\r\n const openRef = useRef(false);\r\n\r\n const [filteredItems, _setFilteredItems] = useState>([...items]);\r\n const [stringValue, _setStringValue] = useState('');\r\n const stringValueRef = useRef('');\r\n const skipStringValueCheckRef = useRef(false);\r\n\r\n const lastSelectValueRef = useRef(value);\r\n const fieldClickRef = useRef(false);\r\n const listItemSelectRef = useRef(false);\r\n\r\n const filteredItemsRef = useRef>([...items]);\r\n\r\n function setFilteredItems(fi: Array) {\r\n filteredItemsRef.current = fi;\r\n _setFilteredItems(fi);\r\n }\r\n\r\n const selectMenuContainerRef = useRef(null);\r\n\r\n const [referenceElement, _setReferenceElement] = useState(null);\r\n const [popperElement, _setPopperElement] = useState(null);\r\n const [, _setArrowElement] = useState(null);\r\n\r\n const { styles, attributes } = usePopper(referenceElement, popperElement, {\r\n placement: 'bottom-start',\r\n strategy: 'fixed'\r\n });\r\n\r\n const popperRef = useRef(null);\r\n const referenceRef = useRef(null);\r\n const arrowElementRef = useRef(null);\r\n\r\n useEffect(() => {\r\n subscribeChannels();\r\n document.addEventListener('click', handleClickOutside, true);\r\n return () => {\r\n unsubscribeChannels();\r\n document.removeEventListener('click', handleClickOutside, true);\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [filteredItemsRef.current]\r\n );\r\n\r\n useEffect(() => {\r\n if (open) {\r\n scrollIntoView(selectedItemRef.current);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [open]\r\n );\r\n\r\n useEffect(() => {\r\n const item = items.find(x => x.value === value);\r\n if (item) {\r\n const sv = _.toString(item.label);\r\n if (sv !== stringValue && !open) {\r\n setStringValue(sv);\r\n }\r\n }else if(useBlank){\r\n setStringValue('');\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [value, items]\r\n );\r\n\r\n useDeepCompareEffect(() => {\r\n itemsRef.current = items;\r\n\r\n if (skipStringValueCheckRef.current) {\r\n skipStringValueCheckRef.current = false;\r\n return;\r\n }\r\n const fi = stringValue\r\n ? items.filter(x => {\r\n // if (typeof x.value === 'number') {\r\n // return x.value === parseInt(stringValue);\r\n // }\r\n\r\n // return stringsStartsWithIgnoreCase(x.value as string, stringValue as string);\r\n return stringsStartsWithIgnoreCase(x.label, stringValue as string);\r\n })\r\n : [...items];\r\n\r\n setFilteredItems(fi);\r\n setSelectedItem(fi.length > 0 ? 0 : -1);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [stringValue, items]\r\n );\r\n\r\n function setStringValue(s:string) {\r\n stringValueRef.current = s;\r\n _setStringValue(s);\r\n\r\n const dataEntry = document.getElementById('ifms-filter-entry-container');\r\n if(dataEntry && !disabled)selectAllValue();\r\n }\r\n\r\n //Select all search value when the search pop-up is first opened\r\n function selectAllValue() {\r\n setTimeout(() => {\r\n if (referenceRef.current && items.find(x => x.label === referenceRef.current?.value) && !open && !listItemSelectRef.current && !fieldClickRef.current) {\r\n referenceRef.current?.select();\r\n }\r\n }, 30);\r\n }\r\n\r\n function isScrolledIntoView(container:HTMLElement, row:HTMLElement) {\r\n const trect = container.getBoundingClientRect();\r\n const rect = row.getBoundingClientRect();\r\n\r\n const viewStart = trect.top;\r\n const viewEnd = trect.top + trect.height;\r\n\r\n return rect.top >= viewStart && (rect.top + rect.height) <= viewEnd;\r\n }\r\n\r\n function scrollIntoView(index:number) {\r\n const container = document.getElementById(containerIdRef.current);\r\n const row = document.getElementById((name?`${name}-box-item-${index}`:`${containerIdRef.current}-item-${index}`));\r\n \r\n if (!row || !container) {\r\n return;\r\n }\r\n \r\n if (index < 0) {\r\n container.scrollTo({\r\n top: 0,\r\n left: 0,\r\n behavior: 'smooth'\r\n });\r\n return;\r\n }\r\n\r\n if (isScrolledIntoView(container, row)) {\r\n return;\r\n }\r\n\r\n const newPos = row.offsetTop;\r\n\r\n container.scrollTo({\r\n top: newPos >= 0 ? newPos : 0,\r\n left: 0,\r\n behavior: 'smooth'\r\n });\r\n }\r\n\r\n function setReferenceElement(e:HTMLInputElement|null) {\r\n referenceRef.current = e;\r\n _setReferenceElement(e);\r\n }\r\n\r\n function setPopperElement(e:HTMLDivElement|null) {\r\n popperRef.current = e;\r\n _setPopperElement(e);\r\n }\r\n\r\n function setArrowElement(e:HTMLDivElement|null) {\r\n arrowElementRef.current = e;\r\n _setArrowElement(e);\r\n }\r\n\r\n function openWithoutFilter(targetId?: string) {\r\n if (targetId && referenceRef.current?.id !== targetId) return;\r\n\r\n setOpen(!openRef.current);\r\n\r\n if (openRef.current) {\r\n // Show full list without filters\r\n let newSelectedItem = selectedItemRef.current;\r\n if (newSelectedItem >= 0) {\r\n const newFilteredItemValue = filteredItems[newSelectedItem].value;\r\n newSelectedItem = items.findIndex(x => x.value === newFilteredItemValue);\r\n }\r\n setFilteredItems([...items]);\r\n setSelectedItem(newSelectedItem);\r\n }\r\n\r\n if (referenceElement) {\r\n referenceElement.focus();\r\n }\r\n }\r\n\r\n function setOpen(v: boolean) {\r\n if (!referenceRef.current) return;\r\n\r\n openRef.current = disabled ? false : v;\r\n _setOpen(disabled ? false : v);\r\n }\r\n\r\n function processBlur() {\r\n if (selectedItemRef.current >= 0 && selectedItemRef.current < itemsRef.current.length) {\r\n if (referenceRef.current?.value) {\r\n const findItem = itemsRef.current.find(x => x.label === referenceRef.current?.value);\r\n if (findItem) {\r\n onListItemSelected(findItem);\r\n return;\r\n }\r\n }\r\n const lastSelectIndex = itemsRef.current.findIndex(x => x.value === lastSelectValueRef.current);\r\n setStringValue(_.toString(itemsRef.current[lastSelectIndex]?.label ?? ''));\r\n setOpen(false);\r\n }\r\n else {\r\n if (rollBackPrevValue) {\r\n const lastSelectIndex = itemsRef.current.findIndex(x => x.value === lastSelectValueRef.current);\r\n setStringValue(_.toString(itemsRef.current[lastSelectIndex]?.label ?? ''));\r\n }\r\n else {\r\n skipStringValueCheckRef.current = true;\r\n setStringValue('');\r\n }\r\n setOpen(false);\r\n }\r\n }\r\n\r\n function handleClickOutside(e:MouseEvent) {\r\n\r\n if (!popperRef || !referenceRef || !popperRef.current || !referenceRef.current || !arrowElementRef.current) {\r\n return;\r\n }\r\n\r\n const target = e.target as Element;\r\n\r\n if (!popperRef.current.contains(target) && !referenceRef.current.contains(target) && !arrowElementRef.current.contains(target)) {\r\n processBlur();\r\n }\r\n }\r\n\r\n // function blurInput() {\r\n // if (referenceElement) {\r\n // referenceElement.blur();\r\n // }\r\n // }\r\n\r\n function notifyEmptyValue() {\r\n onChange({\r\n target: {\r\n value: '',\r\n }\r\n } as React.ChangeEvent);\r\n setStringValue('');\r\n }\r\n\r\n function isEditTableCell(element: Element): boolean {\r\n const divElements = document.querySelectorAll('div[id$=\"-editabletable\"]');\r\n return Array.from(divElements).some(div => div.contains(element));\r\n }\r\n\r\n function onListItemSelected(item:SelectItem) {\r\n listItemSelectRef.current = true;\r\n const index = (item.value !== undefined && item.value !== null)\r\n ? filteredItemsRef.current.findIndex(x => x.value === item.value)\r\n : -1;\r\n \r\n setSelectedItem(index);\r\n\r\n if (item) {\r\n // if (item.value !== lastSelectValueRef.current) {\r\n if (item.value !== value) {\r\n onChange({\r\n target: {\r\n value: item.value,\r\n }\r\n } as React.ChangeEvent);\r\n } else {\r\n if (onEnterSameValue) {\r\n onEnterSameValue();\r\n }\r\n setStringValue(_.toString(item.label));\r\n }\r\n }\r\n\r\n // setTimeout(() => {\r\n // if (referenceElement) {\r\n // referenceElement.focus();\r\n // }\r\n // }, 10);\r\n lastSelectValueRef.current = _.toString(item.value)\r\n\r\n //focus next tabable field after select\r\n setTimeout(() => {\r\n if (isEditTableCell(referenceRef.current as HTMLInputElement)) {\r\n channel.publish('ifms.editable-table-onEnter', { backFocus: false, changeFocus: true, element: referenceRef.current });\r\n }\r\n else if (!notFocusNextEleWhenSelectItem && !applySearchWithEnter) {\r\n if (referenceRef.current)\r\n focusNextTabable(referenceRef.current)\r\n }\r\n }, 10)\r\n\r\n setOpen(false);\r\n }\r\n\r\n function clearSelection() {\r\n setSelectedItem(0);\r\n }\r\n\r\n // function handleInputClick(e:React.MouseEvent) {\r\n // if (!openRef.current) {\r\n // // Show full list without filters\r\n // let newSelectedItem = selectedItemRef.current;\r\n // if (newSelectedItem >= 0) {\r\n // const newFilteredItemValue = filteredItems[newSelectedItem].value;\r\n // newSelectedItem = items.findIndex(x => x.value === newFilteredItemValue);\r\n // }\r\n // setFilteredItems([...items]);\r\n // setSelectedItem(newSelectedItem);\r\n\r\n // setOpen(true);\r\n // e.stopPropagation();\r\n // e.preventDefault();\r\n // }\r\n // }\r\n\r\n function processSpecialKeys(e:React.KeyboardEvent) {\r\n if (!e || !e.keyCode) {\r\n return;\r\n }\r\n\r\n switch(e.keyCode) {\r\n case 40: // Arrow down\r\n if (!openRef.current) {\r\n setFilteredItems([...items]);\r\n setOpen(true);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n else {\r\n if (selectedItemRef.current < filteredItems.length - 1) {\r\n skipStringValueCheckRef.current = true;\r\n setStringValue(filteredItems[selectedItemRef.current + 1].label);\r\n setSelectedItem(selectedItemRef.current + 1);\r\n }\r\n }\r\n break;\r\n case 38: // Arrow up\r\n if (selectedItemRef.current > 0) {\r\n skipStringValueCheckRef.current = true;\r\n setStringValue(filteredItems[selectedItemRef.current - 1].label);\r\n setSelectedItem(selectedItemRef.current - 1);\r\n }\r\n break;\r\n case 8: // Backspace\r\n clearSelection()\r\n break;\r\n case 9: // Tab\r\n if (openRef.current) {\r\n if (!!stringValue && selectedItemRef.current >= 0 && selectedItemRef.current < filteredItems.length) {\r\n onListItemSelected(filteredItems[selectedItemRef.current]);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n } else {\r\n if (rollBackPrevValue) {\r\n const lastSelectIndex = items.findIndex(x => x.value === lastSelectValueRef.current);\r\n setStringValue(_.toString(itemsRef.current[lastSelectIndex]?.label ?? ''));\r\n setOpen(false);\r\n }\r\n else {\r\n notifyEmptyValue();\r\n setOpen(false);\r\n }\r\n if (isEditTableCell(referenceRef.current as HTMLInputElement)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setTimeout(() => {\r\n channel.publish('ifms.editable-table-onEnter', { backFocus: false, changeFocus: true, element: referenceRef.current });\r\n }, 10)\r\n }\r\n }\r\n //blurInput();\r\n }\r\n // if (onTabNext && !e.shiftKey) {\r\n // const tabProcessed = onTabNext();\r\n // if (tabProcessed) {\r\n // e.preventDefault();\r\n // e.stopPropagation();\r\n // return;\r\n // }\r\n // }\r\n if (e.shiftKey) {\r\n if (onTabPrevious) {\r\n const tabProcessed = onTabPrevious();\r\n if (tabProcessed) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return;\r\n }\r\n }\r\n } else {\r\n if (onTabNext) {\r\n const tabProcessed = onTabNext();\r\n if (tabProcessed) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return;\r\n }\r\n }\r\n }\r\n break;\r\n case 13: // Enter\r\n if (!openRef.current) {\r\n setFilteredItems([...items]);\r\n setOpen(true);\r\n const itemWithStringLabel = items.find(x => x.label === stringValueRef.current);\r\n const alreadySelected = itemWithStringLabel && itemWithStringLabel.value === value && (itemWithStringLabel.label !== '' || applySearchWithEnter);\r\n if (!alreadySelected) {\r\n \r\n }\r\n else {\r\n if (applySearchWithEnter)\r\n applySearchWithEnter();\r\n }\r\n e.stopPropagation();\r\n e.preventDefault();\r\n } else {\r\n if (selectedItemRef.current >= 0 && selectedItemRef.current < filteredItems.length) {\r\n onListItemSelected(filteredItems[selectedItemRef.current]);\r\n } else {\r\n notifyEmptyValue();\r\n }\r\n setOpen(false);\r\n\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n break;\r\n default:\r\n }\r\n }\r\n\r\n const hasSelectedValue = items.some(x => x.value === value);\r\n const selectedBaseClass = hasSelectedValue ? 'ifms-select-with-value' : '';\r\n\r\n const baseClass = ((hideCaretWhenDisabled && disabled) || hideCaret) ? `ifms-select-no-caret ${selectedBaseClass}` : `ifms-select ${selectedBaseClass}`;\r\n\r\n // let cssClass = dark ? `${baseClass} e-ifms-input-dark e-outline ifms-tabable` : `${baseClass} e-ifms-input e-outline ifms-tabable`;\r\n let cssClass = \"\";\r\n if (blankWhenDisabled) cssClass = dark ? `${baseClass} e-ifms-input-dark-blank e-outline ifms-tabable` : `${baseClass} e-ifms-input-blank e-outline ifms-tabable`;\r\n else cssClass = dark ? `${baseClass} e-ifms-input-dark e-outline ifms-tabable` : `${baseClass} e-ifms-input e-outline ifms-tabable`;\r\n\r\n if (focusable && !disabled) {\r\n cssClass = `${cssClass} ifms-tabable-active`;\r\n }\r\n\r\n const inputRect = referenceElement ? referenceElement.getBoundingClientRect() : null;\r\n\r\n let minWidth = `${inputRect ? inputRect.width : 100}px`;\r\n if (!!selectWidth) {\r\n minWidth = selectWidth;\r\n }\r\n\r\n const appliedPopperStyles = {\r\n ...styles.popper,\r\n minWidth,\r\n };\r\n\r\n const inputStyleBase: React.CSSProperties = roundborder ? { borderRadius: '5px' } : {};\r\n\r\n const inputArrowStyleBase: React.CSSProperties = roundborder ? { borderRadius: '0px 5px 5px 0px' } : {};\r\n\r\n const inputStyle: React.CSSProperties = alignCenter\r\n ? (\r\n forExSerach?{ ...inputStyleBase, textAlign: 'center', paddingRight :'17px'} : \r\n { ...inputStyleBase, textAlign: 'center', paddingLeft: ((hideCaretWhenDisabled && disabled) || hideCaret) ? '0px' : '24px', paddingRight : forExSerach ? '24px' : '0px'}\r\n )\r\n : { ...inputStyleBase };\r\n\r\n return (\r\n
\r\n {\r\n setStringValue(e.target.value);\r\n if (!open) {\r\n setOpen(true);\r\n }\r\n }}\r\n disabled={disabled}\r\n onKeyDown={processSpecialKeys}\r\n //<230330. auto complete Off 적용\r\n //autoComplete={autocompleteOffGuard}\r\n autoComplete=\"off\"\r\n list={autocompleteOffGuard}\r\n //list={selectInputIdRef.current}\r\n //230330.>\r\n data-tooltip=\"-from-value\"\r\n \r\n data-tooltip-onlywhencutoff\r\n placeholder={placeholder}\r\n onClick={(e) => {\r\n if (hideCaret && !open) \r\n setOpen(true);\r\n \r\n if (!disabled && !fieldClickRef.current) {\r\n (e.target as HTMLInputElement).select();\r\n fieldClickRef.current = true;\r\n }\r\n }}\r\n onBlur={() => {\r\n fieldClickRef.current = false;\r\n }}\r\n />\r\n {(!(hideCaretWhenDisabled && disabled) && !hideCaret) &&\r\n
{\r\n if (disabled) {\r\n return;\r\n }\r\n openWithoutFilter();\r\n }}\r\n ref={setArrowElement}\r\n >\r\n \r\n
\r\n }\r\n {open &&\r\n \r\n
\r\n
\r\n {filteredItems.map((x, i) => (\r\n {\r\n onListItemSelected(x)\r\n e.stopPropagation();\r\n }}\r\n >\r\n {x.icon ? <> : <>}\r\n {x.label}\r\n
\r\n ))}\r\n
\r\n
\r\n \r\n }\r\n \r\n );\r\n}\r\n\r\nSelect.defaultProps = {\r\n onChange: () => {},\r\n value: '',\r\n disabled: false,\r\n dark: false,\r\n blankWhenDisabled: false,\r\n items: [],\r\n hideCaretWhenDisabled: false,\r\n alignCenter: false,\r\n hideCaret: false,\r\n rollBackPrevValue: true,\r\n forExSerach: false,\r\n useBlank: false,\r\n};\r\n\r\nSelect.propTypes = {\r\n selectId: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n onEnterSameValue: PropTypes.func,\r\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n disabled: PropTypes.bool.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n blankWhenDisabled: PropTypes.bool.isRequired,\r\n items: PropTypes.arrayOf(PropTypes.shape({\r\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n label: PropTypes.string,\r\n activeLabel: PropTypes.string,\r\n })).isRequired,\r\n selectWidth: PropTypes.string,\r\n hideCaretWhenDisabled: PropTypes.bool.isRequired,\r\n hideCaret: PropTypes.bool.isRequired,\r\n alignCenter: PropTypes.bool.isRequired,\r\n onTabNext: PropTypes.func,\r\n onTabPrevious: PropTypes.func,\r\n placeholder: PropTypes.string,\r\n rollBackPrevValue: PropTypes.bool,\r\n roundborder : PropTypes.bool,\r\n forExSerach: PropTypes.bool,\r\n useBlank: PropTypes.bool,\r\n};\r\n\r\n\r\nexport default React.memo(Select);\r\n","import config from '../config';\r\nimport postal from 'postal';\r\nimport _ from 'lodash';\r\nimport constants from '../constants';\r\nimport { useContext } from 'react';\r\nimport ApplicationContext from '../ApplicationContext';\r\nimport { GenEmailArgs } from '../fms.report/args';\r\nimport { DocumentType } from '../framework.core/DocumentType';\r\nimport { getFmsGlobal } from '../globals';\r\nimport { nowDate } from '../dateUtils';\r\nimport moment from 'moment';\r\n\r\nexport default function useReportViewer() {\r\n /**\r\n * Publish request-to-open-report-opTab\r\n * @param reportArgs \r\n * @param opType {optional constants.opType, default = accounting}\r\n */\r\n\r\n const appContext = useContext(ApplicationContext);\r\n\r\n function checkPopupAvailable() {\r\n let result = true;\r\n\r\n //check report popup\r\n let n1 = window.open(config.serverUrl,\r\n '_blank',\r\n `toolbar=no, location=no, directories=no, status=no, menubar=no, width=10, height=10, left=${window.innerWidth - 10},top=${window.innerWidth - 10}`);\r\n // show bottom right corner of the screen.\r\n if (n1 == null) {\r\n result = false;\r\n } else {\r\n n1.close();\r\n }\r\n\r\n let n2 = window.open(config.serverUrl,\r\n '_blank',\r\n `toolbar=no, location=no, directories=no, status=no, menubar=no, width=15, height=15, left=${window.innerWidth - 10},top=${window.innerWidth - 10}`);\r\n // show bottom right corner of the screen.\r\n if (n2 == null) {\r\n // alert\r\n //console.log('viewReport - test')\r\n result = false;\r\n } else {\r\n n2.close();\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function viewReport(reportArgs: any, opType?: string, popup: boolean = false, hlink: boolean = false) {\r\n (document.activeElement as HTMLElement).blur()\r\n\r\n if(!checkPopupAvailable()){\r\n alert('Please allow popups for this website.');\r\n return;\r\n }\r\n\r\n if (!popup) {\r\n var channel = postal.channel('report');\r\n\r\n // Caution: operation is not same as opType\r\n //if(!opType) opType = _.keys(constants.operations).find(k => constants.operations[k] === lastOperation);\r\n if (!opType) opType = constants.opTypes.accounting;\r\n channel.publish('report.view', {\r\n reportId: _.isObject(reportArgs) ? JSON.stringify(reportArgs) : reportArgs,\r\n opType,\r\n jwt: appContext.api.getAuthKey()\r\n });\r\n } else {\r\n\r\n // let left = (document.body.offsetWidth / 2) - (980 / 2);\r\n // left += window.screenLeft;\r\n \r\n window.name = `ifmsmain-${appContext.user?.suntekId?.toLowerCase()}-${appContext.user?.id?.toLowerCase()}`;\r\n\r\n window.open(`${config.serverUrl}report?args=${hlink ? 'hlink-' : ''}${encodeURIComponent(hlink ? reportArgs : JSON.stringify(reportArgs))}&jwt=${appContext.api.getAuthKey()}`,\r\n '_blank'//,\r\n //'popup'\r\n //240619.dwshin. report open pattern chage - popup > tab\r\n //`width=980, height=${window.screen.availHeight},left=${left}, top=0, scrollbars=yes` \r\n )\r\n }\r\n }\r\n\r\n\r\n function viewEmptyReport(faxMode: boolean = true, toCompanyList: string = '', cfsType: string = '', content: string = '', tbName: string = '', tbId: number = 0\r\n ) {\r\n\r\n let reportArgs = new GenEmailArgs({\r\n toCompanyid: toCompanyList,\r\n generalMode: true,\r\n });\r\n\r\n if (faxMode) {\r\n reportArgs.formCaption = 'General Fax';\r\n reportArgs.docType = DocumentType.GenFax;\r\n //preview.SetViewMode((int)PrintPreviewViewMode.Fax);\r\n //preview.CancelButton = preview.btnFaxCancel;\r\n\r\n } else {\r\n reportArgs.formCaption = 'General Email';\r\n reportArgs.docType = DocumentType.GenEmail;\r\n if (['Manifest', 'Release'].indexOf(cfsType) >= 0) {\r\n reportArgs.tbName = tbName;\r\n reportArgs.tbId = tbId.toString();\r\n }\r\n\r\n if (toCompanyList) {\r\n //preview.SetViewMode((int)PrintPreviewViewMode.Email);\r\n } \r\n \r\n // preview.CancelButton = preview.btnEmailCancel;\r\n }\r\n\r\n if (cfsType || content) {\r\n //preview.Memo = content;\r\n reportArgs.memo = content;\r\n if (content && getFmsGlobal().AcmeID4 === \"STAR\") {\r\n reportArgs.subject = \"STAR ASIA COMMUNICATION \" + moment(nowDate()).format('MM-DD-YYYY');\r\n }\r\n else {\r\n reportArgs.subject = \"Various\";\r\n }\r\n\r\n reportArgs.cfsType = cfsType;\r\n }\r\n\r\n window.open(`${config.serverUrl}report?args=${encodeURIComponent(JSON.stringify(reportArgs))}&jwt=${appContext.api.getAuthKey()}`,\r\n '_blank'//,\r\n //'popup'\r\n //`width=850, height=860, scrollbars=yes`\r\n )\r\n }\r\n\r\n return { viewReport, viewEmptyReport };\r\n}","/**\r\n * Revision History\r\n * \r\n * 11/20/2021 ptkim Create\r\n */\r\nimport _ from 'lodash';\r\nimport {compareIso, isIsoDateTime} from '../../dateUtils';\r\nimport {DBMappingInfo} from '../../framework.core/data/DBMappingInfo';\r\nimport {setCleanStateStorage} from '../../hooks/useDirtyCheck2';\r\nimport {IDictionary} from './TrackingModule';\r\n\r\nexport interface ChangeTrackable {\r\n key: string | undefined, // Key property name\r\n changedProps: ChangedProperty[],\r\n complexChangedProps: ComplexChangedProperty[],\r\n changedCollectionProps: CollectionChangedProperty[],\r\n isDirty: boolean,\r\n trackable: boolean,\r\n noTrackProps: string[],\r\n //\r\n [x:string]:any\r\n};\r\n\r\n/**\r\n * { propertyName: string, oldValue: any, newValue: any }\r\n */\r\nexport interface ChangedProperty {\r\n propertyName: string,\r\n oldValue: any,\r\n newValue: any\r\n};\r\n\r\n/**\r\n * { keyPropertyName: string|undefined, keyValue: any, changeTrackable: ChangeTrackable | null }\r\n */\r\nexport interface CollectionChangedItem {\r\n keyPropertyName: string|undefined,\r\n keyValue: any,\r\n changeTrackable: ChangeTrackable | null\r\n};\r\n\r\n/**\r\n * { complexName: string, complexItem: CollectionChangedItem | null }\r\n */\r\nexport interface ComplexChangedProperty {\r\n complexName: string,\r\n complexItem: CollectionChangedItem | null\r\n};\r\n\r\n/**\r\n * { collectionName: string, addedItems: CollectionChangedItem[], changedItems: CollectionChangedItem[], deletedItems: CollectionChangedItem[] }\r\n */\r\nexport interface CollectionChangedProperty {\r\n collectionName: string,\r\n addedItems: CollectionChangedItem[],\r\n changedItems: CollectionChangedItem[],\r\n deletedItems: CollectionChangedItem[]\r\n}\r\n\r\n// function setCleanState(cs:any, skipIfExists:boolean = false) {\r\n// if (skipIfExists && !_.isEqual(getScreenMemory(), {})) {\r\n// return;\r\n// }\r\n\r\n// // window.console.log(cs);\r\n\r\n// storeInScreenMemory({\r\n// __screenCleanState: cs,\r\n// });\r\n// }\r\n\r\nexport abstract class TrackableEntity implements ChangeTrackable {\r\n key: string | undefined = undefined;\r\n \r\n changedProps: ChangedProperty[] = [];\r\n complexChangedProps: ComplexChangedProperty[] = [];\r\n changedCollectionProps: CollectionChangedProperty[] = [];\r\n //isDirty: boolean;\r\n private _trackable: boolean = false;\r\n get trackable() { return this._trackable;}\r\n set trackable(value) { \r\n this._trackable = value;\r\n this.setChildTrackable(value);\r\n };\r\n\r\n setChildTrackable(value:boolean) {\r\n // Overridable\r\n }\r\n\r\n noTrackProps: string[] = ['key', 'changedProps', 'complexChangedProps', 'changedCollectionProps', '_trackable', 'noTrackProps', 'getdateProps'];\r\n //acceptChanges: Function;\r\n //rejectChanges: Function;\r\n getdateProps: string[] = [];\r\n \r\n\r\n static nextId = 0;\r\n public GetNextId(): number {\r\n --TrackableEntity.nextId;\r\n return TrackableEntity.nextId;\r\n }\r\n public get isDirty(): boolean {\r\n return this.changedProps.length > 0 || this.complexChangedProps.length > 0 || this.changedCollectionProps.length > 0;;\r\n }\r\n\r\n static getAcceptedEntity = function(obj:TrackableEntity):Object {\r\n obj.changedProps = [];\r\n obj.complexChangedProps = [];\r\n obj.changedCollectionProps = [];\r\n\r\n // obj.key prop is included in noTrackProps, but include it in cleanObj.\r\n const cleanObj:any = _.omitBy(_.omit(obj, _.without(obj.noTrackProps, obj.key??'')), _.isFunction)\r\n _.forOwn(cleanObj, function (value, key) {\r\n // Get clean Collection\r\n if(Array.isArray(value)) {\r\n cleanObj[key] = (value as TrackableEntity[]).map(x => TrackableEntity.getAcceptedEntity(x));\r\n }\r\n else if(value !== null && typeof value === \"object\") {\r\n cleanObj[key] = TrackableEntity.getAcceptedEntity(value);\r\n }\r\n });\r\n\r\n return cleanObj;\r\n }\r\n\r\n //\r\n static acceptChanges = function (entity:TrackableEntity, key:string):void {\r\n //setCleanState(TrackableEntity.getAcceptedEntity(this));\r\n // debugger;\r\n setCleanStateStorage(key, TrackableEntity.getAcceptedEntity(entity));\r\n }\r\n\r\n\r\n /**\r\n * Restore changed properties to their original value\r\n */\r\n static rejectChanges = function (me:ChangeTrackable) {\r\n me.changedProps.forEach(cp => {\r\n (me as any)[cp.propertyName] = cp.oldValue;\r\n });\r\n\r\n me.complexChangedProps.forEach(xcp => {\r\n if(xcp.complexItem === null) return;\r\n //xcp.complexItem.changeTrackable?.rejectChanges();\r\n if(xcp.complexItem.changeTrackable)\r\n TrackableEntity.rejectChanges(xcp.complexItem.changeTrackable);\r\n });\r\n\r\n me.changedCollectionProps.forEach(ccp => {\r\n let collObj = (me as any)[ccp.collectionName] as any[];\r\n ccp.addedItems.forEach(obj => {\r\n // Remove \r\n if(obj.keyPropertyName)\r\n _.pullAt(collObj, _.findIndex(collObj, x => x[obj.keyPropertyName || ''] === obj.keyValue));\r\n });\r\n ccp.deletedItems.forEach(obj => {\r\n // Add\r\n collObj.push(obj.changeTrackable);\r\n });\r\n ccp.changedItems.forEach(obj => {\r\n // rejectChanges\r\n //obj.changeTrackable?.rejectChanges();\r\n if(obj.changeTrackable) TrackableEntity.rejectChanges(obj.changeTrackable);\r\n });\r\n });\r\n };\r\n \r\n getDbMappings(a?:any):IDictionary {\r\n return {};\r\n }\r\n\r\n /**\r\n * There may be some props of thisEntit which is read as null.\r\n * When those properties are not changed before save, then at backend side,\r\n * those value may cause query error for non-nullable columns.\r\n * So, at initial stage, let's respect default value instead of null.\r\n * @param thisEntity \r\n * @param initData \r\n * @returns \r\n */\r\n applyInitDataExcludingNull(thisEntity:any, initData:any) {\r\n if(!initData) return;\r\n for(const [key, value] of Object.entries(initData)) {\r\n if(value !== null) {\r\n thisEntity[key] = value;\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Update curEntity.changedProps: ChangedProperty[], \r\n * curEntity.complexChangedProps: ComplexChangedProperty[], \r\n * curEntity.changedCollectionProps: CollectionChangedProperty[]\r\n * after checking propName's value\r\n * @param propName \r\n * @param orgEntity \r\n * @param curEntity \r\n * @returns \r\n */\r\nexport function checkEntityPropChanges(propName: string, orgEntity: any, curEntity: any) {\r\n if(curEntity === null) return;\r\n\r\n const ctEntity = curEntity as ChangeTrackable;\r\n // skip no track props and arrow functions\r\n if (ctEntity.noTrackProps == null) return; \r\n if (ctEntity.noTrackProps.indexOf(propName) >= 0 || _.isFunction(curEntity[propName])) return;\r\n\r\n let index = -1;\r\n if(Array.isArray(curEntity[propName])) {\r\n // Collection\r\n let keyName = '';\r\n if(orgEntity[propName].length > 0)\r\n keyName = orgEntity[propName][0].key; //\r\n \r\n if(!keyName && curEntity[propName].length > 0)\r\n keyName = curEntity[propName][0].key;\r\n \r\n if(orgEntity[propName].length === 0 && curEntity[propName].length === 0) {\r\n // [issue#169] Both orgColl and curColl is empty, then remove changedCollectionProps for this collection if exist.\r\n const ccPropIndex = ctEntity.changedCollectionProps.findIndex(x => x.collectionName === propName);\r\n if(ccPropIndex >= 0) ctEntity.changedCollectionProps.splice(ccPropIndex, 1);\r\n return;\r\n }\r\n\r\n if(!keyName) return;\r\n\r\n const orgColl = _.sortBy(orgEntity[propName], function(row) { \r\n if (row[keyName] < 0)\r\n return row[keyName] * -1; // new id인 경우 (-1, -2, -3...) 큰 값(-1이 제일 위) 순으로 정렬되어야함\r\n else\r\n return row[keyName]; // edit id인 경우 (1, 2, 3) 작은 값 (1이 제일 위) 순으로 정렬되어야함\r\n });\r\n const curColl = _.sortBy(curEntity[propName], function(row) { \r\n if (row[keyName] < 0)\r\n return row[keyName] * -1; // new id인 경우 (-1, -2, -3...) 큰 값(-1이 제일 위) 순으로 정렬되어야함\r\n else\r\n return row[keyName]; // edit id인 경우 (1, 2, 3) 작은 값 (1이 제일 위) 순으로 정렬되어야함\r\n });\r\n //\r\n //if(!_.isEqual(orgColl, curColl)) {\r\n if (!CompareTrackableCollection(orgColl, curColl)) {\r\n let ccProp = ctEntity.changedCollectionProps.find(x => x.collectionName === propName);\r\n if (!ccProp) {\r\n ccProp = { collectionName: propName, addedItems: [], changedItems: [], deletedItems: []};\r\n ctEntity.changedCollectionProps.push(ccProp);\r\n }\r\n\r\n // Collection item level\r\n const itemsToRemoveFromOrgCollection: number[] = [];\r\n _.forEach(orgColl, (obj) => {\r\n // Check if deleted\r\n if (!curColl.find(x => x[keyName] === obj[keyName])) {\r\n if (!obj[keyName] || obj[keyName] <= 0) {\r\n itemsToRemoveFromOrgCollection.push(orgColl.indexOf(obj));\r\n } else { \r\n //\r\n const delIndex = ccProp?.deletedItems.findIndex(d => d.keyPropertyName === keyName && d.keyValue === obj[keyName])??-1;\r\n if(delIndex < 0) {\r\n ccProp?.deletedItems.push({ keyPropertyName: keyName, keyValue: obj[keyName], changeTrackable: obj });\r\n // c.keyValue === obj[keyName])??-1;\r\n if(chgIndex >= 0) {\r\n ccProp?.changedItems.splice(chgIndex, 1);\r\n }\r\n //pt220906>\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Cleanup not saved entities to remove\r\n if (itemsToRemoveFromOrgCollection.length > 0) {\r\n // remove from addedItems\r\n _.forEach(itemsToRemoveFromOrgCollection, (i) => {\r\n let addIndex = ccProp?.addedItems.findIndex(x => x.keyValue === orgColl[i][keyName])\r\n if(addIndex && addIndex >= 0 && ccProp) _.pullAt(ccProp?.addedItems, [addIndex]);\r\n });\r\n _.pullAt(orgColl, itemsToRemoveFromOrgCollection);\r\n }\r\n\r\n // Added or changed\r\n if (curColl.length > 0) {\r\n _.forEach(curColl, (obj) => {\r\n // Find orgObj\r\n const orgObj = orgColl.find(x => x[keyName] === obj[keyName]);\r\n const ctObj = obj as ChangeTrackable;\r\n\r\n // Check new entity\r\n if ((!obj[keyName] || obj[keyName] <= 0) && !orgObj) {\r\n // Push only when there is not addedItem with same keyValue.\r\n \r\n // \r\n //if(!ccProp?.addedItems.some(x => x.keyValue === obj[keyName])) {\r\n // ccProp?.addedItems.push({ keyPropertyName: keyName, keyValue: obj[keyName], changeTrackable: obj });\r\n //}\r\n const index = ccProp?.addedItems.findIndex(x => x.keyValue === obj[keyName]) ?? -1;\r\n if (index >= 0) {\r\n ccProp?.addedItems.splice(index, 1);\r\n }\r\n ccProp?.addedItems.push({ keyPropertyName: keyName, keyValue: obj[keyName], changeTrackable: obj });\r\n // \r\n }\r\n else {\r\n // Collection item's property level\r\n //\r\n //if(!_.isEqual(obj, orgObj)) {\r\n if (!CompareTrackableObjects(obj, orgObj)) {\r\n _.keys(obj).forEach(k => {\r\n checkEntityPropChanges(k, orgObj, obj);\r\n });\r\n } else {\r\n // Clear dirty if it was.\r\n if(ctObj.changedProps.length > 0) ctObj.changedProps = [];\r\n if(ctObj.complexChangedProps.length > 0) ctObj.complexChangedProps = [];\r\n if(ctObj.changedCollectionProps.length > 0) ctObj.changedCollectionProps = [];\r\n }\r\n \r\n let changedIndex = ccProp?.changedItems.findIndex(x => x.keyValue === obj[keyName]) ?? -1;\r\n if(ctObj.isDirty) {\r\n if(changedIndex < 0) {\r\n ccProp?.changedItems.push({ keyPropertyName: keyName, keyValue: obj[keyName], changeTrackable: obj });\r\n } else if(ccProp?.changedItems[changedIndex].changeTrackable !== obj) {\r\n // Replace changeItem by current one\r\n if(ccProp) ccProp.changedItems[changedIndex].changeTrackable = obj;\r\n }\r\n } else {\r\n // If obj is in changedItems, then remove it from there\r\n if(changedIndex >= 0 && ccProp) _.pullAt(ccProp?.changedItems, changedIndex);\r\n }\r\n }\r\n });\r\n\r\n // curColl.filter(e => e[keyName] < 0).length ) {\r\n _.remove(ccProp.addedItems, function(x) { \r\n // Remove addedItem if it does not exist in curColl\r\n return curColl.findIndex(e => e[keyName] === x.keyValue) < 0; \r\n });\r\n }\r\n //pt220706>\r\n } else if(ccProp) {\r\n // [issue#169] if curColl has no element, then clear addedItems, changedItems.\r\n if(ccProp.addedItems.length > 0) ccProp.addedItems.splice(0);\r\n if(ccProp.changedItems.length > 0) ccProp.changedItems.splice(0);\r\n }\r\n\r\n // Determine to keep ccProp\r\n if(ccProp.addedItems.length <= 0 && ccProp.changedItems.length <= 0 && ccProp.deletedItems.length <= 0) {\r\n const ccIndex = ctEntity.changedCollectionProps.indexOf(ccProp);\r\n ctEntity.changedCollectionProps.splice(ccIndex, 1);\r\n }\r\n } else {\r\n // Remove ColletionChangedProperty if remains.\r\n let ccProp = ctEntity.changedCollectionProps.find(x => x.collectionName === propName);\r\n if(ccProp) {\r\n const ccIndex = ctEntity.changedCollectionProps.indexOf(ccProp);\r\n ctEntity.changedCollectionProps.splice(ccIndex, 1);\r\n }\r\n //pt220426>\r\n }\r\n\r\n } else if(typeof curEntity[propName] === 'object') {\r\n // Complex object (typeof null === 'object')\r\n let cplxObj:ChangeTrackable = curEntity === null ? null : curEntity[propName];\r\n if(_.isEmpty(cplxObj)) {\r\n // if((orgEntity === null || _.isEmpty(orgEntity[propName]))) {\r\n if((orgEntity === null || orgEntity === undefined || _.isEmpty(orgEntity[propName]))) {\r\n // Checked cahngedProps and remove if exist\r\n index = ctEntity.changedProps.findIndex(x => x.propertyName === propName);\r\n if(index >= 0) _.pullAt(ctEntity.changedProps, index);\r\n return;\r\n } else {\r\n //\r\n let changeProp = ctEntity.changedProps.find(x => x.propertyName === propName);\r\n if(!changeProp) {\r\n ctEntity.changedProps.push({ propertyName: propName, \r\n oldValue: orgEntity ? orgEntity[propName] : undefined, \r\n newValue: curEntity ? curEntity[propName] : undefined});\r\n } else if(changeProp.newValue !== curEntity[propName]) {\r\n // Update newValue\r\n changeProp.newValue = curEntity[propName];\r\n }\r\n }\r\n return;\r\n }\r\n\r\n _.keys(cplxObj).forEach(k => {\r\n checkEntityPropChanges(k, orgEntity[propName], curEntity[propName]);\r\n });\r\n\r\n //cplxObj.isDirty = cplxObj.changedProps.length > 0 || cplxObj.complexChangedProps.length > 0 || cplxObj.changedCollectionProps.length > 0;\r\n if(cplxObj.isDirty) {\r\n index = ctEntity.complexChangedProps.findIndex(x => x.complexName === propName);\r\n if(index < 0) ctEntity.complexChangedProps.push({\r\n complexName: propName,\r\n complexItem: { keyPropertyName: cplxObj.key, keyValue: cplxObj.key ? curEntity[propName][cplxObj.key] : undefined, changeTrackable: cplxObj}\r\n });\r\n } else {\r\n // if not dirty and exist in complexChangedProps, then remove it.\r\n index = ctEntity.complexChangedProps.findIndex(x => x.complexName === propName);\r\n if(index >= 0) _.pullAt(ctEntity.complexChangedProps, index);\r\n }\r\n } else {\r\n // primitives\r\n if(orgEntity === null && curEntity === null) {\r\n ctEntity.changedProps = [];\r\n ctEntity.complexChangedProps = [];\r\n ctEntity.changedCollectionProps = [];\r\n return;\r\n }\r\n if(((_.isEmpty(orgEntity) && !_.isEmpty(curEntity)) || (!_.isEmpty(orgEntity) && _.isEmpty(curEntity))) || \r\n !ComparePrimitives(orgEntity[propName], curEntity[propName])) {\r\n let changeProp = ctEntity.changedProps.find(x => x.propertyName === propName);\r\n if(!changeProp) {\r\n ctEntity.changedProps.push({ propertyName: propName, \r\n oldValue: orgEntity ? orgEntity[propName] : undefined, \r\n newValue: curEntity ? curEntity[propName] : undefined});\r\n } else if(changeProp.newValue !== curEntity[propName]) {\r\n // Update newValue\r\n changeProp.newValue = curEntity[propName];\r\n }\r\n }\r\n else { // same as original\r\n // If p exists in changedProps, then remove it.\r\n index = ctEntity.changedProps.findIndex(x => x.propertyName === propName);\r\n if(index >= 0) _.pullAt(ctEntity.changedProps, index);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * pt220220: Add check for ISO8601 date string\r\n * @param orgVal \r\n * @param curVal \r\n * @return true for same, false for different\r\n */\r\nfunction ComparePrimitives(orgVal: any, curVal: any): boolean {\r\n if(!_.isEqual(orgVal, curVal)) {\r\n if(isIsoDateTime(orgVal) && isIsoDateTime(curVal)) {\r\n return compareIso(orgVal, curVal) === 0;\r\n } else {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nfunction CompareTrackableCollection(orgColl:Array, curColl:Array): boolean {\r\n if(orgColl.length !== curColl.length) return false;\r\n // Check each array element\r\n let result = true;\r\n for(let i = 0; i < orgColl.length; i++) {\r\n if(!CompareTrackableObjects(orgColl[i], curColl[i])) {\r\n result = false\r\n break;\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nfunction CompareTrackableObjects(obj1: any, obj2: any): boolean {\r\n let result = true; // Equal\r\n const keys = _.keys(obj1);\r\n for(const key of keys) {\r\n if(['changedCollectionProps', 'changedProps', 'complexChangedProps', '_trackable', 'noTrackProps', 'getDateProps', 'getdateProps', 'key'].indexOf(key) < 0) {\r\n if(obj2 && obj1[key] !== obj2[key]) {\r\n result = false;\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n\r\n\r\n","import './layout.css';\r\nimport React from 'react';\r\n\r\nfunction InputControlRow({\r\n bold = false,\r\n nolabel = false,\r\n nocontrol = false,\r\n label=undefined,\r\n width=undefined,\r\n children=undefined,\r\n onLabelClick= undefined,\r\n underline = false,\r\n customFontSize = undefined,\r\n}: {\r\n bold?: boolean,\r\n nolabel?: boolean,\r\n nocontrol?: boolean,\r\n underline?: boolean,\r\n width?: string|undefined,\r\n onLabelClick?: VoidFunction|undefined,\r\n children?: React.ReactChild|React.ReactNode|string|null|undefined,\r\n label?: React.ReactNode|string|undefined,\r\n customFontSize?: string|undefined,\r\n}) {\r\n const inputStyle:React.CSSProperties|undefined = !!width\r\n ? { width }\r\n : undefined;\r\n\r\n let labelStyle: React.CSSProperties = !!bold ? { fontWeight: 'bold' } : {};\r\n if (!!customFontSize) labelStyle = { ...labelStyle, fontSize: customFontSize }\r\n if (!!onLabelClick) {\r\n labelStyle = {...labelStyle, cursor: 'pointer'}\r\n } else {\r\n labelStyle = {...labelStyle, cursor: 'default'};\r\n }\r\n\r\n return (\r\n
\r\n {!nolabel &&\r\n
\r\n {!!underline &&\r\n {label}\r\n }\r\n {!underline &&\r\n <>{label}\r\n }\r\n
\r\n }\r\n {!nocontrol &&\r\n
\r\n {children}\r\n
\r\n }\r\n
\r\n );\r\n}\r\n\r\nexport default React.memo(InputControlRow);\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport IfmsButton, { IfmsButtonProps } from './IfmsButton';\r\n\r\nconst BlackInverseButton = React.forwardRef(({ children, ...other }, ref) => {\r\n let notsetbackcolorwhendisabled = other.notsetbackcolorwhendisabled === 'true' ? true : false;\r\n const baseClass = !notsetbackcolorwhendisabled ? 'ifms-black-inverse-button' : 'ifms-black-inverse-button b';\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\nBlackInverseButton.defaultProps = {\r\n notsetbackcolorwhendisabled: 'false'\r\n};\r\n\r\nBlackInverseButton.propTypes = {\r\n size: PropTypes.oneOf(['regular', 'small', 'large']),\r\n notsetbackcolorwhendisabled: PropTypes.string,\r\n};\r\n\r\nexport default React.memo(BlackInverseButton);\r\n\r\n","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, {useEffect, useRef, useState} from 'react';\r\nimport NumberFormat from 'react-number-format';\r\nimport postal from 'postal';\r\nimport {setCaretPosition} from '../util';\r\n\r\nfunction areValuesSame(v1Param:number|null|undefined, v2Param:number|null|undefined) {\r\n let v1 = v1Param;\r\n let v2 = v2Param;\r\n\r\n if (v1Param === null || v1Param === undefined || isNaN(v1Param)) {\r\n v1 = null;\r\n }\r\n\r\n if (v2Param === null || v2Param === undefined || isNaN(v2Param)) {\r\n v2 = null;\r\n }\r\n\r\n return v1 === v2;\r\n}\r\n\r\nfunction setCaretPositionBeforeDot(elemId:string) {\r\n const elem = document.getElementById(elemId) as HTMLInputElement;\r\n const value = elem.value;\r\n let caretPos = value ? value.indexOf('.') : 0;\r\n\r\n if (caretPos < 0 && value === '0') {\r\n caretPos = 1; // If there are no decimal places and there is leading 0\r\n }\r\n\r\n if ( caretPos < 0) {\r\n return;\r\n }\r\n\r\n setCaretPosition(elem, caretPos);\r\n\r\n setTimeout(() => {\r\n setCaretPosition(elem, caretPos);\r\n }, 0);\r\n}\r\n\r\ninterface ExternalValueChangeRequest {\r\n external: boolean,\r\n value: number|null,\r\n}\r\n\r\nexport interface FloatProps {\r\n value:number|null|undefined,\r\n onChange: (x:number|null) => void,\r\n onFocusOut?: (x:number|null) => void,\r\n disabled?: boolean,\r\n onEnter?: (() => void)|undefined,\r\n min?: number|undefined,\r\n max?: number|undefined,\r\n floatId?: string|undefined,\r\n error?: boolean,\r\n red?: boolean,\r\n decimals?: number,\r\n backgroundColor?: string|undefined,\r\n noborder?: boolean,\r\n onTabNext?: (() => boolean)|undefined,\r\n onTabPrevious?: (() => boolean)|undefined,\r\n style?: React.CSSProperties|undefined,\r\n alignLeft?: boolean,\r\n plain?: boolean,\r\n allowLeadingZeros?: boolean,\r\n name?:string|undefined,\r\n placeholder?: string|null|undefined,\r\n thousandSeparator?: boolean,\r\n};\r\n\r\nfunction Float({\r\n value,\r\n onChange = () => {},\r\n onFocusOut = () => {},\r\n onEnter = undefined,\r\n disabled = false,\r\n min = undefined,\r\n max = undefined,\r\n floatId = undefined,\r\n error = false,\r\n red = false,\r\n decimals = 2,\r\n onTabNext = undefined,\r\n onTabPrevious = undefined,\r\n backgroundColor = undefined,\r\n noborder = false,\r\n style = undefined,\r\n alignLeft = false,\r\n plain = false,\r\n allowLeadingZeros = false,\r\n name=undefined,\r\n placeholder = undefined,\r\n thousandSeparator = true,\r\n ...other\r\n}:FloatProps) {\r\n const dark = false;\r\n let inputId = useRef(floatId ?? '');\r\n \r\n const [externalValueChangeRequest, setExternalValueChangeRequest] = useState({external: false, value: null});\r\n const [fixedDecimals, setFixedDecimals] = useState(true);\r\n const valueRemovedManually = useRef(false);\r\n\r\n let channelSubscription:ISubscriptionDefinition|null = null;\r\n\r\n function subscribeChannels() {\r\n channelSubscription = postal.subscribe({\r\n channel: 'ifms',\r\n topic: 'ifms.set-number',\r\n callback: onValueChangeRequestByParent,\r\n });\r\n }\r\n\r\n function unsubscribeChannels() {\r\n if (channelSubscription) {\r\n postal.unsubscribe(channelSubscription);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n // Implementation note:\r\n // The idea here is to not call handlers directly in postal callback, but to set state to avoid calling old version of react event handler (problems with references)\r\n if (!externalValueChangeRequest.external) {\r\n return;\r\n }\r\n\r\n doHandleChange(externalValueChangeRequest.value);\r\n setTimeout(() => setCaretPositionBeforeDot(inputId.current), 5);\r\n \r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [externalValueChangeRequest]);\r\n\r\n useEffect(() => {\r\n subscribeChannels();\r\n\r\n if (!inputId.current) {\r\n inputId.current = _.uniqueId('ifms-float-');\r\n }\r\n\r\n return () => {\r\n unsubscribeChannels();\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n function onValueChangeRequestByParent({parentId, number}:{parentId:string, number:number|null}) {\r\n const current = document.getElementById(inputId.current);\r\n \r\n if (current?.parentElement?.id === parentId) {\r\n setExternalValueChangeRequest({external: true, value: number});\r\n }\r\n }\r\n\r\n function processTabNext(e:React.KeyboardEvent) {\r\n if (onTabNext) {\r\n const tabProcessed = onTabNext();\r\n if (tabProcessed) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n function processTabPrevious(e:React.KeyboardEvent) {\r\n if (onTabPrevious) {\r\n const tabProcessed = onTabPrevious();\r\n if (tabProcessed) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n function onKeyDown(e:React.KeyboardEvent) {\r\n const up = 38;\r\n const down = 40;\r\n const backspace = 8;\r\n\r\n if (e.keyCode === backspace) {\r\n const currentValue = (e.target as HTMLInputElement).value ?? '';\r\n const dotIndex = currentValue.indexOf('.');\r\n const valueBeforeDot = dotIndex >= 0 ? currentValue.substring(0, dotIndex) : currentValue;\r\n\r\n if (valueBeforeDot.length === 1) {\r\n // Last digit will be removed. Move caret position into the right place\r\n setTimeout(() => setCaretPositionBeforeDot(inputId.current), 5);\r\n }\r\n }\r\n\r\n if (e.keyCode === up || e.keyCode === down) {\r\n // const parentId = (e?.target as Element|null)?.parentElement?.id;\r\n // if (!!parentId) {\r\n // channel.publish('ifms.control-navigation', {\r\n // parentId,\r\n // keyCode: e.keyCode\r\n // });\r\n // }\r\n // e.preventDefault();\r\n // e.stopPropagation();\r\n }\r\n\r\n const tab = 9;\r\n\r\n if (e.keyCode === tab) {\r\n if (e.shiftKey) {\r\n processTabPrevious(e);\r\n } else {\r\n processTabNext(e);\r\n }\r\n }\r\n }\r\n\r\n function onKeyUp(e:React.KeyboardEvent) {\r\n if (e.key === 'Enter') {\r\n if (onEnter) {\r\n onEnter();\r\n }\r\n }\r\n }\r\n\r\n function handleChange(n:any) {\r\n doHandleChange(n.floatValue);\r\n }\r\n\r\n function doHandleChange(floatValue:any) {\r\n if (min !== null && min !== undefined && floatValue !== null && floatValue !== undefined) {\r\n if (floatValue < min) {\r\n return;\r\n }\r\n }\r\n if (max !== null && max !== undefined && floatValue !== null && floatValue !== undefined) {\r\n if (floatValue > max) {\r\n return;\r\n }\r\n }\r\n\r\n if (!areValuesSame(value, floatValue)) {\r\n const newVal = floatValue !== undefined ? floatValue : null; // Small changed to be able to use change event with lodash merge (which ignores undefined values)\r\n valueRemovedManually.current = newVal === null;\r\n onChange(newVal); \r\n }\r\n }\r\n\r\n function onClick(e:React.MouseEvent) {\r\n if (!disabled) {\r\n (e.target as HTMLInputElement).select();\r\n }\r\n }\r\n\r\n function handleFocus() {\r\n valueRemovedManually.current = false;\r\n setFixedDecimals(false);\r\n }\r\n\r\n function handleBlur(e: React.FocusEvent) {\r\n valueRemovedManually.current = false;\r\n setFixedDecimals(true);\r\n const value = parseFloat(e.target.value.replaceAll(',',''));\r\n\r\n if (isNaN(value)) {\r\n doHandleChange(0);\r\n }\r\n\r\n if (onFocusOut.length > 0) {\r\n onFocusOut(value);\r\n } \r\n }\r\n\r\n let cssClass = dark ? `${!alignLeft ? 'e-ifms-float' : ''} e-ifms-input-dark e-outline ifms-tabable` : `${!alignLeft ? 'e-ifms-float' : ''} e-ifms-input e-outline ifms-tabable`;\r\n\r\n if (error) {\r\n cssClass = `${cssClass} e-ifms-float-error`;\r\n }\r\n if (red) {\r\n cssClass = `${cssClass} e-ifms-float-red`;\r\n }\r\n if (noborder) {\r\n cssClass = `${cssClass} ifms-noborder-input`;\r\n }\r\n if (plain) {\r\n cssClass = `${cssClass} ifms-plain-input`;\r\n }\r\n if (!disabled) {\r\n cssClass = `${cssClass} ifms-tabable-active`;\r\n }\r\n\r\n const componentValue = !valueRemovedManually.current && value !== null && value !== undefined ? value : '';\r\n\r\n let appliedStyle:React.CSSProperties|undefined = style;\r\n if (!!backgroundColor && !plain) {\r\n appliedStyle= appliedStyle ? { ...appliedStyle, backgroundColor } : { backgroundColor };\r\n }\r\n\r\n return (\r\n {\r\n if (!values.value) {\r\n return true;\r\n }\r\n\r\n const minCheck = min === null || min === undefined || (values.floatValue ?? 0) >= min;\r\n const maxCheck = max === null || max === undefined || (values.floatValue ?? 0) <= max;\r\n\r\n return minCheck && maxCheck;\r\n }}\r\n {..._.omit(other, ['dark'])}\r\n />\r\n );\r\n}\r\n\r\nFloat.defaultProps = {\r\n onChange: () => {},\r\n onFocusOut: () => {},\r\n disabled: false,\r\n dark: false,\r\n noborder: false,\r\n plain: false,\r\n alignLeft: false,\r\n allowLeadingZeros: false,\r\n thousandSeparator :true, \r\n placeholder: '',\r\n};\r\n\r\nFloat.propTypes = {\r\n onChange: PropTypes.func.isRequired,\r\n onEnter: PropTypes.func,\r\n value: PropTypes.number,\r\n min: PropTypes.number,\r\n max: PropTypes.number,\r\n dark: PropTypes.bool.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n floatId: PropTypes.string,\r\n noborder: PropTypes.bool.isRequired,\r\n plain: PropTypes.bool.isRequired,\r\n alignLeft: PropTypes.bool,\r\n allowLeadingZeros: PropTypes.bool, \r\n thousandSeparator : PropTypes.bool, \r\n placeholder: PropTypes.string,\r\n};\r\n\r\n\r\nexport default React.memo(Float);\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport IfmsButton, { IfmsButtonProps } from './IfmsButton';\r\n\r\nconst LightBlueButton = React.forwardRef(({children, ...other}, ref) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\nLightBlueButton.defaultProps = {\r\n};\r\n\r\nLightBlueButton.propTypes = {\r\n size: PropTypes.oneOf(['regular', 'small', 'large']),\r\n};\r\n\r\nexport default React.memo(LightBlueButton);\r\n\r\n","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nimport { useAppDispatch, useAppSelector } from '../app/hooks';\r\nimport { getOperationKey, stringsEqualIgnoreCase } from '../util';\r\nimport { openNewPage, NavigationType } from '../util/navigationHelpers';\r\n\r\nimport PrimaryButton from '../ui/PrimaryButton';\r\nimport SecondaryButton from '../ui/SecondaryButton';\r\nimport WhiteButton from '../ui/WhiteButton';\r\nimport LightBlueButton from '../ui/LightBlueButton';\r\n\r\nimport { moveScreenToOperation, moveScreenToTop, pushScreenToStack, ScreenStackItem } from '../features/screenStackSlice';\r\nimport { moveJobToOperation, replaceJobMenuTimestamp } from '../features/jobMenuSlice';\r\nimport IfmsButton from '../ui/IfmsButton';\r\nimport useJobMenus from '../hooks/useJobMenus';\r\n\r\ntype UniqueLinkButtonProps = {\r\n link: string,\r\n viewLink?: string,\r\n operation?: string,\r\n label: React.ReactNode|string,\r\n beforeRedirect?: (() => Promise)|undefined,\r\n uniqueLinkPrefixQuery?: ((x:ScreenStackItem) => boolean) | string | null,\r\n disabled?: boolean,\r\n display?: 'primary' | 'secondary' | 'white' | 'lightblue',\r\n baseClass?: string,\r\n [x:string]: any\r\n};\r\n\r\nfunction UniqueLinkButton({\r\n link,\r\n viewLink,\r\n operation,\r\n label,\r\n beforeRedirect = undefined,\r\n uniqueLinkPrefixQuery = undefined,\r\n disabled = false,\r\n display = 'primary',\r\n baseClass,\r\n goToAlreadyOpenPage = false,\r\n isMainOp = false,\r\n ...other }: UniqueLinkButtonProps) {\r\n const history = useHistory();\r\n const dispatch = useAppDispatch();\r\n\r\n const jobMenu = useAppSelector(state => state.jobMenu);\r\n const screenStack = useAppSelector(x => x.screenStack);\r\n const operationState = useAppSelector(x => x.operation);\r\n const activeOperation = operationState.operation;\r\n const { moveToSingleOpenedScreenInAnyOperationStartingWithUrl } = useJobMenus();\r\n\r\n let activeOperationKey = getOperationKey(activeOperation);\r\n if (!activeOperationKey) {\r\n if (activeOperation === 'Reference Files' || activeOperation === 'Settings' || activeOperation === 'Utilities') {\r\n activeOperationKey = getOperationKey('Standalone');\r\n }\r\n }\r\n\r\n const isDisabled = disabled || ( !isMainOp && (\r\n !!activeOperationKey &&\r\n (\r\n !!uniqueLinkPrefixQuery\r\n ? (\r\n _.isString(uniqueLinkPrefixQuery)\r\n ? screenStack[activeOperationKey].some(x => x.url && x.url.toLowerCase().startsWith(uniqueLinkPrefixQuery.toLowerCase()))\r\n : screenStack[activeOperationKey].some(x => uniqueLinkPrefixQuery(x))\r\n )\r\n : screenStack[activeOperationKey].some(x => stringsEqualIgnoreCase(x.url, link))\r\n )\r\n ));\r\n\r\n function OpenNewPageAsync() {\r\n let urls = [link];\r\n if(viewLink) urls.push(viewLink);\r\n if (goToAlreadyOpenPage) {\r\n if(link.indexOf('/edit') > -1) urls.push(link.replace('/edit', '/view'));\r\n if(link.indexOf('/view') > -1) urls.push(link.replace('/view', '/edit'));\r\n }\r\n\r\n moveToSingleOpenedScreenInAnyOperationStartingWithUrl(link, urls)\r\n return Promise.resolve(true);\r\n }\r\n\r\n async function handleClick() {\r\n let continueRedirect = false;\r\n \r\n if (beforeRedirect) {\r\n continueRedirect = await beforeRedirect();\r\n if (!continueRedirect) {\r\n return;\r\n }\r\n }\r\n\r\n continueRedirect = await OpenNewPageAsync();\r\n if (!continueRedirect) {\r\n return;\r\n }\r\n\r\n if (viewLink) {\r\n const viewModeTimestamp = jobMenu[String(operation)].find(y => (y.url === viewLink))?.timestamp\r\n if (viewModeTimestamp)\r\n dispatch(replaceJobMenuTimestamp({ url: link, timestamp: viewModeTimestamp }));\r\n }\r\n\r\n }\r\n\r\n if (baseClass) {\r\n return (\r\n {label}\r\n );\r\n } else {\r\n if (display === 'primary') {\r\n return (\r\n {label}\r\n );\r\n } else if (display === 'white') {\r\n return (\r\n {label}\r\n );\r\n } else if (display === 'lightblue') {\r\n return (\r\n {label}\r\n );\r\n } else {\r\n return (\r\n {label}\r\n );\r\n }\r\n }\r\n}\r\n\r\nUniqueLinkButton.defaultProps = {\r\n disabled: false,\r\n display: 'primary',\r\n size: 'regular',\r\n viewLink: '',\r\n operation: '',\r\n isMainOp: false,\r\n};\r\n\r\nUniqueLinkButton.propTypes = {\r\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired,\r\n link: PropTypes.string.isRequired,\r\n viewLink: PropTypes.string.isRequired,\r\n operation: PropTypes.string.isRequired,\r\n uniqueLinkPrefixQuery: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\r\n beforeRedirect: PropTypes.func,\r\n disabled: PropTypes.bool.isRequired,\r\n display: PropTypes.oneOf(['primary', 'secondary', 'white', 'lightblue', 'secondary-light']),\r\n size: PropTypes.oneOf(['large', 'small', 'regular']),\r\n baseClass: PropTypes.string,\r\n goToAlreadyOpenPage: PropTypes.bool,\r\n isMainOp: PropTypes.bool\r\n};\r\n\r\nexport default React.memo(UniqueLinkButton);\r\n","import { useContext } from 'react';\r\nimport ApplicationContext from '../ApplicationContext';\r\nimport { SuntekSettings } from '../ifmsTypes';\r\n\r\nexport default function useSuntekSettings():SuntekSettings {\r\n const appContext = useContext(ApplicationContext);\r\n \r\n const fromSettings = appContext?.suntekSettings ? appContext.suntekSettings : {};\r\n\r\n return fromSettings;\r\n}","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\n\r\nfunction Label({\r\n bold=false,\r\n label,\r\n underline=false,\r\n red=false,\r\n blue=false,\r\n nomargin=false,\r\n style=undefined,\r\n validationFor=undefined,\r\n ...other\r\n}:{\r\n bold?: boolean,\r\n label: React.ReactNode|string|undefined,\r\n underline?: boolean,\r\n red?: boolean,\r\n blue?: boolean,\r\n nomargin?: boolean,\r\n style?: React.CSSProperties|undefined,\r\n validationFor?:string|undefined,\r\n [x:string]: any;\r\n}) {\r\n const labelText = bold ? {label} : <>{label};\r\n\r\n const labelNode = underline\r\n ? {labelText}\r\n : <>{labelText};\r\n\r\n const baseStyle = style || {};\r\n \r\n let labelStyle = red ? { ...baseStyle, color: '#bf0000' } : baseStyle;\r\n labelStyle = blue ? { ...labelStyle, color: '#449ee2' } : labelStyle;\r\n\r\n if (nomargin) {\r\n labelStyle = {...labelStyle, marginBottom: '0px'};\r\n }\r\n \r\n return ;\r\n}\r\n\r\nLabel.defaultProps = {\r\n label: '',\r\n bold: false,\r\n underline: false,\r\n red: false,\r\n blue: false,\r\n nomargin: false,\r\n};\r\n\r\nLabel.propTypes = {\r\n bold: PropTypes.bool.isRequired,\r\n underline: PropTypes.bool.isRequired,\r\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\r\n red: PropTypes.bool.isRequired,\r\n blue: PropTypes.bool.isRequired,\r\n nomargin: PropTypes.bool.isRequired,\r\n validationFor: PropTypes.string,\r\n};\r\n\r\n\r\nexport default React.memo(Label);\r\n","import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\r\nimport type { RootState, AppDispatch } from './store';\r\n\r\n// Use throughout your app instead of plain `useDispatch` and `useSelector`\r\nexport const useAppDispatch = () => useDispatch();\r\nexport const useAppSelector: TypedUseSelectorHook = useSelector;\r\n","import '../setup/ifmsSetup/ifmsSetup.css';\r\nimport { useContext, useEffect, useRef } from 'react';\r\n\r\nimport useJobMenu from '../../hooks/useJobMenu';\r\n\r\nimport useGlobalYesNoDialog from '../../hooks/useGlobalYesNoDialog';\r\nimport useFunctionKeys from '../../hooks/useFunctionKeys';\r\nimport { useTypedFastStorage } from '../../hooks/useFastStorage';\r\nimport useFunction from '../../hooks/useFunction';\r\nimport fastStorage from '../../fastStorage';\r\n\r\nimport CodesFactory from './implementation/CodesFactory';\r\nimport constants from '../../constants';\r\nimport { IfmsConfigMenuItem, IfmsConfigOperationMenu } from '../../config/types';\r\nimport IfmsSideMenu from '../../IfmsSideMenu';\r\nimport { FmsSecTask } from '../../fms.core/constants';\r\nimport { MenuFilterGrents } from '../../util';\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport _ from 'lodash';\r\nimport { XCellType } from '../../framework.core/XExportColumn';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport useSuntekSettings from '../../hooks/useSuntekSettings';\r\nimport IfmsReferenceFilesContext from './IfmsReferenceFilesContext';\r\nimport { FilterStorageVersion, isFilterObjectEmpty } from '../../filtering';\r\nimport { useAppDispatch, useAppSelector } from '../../app/hooks';\r\nimport TooltipButton from '../../ui/TooltipButton';\r\nimport { useHistory } from 'react-router';\r\nimport { removeFromStorage } from '../../features/storageSlice';\r\nimport { useStore } from 'react-redux';\r\n\r\ninterface ICheckLastSelectedMenu {\r\n allMenuIndexArray: any[],\r\n lastSelectedIndexArray: any[]\r\n}\r\n\r\n\r\nconst checkLastSelectedMenu: ICheckLastSelectedMenu = { allMenuIndexArray: [], lastSelectedIndexArray: [] }\r\n\r\nconst menus: IfmsConfigOperationMenu = {\r\n operation: 'Reference Files',\r\n job: [\r\n {\r\n text: 'Ocean Shipment', level: 0, metadata: { index: 0, inlineEdit: true },\r\n items: [\r\n { text: 'Original B/L Type', level: 1, metadata: { index: 0, inlineEdit: true }, fmsSecTask: FmsSecTask.CodeBLType },\r\n { text: 'Container Size', level: 1, metadata: { index: 1, inlineEdit: false }, fmsSecTask: FmsSecTask.CodeContainerType },\r\n { text: 'Move Type', level: 1, metadata: { index: 2, inlineEdit: true }, fmsSecTask: FmsSecTask.CodeMoveType },\r\n { text: 'Schedule D&K', level: 1, metadata: { index: 3, inlineEdit: false }, fmsSecTask: FmsSecTask.CodeOceanPort },\r\n { text: 'Vessel Name', level: 1, metadata: { index: 4, inlineEdit: true }, fmsSecTask: FmsSecTask.CodeVessel },\r\n { text: 'Carrier Code', level: 1, metadata: { index: 11, inlineEdit: false }, fmsSecTask: FmsSecTask.CodeScac },\r\n { text: 'Buying Rate', level: 1, metadata: { index: 12, inlineEdit: false, NoCanada: true }, }\r\n ],\r\n },\r\n {\r\n text: 'Air Shipment', level: 0, metadata: { index: 5, inlineEdit: false },\r\n items: [\r\n { text: 'Airline Code', level: 1, metadata: { index: 5, inlineEdit: false }, fmsSecTask: FmsSecTask.CodeAirLine },\r\n { text: 'Airport Code', level: 1, metadata: { index: 6, inlineEdit: true }, fmsSecTask: FmsSecTask.CodeAirPort },\r\n ],\r\n },\r\n {\r\n text: 'Other Shipment Type', level: 0, metadata: { index: 7, inlineEdit: true }, fmsSecTask: FmsSecTask.CodeOtherOPType\r\n },\r\n {\r\n text: 'AES', level: 0, metadata: { index: 8, inlineEdit: true },\r\n items: [\r\n { text: 'Export Info Code', level: 1, metadata: { index: 8, inlineEdit: true }, fmsSecTask: FmsSecTask.CodeExportInfo },\r\n { text: 'Export License Code', level: 1, metadata: { index: 9, inlineEdit: true }, fmsSecTask: FmsSecTask.CodeExportLic },\r\n { text: 'Schedule B Code', level: 1, metadata: { index: 10, inlineEdit: true }, fmsSecTask: FmsSecTask.CodeScheduleB },\r\n ],\r\n },\r\n {\r\n text: 'Arrival Notice Title', level: 0, metadata: { index: 13, inlineEdit: true }, fmsSecTask: FmsSecTask.CodeANTitle\r\n },\r\n // {\r\n // text: 'Commodity List', level: 0, metadata: { index: 14, inlineEdit: true }, fmsSecTask: FmsSecTask.CodeCommodity\r\n // },\r\n {\r\n text: 'Currency Code', level: 0, metadata: { index: 15, inlineEdit: true }, fmsSecTask: FmsSecTask.CodeCurrency\r\n },\r\n {\r\n text: 'Exchange Rate', level: 0, metadata: { index: 16, inlineEdit: true }, fmsSecTask: FmsSecTask.CodeExchangeRate\r\n },\r\n {\r\n text: 'Memo Title', level: 0, metadata: { index: 17, inlineEdit: true }, fmsSecTask: FmsSecTask.CodeMemoTitle\r\n },\r\n {\r\n text: 'Region Code', level: 0, metadata: { index: 19, inlineEdit: true },\r\n items: [\r\n { text: 'Country Code', level: 1, metadata: { index: 19, inlineEdit: true }, fmsSecTask: FmsSecTask.CodeCountry },\r\n { text: 'State Code', level: 1, metadata: { index: 20, inlineEdit: true }, fmsSecTask: FmsSecTask.CodeState },\r\n { text: 'UN Location Code', level: 1, metadata: { index: 21, inlineEdit: true }, fmsSecTask: FmsSecTask.CodeUNLocation },\r\n ],\r\n },\r\n {\r\n text: 'EDI 315 Code', level: 0, metadata: { index: 22, inlineEdit: true }, fmsSecTask: FmsSecTask.CodeEDI315Code\r\n },\r\n {\r\n text: 'Billing Code', level: 0, metadata: { index: 26, inlineEdit: false }, fmsSecTask: FmsSecTask.CodeBillingCode\r\n },\r\n {\r\n text: 'Account Code', level: 0, metadata: { index: 27, inlineEdit: false }, fmsSecTask: FmsSecTask.CodeAccountCode\r\n },\r\n {\r\n text: 'Account Sub Code', level: 0, metadata: { index: 28, inlineEdit: true }, fmsSecTask: FmsSecTask.CodeAccountSubCode\r\n },\r\n ],\r\n download: [],\r\n report: []\r\n};\r\n\r\nexport function sortingListData(listItemObj: any, listData: any[], setData: any, orderBy: any) {\r\n if (listData.length === 0) {\r\n setData([]);\r\n return;\r\n }\r\n\r\n const findListItem: XCol.XExportColumn = listItemObj.getExportCollection().find((x: XCol.XExportColumn) => x.dataIndex === orderBy.orderBy);\r\n if (findListItem) {\r\n const typeOfOrderByValue = findListItem.type;\r\n const dataArray: (typeof listItemObj)[] = Array.from(listData);\r\n\r\n dataArray.sort((a, b) => {\r\n let valueA = a[orderBy.orderBy];\r\n let valueB = b[orderBy.orderBy];\r\n let compareResult = 0;\r\n\r\n switch (typeOfOrderByValue) {\r\n case XCellType.String:\r\n if (valueA === null) valueA = ''\r\n if (valueB === null) valueB = ''\r\n compareResult = valueA.localeCompare(valueB);\r\n break;\r\n\r\n case XCellType.Double:\r\n compareResult = valueA - valueB;\r\n break;\r\n\r\n case XCellType.Date:\r\n case XCellType.DateTime:\r\n const dateA = new Date(valueA).getTime();\r\n const dateB = new Date(valueB).getTime();\r\n compareResult = dateA - dateB;\r\n break;\r\n\r\n case XCellType.Bool:\r\n case XCellType.StrBool:\r\n compareResult = valueA === valueB ? 0 : valueA ? -1 : 1;\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n\r\n return orderBy.orderByAscending ? compareResult : -compareResult;\r\n });\r\n setData(dataArray);\r\n }\r\n}\r\n\r\n//oriData must have isUpdate Prop.\r\nexport function checkTabIsDirty(listItemObj: any, oriData: any[], curData: any[]) {\r\n //if (oriData.length === 0 && curData.length === 0) return false;\r\n if (oriData.length !== curData.length) return true;\r\n\r\n const dataIndexArray: string[] = listItemObj.getExportCollection().map((x: XCol.XExportColumn) => x.dataIndex);\r\n const updateIndexes: number[] = findUpdateIndexes(curData, element => element.isUpdate);\r\n let isDirty = false;\r\n updateIndexes.forEach(updateIndex => {\r\n for (let j = 0; j < dataIndexArray.length; j++) {\r\n if (oriData[updateIndex][dataIndexArray[j]] !== curData[updateIndex][dataIndexArray[j]]) {\r\n isDirty = true;\r\n break;\r\n }\r\n }\r\n })\r\n return isDirty;\r\n};\r\n\r\nfunction findUpdateIndexes(arr: number[], condition: (element: any) => boolean): number[] {\r\n const indexes: number[] = [];\r\n arr.forEach((element: number, index: number) => {\r\n if (condition(element)) {\r\n indexes.push(index);\r\n }\r\n });\r\n return indexes;\r\n}\r\n\r\nexport interface CarrierInfo {\r\n tbId: number,\r\n code: string,\r\n};\r\n\r\n\r\nfunction ReferenceFiles() {\r\n useFunctionKeys({ onEsc: cancel });\r\n\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n\r\n const getExternalFunctions = useFunction({\r\n callbacks: ['ifmsReferenceFilesSave', 'ifmsReferenceFilesCancel']\r\n });\r\n\r\n const storage = useAppSelector(x => x.storage);\r\n const store = useStore();\r\n\r\n const dispatch = useAppDispatch();\r\n const history = useHistory();\r\n const { goBack } = useJobMenu('Reference Files', constants.operations.standalone, null, true, cleanup);\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const suntekSettings = useSuntekSettings();\r\n\r\n const [selectedMenuIndex, _setSelectedMenuIndex,,selectedMenuIndexRef] = useTypedFastStorage('referenceFilesSelected', 0);\r\n const lastSelectedMenuIndexRef = useRef(0);\r\n const selectedSideMenuIndex = useRef(0);\r\n const [carrierBuyRate, setCarrierBuyRate,] = useTypedFastStorage('carrierBuyRate', null);\r\n const [hideTab, setHideTab,] = useTypedFastStorage('hideTab', true);\r\n\r\n const selectedSideMenuClassName = !appContext.useDarkMode ? 'ifms-side-menu-item-selected-onclick' : 'ifms-side-menu-item-selected-onclick-darkmode';\r\n const url = `${history.location.pathname}${history.location.search}`;\r\n\r\n useEffect(() => {\r\n initilizeCheckMenuArray();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n const findReferenceFilesSideMenu = document.getElementById(`Reference Files-ifms-side-menu-${selectedSideMenuIndex.current}`);\r\n if (findReferenceFilesSideMenu)\r\n findReferenceFilesSideMenu.className = selectedSideMenuClassName;\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [selectedSideMenuIndex, hideTab, appContext.useDarkMode])\r\n\r\n if (suntekSettings.company?.country === 'CANADA' || hideTab) {\r\n menus.job = menus.job.map(job => {\r\n const filteredItems = job.items?.filter(f => !f.metadata.NoCanada);\r\n const newJob = {\r\n ...job,\r\n items: filteredItems\r\n }\r\n return newJob;\r\n })\r\n }\r\n if (!hideTab) {\r\n menus.job = menus.job.map(job => {\r\n const addItem = { text: 'Buying Rate', level: 1, metadata: { index: 12, inlineEdit: false, NoCanada: true }, }\r\n if (job.text === 'Ocean Shipment') {\r\n const findIndex = job.items?.findIndex(f => f.metadata.index === 12) ?? -1;\r\n if (findIndex < 0) {\r\n job.items?.push(addItem);\r\n }\r\n }\r\n const newJob = {\r\n ...job,\r\n items: job.items\r\n }\r\n return newJob;\r\n })\r\n initilizeCheckMenuArray();\r\n }\r\n\r\n function initilizeCheckMenuArray() {\r\n checkLastSelectedMenu.allMenuIndexArray.splice(0);\r\n checkLastSelectedMenu.lastSelectedIndexArray.splice(0);\r\n\r\n for (let index = 0; index < menus.job.length; index++) {\r\n if (menus.job[index].items)\r\n menus.job[index].items?.map(x => checkLastSelectedMenu.allMenuIndexArray.push({ menuIndex: x.metadata.index, sideMenuIndex: index }));\r\n else\r\n checkLastSelectedMenu.allMenuIndexArray.push({ menuIndex: menus.job[index].metadata.index, sideMenuIndex: index });\r\n\r\n checkLastSelectedMenu.lastSelectedIndexArray.push({ lastSelectedItemIndex: menus.job[index].metadata.index, sideMenuIndex: index })\r\n }\r\n }\r\n\r\n function setSelectedMenuIndex(i: number) {\r\n selectedMenuIndexRef.current = i;\r\n _setSelectedMenuIndex(i);\r\n resetSelectedButton(i);\r\n }\r\n\r\n const currentScreenHasInlineEditing = useRef(true); // Original B/L Type\r\n const currentScreenTitle = useRef('Original B/L Type'); // Original B/L Type\r\n\r\n function cancel() {\r\n const modals = document.querySelectorAll('[class^=\"ReactModal__Content\"]');\r\n if (modals.length > 0) {\r\n return false;\r\n }\r\n\r\n goBack();\r\n return true;\r\n }\r\n\r\n function cleanup() {\r\n Object.keys(fastStorage).filter(k => k.includes(url)).forEach(k => delete fastStorage[k]);\r\n\r\n const storeStorage = store.getState().storage;\r\n const keysToDelete = Object.keys(storeStorage).filter(key => \r\n key.includes(url)\r\n );\r\n keysToDelete.forEach(key => {\r\n dispatch(removeFromStorage(key));\r\n });\r\n }\r\n\r\n async function onMenuItemClicked(item: IfmsConfigMenuItem) {\r\n const menuItemIndex: number = item.metadata.index;\r\n if (menuItemIndex !== selectedMenuIndexRef.current) {\r\n if (fastStorage['ifms-referenceFiles-haschanges']) {\r\n // if (currentScreenHasInlineEditing.current) {\r\n // await doShowGlobalOkDialog(

Please save '{currentScreenTitle.current}' before going to next reference files

);\r\n\r\n // let tabChanged = false;\r\n // if (menus.job[selectedSideMenuIndex.current].items) {\r\n // const index = menus.job[selectedSideMenuIndex.current].items?.findIndex(x => x.metadata.index === menuItemIndex); \r\n // tabChanged = index === -1; \r\n // } else {\r\n // tabChanged = menus.job[selectedSideMenuIndex.current].metadata.index !== menuItemIndex;\r\n // }\r\n // if (tabChanged) {\r\n // const alreadySettingsMenuOpend = document.querySelectorAll(`.${selectedSideMenuClassName}`);\r\n // for (let i = 0; i < alreadySettingsMenuOpend.length; ++i) {\r\n // alreadySettingsMenuOpend[i].className = 'ifms-side-menu-item';\r\n // }\r\n // const submenuDom = document.getElementById(`Reference Files-ifms-side-menu-${selectedSideMenuIndex.current}`) as HTMLElement;\r\n // if (submenuDom)\r\n // submenuDom.className = selectedSideMenuClassName;\r\n // }\r\n // return;\r\n // }\r\n\r\n const doSave = await showGlobalYesNoDialog(\r\n
\r\n There are unsaved changes. Do you want to save?\r\n
\r\n ,false, 1, true);\r\n\r\n const externalFunctions = getExternalFunctions();\r\n\r\n if (doSave) {\r\n await externalFunctions.ifmsReferenceFilesSave();\r\n } else {\r\n await externalFunctions.ifmsReferenceFilesCancel();\r\n }\r\n }\r\n setSelectedMenuIndex(getLastSelectedItemIndex(menuItemIndex));\r\n if (item.items)\r\n currentScreenHasInlineEditing.current = item.items.find(x => x.metadata.index === selectedMenuIndexRef.current)?.metadata.inlineEdit;\r\n else\r\n currentScreenHasInlineEditing.current = !!item.metadata?.inlineEdit;\r\n\r\n currentScreenTitle.current = item.text as string;\r\n selectedMenuIndexRef.current = getLastSelectedItemIndex(menuItemIndex);\r\n fastStorage['ifms-referenceFiles-haschanges'] = false;\r\n }\r\n }\r\n\r\n\r\n let grents = appContext.securityGrants;\r\n //if(menus && menus.job) menus.job = MenuFilterGrents(menus.job, grents);\r\n const userMenus = _.cloneDeep(menus);\r\n if (userMenus && userMenus.job) userMenus.job = MenuFilterGrents(userMenus.job, grents, appContext);\r\n\r\n let buttonNameArray: {\r\n name: any,\r\n index: number,\r\n item: IfmsConfigMenuItem\r\n }[] = [];\r\n\r\n for (let i = 0; i < userMenus.job.length; i++) {\r\n const items = userMenus.job[i].items;\r\n if (items && items?.length > 0) {\r\n for (let j = 0; j < items.length; j++) {\r\n const item = items[j];\r\n if (item.metadata.index === selectedMenuIndex) {\r\n items.forEach(x => {\r\n\r\n buttonNameArray.push({ name: x.text, index: x.metadata.index, item: x });\r\n\r\n });\r\n }\r\n else\r\n if (buttonNameArray.length > 0) {\r\n selectedSideMenuIndex.current = i;\r\n break;\r\n }\r\n\r\n }\r\n }\r\n else {\r\n if (userMenus.job[i].metadata.index === selectedMenuIndex)\r\n buttonNameArray.push({ name: userMenus.job[i].text, index: userMenus.job[i].metadata.index, item: userMenus.job[i] });\r\n }\r\n if (buttonNameArray.length > 0) {\r\n selectedSideMenuIndex.current = i;\r\n break;\r\n }\r\n }\r\n\r\n function resetSelectedButton(index: number) {\r\n const lastIndex = selectedMenuIndexRef.current ?? 0;\r\n if (lastIndex !== index) return;\r\n const otherElement = document.getElementsByClassName('e-settings-btn-selected');\r\n for (let i = 0; i < otherElement.length; i++) {\r\n otherElement[i].className = 'e-settings-btn';\r\n }\r\n const clickElement = document.getElementById(`settings-btn-${index}`) as HTMLElement;\r\n clickElement.classList.add('e-settings-btn-selected');\r\n }\r\n\r\n function settingsMenuClick(index: number, item: IfmsConfigMenuItem) {\r\n lastSelectedMenuIndexRef.current = index;\r\n\r\n const menuIndexData = checkLastSelectedMenu.allMenuIndexArray.find(x => x.menuIndex === index);\r\n if (menuIndexData) {\r\n const lastSelectedIndexData = checkLastSelectedMenu.lastSelectedIndexArray.find(x => x.sideMenuIndex === menuIndexData.sideMenuIndex);\r\n if (lastSelectedIndexData) _.set(lastSelectedIndexData, 'lastSelectedItemIndex', index);\r\n }\r\n\r\n resetSelectedButton(index);\r\n onMenuItemClicked(item);\r\n }\r\n\r\n function getLastSelectedItemIndex(index: number): number {\r\n const sideMenuIndex = checkLastSelectedMenu.allMenuIndexArray.find(x => x.menuIndex === index).sideMenuIndex;\r\n const lastSelectedItemIndex = checkLastSelectedMenu.lastSelectedIndexArray.find(x => x.sideMenuIndex === sideMenuIndex).lastSelectedItemIndex;\r\n const isNotChangeTabMenu = lastSelectedItemIndex === index;\r\n return isNotChangeTabMenu ? index : lastSelectedItemIndex;\r\n }\r\n\r\n function getTabLabel(index: number, label: string) {\r\n let filter = <>;\r\n\r\n const otherStorageKey = `filter-${FilterStorageVersion}-${url}-${index}`;\r\n const screenFilter = storage[otherStorageKey];\r\n \r\n if (!isFilterObjectEmpty(screenFilter)) {\r\n filter =\r\n (\r\n
\r\n \r\n
\r\n );\r\n }\r\n \r\n return (\r\n
\r\n
\r\n {label}\r\n
\r\n {filter}\r\n
\r\n );\r\n }\r\n \r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n {/* child windows can inject content here */}\r\n \r\n
\r\n {/*
*/}\r\n
\r\n {/*
\r\n \r\n
*/}\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default ReferenceFiles;\r\n","export class CargoEventName {\r\n // Booking Events\r\n static readonly FmsBooking: string = \"booking\";\r\n\r\n // Transport, Raw Events\r\n static readonly EmptyOut: string = \"empty_out\";\r\n static readonly FullIn: string = \"full_in\";\r\n static readonly PositionedIn: string = \"positioned_in\";\r\n static readonly PositionedOut: string = \"positioned_out\";\r\n static readonly VesselLoaded: string = \"vessel_loaded\";\r\n static readonly VesselDeparted: string = \"vessel_departed\";\r\n static readonly TransShipArrived: string = \"transshipment_arrived\";\r\n static readonly TransShipDischarged: string = \"transshipment_discharged\";\r\n static readonly TransShipLoaded: string = \"transshipment_loaded\";\r\n static readonly TransShipDeparted: string = \"transshipment_departed\";\r\n static readonly FeederArrived: string = \"feeder_arrived\";\r\n static readonly FeederDischarged: string = \"feeder_discharged\";\r\n static readonly FeederLoader: string = \"feeder_loaded\";\r\n static readonly FeederDeparted: string = \"feeder_departed\";\r\n static readonly VesselArrived: string = \"vessel_arrived\";\r\n static readonly VesselBerthed: string = \"vessel_berthed\";\r\n static readonly VesselDischarged: string = \"vessel_discharged\";\r\n static readonly FmsDlvrToCfs: string = \"cfs_delivered\";\r\n static readonly FullOut: string = \"full_out\";\r\n static readonly EmptyIn: string = \"empty_in\";\r\n static readonly RailLoaded: string = \"rail_loaded\";\r\n static readonly RailDeparted: string = \"rail_departed\";\r\n static readonly RailArrived: string = \"rail_arrived\";\r\n static readonly RailUnloaded: string = \"rail_unloaded\";\r\n\r\n // Container Updated Events\r\n static readonly PickAvail: string = \"available_for_pickup\";\r\n static readonly PickLfd: string = \"pickup_lfd\";\r\n static readonly TerminalFee: string = \"fees_at_pod_terminal\";\r\n static readonly TerminalHold: string = \"holds_at_pod_terminal\";\r\n static readonly PodTml: string = \"pod_terminal\";\r\n static readonly PickAppointment: string = \"pickup_appointment_at\";\r\n\r\n // Shipment Estimated Arrival Events\r\n static readonly EtaChange: string = \"eta_change\";\r\n\r\n // Container POD Terminal Changed Event\r\n static readonly PodTmlChanged: string = \"pod_terminal_changed\";\r\n\r\n // Raw Events\r\n static readonly DestArrived: string = \"arrived_at_destination\";\r\n static readonly Delivered: string = \"delivered\";\r\n static readonly VgmReceived: string = \"vgm_received\";\r\n static readonly CarrierRls: string = \"carrier_release\";\r\n static readonly CustomsRls: string = \"customs_release\";\r\n}","import { useContext } from 'react';\r\nimport ApplicationContext from '../ApplicationContext';\r\nimport { SystemSettings } from '../ifmsTypes';\r\n\r\nexport interface ExtendedSystemSettings extends SystemSettings {\r\n userId: string|null,\r\n};\r\n\r\nexport default function useSystemSettings():ExtendedSystemSettings {\r\n const appContext = useContext(ApplicationContext);\r\n \r\n const fromSettings = appContext?.systemSettings ? appContext.systemSettings : {};\r\n const userId = appContext && appContext.user ? appContext.user.id : null;\r\n\r\n return {\r\n ...fromSettings,\r\n userId,\r\n };\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABsCAYAAACVWrdDAAAACXBIWXMAAC4jAAAuIwF4pT92AAAHJ2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMi0wNC0wOFQxMjowMToxNiswMjowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjItMDQtMTRUMTQ6NTc6NTYrMDI6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjItMDQtMTRUMTQ6NTc6NTYrMDI6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NmIxOTQwYjYtMmYyMi1kMzQ3LWI1YzktYzgzZTRjYWZlMmNmIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6NTZiMWZhNTQtNjc4OC04ZTRlLTlmOWMtZTIxZWIyZGU2OTU3IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YmFhMDFhZmMtNTVlMy1lNzQ3LTgyZjEtNDc3MjQzMWNjYjdhIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiYWEwMWFmYy01NWUzLWU3NDctODJmMS00NzcyNDMxY2NiN2EiIHN0RXZ0OndoZW49IjIwMjItMDQtMDhUMTI6MDE6MTYrMDI6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMy4wIChXaW5kb3dzKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0YzRiMjY0My0zYmIxLWFjNDQtYjY1NC0yOWFiYTc1ZTA4ZDUiIHN0RXZ0OndoZW49IjIwMjItMDQtMTJUMTI6NTg6MzcrMDI6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMy4wIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NmIxOTQwYjYtMmYyMi1kMzQ3LWI1YzktYzgzZTRjYWZlMmNmIiBzdEV2dDp3aGVuPSIyMDIyLTA0LTE0VDE0OjU3OjU2KzAyOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjMuMCAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bcr44wAAAixJREFUeJzt3UFy4jAQQNE4xZFy/xPkTs4iJcqAjR2i7t/C/61mkclI/S1DIMVM8zx/iPNJL+DsLtc/fU3gMp767xGtubHv321ddr6M0vO+uPxe5WJUCpDxYFQuRoUA1LOA9u+iIegH4QpPwdA1UCegwuCXsNNAnIBqw19KX1t2gMrDb1LXmBlghOE3aWvNCjDS8JuUNWcEGHH4TfjaowOMPPwmdA+RAd5h+E3YXugfxE4vKsA7Xf1NyJ4iArzj8Jvue/MWBOv9WlDG1b/3ek30GuYDaziswsvRRx3ddPu6IW6FIwR49WobIkTPx4CIjfY46hEvMXfba+UH4Z6DK/H245qqASIGVjJCrwA9bz+Rg+r5vbvsueoJOI1qATJuE6VuRdUCnE6lAJlXZplTUCnAKRkAZgCYAWAGgBkAZgCYAWAGgBkAZgCYAWAGgBkAZgCYAWAGgB39zbjsjxEYxd6ad995exZgxIFUs/vZFFu3IIff3+pM1wI4/DgPs70P4PDj3czYZ0GwZQCv/jzXWXsCYAaAGQBmAJgBYAaAGQBmAJgBYAaAGQBmAJgBYAaAGQBmAJgBYAaAGQBmAJgBYAaAGQBmAJgBYAaAGQBmAJgBYAaAGQBmAJgBYAaAGQBmAJgBYAaAGQBmAJgBYAaAGQBmAJgBYAaALQOU+a+dTuA6a08A7D6ApyDezYzXToAR4jzMdusWZIT+/vS5oZt/QS/ZnOU0z35WH8lnQbAfchw71bh0gwoAAAAASUVORK5CYII=\"","// const fmsGlobal = getFmsGlobal();\r\n\r\nimport {getTbNameByJobName, JobNames} from \"../../../../../framework.core/JobNames\";\r\nimport React, {MutableRefObject, useContext, useEffect, useMemo, useState} from \"react\";\r\nimport {useTypedFastStorage} from \"../../../../../hooks/useFastStorage\";\r\nimport TextBox from \"../../../../../ui/TextBox\";\r\nimport InlineInputControlRow from \"../../../../../ui/layout/InlineInputControlRow\";\r\nimport SecondaryButton from \"../../../../../ui/SecondaryButton\";\r\nimport {IGeneralWithList} from \"../../../../../ifmsTypes\";\r\nimport Fieldset from \"../../../../common/Fieldset\";\r\nimport RadioButton from \"../../../../../ui/RadioButton\";\r\nimport Select from \"../../../../../ui/Select\";\r\nimport LeftRightSplit from \"../../../../../ui/LeftRightSplit\";\r\nimport Date from \"../../../../../ui/Date\";\r\nimport LabeledControl from \"../../../../../ui/LabeledControl\";\r\nimport Number from \"../../../../../ui/Number\";\r\nimport BranchDropDown from \"../../../../../uiControls/BranchDropDown\";\r\nimport ApplicationContext from \"../../../../../ApplicationContext\";\r\nimport useSystemSettings from \"../../../../../hooks/useSystemSettings\";\r\nimport { dateTextToIso } from \"../../../../../dateUtils\";\r\nimport JobListViewContext from \"../../../../common/JobListViewContext\";\r\nimport { JournalLedgerListItem } from \"../../../../../fms.data/models/JournalLedgerListItem\";\r\nimport { SearchModelBase } from \"../../../../../fms.data/models/SearchModelBase\";\r\nimport { NavigationType, openNewPage } from \"../../../../../util/navigationHelpers\";\r\nimport { useHistory } from \"react-router\";\r\nimport useGlobalOkDialog from \"../../../../../hooks/useGlobalOkDialog\";\r\nimport { initialSearch } from \"../../../../../filtering\";\r\n\r\ninterface JournalStorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\ninterface JournalViewParams {\r\n id: string | undefined,\r\n onPopupClose?: () => void,\r\n jobName: JobNames\r\n};\r\n\r\ninterface JournalLoadedDetailsViewParams {\r\n journal: IGeneralWithList,\r\n journalRef: MutableRefObject,\r\n setJournal: (x: Partial) => void,\r\n onPopupClose?: () => void,\r\n jobName: JobNames,\r\n tbId: string | undefined,\r\n};\r\n\r\nfunction getJournalStorageKeys(jobName: JobNames): JournalStorageKeys {\r\n return {modelStorage: `search-journal-${jobName}`}\r\n}\r\n\r\nconst newIGeneralWithList = {list: []};\r\n\r\nfunction JournalImpl(params: JournalViewParams) {\r\n const {jobName, id} = params;\r\n const {modelStorage} = getJournalStorageKeys(jobName);\r\n\r\n const [inStorage, setInStorage, removeJournalFromStorage, journalRef] = useTypedFastStorage(modelStorage, newIGeneralWithList);\r\n\r\n useEffect(() => {\r\n initialize();\r\n return () => removeJournalFromStorage()\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n async function loadExisting() {\r\n setInStorage({ searchBy: 'number', type: 0, branch: 'ALL', dateFrom: '', dateTo: '', seqFrom: '', seqTo: '' });\r\n }\r\n\r\n async function initialize() {\r\n await loadExisting();\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction JournalInitializedImpl({\r\n journal,\r\n journalRef,\r\n setJournal,\r\n onPopupClose,\r\n jobName,\r\n tbId,\r\n }: JournalLoadedDetailsViewParams) {\r\n const systemSettings = useSystemSettings();\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const history = useHistory();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n \r\n function onChange(change: Partial) {\r\n setJournal(change);\r\n }\r\n\r\n async function onSearch() {\r\n const filterOrderObj:Array = [];\r\n // const search:any = {...initialSearch, version: jobListContext.search.version + 1};\r\n const search:any = {...initialSearch, pageSize: appContext.defaultPageSize};\r\n\r\n switch (journal.searchBy) {\r\n case \"number\":\r\n const apiResult = await appContext.api.getSearchJournalQuery(journal.type, \"\", journal.number);\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(apiResult?.message ?

{apiResult.message}

:

Failure to read

);\r\n }\r\n \r\n search.general1 = 'mblId';\r\n search.generalText1 = apiResult.result?.item2.toString()??\"0\";\r\n filterOrderObj.push({ \r\n columnId: 'mblId', slot: 'general1', type: 'general', label: 'Master Id', value: search.generalText1 });\r\n\r\n const tbName = getTbNameByJobName(apiResult.result?.item1)?.toUpperCase()||'';\r\n search.general2 = 'mtbName';\r\n search.generalText2 = tbName.length > 10 ? tbName.substring(0, 10): tbName;\r\n filterOrderObj.push({\r\n columnId: 'mtbName', slot: 'general2', type: 'general', label: 'Master Table Name', value: search.generalText2 });\r\n \r\n break;\r\n case \"date\":\r\n search.date = 'postDate';\r\n search.dateFrom = journal.dateFrom;\r\n search.dateTo = journal.dateTo;\r\n filterOrderObj.push({ \r\n columnId: 'postDate', slot: 'date', type: 'date', label: 'Date', value: `${journal.dateFrom} ~ ${journal.dateTo}` });\r\n break;\r\n case \"updateDate\":\r\n search.date = 'updateDate';\r\n search.dateFrom = journal.dateFrom;\r\n search.dateTo = journal.dateTo;\r\n filterOrderObj.push({ \r\n columnId: 'updateDate', slot: 'date', type: 'date', label: 'Update Date', value: `${journal.dateFrom} ~ ${journal.dateTo}` });\r\n break;\r\n case \"dateSeq\":\r\n search.date = 'postDate';\r\n search.dateFrom = journal.dateFrom;\r\n search.dateTo = journal.dateTo;\r\n filterOrderObj.push({ \r\n columnId: 'postDate', slot: 'date', type: 'date', label: 'Date', value: `${journal.dateFrom} ~ ${journal.dateTo}` });\r\n\r\n search.number = 'seq';\r\n search.numberFrom = journal.seqFrom;\r\n search.numberTo = journal.seqTo;\r\n filterOrderObj.push({ \r\n columnId: 'seq', slot: 'number', type: 'number', label: 'Seq', value: `${journal.seqFrom} ~ ${journal.seqTo}` });\r\n break;\r\n }\r\n\r\n // Branch를 선택한 경우 Filter 설정\r\n if (systemSettings.enableBranch && journal.branch !== \"ALL\") {\r\n if ([\"date\", \"updateDate\", \"dateSeq\"].includes(journal.searchBy)) {\r\n search.general1 = 'branch';\r\n search.generalText1 = journal.branch;\r\n filterOrderObj.push({ \r\n columnId: 'branch', slot: 'general1', type: 'general', label: 'BR', value: search.generalText1 });\r\n } else {\r\n search.general3 = 'branch';\r\n search.generalText3 = journal.branch;\r\n filterOrderObj.push({ \r\n columnId: 'branch', slot: 'general3', type: 'general', label: 'BR', value: search.generalText3 });\r\n }\r\n }\r\n\r\n const searchModel = JournalLedgerListItem.calculateSearchParameters(search, JournalLedgerListItem.MapSearchFields);\r\n jobListContext.setFilterForSearchModel('/common/joblistview/acJournal/accounting', searchModel as SearchModelBase, filterOrderObj);\r\n openNewPage(history, `/common/joblistview/acJournal/accounting`, NavigationType.newPage);\r\n\r\n if (onPopupClose) onPopupClose();\r\n }\r\n\r\n const DateComponent = useMemo(() => {\r\n return (\r\n \r\n
\r\n {\r\n if (!journal.dateTo && dateFrom && dateTextToIso(dateFrom)) {\r\n onChange({ dateTo: dateFrom})\r\n }\r\n onChange({dateFrom})\r\n }} \r\n />\r\n }\r\n right={\r\n onChange({dateTo})} />\r\n }\r\n />\r\n }\r\n />\r\n
\r\n
\r\n )\r\n }, [journal.dateFrom, journal.dateTo]);\r\n\r\n const enableSearch = useMemo(() => {\r\n let result = false;\r\n switch (journal.searchBy) {\r\n case \"number\":\r\n if (journal.number) result = true;\r\n break;\r\n case \"date\":\r\n case \"updateDate\":\r\n if (journal.dateFrom && journal.dateTo) result = true;\r\n break;\r\n case \"dateSeq\":\r\n if (journal.dateFrom && journal.dateTo && journal.seqFrom && journal.seqTo) result = true;\r\n break;\r\n }\r\n return result;\r\n }, [journal.searchBy, journal.number, journal.dateFrom, journal.dateTo, journal.seqFrom, journal.seqTo]);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
onChange({searchBy: 'number'})}/>
\r\n
onChange({searchBy: 'date'})}/>
\r\n
onChange({searchBy: 'dateSeq'})}/>
\r\n
onChange({searchBy: 'updateDate'})}/>
\r\n
\r\n
\r\n
\r\n
\r\n {systemSettings.enableBranch ?\r\n \r\n
\r\n onChange({ branch })}\r\n disabled={false}\r\n addAll\r\n />\r\n
\r\n
:
\r\n }\r\n {journal.searchBy === 'number' && (\r\n
\r\n \r\n
\r\n }*/}\r\n {(inputProps: any) => }\r\n \r\n );\r\n\r\n}\r\n\r\nfunction DateTime({\r\n value,\r\n onChange = () => {},\r\n disabled = false,\r\n dateOnly = false,\r\n dateId = undefined,\r\n timeId = undefined,\r\n onTimeTabNext = undefined,\r\n hideIcon = true,\r\n blackMode = false,\r\n noborder = false,\r\n name=undefined,\r\n showPlaceHolder = true,\r\n}: {\r\n value: string|null|undefined,\r\n onChange: (x:string|null) => void,\r\n disabled?: boolean,\r\n dateOnly?: boolean,\r\n dateId?: string|undefined,\r\n timeId?: string|undefined,\r\n onTimeTabNext?: (() => boolean)|undefined,\r\n hideIcon?: boolean,\r\n blackMode?: boolean,\r\n noborder?: boolean,\r\n name?: string|undefined,\r\n showPlaceHolder?: boolean,\r\n}) {\r\n const time = getTime(value);\r\n const lTimeId = timeId || _.uniqueId('ifms-datetime-time-');\r\n // type DateHandle = React.ElementRef;\r\n const dateRef = useRef(null);\r\n\r\n function onDateChange(d:string|null) {\r\n if (!d) {\r\n if (!!value) {\r\n onChange(null);\r\n }\r\n } else {\r\n const timeToApply = time ?? '00:00';\r\n const tIndex = d.indexOf('T');\r\n if (tIndex < 0) {\r\n throw new Error('Invalid iso date format: ' + d);\r\n }\r\n const newDateTime = `${d.substring(0, tIndex)}T${timeToApply}`;\r\n onChange(newDateTime);\r\n\r\n const timeEl = document.getElementById(lTimeId);\r\n if (timeEl) {\r\n timeEl.focus();\r\n if (dateRef && dateRef.current) {\r\n dateRef.current.setOpen(false);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function onTimeChange(t:string|null) {\r\n if (!value) {\r\n onChange(null);\r\n return;\r\n }\r\n\r\n const timeToApply = t ?? '00:00';\r\n const tIndex = value.indexOf('T');\r\n if (tIndex < 0) {\r\n throw new Error('Invalid iso date format: ' + value);\r\n }\r\n\r\n const newDateTime = `${value.substring(0, tIndex)}T${timeToApply}`;\r\n onChange(newDateTime);\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n );\r\n}\r\n\r\nDateTime.defaultProps = {\r\n onChange: () => {},\r\n disabled: false,\r\n dark: false,\r\n dateOnly: false,\r\n hideIcon: true,\r\n blackMode: false,\r\n noborder: false,\r\n};\r\n\r\nDateTime.propTypes = {\r\n dateId: PropTypes.string,\r\n timeId: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n value: PropTypes.string,\r\n disabled: PropTypes.bool.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n dateOnly: PropTypes.bool.isRequired,\r\n onTimeTabNext: PropTypes.func,\r\n hideIcon: PropTypes.bool.isRequired,\r\n blackMode: PropTypes.bool.isRequired,\r\n noborder: PropTypes.bool.isRequired,\r\n};\r\n\r\n\r\nexport default DateTime;\r\n","import './buttons.css';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useContext, useState } from 'react';\r\nimport ApplicationContext from '../ApplicationContext';\r\nimport useGlobalYesNoDialog from '../hooks/useGlobalYesNoDialog';\r\nimport postal from 'postal';\r\nimport fastStorage from '../fastStorage';\r\nimport { useHistory } from 'react-router';\r\nimport _ from 'lodash';\r\n\r\nconst ExtraSmallStyle:React.CSSProperties = {\r\n height: '18px',\r\n fontSize: '10px',\r\n padding: '0px 10px',\r\n};\r\n\r\nconst SmallStyle:React.CSSProperties = {\r\n height: '20px',\r\n fontSize: '11px',\r\n padding: '1px 12px',\r\n};\r\n\r\nconst RegularStyle:React.CSSProperties = {\r\n height: '22px',\r\n fontSize: '11px',\r\n padding: '2px 10px',\r\n //lineHeight: '12px'\r\n};\r\n\r\nconst LargeStyle:React.CSSProperties = {\r\n height: '32px',\r\n fontSize: '16px',\r\n padding: '2px 10px 4px',\r\n};\r\n\r\nexport type IfmsButtonProps = {\r\n baseClass: string,\r\n size: 'regular'|'small'|'large'|'extrasmall',\r\n bold?: boolean,\r\n style: React.CSSProperties|null,\r\n focusable?: boolean,\r\n skipTableCheck?: boolean,\r\n onTabNext?: ((e:React.KeyboardEvent) => boolean)|undefined,\r\n onTabPrevious?: ((e:React.KeyboardEvent) => boolean)|undefined,\r\n hoverIcon?: string,\r\n icon?: string,\r\n disabledIcon?: string,\r\n iconHeight?: string,\r\n preventDuplicateAction?: boolean,\r\n // All other props\r\n [x: string]: any\r\n};\r\n\r\nconst IfmsButton = React.forwardRef(({\r\n baseClass,\r\n size,\r\n bold = false,\r\n style,\r\n children,\r\n skipTableCheck = false,\r\n focusable = undefined,\r\n onTabNext = undefined,\r\n onTabPrevious = undefined,\r\n hoverIcon = '',\r\n icon = '',\r\n disabledIcon = '',\r\n iconHeight = '20px',\r\n preventDuplicateAction = undefined,\r\n ...other\r\n}, ref) => {\r\n const channel = postal.channel('ifms');\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const appContext = useContext(ApplicationContext);\r\n const history = useHistory();\r\n const [isMouseOver, setIsMouseOver] = useState(false);\r\n \r\n let additionalStyle:React.CSSProperties = !!style ? {...style} : {};\r\n if ( size === 'small') {\r\n additionalStyle = !!style ? {...SmallStyle, ...style} : SmallStyle;\r\n } else if ( size === 'extrasmall') {\r\n additionalStyle = !!style ? {...ExtraSmallStyle, ...style} : ExtraSmallStyle;\r\n } else if ( size === 'regular') {\r\n additionalStyle = !!style ? {...RegularStyle, ...style} : RegularStyle;\r\n } else if ( size === 'large') {\r\n additionalStyle = !!style ? {...LargeStyle, ...style} : LargeStyle;\r\n }\r\n\r\n if(bold)\r\n additionalStyle = {...additionalStyle, fontWeight : 'bold'}\r\n\r\n let buttonClassName = baseClass;\r\n\r\n const { onClick, className, disabled, ...remainingProps } = other;\r\n\r\n if (focusable && !disabled) {\r\n buttonClassName = `${buttonClassName} ${'ifms-focusable-button ifms-tabable ifms-tabable-active'}`;\r\n }\r\n\r\n if (className) {\r\n buttonClassName = `${buttonClassName} ${className}`;\r\n }\r\n\r\n if(appContext.useDarkMode){\r\n if(buttonClassName.includes('ifms-focusable-button')){\r\n buttonClassName = buttonClassName.replace('ifms-focusable-button', 'ifms-focusable-button-darkmode')\r\n }\r\n\r\n if(buttonClassName.includes('ifms-gray-tab-button')){\r\n buttonClassName = buttonClassName.replace('ifms-gray-tab-button', 'ifms-gray-tab-button-darkmode')\r\n }\r\n else if(buttonClassName.includes('ifms-black-inverse-button')){\r\n buttonClassName = buttonClassName.replace('ifms-black-inverse-button', 'ifms-black-inverse-button-darkmode')\r\n }\r\n else if(buttonClassName.includes('ifms-primary-button')){\r\n buttonClassName = buttonClassName.replace('ifms-primary-button', 'ifms-deepblue-button')\r\n }\r\n else if(buttonClassName.includes('ifms-secondary-button')){\r\n buttonClassName = buttonClassName.replace('ifms-secondary-button', 'ifms-deepblue-button')\r\n }\r\n else if(buttonClassName.includes('ifms-highlight-button'))\r\n buttonClassName = buttonClassName.replace('ifms-highlight-button', 'ifms-deepblue-button')\r\n }\r\n\r\n const handleMouseEnter = () => {\r\n setIsMouseOver(true);\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n setIsMouseOver(false);\r\n };\r\n \r\n const renderButtonIcon = () => {\r\n if (disabledIcon && disabled) {\r\n return disabledIcon;\r\n }\r\n if (hoverIcon && icon) {\r\n return isMouseOver ? hoverIcon : icon;\r\n }\r\n if (icon)\r\n return icon;\r\n return undefined;\r\n };\r\n\r\n function onKeyDown(e: React.KeyboardEvent) {\r\n const tab = 9;\r\n const spaceBarKey = 32;\r\n const enterKey = 13;\r\n\r\n if (e.keyCode === tab) {\r\n if (e.shiftKey) {\r\n processTabPrevious(e);\r\n } else {\r\n processTabNext(e);\r\n }\r\n }\r\n else if (e.keyCode === spaceBarKey || e.keyCode === enterKey) {\r\n if (onClick) onClickWrapper(undefined);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n function processTabPrevious(e:React.KeyboardEvent) {\r\n if (onTabPrevious) {\r\n const tabProcessed = onTabPrevious(e);\r\n if (tabProcessed) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n function processTabNext(e:React.KeyboardEvent) {\r\n if (onTabNext) {\r\n const tabProcessed = onTabNext(e);\r\n if (tabProcessed) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n const checkNamesInElementTreeLimit = (element: Element | null, targetNames: string[], maxDepth = 3): boolean => {\r\n let currentElement = element;\r\n let depth = 0;\r\n \r\n while (currentElement && depth <= maxDepth) {\r\n if (targetNames.includes(currentElement.getAttribute('name') || '')) return true;\r\n currentElement = currentElement.parentElement;\r\n depth++;\r\n }\r\n \r\n return false;\r\n };\r\n\r\n async function onClickWrapper(e: React.MouseEvent | undefined) {\r\n await onClick(e);\r\n e?.stopPropagation();\r\n e?.preventDefault();\r\n }\r\n\r\n return (\r\n {\r\n if (onClick) {\r\n const element = e.currentTarget as HTMLButtonElement;\r\n if (preventDuplicateAction) element.disabled = true;\r\n await onClickWrapper(e);\r\n if (preventDuplicateAction) element.disabled = false;\r\n }\r\n }}\r\n {...remainingProps}\r\n >\r\n {renderButtonIcon() && (\r\n \r\n )}\r\n {children}\r\n \r\n );\r\n});\r\n\r\nIfmsButton.defaultProps = {\r\n skipTableCheck: false,\r\n bold : false\r\n};\r\n\r\nIfmsButton.propTypes = {\r\n skipTableCheck: PropTypes.bool.isRequired,\r\n baseClass: PropTypes.string.isRequired,\r\n size: PropTypes.oneOf(['regular', 'small', 'large', 'extrasmall']),\r\n bold: PropTypes.bool\r\n};\r\n\r\nexport default React.memo(IfmsButton);\r\n\r\n","import { useEffect, useRef } from 'react';\r\nimport postal from 'postal';\r\n\r\nimport useFunctionKeys from '../../hooks/useFunctionKeys';\r\nimport { dateTextToIso, dateTimeTextToIso } from '../../dateUtils';\r\nimport { getListJobNameByJobName } from '../../components/common/listJobNames';\r\nimport { JobNames } from '../../framework.core/JobNames';\r\nimport { getDateTimeFormat } from '../../globals';\r\nimport { useHistory } from 'react-router';\r\n\r\ninterface IndexByAny {\r\n [key: string]: any,\r\n};\r\n\r\nconst ColumnMemory: IndexByAny = {};\r\nexport const ScrollMemory: IndexByAny = {};\r\n\r\n// Without notification timeout, job list view performance could be affected when selection is changed\r\n// Currently, job list view SmartTable is protected with useMemo so it is safe to turn off the timeout.\r\n// const NotificationTimeout = 200;\r\nconst NotificationTimeout = 0;\r\nconst ClickHandlerNodeDepthSearch = 5;\r\n\r\nfunction updateScrollMemory(tableId: string) {\r\n const tableNode = document.getElementById(tableId) as HTMLElement;\r\n if (!ScrollMemory[tableId]) {\r\n ScrollMemory[tableId] = {};\r\n }\r\n\r\n ScrollMemory[tableId].left = tableNode.scrollLeft;\r\n ScrollMemory[tableId].top = tableNode.scrollTop;\r\n}\r\n\r\nfunction findClickedCell(e: MouseEvent, tableId: string) {\r\n if (!e || !e.target) {\r\n return null;\r\n }\r\n\r\n const cellIdPrefix = `${tableId}-cell-`;\r\n\r\n let node = e.target as Element;\r\n for (let i = 0; i < ClickHandlerNodeDepthSearch; ++i) {\r\n if (!node) {\r\n break;\r\n }\r\n\r\n if (node.id && node.id.startsWith(cellIdPrefix)) {\r\n return node;\r\n }\r\n\r\n node = node.parentNode as Element;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction parseCellLocation(cellId: string) {\r\n const parts = cellId.split('-');\r\n\r\n let column = -1;\r\n let row = -1;\r\n\r\n if (parts.length < 2) {\r\n // Should never happen\r\n return { column, row };\r\n }\r\n column = parseInt(parts[parts.length - 1]);\r\n row = parseInt(parts[parts.length - 2]);\r\n\r\n return { column, row };\r\n}\r\n\r\nfunction parseRowLocation(rowId: string) {\r\n const parts = rowId.split('-');\r\n\r\n let row = -1;\r\n\r\n if (parts.length < 2) {\r\n // Should never happen\r\n return row;\r\n }\r\n row = parseInt(parts[parts.length - 1]);\r\n\r\n return row;\r\n}\r\n\r\nfunction scrollCellIntoView(tableId: string, cellNode: Element, holdScroll: boolean, ifmsChannel: IChannelDefinition, isListView: boolean) {\r\n if (!ScrollMemory[tableId]) updateScrollMemory(tableId); //Initialize ScrollMemory\r\n\r\n const tableNode = document.getElementById(tableId);\r\n const header = document.getElementById(`${tableId}-header-row`);\r\n if (!tableId || !header || !tableNode) {\r\n return;\r\n }\r\n\r\n const hrect = header.getBoundingClientRect();\r\n const crect = cellNode.getBoundingClientRect();\r\n const prect = (tableNode.parentNode as Element).getBoundingClientRect();\r\n\r\n const { xDelta, yDelta } = isCellScrolledIntoView(tableNode, crect, hrect, prect, tableId, isListView);\r\n\r\n if (tableNode && !holdScroll) {\r\n let scrollToOptions = {\r\n top: tableNode.scrollTop + yDelta,\r\n left: tableNode.scrollLeft + xDelta,\r\n behavior: 'smooth' as ScrollBehavior\r\n }\r\n\r\n tableNode.scrollTo(scrollToOptions);\r\n updateScrollMemory(tableId);\r\n\r\n ScrollMemory[tableId].selectedRowScrollPosition = scrollToOptions.top;\r\n }\r\n else\r\n ScrollMemory[tableId].selectedRowScrollPosition = tableNode.scrollTop;\r\n\r\n // ListView를 처음 들어왔을 때 Y 스크롤을 움직일 필요가 없다면 display row를 재설정 해야함\r\n if (isListView && yDelta === 0 && !ScrollMemory[tableId].forceSetDisplayRows) {\r\n const firstRowgroup = document.querySelector('[role=\"rowgroup\"]');\r\n const rowCount = firstRowgroup?.querySelectorAll('[role=\"row\"]').length ?? 0;\r\n ifmsChannel.publish('ifms.table-setDisplayRow', { rowsLength: rowCount });\r\n }\r\n if (!ScrollMemory[tableId].forceSetDisplayRows) {\r\n ScrollMemory[tableId].forceSetDisplayRows = true;\r\n }\r\n}\r\n\r\n/**\r\n * Page Up, Page Down 키 입력 시 이동할 행 수를 계산하기 위한 함수.\r\n * @param tableId table Id - List Table\r\n * @param row row index\r\n * @param col colIndex\r\n * @param isPageUp PageUp > true / PageDown > false\r\n * @returns \r\n */\r\nfunction pageMoveCellCount(tableId: string, row: number, col: number, isPageUp: boolean = false) {\r\n const tableNode = document.getElementById(tableId);\r\n if (!tableId || !tableNode) {\r\n return 0;\r\n }\r\n const cellId = `${tableId}-cell-${row}-${col}`;\r\n const cell = document.getElementById(cellId);\r\n const crect = cell?.getBoundingClientRect();\r\n const scrollWidth = 18;\r\n\r\n // page up, down시 이동해야 할 row 수를 계산하기 위함.\r\n if (crect) {\r\n // 이동해야 할 row 계산식: 현재 보이는 화면 height / cell height\r\n let totalCount = Math.floor((tableNode.clientHeight - scrollWidth) / crect.height);\r\n\r\n if (!isPageUp) {\r\n let tableAllRows = document.querySelectorAll('[role=\"row\"]');\r\n let lastRow = tableAllRows[tableAllRows.length - 1];\r\n let lastRowIndex = parseRowLocation(lastRow.id);\r\n\r\n // 이동할 위치보다 마지막 row 위치가 더 작으면 이면 마지막 행을 선택하게 함.\r\n if (lastRowIndex < row + totalCount) {\r\n return lastRowIndex - row;\r\n }\r\n } else {\r\n // 이동할 위치보다 row 위치가 더 작으면 첫 행을 선택하게 함.\r\n if (row < totalCount) {\r\n return row;\r\n }\r\n }\r\n\r\n return totalCount;\r\n }\r\n\r\n return 0;\r\n}\r\n\r\n/**\r\n * \r\n * @param tableNode \r\n * @param crect child rectangles - cell. \r\n * @param hrect header rectangles\r\n * @param prect parent rectangles - table div\r\n * @param tableId \r\n * @returns \r\n */\r\nfunction isCellScrolledIntoView(tableNode: Element, crect: DOMRect, hrect: DOMRect, prect: DOMRect, tableId: string, isListView: boolean) {\r\n const scrollWidth = 18;\r\n const listScrollPos = ScrollMemory[tableId]; // 사용자가 스크롤 했던 마지막 scroll position\r\n // x\r\n const xEnd = prect.left + prect.width - scrollWidth;\r\n const xVisible = crect.left >= prect.left && ((crect.left + crect.width) <= xEnd);\r\n // left or right에 cell pos 고정하기 위한 변수\r\n const moveScrollX = isListView && (tableNode.scrollLeft !== (listScrollPos?.left ?? 0));\r\n // memory에 있는 scroll 위치로 이동 시, cell이 보이는지 확인.\r\n const xNotVisibleScrollMemory = prect.left + listScrollPos?.left > crect.left;\r\n\r\n // y\r\n const yStart = prect.top + hrect.height;\r\n const yEnd = prect.top + tableNode.clientHeight;\r\n const yVisible = crect.top >= yStart && (crect.top + crect.height) <= yEnd;\r\n\r\n // tab 이동 후 - top or bottom에 cell 표시가 필요한지 확인하기 위함.\r\n const moveScrollY = isListView && (tableNode.scrollTop !== (listScrollPos?.top ?? 0));\r\n // memory에 있는 scroll 위치로 이동 시, cell이 보이는지 확인.\r\n const yVisibleScrollMemoryBottom = (crect.top + crect.height) <= (yEnd + listScrollPos?.top);\r\n const yNotVisibleScrollMemoryTop = (yStart + listScrollPos?.top) > crect.top;\r\n\r\n let xDelta = 0;\r\n let yDelta = 0;\r\n\r\n if (!xVisible) {\r\n if (moveScrollX) {\r\n if (xNotVisibleScrollMemory)\r\n xDelta = crect.left - prect.left;\r\n else\r\n xDelta = listScrollPos?.left ?? 0;\r\n }\r\n if (prect.left > crect.left) {\r\n xDelta = -Math.abs(prect.left - crect.left);\r\n } else {\r\n xDelta = (crect.left + crect.width) - (prect.left + prect.width - scrollWidth);\r\n }\r\n }\r\n\r\n if (!yVisible) {\r\n if (moveScrollY) {\r\n if (yNotVisibleScrollMemoryTop) {\r\n yDelta = crect.top - yStart - tableNode.scrollTop\r\n }\r\n else if (yVisibleScrollMemoryBottom) {\r\n yDelta = listScrollPos?.top - tableNode.scrollTop\r\n }\r\n else\r\n yDelta = crect.top - prect.top - tableNode.clientHeight + hrect.height - tableNode.scrollTop;\r\n } else if (crect.top < yStart) {\r\n yDelta = -Math.abs(yStart - crect.top);\r\n } else {\r\n yDelta = (crect.top + crect.height) - yEnd;\r\n }\r\n }\r\n\r\n return { xDelta, yDelta };\r\n}\r\n\r\nfunction getDefaultColumnSelectionIndex(tableId: string, tableColumnDefaultFocusHierarchy: Array) {\r\n if (!tableColumnDefaultFocusHierarchy || tableColumnDefaultFocusHierarchy.length <= 0) {\r\n return -1;\r\n }\r\n\r\n const table = document.getElementById(tableId);\r\n if (!table) {\r\n return -1;\r\n }\r\n\r\n for (let i = 0; i < tableColumnDefaultFocusHierarchy.length; ++i) {\r\n const t = tableColumnDefaultFocusHierarchy[i];\r\n const headers = table.querySelectorAll(`[data-column-id='${t}']`);\r\n if (headers && headers.length > 0) {\r\n const header = headers[0];\r\n const parts = header.id.split('-');\r\n if (parts.length > 0) {\r\n return parseInt(parts[parts.length - 1]);\r\n }\r\n }\r\n }\r\n\r\n return -1;\r\n}\r\n\r\nfunction getChildrenTree(x: HTMLElement, result: Array) {\r\n if (!x) {\r\n return;\r\n }\r\n\r\n const children = x.childNodes;\r\n if (children.length <= 0) {\r\n return;\r\n }\r\n\r\n children.forEach(x => {\r\n result.push(x as HTMLElement);\r\n getChildrenTree(x as HTMLElement, result);\r\n });\r\n}\r\n\r\nfunction getCellId(tableId: string, col: number) {\r\n const headerId = `${tableId}-header-${col}`;\r\n const header = document.getElementById(headerId);\r\n return header?.dataset?.columnId;\r\n}\r\n\r\nfunction getCellText(tableId: string, row: number, col: number) {\r\n const cellId = `${tableId}-cell-${row}-${col}`;\r\n const cell = document.getElementById(cellId);\r\n if (!cell) {\r\n return '';\r\n }\r\n\r\n // Check for check mark icons\r\n if (cell.getElementsByClassName('ifms-check-box-icon-true').length > 0 || cell.getElementsByClassName('e-ifms-checkbox').length > 0) {\r\n return true;\r\n }\r\n if (cell.getElementsByClassName('ifms-check-box-icon-false').length > 0 || cell.getElementsByClassName('e-ifms-checkbox-unchecked').length > 0) {\r\n return false;\r\n }\r\n\r\n // Check for date/dateTime\r\n if (cell.getElementsByClassName('ifms-table-date').length > 0) {\r\n const parseResult = dateTextToIso(cell.innerText);\r\n return parseResult.valid ? parseResult.iso : '';\r\n //return '';\r\n }\r\n if (cell.getElementsByClassName('ifms-table-datetime').length > 0) {\r\n const parseResult = dateTimeTextToIso(cell.innerText);\r\n return parseResult.valid ? parseResult.iso : '';\r\n //return '';\r\n }\r\n if (cell.getElementsByClassName('ifms-table-datetimesec').length > 0) {\r\n const parseResult = dateTimeTextToIso(cell.innerText, `${getDateTimeFormat()}:ss`);\r\n return parseResult.valid ? parseResult.iso : '';\r\n //return '';\r\n }\r\n\r\n // Check for customized value (for example custom renderers)\r\n let actualCellValue: string | null = null;\r\n if (cell.dataset?.cellActualValue) {\r\n actualCellValue = cell.dataset.cellActualValue;\r\n }\r\n if (!actualCellValue) {\r\n const childNodes: Array = [];\r\n getChildrenTree(cell, childNodes);\r\n\r\n const childWithActualValue = childNodes.find(x => !!x.dataset?.cellActualValue);\r\n if (childWithActualValue) {\r\n actualCellValue = childWithActualValue.dataset.cellActualValue ?? '';\r\n }\r\n }\r\n\r\n if (actualCellValue) {\r\n return actualCellValue;\r\n }\r\n\r\n if (col === 0 && cell.getElementsByTagName('img')[0]?.id) //status\r\n return cell.getElementsByTagName('img')[0].id === 'blueIcon' ? 'OC' : 'PC'\r\n\r\n return cell.innerText.split('\\n')[0].replace('\\r', '');\r\n}\r\n\r\nexport default function useTableNavigation(\r\n tableId: string,\r\n onRowIndexChanged: any,\r\n onRowDoubleClick: any,\r\n tableColumnDefaultFocusHierarchy: Array,\r\n skipObserver: boolean = false,\r\n dontHighlightCell: boolean = false,\r\n deselectable: boolean = false,\r\n executeSameFuncDoubleClickAndEnter: boolean = false,\r\n onCellRightClick: ((row: number, column: number, node: Element, e:MouseEvent) => void) | undefined = undefined,\r\n initialized: boolean = false,\r\n doNotSetRowBackColor:boolean = false,\r\n) {\r\n const history = useHistory();\r\n const currentUrl = `${history.location.pathname}${history.location.search}`;\r\n \r\n const table = document.getElementById(tableId) as HTMLElement;\r\n\r\n const isListView = tableId?.includes('tbl-list-') || tableId?.includes('batchRecognitionReportTable');\r\n\r\n const channel = postal.channel('ifms-filter');\r\n const iFMSChannel = postal.channel('ifms');\r\n\r\n useFunctionKeys({ onFunction, onEnter: onEnterKey });\r\n\r\n let notifiationTimer: ReturnType | null = null;\r\n\r\n const observer = useRef(null);\r\n const selectedRow = useRef(-1);\r\n const _selectedCol = useRef(ColumnMemory[tableId] >= 0 ? ColumnMemory[tableId] : getDefaultColumnSelectionIndex(tableId, tableColumnDefaultFocusHierarchy));\r\n\r\n let presetSubscription: ISubscriptionDefinition | null = null;\r\n\r\n function subscribeChannels() {\r\n presetSubscription = postal.subscribe({\r\n channel: 'ifms-filter',\r\n topic: 'ifms-filter.filterPreset',\r\n callback: () => onFunction('F5'),\r\n });\r\n }\r\n\r\n function unsubscribeChannels() {\r\n if (presetSubscription) {\r\n postal.unsubscribe(presetSubscription);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n initialize();\r\n\r\n return uninitialize;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [initialized, table]);\r\n\r\n useEffect(() => {\r\n if (isListView && ScrollMemory[tableId])\r\n ScrollMemory[tableId].forceSetDisplayRows = false;\r\n }, [currentUrl])\r\n\r\n function isNotUseStatusSearch() {\r\n if (getSelectedCol() !== 0)\r\n return false;\r\n\r\n const jobNameList: string[] = [];\r\n jobNameList.push(getListJobNameByJobName(JobNames.OELoad) ?? ''); //OE: Load Plan\r\n jobNameList.push(getListJobNameByJobName(JobNames.OEBook) ?? ''); //OE: Booking\r\n jobNameList.push(getListJobNameByJobName(JobNames.OEContainer) ?? ''); //OE: Container Status\r\n jobNameList.push(getListJobNameByJobName(JobNames.OILoad) ?? ''); //OI: Load Plan\r\n jobNameList.push(getListJobNameByJobName(JobNames.OIContainer) ?? ''); //OI: Container Status\r\n jobNameList.push(getListJobNameByJobName(JobNames.SeaQuotation) ?? ''); //OI: Quotation, OE: Quotation\r\n jobNameList.push(getListJobNameByJobName(JobNames.AirQuotation) ?? ''); //AI: Quotation, AE: Quotation\r\n jobNameList.push(getListJobNameByJobName(JobNames.WHRcpt) ?? ''); //OT: W/H Receipt\r\n jobNameList.push(getListJobNameByJobName(JobNames.WHInvenSummary) ?? ''); //Warehousing: Inventory\r\n jobNameList.push(getListJobNameByJobName(JobNames.WHLoc) ?? ''); //Warehousing: Location\r\n jobNameList.push(getListJobNameByJobName(JobNames.WHItem) ?? ''); //Warehousing: Item\r\n jobNameList.push(getListJobNameByJobName(JobNames.WHCustomer) ?? ''); //Warehousing: Customer\r\n jobNameList.push(getListJobNameByJobName(JobNames.WHInvenDetail) ?? ''); //Warehousing: In/Out Activity\r\n jobNameList.push(getListJobNameByJobName(JobNames.Company) ?? ''); //Customer List\r\n jobNameList.push(getListJobNameByJobName(JobNames.BankRecon) ?? ''); //Accounting: Bank Recon\r\n jobNameList.push(getListJobNameByJobName(JobNames.OtQuotation) ?? ''); //OT: Quotation\r\n jobNameList.push(getListJobNameByJobName(JobNames.LogCommunication) ?? ''); //OT: Quotation\r\n jobNameList.push(getListJobNameByJobName(JobNames.LogFax) ?? ''); //Utility: Fax\r\n jobNameList.push(getListJobNameByJobName(JobNames.LogMail) ?? ''); //Utility: Email\r\n jobNameList.push(getListJobNameByJobName(JobNames.LogPrint) ?? ''); //Utility: Print\r\n jobNameList.push(getListJobNameByJobName(JobNames.MemoList) ?? ''); //Utility: Memo/Task\r\n jobNameList.push(getListJobNameByJobName(JobNames.FileAttach) ?? ''); //Utility: Attached File\r\n\r\n\r\n for (let index = 0; index < jobNameList.length; index++) {\r\n if (tableId.includes('oiQuotation')) {\r\n if (jobNameList[index].includes('oeQuotation'))\r\n return true;\r\n }\r\n else if (tableId.includes('aiQuotation')) {\r\n if (jobNameList[index].includes('aeQuotation'))\r\n return true;\r\n }\r\n else if (tableId.includes(jobNameList[index]))\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n const startCell = useRef(null);\r\n const endCell = useRef(null);\r\n\r\n function checkCellSelectArea() {\r\n const selectCellArr = document.querySelectorAll('.data-cell-selected-inner');\r\n if (selectCellArr && selectCellArr.length > 0) {\r\n const cellRange = selectCellArr.length - 1;\r\n\r\n console.log(`startCellId: ${selectCellArr[0].id}`);\r\n console.log(`endCellId: ${selectCellArr[cellRange].id}`);\r\n\r\n const startCellId = selectCellArr[0].id.split('-');\r\n const endCellId = selectCellArr[cellRange].id.split('-');\r\n\r\n startCell.current = { row: parseInt(startCellId[startCellId.length - 2] ?? 0), column: parseInt(startCellId[startCellId.length - 1] ?? 0) };\r\n endCell.current = { row: parseInt(endCellId[endCellId.length - 2] ?? 0), column: parseInt(endCellId[endCellId.length - 1] ?? 0) };\r\n return true;\r\n } else {\r\n startCell.current = null\r\n endCell.current = null\r\n return false;\r\n }\r\n }\r\n\r\n function onFunction(fkey: string) {\r\n if (fkey === \"F5\") {\r\n const columnId = getCellId(tableId, getSelectedCol());\r\n if (columnId && !isNotUseStatusSearch()) {\r\n channel.publish('ifms-filter.preset', { columnId, value: getCellText(tableId, selectedRow.current, _selectedCol.current) });\r\n return true;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n if (fkey === \"C+67\") {\r\n if (checkCellSelectArea()) {\r\n // area로 선택 된 경우, 각 cell의 값을 text1 \\t text2 \\t test3 \\n ... 과 같은 패턴으로 클립보드에 저장해야 함.\r\n var textarea = document.createElement('textarea');\r\n\r\n let startCol = startCell.current.column;\r\n let endCol = endCell.current.column;\r\n let startRow = startCell.current.row;\r\n let endRow = endCell.current.row;\r\n\r\n if (startCol > endCol) {\r\n startCol = endCell.current.column;\r\n endCol = startCell.current.column;\r\n }\r\n\r\n if (startRow > endRow) {\r\n startRow = endCell.current.row;\r\n endRow = startCell.current.row;\r\n }\r\n\r\n let fullText = '';\r\n\r\n for (var i = startRow; i <= endRow; i++) {\r\n for (var j = startCol; j <= endCol; j++) {\r\n let text = getCellText(tableId, i, j)?.toString() ?? \"\";\r\n fullText += text + (j !== endCol ? '\\t' : '');\r\n }\r\n fullText += '\\n';\r\n }\r\n\r\n textarea.value = fullText;\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(textarea);\r\n return true;\r\n\r\n } else {\r\n const columnId = getCellId(tableId, getSelectedCol());\r\n if (columnId) {\r\n const text = getCellText(tableId, selectedRow.current, _selectedCol.current)?.toString() ?? \"\";\r\n if (window.isSecureContext) {\r\n navigator.clipboard.writeText(text)\r\n .then(() => { console.log(\"Copy Success\"); })\r\n .catch(() => { console.log(\"Copy Fail\"); });\r\n return true;\r\n } else {\r\n textarea = document.createElement('textarea');\r\n textarea.value = text;\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(textarea);\r\n return true;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function onEnterKey(evt: KeyboardEvent) {\r\n const modals = document.querySelectorAll('[class^=\"ReactModal__Content\"]');\r\n if (selectedRow.current < 0) return false;\r\n\r\n if (modals.length > 0) {\r\n return false;\r\n }\r\n // Check if event is coming from list filter box. If so ignore it to be handled properly.\r\n if (evt.target) {\r\n const evtNode = evt.target as Element;\r\n if (evtNode && evtNode.id && evtNode.id.startsWith('ifms-filter-')) {\r\n return false;\r\n }\r\n }\r\n //Top Bar Search시 Enter 키 입력했을때 이벤트가 같이 동작하여 막음\r\n const focusEle = document.activeElement;\r\n if (document.getElementById('ifms-search-text') === focusEle) {\r\n return false;\r\n }\r\n\r\n if (executeSameFuncDoubleClickAndEnter && selectedRow.current >= 0) {\r\n onRowDoubleClick(selectedRow.current);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function setSelectedCol(c: any) {\r\n ColumnMemory[tableId] = c;\r\n _selectedCol.current = c;\r\n }\r\n\r\n function getSelectedCol() {\r\n return _selectedCol.current;\r\n }\r\n\r\n function getSelectedRow() {\r\n return selectedRow.current;\r\n }\r\n\r\n function initialize() {\r\n subscribeChannels();\r\n\r\n if (!skipObserver) {\r\n initializeObserver();\r\n }\r\n\r\n document.addEventListener('dblclick', onDoubleClick);\r\n document.addEventListener('click', onClick);\r\n document.addEventListener('contextmenu', onContextMenu);\r\n document.addEventListener('keydown', onKeyDown);\r\n table?.addEventListener('scroll', onScroll);\r\n\r\n }\r\n\r\n function uninitialize() {\r\n unsubscribeChannels();\r\n\r\n document.removeEventListener('dblclick', onDoubleClick);\r\n document.removeEventListener('click', onClick);\r\n document.removeEventListener('contextmenu', onContextMenu);\r\n document.removeEventListener('keydown', onKeyDown);\r\n table?.removeEventListener('scroll', onScroll);\r\n\r\n if (!skipObserver) {\r\n uninitializeObserver();\r\n }\r\n }\r\n\r\n function onDoubleClick(e: MouseEvent): void {\r\n const clickedCell = findClickedCell(e, tableId);\r\n if (clickedCell) {\r\n const { row, column } = parseCellLocation(clickedCell.id);\r\n\r\n doSelectTableCellAndNotify(row, column, true);\r\n\r\n if (onRowDoubleClick) {\r\n onRowDoubleClick(row);\r\n }\r\n }\r\n }\r\n\r\n function onClick(e: MouseEvent) {\r\n const clickedCell = findClickedCell(e, tableId);\r\n if (clickedCell && document.getElementById(tableId)?.contains(e.target as Element)) {\r\n const { row, column } = parseCellLocation(clickedCell.id);\r\n doSelectTableCellAndNotify(row, column, true);\r\n }\r\n }\r\n\r\n function onContextMenu(e: MouseEvent) {\r\n const clickedCell = findClickedCell(e, tableId);\r\n if (clickedCell) {\r\n const { row, column } = parseCellLocation(clickedCell.id);\r\n\r\n doSelectTableCellAndNotify(row, column, true);\r\n\r\n if (onCellRightClick) {\r\n onCellRightClick(row, column, clickedCell, e);\r\n\r\n //Don't allow default browser context menu\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n }\r\n\r\n function onScroll() {\r\n if (isListView) {\r\n updateScrollMemory(tableId)\r\n const selectedRowEle = table.getElementsByClassName('data-row-selected');\r\n\r\n if (selectedRowEle.length === 0) {\r\n setTimeout(() => {\r\n selectTableRow(selectedRow.current, true);\r\n }, 10);\r\n }\r\n }\r\n }\r\n\r\n function onKeyDown(e: KeyboardEvent) {\r\n const eventTarget: Element | null = e.target as (Element | null);\r\n if (eventTarget && eventTarget.classList.contains('ifms-tabable')) {\r\n return;\r\n }\r\n const reactModal = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if ((!reactModal?.contains(table) && reactModal)) return;\r\n\r\n let stopEvent = false;\r\n const columnId = getCellId(tableId, getSelectedCol());\r\n\r\n if (columnId) {\r\n //console.log(e.keyCode);\r\n if (e.ctrlKey && e.keyCode === 67) {\r\n onFunction(\"C+67\");\r\n }\r\n }\r\n\r\n if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\" || e.key === \"ArrowLeft\" || e.key === \"ArrowRight\") {\r\n stopEvent = true;\r\n\r\n if (isListView)\r\n handleKeyNavigation(e.key);\r\n else\r\n navigate(e.key);\r\n }\r\n\r\n else if (e.key === 'Home' && isListView) {\r\n stopEvent = true;\r\n handleKeyNavigation(\"Home\");\r\n }\r\n\r\n else if (e.key === 'End' && isListView) {\r\n stopEvent = true;\r\n handleKeyNavigation(\"End\");\r\n }\r\n\r\n else if (e.key === 'PageUp' && isListView) {\r\n stopEvent = true;\r\n handleKeyNavigation('PageUp')\r\n }\r\n\r\n else if (e.key === 'PageDown' && isListView) {\r\n stopEvent = true;\r\n handleKeyNavigation('PageDown')\r\n }\r\n\r\n if (stopEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n function initializeObserver() {\r\n if (observer && observer.current) {\r\n return;\r\n }\r\n\r\n const targetNode = document.getElementById('ifms-app-content');\r\n if (!targetNode) {\r\n return;\r\n }\r\n\r\n const observerConfig = {\r\n //attributes: true,\r\n childList: true,\r\n subtree: true,\r\n };\r\n\r\n observer.current = new MutationObserver(observe);\r\n observer.current.observe(targetNode, observerConfig);\r\n }\r\n\r\n function uninitializeObserver() {\r\n if (observer && observer.current) {\r\n observer.current.disconnect();\r\n }\r\n }\r\n\r\n function doNotifyRowChanged() {\r\n if (onRowIndexChanged) {\r\n onRowIndexChanged(selectedRow.current);\r\n }\r\n }\r\n\r\n function notifyRowChanged() {\r\n if (!!notifiationTimer) {\r\n clearTimeout(notifiationTimer);\r\n }\r\n doNotifyRowChanged();\r\n //notifiationTimer = setTimeout(doNotifyRowChanged, NotificationTimeout);\r\n }\r\n\r\n function navigate(keyCode: string) {\r\n if (!table || !table.offsetParent) {\r\n // Element is hidden\r\n return;\r\n }\r\n const numberOfHeader = document.getElementById(`${tableId}-header-row`)?.childElementCount;\r\n const rowgroupElements = document.querySelectorAll('[role=\"rowgroup\"]');\r\n let dataLength = 0;\r\n rowgroupElements.forEach(function (rowgroupElement) {\r\n const rowElements = rowgroupElement.querySelectorAll('[role=\"row\"]');\r\n dataLength += rowElements.length;\r\n });\r\n\r\n let newRowIndex = selectedRow.current;\r\n let newColIndex = getSelectedCol();\r\n\r\n if (keyCode === \"ArrowUp\") {\r\n newRowIndex = newRowIndex - 1;\r\n if (newRowIndex < 0) {\r\n return;\r\n }\r\n } else if (keyCode === \"ArrowDown\") {\r\n newRowIndex = newRowIndex + 1;\r\n if (dataLength === newRowIndex) return;\r\n } else if (keyCode === \"ArrowLeft\") {\r\n newColIndex = newColIndex - 1;\r\n } else if (keyCode === \"ArrowRight\") {\r\n newColIndex = newColIndex + 1;\r\n if (numberOfHeader && newColIndex >= numberOfHeader) return;\r\n }\r\n\r\n doSelectTableCellAndNotify(newRowIndex, newColIndex, false);\r\n }\r\n\r\n function checkSelectedRowDisplayed(callback: (result: { index: number, isLastIndex: boolean } | undefined) => void, scrollTopPos: number = -1) {\r\n const waitForSelectedRowDisplayed = (renderCallback: () => void) => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(renderCallback);\r\n });\r\n };\r\n\r\n let returnData: { index: number, isLastIndex: boolean } | undefined = undefined;\r\n const selectedRowEle = table.getElementsByClassName('data-row-selected');\r\n\r\n if (selectedRowEle.length !== 0) {\r\n if (scrollTopPos !== -1) {\r\n table.scrollTo({ top: scrollTopPos });\r\n\r\n waitForSelectedRowDisplayed(() => {\r\n selectTableRow(selectedRow.current);\r\n returnData = getSelectedRowInfo();\r\n callback(returnData);\r\n });\r\n }\r\n else {\r\n returnData = getSelectedRowInfo();\r\n callback(returnData);\r\n }\r\n }\r\n else {\r\n let scrollToOptions = {\r\n top: ScrollMemory[tableId].selectedRowScrollPosition,\r\n }\r\n\r\n table.scrollTo(scrollToOptions);\r\n\r\n waitForSelectedRowDisplayed(() => {\r\n selectTableRow(selectedRow.current);\r\n returnData = getSelectedRowInfo();\r\n callback(returnData);\r\n });\r\n }\r\n\r\n return returnData;\r\n }\r\n\r\n function getSelectedRowInfo() {\r\n const rowgroupElements = document.querySelectorAll('[role=\"rowgroup\"]');\r\n const selectedRow = table.getElementsByClassName('data-cell-selected');\r\n if (selectedRow.length === 0 || rowgroupElements.length === 0) return;\r\n\r\n const rowgroupsArray = Array.from(rowgroupElements);\r\n const selectedRowElement = selectedRow[0];\r\n\r\n const parentRowgroup = selectedRowElement.closest('[role=\"rowgroup\"]');\r\n if (!parentRowgroup) return;\r\n\r\n const rowgroupIndex = rowgroupsArray.indexOf(parentRowgroup);\r\n const rowsInCurrentGroup = parentRowgroup.querySelectorAll('[role=\"row\"]');\r\n const selectedRowInGroupIndex = Array.from(rowsInCurrentGroup).indexOf(selectedRowElement);\r\n\r\n const isLastIndex = (rowgroupIndex === rowgroupsArray.length - 1) &&\r\n (selectedRowInGroupIndex === rowsInCurrentGroup.length - 1);\r\n\r\n return {\r\n index: selectedRowInGroupIndex,\r\n isLastIndex: isLastIndex\r\n };\r\n }\r\n\r\n function handleKeyNavigation(fkey: string) {\r\n if (!table || !table.offsetParent) {\r\n return; // Element is hidden\r\n }\r\n\r\n const handlePageKeys = (result: { index: number, isLastIndex: boolean } | undefined) => {\r\n if (!result) return;\r\n\r\n const isPageUp = fkey === 'PageUp';\r\n const moveRowCount = pageMoveCellCount(tableId, selectedRow.current, _selectedCol.current, isPageUp);\r\n\r\n if (!isPageUp && result.isLastIndex) return;\r\n\r\n const scrollTargetRow = selectedRow.current + (isPageUp ? 0 : moveRowCount);\r\n const cellId = `${tableId}-cell-${scrollTargetRow}-${_selectedCol.current}`;\r\n const cell = document.getElementById(cellId);\r\n const header = document.getElementById(`${tableId}-header-row`);\r\n\r\n if (cell && header) {\r\n const hrect = header.getBoundingClientRect();\r\n const scrollToOptions = {\r\n top: (cell as HTMLElement).offsetTop + hrect.height + (isPageUp ? - table.clientHeight : 0),\r\n }\r\n\r\n const findNextRow = () => {\r\n const newRow = selectedRow.current + (isPageUp ? - moveRowCount : moveRowCount);\r\n doSelectTableCellAndNotify(newRow, _selectedCol.current, false);\r\n }\r\n checkSelectedRowDisplayed(findNextRow, scrollToOptions.top);\r\n }\r\n };\r\n\r\n const handleEndKey = (result: { index: number, isLastIndex: boolean } | undefined) => {\r\n if (!result) return;\r\n const numberOfHeader = document.getElementById(`${tableId}-header-row`)?.childElementCount;\r\n if (numberOfHeader && numberOfHeader > 0) {\r\n const lastColumnIndex = numberOfHeader - 1;\r\n const colSelected = doSelectTableCell(selectedRow.current, lastColumnIndex, false);\r\n if (colSelected) {\r\n setSelectedCol(lastColumnIndex);\r\n }\r\n }\r\n };\r\n\r\n const handleHomeKey = (result: { index: number, isLastIndex: boolean } | undefined) => {\r\n if (!result) return;\r\n const colSelected = doSelectTableCell(selectedRow.current, 0, false);\r\n if (colSelected) {\r\n setSelectedCol(0);\r\n }\r\n };\r\n\r\n const handleArrowKeys = (result: { index: number, isLastIndex: boolean } | undefined) => {\r\n if (!result) return;\r\n\r\n const numberOfHeader = document.getElementById(`${tableId}-header-row`)?.childElementCount ?? -1;\r\n let newRowIndex = selectedRow.current;\r\n let newColIndex = getSelectedCol();\r\n\r\n const movements: Record boolean> = {\r\n 'ArrowUp': () => {\r\n newRowIndex = newRowIndex - 1;\r\n return newRowIndex >= 0;\r\n },\r\n 'ArrowDown': () => {\r\n newRowIndex = newRowIndex + 1;\r\n return !result.isLastIndex;\r\n },\r\n 'ArrowLeft': () => {\r\n newColIndex = newColIndex - 1;\r\n return newColIndex >= 0;\r\n },\r\n 'ArrowRight': () => {\r\n newColIndex = newColIndex + 1;\r\n return newColIndex < numberOfHeader;\r\n }\r\n };\r\n\r\n const movement = movements[fkey];\r\n if (movement()) {\r\n doSelectTableCellAndNotify(newRowIndex, newColIndex, false);\r\n }\r\n };\r\n\r\n const keyHandlers: Record void> = {\r\n 'End': handleEndKey,\r\n 'Home': handleHomeKey,\r\n 'ArrowDown': handleArrowKeys,\r\n 'ArrowUp': handleArrowKeys,\r\n 'ArrowLeft': handleArrowKeys,\r\n 'ArrowRight': handleArrowKeys,\r\n 'PageDown': handlePageKeys,\r\n 'PageUp': handlePageKeys,\r\n };\r\n\r\n const handler = keyHandlers[fkey];\r\n if (handler) {\r\n checkSelectedRowDisplayed(handler);\r\n }\r\n }\r\n\r\n function observe() {\r\n if (getSelectedCol() < 0) {\r\n const defaultColIndex = getDefaultColumnSelectionIndex(tableId, tableColumnDefaultFocusHierarchy);\r\n if (defaultColIndex >= 0) {\r\n setSelectedCol(defaultColIndex);\r\n }\r\n }\r\n doSelectTableRow(selectedRow.current);\r\n doSelectTableCell(selectedRow.current, getSelectedCol());\r\n }\r\n\r\n function doSelectTableCellAndNotify(newRowIndex: number, newColIndex: number, fromClick: boolean) {\r\n const rowSelected = doSelectTableRow(newRowIndex, fromClick);\r\n if (rowSelected) {\r\n selectedRow.current = newRowIndex;\r\n\r\n doNotifyRowChanged();\r\n } else {\r\n if (fromClick && deselectable) {\r\n selectedRow.current = -1;\r\n doNotifyRowChanged();\r\n }\r\n }\r\n const colSelected = doSelectTableCell(newRowIndex, newColIndex, fromClick);\r\n if (colSelected) {\r\n setSelectedCol(newColIndex);\r\n }\r\n }\r\n\r\n function doSelectTableCell(row: number, col: number, holdScroll: boolean = false) {\r\n if (row < 0 || col < 0) {\r\n return false;\r\n }\r\n\r\n const selectedCellClass = dontHighlightCell ? 'data-cell-selected-invisible' : 'data-cell-selected';\r\n\r\n const cellId = `${tableId}-cell-${row}-${col}`;\r\n const currentCellSelections = document.querySelectorAll(`.${selectedCellClass}`);\r\n\r\n if (currentCellSelections && currentCellSelections.length > 0) {\r\n if (currentCellSelections[0].id === cellId) {\r\n // Required cell already selected\r\n return false;\r\n } else {\r\n currentCellSelections[0].classList.remove(selectedCellClass);\r\n }\r\n }\r\n\r\n const cell = document.getElementById(cellId);\r\n if (cell) {\r\n cell.classList.add(selectedCellClass);\r\n scrollCellIntoView(tableId, cell, holdScroll, iFMSChannel, isListView);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function doSelectTableRow(index: number, fromClick: boolean = false) {\r\n if (index < 0) {\r\n return false;\r\n }\r\n\r\n const rowId = `${tableId}-row-${index}`;\r\n const row = document.getElementById(rowId);\r\n if (!row) {\r\n // Invalid index\r\n return false;\r\n }\r\n\r\n const rowSelector = tableId ? '#' + tableId + ' .data-row-selected' : '.data-row-selected';\r\n\r\n const currentRowSelections = document.querySelectorAll(rowSelector);\r\n if (currentRowSelections && currentRowSelections.length > 0) {\r\n if (currentRowSelections[0].id === rowId) {\r\n // Required row already selected\r\n if (fromClick && deselectable) {\r\n currentRowSelections[0].classList.remove('data-row-selected');\r\n currentRowSelections[0].classList.add('data-row-selectable');\r\n return false;\r\n }\r\n return false;\r\n } else {\r\n currentRowSelections[0].classList.remove('data-row-selected');\r\n currentRowSelections[0].classList.add('data-row-selectable');\r\n }\r\n }\r\n\r\n if (row) {\r\n row.classList.remove('data-row-selectable');\r\n if(!doNotSetRowBackColor) row.classList.add('data-row-selected');\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function selectTableRow(row: number, headerClick: boolean = false) {\r\n selectedRow.current = row;\r\n doSelectTableRow(row);\r\n doSelectTableCell(row, getSelectedCol(), headerClick);\r\n }\r\n\r\n function tableNavigationCleanup() {\r\n delete ColumnMemory[tableId];\r\n delete ScrollMemory[tableId];\r\n }\r\n\r\n function selectTableCol(c: number) {\r\n setSelectedCol(c);\r\n doSelectTableCell(selectedRow.current, getSelectedCol());\r\n }\r\n\r\n function clearTableSelection() {\r\n const currentRowSelections = document.querySelectorAll('.data-row-selected');\r\n if (currentRowSelections && currentRowSelections.length > 0) {\r\n currentRowSelections[0].classList.remove('data-row-selected');\r\n currentRowSelections[0].classList.add('data-row-selectable');\r\n }\r\n\r\n const selectedCellClass = dontHighlightCell ? 'data-cell-selected-invisible' : 'data-cell-selected';\r\n\r\n const currentCellSelections = document.querySelectorAll(`.${selectedCellClass}`);\r\n\r\n if (currentCellSelections && currentCellSelections.length > 0) {\r\n currentCellSelections[0].classList.remove(selectedCellClass);\r\n }\r\n\r\n selectedRow.current = -1;\r\n _selectedCol.current = -1;\r\n }\r\n \r\n return {\r\n selectTableRow,\r\n tableNavigationCleanup,\r\n selectTableCol,\r\n triggerTableSearch: onFunction,\r\n clearTableSelection,\r\n getSelectedRow,\r\n };\r\n}\r\n","import React, {FC} from 'react';\r\nimport InlineInputControlRow from \"../../ui/layout/InlineInputControlRow\";\r\n\r\nconst Fieldset: FC<{\r\n label: string,\r\n noPadding?: boolean,\r\n noInlinePadding?: boolean,\r\n horizontal?: boolean,\r\n noBold?: boolean,\r\n alignRight?: boolean,\r\n}> = ({\r\n label,\r\n noPadding,\r\n noInlinePadding,\r\n horizontal,\r\n noBold,\r\n children,\r\n alignRight,\r\n }) => {\r\n\r\n const fieldset = (\r\n
\r\n {!horizontal && (\r\n
\r\n {label}\r\n
\r\n )}\r\n
\r\n {children}\r\n
\r\n
\r\n )\r\n\r\n return horizontal ? (\r\n \r\n {fieldset}\r\n \r\n ) : fieldset;\r\n}\r\n\r\nexport default Fieldset","import {TableSettings} from \"../../../tableSettings\";\r\n\r\nexport const aesInfoTable: TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n // \r\n height: '150px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'D/F',\r\n accessor: 'qualifier',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.41,\r\n },\r\n {\r\n Header: 'Schedule B',\r\n accessor: 'code',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.7,\r\n },\r\n {\r\n Header: 'Description',\r\n accessor: 'marks',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 22.05,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'qtY1',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.82,\r\n },\r\n {\r\n Header: 'Unit',\r\n accessor: 'uniT1',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.82,\r\n },\r\n {\r\n Header: 'Qty2',\r\n accessor: 'qtY2',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.82,\r\n },\r\n {\r\n Header: 'Unit',\r\n accessor: 'uniT2',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.82,\r\n },\r\n {\r\n Header: 'USD Value',\r\n accessor: 'price',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: 'KGS',\r\n accessor: 'kgs',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.82,\r\n },\r\n { \r\n Header: '', \r\n accessor: 'scroll', \r\n resizable: false, \r\n sortable: false, \r\n visible: true, \r\n initialWidthPercentage: 2.94, \r\n },\r\n ]\r\n};\r\n\r\nexport const vehInfoTable: TableSettings = {\r\n tableVersion: 1005,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n // \r\n height: '150px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.41,\r\n },\r\n {\r\n Header: 'VEH ID #',\r\n accessor: 'vehid',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 25,\r\n },\r\n {\r\n Header: 'Qual.',\r\n accessor: 'vehidqual',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.82,\r\n },\r\n {\r\n Header: 'Title #',\r\n accessor: 'titleno',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 44.11,\r\n },\r\n {\r\n Header: 'Title State',\r\n accessor: 'titlestate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.7,\r\n },\r\n { \r\n Header: '', \r\n accessor: 'scroll', \r\n resizable: false, \r\n sortable: false, \r\n visible: true, \r\n initialWidthPercentage: 2.94, \r\n },\r\n ]\r\n};\r\n\r\nexport const correctionNoticeTable: TableSettings = {\r\n tableVersion: 10041,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Item',\r\n accessor: 'item',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 29.41,\r\n },\r\n {\r\n Header: 'Now Read',\r\n accessor: 'before',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 33.82,\r\n },\r\n {\r\n Header: 'Should Read',\r\n accessor: 'after',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 33.82,\r\n },\r\n { \r\n Header: '', \r\n accessor: 'scroll', \r\n resizable: false, \r\n sortable: false, \r\n visible: true, \r\n initialWidthPercentage: 2.94, \r\n },\r\n ]\r\n};\r\n\r\nexport const arrivalNoticeTable: TableSettings = {\r\n tableVersion: 10042,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '200px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'selected',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.41,\r\n },\r\n {\r\n Header: 'HBL or HAWB',\r\n accessor: 'hblNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.26,\r\n },\r\n {\r\n Header: 'Customer',\r\n accessor: 'customerName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 19.59,\r\n },\r\n {\r\n Header: 'Fax',\r\n accessor: 'hasCustomerFax',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.72,\r\n },\r\n {\r\n Header: 'Email',\r\n accessor: 'hasCustomerEmail',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.72,\r\n },\r\n {\r\n Header: 'Broker',\r\n accessor: 'brokerName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 21.06,\r\n },\r\n {\r\n Header: 'Fax',\r\n accessor: 'hasBrokerFax',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.72,\r\n },\r\n {\r\n Header: 'Email',\r\n accessor: 'hasBrokerEmail',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.72,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n // initialWidthPercentage: 11.76,\r\n initialWidthPercentage: 2.50,\r\n },\r\n ]\r\n};\r\n\r\nexport const mblMemoListTable: TableSettings = {\r\n tableVersion: 10042,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n // {\r\n // Header: '',\r\n // accessor: 'indicator',\r\n // resizable: false,\r\n // sortable: false,\r\n // visible: true,\r\n // initialWidthPercentage: 4.41,\r\n // },\r\n {\r\n Header: 'Date',\r\n accessor: 'f_U2Date',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n // initialWidthPercentage: 11.76,\r\n initialWidthPercentage: 14.71,\r\n },\r\n {\r\n Header: 'Type',\r\n accessor: 'f_Type',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n // initialWidthPercentage: 8.82,\r\n initialWidthPercentage: 8.82,\r\n },\r\n {\r\n Header: 'Number',\r\n accessor: 'f_BlNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n // initialWidthPercentage: 14.70,\r\n initialWidthPercentage: 14.71,\r\n },\r\n {\r\n Header: 'Subject',\r\n accessor: 'f_Title',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n // initialWidthPercentage: 25,\r\n initialWidthPercentage: 23.53,\r\n },\r\n {\r\n Header: 'Modified by',\r\n accessor: 'f_U2ID',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n // initialWidthPercentage: 11.76,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: 'Created by',\r\n accessor: 'f_U1ID',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n // initialWidthPercentage: 11.76,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: 'Create Date',\r\n accessor: 'f_U1Date',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n // initialWidthPercentage: 11.76,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n // initialWidthPercentage: 11.76,\r\n initialWidthPercentage: 2.95,\r\n },\r\n ]\r\n};\r\n\r\nexport const hblMemoListTable: TableSettings = {\r\n overflowX: 'hidden',\r\n overflowY: 'auto',\r\n \r\n height: '100px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Date',\r\n accessor: 'date',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: 'Type',\r\n accessor: 'type',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10,\r\n },\r\n {\r\n Header: '#',\r\n accessor: 'no',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10,\r\n },\r\n {\r\n Header: 'Subject',\r\n accessor: 'subject',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20,\r\n },\r\n {\r\n Header: 'Modified by',\r\n accessor: 'modifiedBy',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: 'Created by',\r\n accessor: 'createdBy',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: 'Create Date',\r\n accessor: 'createDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n ]\r\n};\r\n\r\nexport const pickupDeliveryTable: TableSettings = {\r\n tableVersion: 10045,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '150px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Trucking Vendor',\r\n accessor: 'truckingCo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20.58,\r\n },\r\n {\r\n Header: 'Pickup Ref. #',\r\n accessor: 'pickupRef',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: 'Pickup Date',\r\n accessor: 'pickupDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.26,\r\n },\r\n {\r\n Header: 'Pickup At',\r\n accessor: 'pickupAt',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.68,\r\n },\r\n {\r\n Header: 'Delivery Date',\r\n accessor: 'deliveryDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.26,\r\n },\r\n {\r\n Header: 'Delivery To',\r\n accessor: 'deliveryTo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.68,\r\n },\r\n {\r\n Header: 'User',\r\n accessor: 'c4',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.32,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3,\r\n },\r\n ]\r\n};\r\n\r\nexport const deliveryOrderTable: TableSettings = {\r\n tableVersion: 10047,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '66px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n noHeaders: true,\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'c1',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 43,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'c2',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 54.12,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.88,\r\n },\r\n ]\r\n};\r\n\r\nexport const certificateOfOriginTable: TableSettings = {\r\n tableVersion: 10041,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n height: '150px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Mark and Numbers',\r\n accessor: 'mark',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 26.47,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'markPkg',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: 'Description of Packages and Goods',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 38.25,\r\n },\r\n {\r\n Header: 'Weight',\r\n accessor: 'markGross',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: 'Measurement',\r\n accessor: 'markMeasure',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n ]\r\n};\r\n\r\nexport const certificateOfOriginTable_Canada: TableSettings = {\r\n tableVersion: 10000,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n height: '150px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Mark and Numbers',\r\n accessor: 'mark',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 26.47,\r\n },\r\n {\r\n Header: 'Description of Packages and Goods',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 38.25,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'markPkg',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.64,\r\n },\r\n {\r\n Header: 'Weight',\r\n accessor: 'markGross',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.64,\r\n },\r\n ]\r\n};\r\n\r\nexport const certificateOfOriginTable_Air: TableSettings = {\r\n tableVersion: 10046,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n height: '150px',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Mark and Numbers',\r\n accessor: 'mark',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 26.47,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'markPkg',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: 'Description of Packages and Goods',\r\n accessor: 'description',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 38.25,\r\n },\r\n {\r\n Header: 'G. Weight',\r\n accessor: 'markGross',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: 'Chrg. Weight',\r\n accessor: 'markMeasure',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n ]\r\n};\r\n\r\nexport const bankDraftTable: TableSettings = {\r\n tableVersion: 10047,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n height: '42px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'BILLS OF LADING',\r\n accessor: 'c1',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 18.33,\r\n },\r\n {\r\n Header: 'B/L COPY',\r\n accessor: 'c2',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.66,\r\n },\r\n {\r\n Header: 'COMM. INV',\r\n accessor: 'c3',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.66,\r\n },\r\n {\r\n Header: 'INS. CTF.',\r\n accessor: 'c4',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.66,\r\n },\r\n {\r\n Header: 'CTF. ORG.',\r\n accessor: 'c5',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.66,\r\n },\r\n {\r\n Header: 'PACKING LIST',\r\n accessor: 'c6',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.66,\r\n },\r\n {\r\n Header: 'CONS. INV.',\r\n accessor: 'c7',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.66,\r\n },\r\n {\r\n Header: 'WEIGHT CTF.',\r\n accessor: 'c8',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.66,\r\n },\r\n ]\r\n};\r\n\r\nexport const shippingAdviceMoreTable: TableSettings = {\r\n tableVersion: 10042,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '200px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'selected',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.66,\r\n },\r\n {\r\n Header: 'HBL or HAWB',\r\n accessor: 'hblNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 37.77,\r\n },\r\n {\r\n Header: 'Customer',\r\n accessor: 'customerName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 51.11,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.44,\r\n },\r\n ]\r\n};\r\n\r\nexport const sendBlTable: TableSettings = {\r\n tableVersion: 10044,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '150px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Select',\r\n accessor: 'isChecked',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.82,\r\n },\r\n {\r\n Header: 'HBL #',\r\n accessor: 'hblNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.65,\r\n },\r\n {\r\n Header: 'Shipper',\r\n accessor: 'shipperName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 23.53,\r\n },\r\n {\r\n Header: 'Consignee',\r\n accessor: 'consigneeName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 23.53,\r\n },\r\n {\r\n Header: 'Notify',\r\n accessor: 'notifyName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 23.53,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.94,\r\n },\r\n ]\r\n};\r\n\r\nexport const batchPrintTable: TableSettings = {\r\n tableVersion: 10043,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '200px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'selected',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.41,\r\n },\r\n {\r\n Header: 'Invoice #',\r\n accessor: 'invoiceNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.70,\r\n },\r\n {\r\n Header: 'Date',\r\n accessor: 'invoiceDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: 'Invoice To',\r\n accessor: 'sName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 22.06,\r\n },\r\n {\r\n Header: 'Salesperson',\r\n accessor: 'salseperson',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.71,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'invoiceAmt',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: 'Fax',\r\n accessor: 'useFax',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.82,\r\n },\r\n {\r\n Header: 'Email',\r\n accessor: 'useEmail',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.82,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.95,\r\n },\r\n ]\r\n};\r\n\r\nexport const bankEdiTable: TableSettings = {\r\n tableVersion: 1005,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '200px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Type',\r\n accessor: 'type',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.82,\r\n },\r\n {\r\n Header: 'Check #',\r\n accessor: 'checkNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.70,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: 'Remark',\r\n accessor: 'remark',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 61.76,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.94,\r\n },\r\n ]\r\n};\r\n\r\nexport const batchCheckProcessingVendorTable: TableSettings = {\r\n tableVersion: 1006,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '150px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Select',\r\n accessor: 'select',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.82,\r\n },\r\n {\r\n Header: 'Bill #',\r\n accessor: 'billNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.70,\r\n },\r\n {\r\n Header: 'Bill Date',\r\n accessor: 'invoiceDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: 'Description',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20.58,\r\n },\r\n {\r\n Header: 'Vendor',\r\n accessor: 'payToName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.64,\r\n },\r\n {\r\n Header: 'Seq #',\r\n accessor: 'checkSeq',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.94,\r\n },\r\n ]\r\n};\r\n\r\nexport const batchCheckProcessingCheckTable: TableSettings = {\r\n tableVersion: 1010,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '150px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Seq #',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.70,\r\n },\r\n {\r\n Header: 'Pay to Order',\r\n accessor: 'payToOrderName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 48.34,\r\n },\r\n {\r\n Header: 'Check #',\r\n accessor: 'checkNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20.51,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20.51,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.94,\r\n },\r\n ]\r\n};\r\n\r\nexport const batchStatementProcessingTable: TableSettings = {\r\n tableVersion: 1009,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '344px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n { Header: '#', accessor: 'indicator', resizable: false, sortable: false, visible: true, initialWidthPercentage: 3.5, },\r\n { Header: 'Customer', accessor: 'billToSName', resizable: false, sortable: false, visible: true, initialWidthPercentage: 19.5, },\r\n { Header: 'CUR', accessor: 'currency', resizable: false, sortable: false, visible: true, initialWidthPercentage: 4.5, },\r\n { Header: 'Overdue', accessor: 'maxOverDueDays', resizable: false, sortable: false, visible: true, initialWidthPercentage: 6, },\r\n { Header: 'Paid Date', accessor: 'lastPaidDate', resizable: false, sortable: false, visible: true, initialWidthPercentage: 8, },\r\n { Header: 'Currency Balance', accessor: 'currentAmount', resizable: false, sortable: false, visible: true, initialWidthPercentage: 10, },\r\n { Header: 'Past Due Amount', accessor: 'pastDueAmount', resizable: false, sortable: false, visible: true, initialWidthPercentage: 10, },\r\n { Header: 'Count', accessor: 'pastDueCount', resizable: false, sortable: false, visible: true, initialWidthPercentage: 4.5, },\r\n { Header: 'Total Amount', accessor: 'totalAmount', resizable: false, sortable: false, visible: true, initialWidthPercentage: 9, },\r\n { Header: 'Email', accessor: 'useEmail', resizable: false, sortable: false, visible: true, initialWidthPercentage: 4.5, },\r\n { Header: 'Select', accessor: 'select', resizable: false, sortable: false, visible: true, initialWidthPercentage: 4.5, },\r\n { Header: 'Status', accessor: 'status', resizable: false, sortable: false, visible: true, initialWidthPercentage: 7.5, },\r\n { Header: 'Action', accessor: 'action', resizable: false, sortable: false, visible: true, initialWidthPercentage: 6.5, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 2, },\r\n ]\r\n};\r\n\r\nexport const historyViewMainDetailTable: TableSettings = {\r\n tableVersion: 10047,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.57,\r\n },\r\n {\r\n Header: 'Date',\r\n accessor: 'ediDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.90,\r\n },\r\n {\r\n Header: 'User',\r\n accessor: 'ediId',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.52,\r\n },\r\n {\r\n Header: 'Action',\r\n accessor: 'refNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.52,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'currency',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.76,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.52,\r\n },\r\n {\r\n Header: 'Entity #',\r\n accessor: 'invoNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.90,\r\n },\r\n {\r\n Header: 'Entity Date',\r\n accessor: 'invoDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.52,\r\n },\r\n {\r\n Header: 'Due Date',\r\n accessor: 'dueDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.52,\r\n },\r\n {\r\n Header: 'Customer',\r\n accessor: 'custName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.86,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.41,\r\n },\r\n ]\r\n};\r\n\r\nexport const historyViewBillingDetailTable: TableSettings = {\r\n tableVersion: 10046,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Seq. #',\r\n accessor: 'seqNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.23,\r\n },\r\n {\r\n Header: 'Type',\r\n accessor: 'chgTypeDesc',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.38,\r\n },\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'code',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 23.08,\r\n },\r\n {\r\n Header: 'Description',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 30.77,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'currency',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.15,\r\n },\r\n {\r\n Header: 'USD Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.31,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.08,\r\n },\r\n ]\r\n};\r\n\r\nexport const historyViewRevisionTable: TableSettings = {\r\n tableVersion: 10046,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '120px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '*',\r\n accessor: 'printa',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20.00,\r\n },\r\n {\r\n Header: 'Date',\r\n accessor: 'u2Date',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 33.33,\r\n },\r\n {\r\n Header: 'Entity #',\r\n accessor: 'invoNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 41.67,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.49,\r\n },\r\n ]\r\n};\r\n\r\nexport const paymentHistoryTable: TableSettings = {\r\n tableVersion: 10078,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '120px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3,\r\n },\r\n {\r\n Header: 'P. Type',\r\n accessor: 'pType',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6,\r\n },\r\n {\r\n Header: 'Accrual Date',\r\n accessor: 'postDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.5,\r\n },\r\n {\r\n Header: 'Entity',\r\n accessor: 'receivedFrom',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.5,\r\n },\r\n {\r\n Header: 'Check #/Ref. #',\r\n accessor: 'checkNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.5,\r\n },\r\n {\r\n Header: 'Bank',\r\n accessor: 'bank',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.5,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'currency',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.5,\r\n },\r\n {\r\n Header: 'Ex. Rate',\r\n accessor: 'exRate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.5,\r\n },\r\n {\r\n Header: 'Void',\r\n accessor: 'void',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4,\r\n },\r\n\r\n {\r\n Header: 'Draft',\r\n accessor: 'isDraft',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4,\r\n },\r\n {\r\n Header: 'Remark',\r\n accessor: 'remark',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.49,\r\n },\r\n ]\r\n};\r\n\r\nexport const deleteHistoryTable: TableSettings = {\r\n tableVersion: 10045,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '120px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.88,\r\n },\r\n {\r\n Header: 'Delete Date',\r\n accessor: 'actionDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.62,\r\n },\r\n {\r\n Header: 'Delete By',\r\n accessor: 'actionBy',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.69,\r\n },\r\n {\r\n Header: 'Ref. #',\r\n accessor: 'refNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.62,\r\n },\r\n {\r\n Header: 'MBL #',\r\n accessor: 'blNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.62,\r\n },\r\n {\r\n Header: 'Loading Port',\r\n accessor: 'pol',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.42,\r\n },\r\n {\r\n Header: 'ETD',\r\n accessor: 'etd',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.69,\r\n },\r\n {\r\n Header: 'Discharge Port',\r\n accessor: 'pod',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.42,\r\n },\r\n {\r\n Header: 'ETA',\r\n accessor: 'eta',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.69,\r\n },\r\n {\r\n Header: 'Agent',\r\n accessor: 'agentName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.42,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 1.93,\r\n },\r\n ]\r\n};\r\n\r\nexport const myMemoTable: TableSettings = {\r\n tableVersion: 10044,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '50px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.88,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'editParam',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.55,\r\n },\r\n {\r\n Header: 'Remind Date',\r\n accessor: 'remindDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage:11.69,\r\n },\r\n {\r\n Header: 'Due Date',\r\n accessor: 'dueDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.69,\r\n },\r\n {\r\n Header: 'Type',\r\n accessor: 'opType',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.55,\r\n },\r\n {\r\n Header: 'Refernce',\r\n accessor: 'refNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.71,\r\n },\r\n {\r\n Header: 'Subject',\r\n accessor: 'mTitle',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 27.6,\r\n },\r\n {\r\n Header: 'Create By',\r\n accessor: 'mU1ID',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.71,\r\n },\r\n {\r\n Header: 'Create Date',\r\n accessor: 'mU1Date',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.69,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 1.93,\r\n },\r\n ]\r\n};\r\n\r\nexport const edi310BatchTable: TableSettings = {\r\n tableVersion: 10047,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '120px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Select',\r\n accessor: 'selected',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.68,\r\n },\r\n {\r\n Header: 'Invoice #',\r\n accessor: 'invoiceNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 19.35,\r\n },\r\n {\r\n Header: 'Date',\r\n accessor: 'invoiceDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.13,\r\n },\r\n {\r\n Header: 'Due Date',\r\n accessor: 'dueDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.13,\r\n },\r\n {\r\n Header: 'Last Send Date',\r\n accessor: 'ediDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 19.35,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.13,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.23,\r\n },\r\n ]\r\n};\r\n\r\nexport const sendShipmentStatusContainerTable: TableSettings = {\r\n tableVersion: 10050,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '130px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.29,\r\n },\r\n {\r\n Header: 'Container #',\r\n accessor: 'containerNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 48.62,\r\n },\r\n {\r\n Header: 'ISO Type',\r\n accessor: 'isoType',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 31.57,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.52,\r\n }, \r\n ]\r\n};\r\n\r\nexport const sendShipmentStatusTable: TableSettings = {\r\n tableVersion: 10045,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '260px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Select',\r\n accessor: 'checked',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.82,\r\n },\r\n {\r\n Header: 'Event',\r\n accessor: 'eventDesc',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20.59,\r\n },\r\n {\r\n Header: 'Date',\r\n accessor: 'eventSendDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: 'Time',\r\n accessor: 'eventSendTime',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.35,\r\n },\r\n {\r\n Header: 'Location Code',\r\n accessor: 'loc',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: 'Location Name',\r\n accessor: 'locName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.65,\r\n },\r\n {\r\n Header: 'Last Event Date',\r\n accessor: 'lastSentEventDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.76,\r\n },\r\n {\r\n Header: 'Time',\r\n accessor: 'lastSentEventTime',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.35,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.96,\r\n }, \r\n ]\r\n};\r\n\r\nexport const historyViewPaymentMainTable: TableSettings = {\r\n tableVersion: 10047,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '120px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.59,\r\n },\r\n {\r\n Header: 'Date',\r\n accessor: 'historyDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.62,\r\n },\r\n {\r\n Header: 'User',\r\n accessor: 'historyUser',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.90,\r\n },\r\n {\r\n Header: 'Action',\r\n accessor: 'historyAction',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.90,\r\n },\r\n {\r\n Header: 'Bank Entity',\r\n accessor: 'cardBank',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.93,\r\n },\r\n {\r\n Header: 'Accrual Date',\r\n accessor: 'postDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.90,\r\n },\r\n {\r\n Header: 'Check #',\r\n accessor: 'checkNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.90,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'currency',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.45,\r\n },\r\n {\r\n Header: 'Ex. rate',\r\n accessor: 'exRate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.17,\r\n },\r\n {\r\n Header: 'Block',\r\n accessor: 'block',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.45,\r\n },\r\n {\r\n Header: 'Draft',\r\n accessor: 'draft',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.45,\r\n },\r\n {\r\n Header: 'Received From',\r\n accessor: 'custName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.93,\r\n },\r\n {\r\n Header: 'Remark',\r\n accessor: 'remark',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.34,\r\n },\r\n {\r\n Header: 'Deposit Total',\r\n accessor: 'totalAmount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.76,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 1.71,\r\n },\r\n ]\r\n};\r\n\r\nexport const historyViewPaymentDetailsTable: TableSettings = {\r\n tableVersion: 10046,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '120px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.49,\r\n },\r\n {\r\n Header: 'Status',\r\n accessor: 'status',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.30,\r\n },\r\n {\r\n Header: 'Customer',\r\n accessor: 'customer',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20.93,\r\n },\r\n {\r\n Header: 'Invoice Date',\r\n accessor: 'invoiceDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.30,\r\n },\r\n {\r\n Header: 'Invoice #',\r\n accessor: 'invoiceNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.63,\r\n },\r\n {\r\n Header: 'Account Code',\r\n accessor: 'accountCode',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.44,\r\n },\r\n {\r\n Header: 'Description',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.95,\r\n },\r\n {\r\n Header: 'Received Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.63,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.33,\r\n },\r\n ]\r\n};\r\n\r\nexport const billInformationTable: TableSettings = {\r\n tableVersion: 10010,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '180px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'billingCode',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 58.9,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 32,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.08,\r\n },\r\n ]\r\n};\r\n\r\nexport const profitDetailTable: TableSettings = {\r\n tableVersion: 10011,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '180px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'billingCode',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 31.6,\r\n },\r\n {\r\n Header: 'Revenue',\r\n accessor: 'revenue',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.9,\r\n },\r\n {\r\n Header: 'Cost',\r\n accessor: 'cost',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.9,\r\n },\r\n {\r\n Header: 'CrDb',\r\n accessor: 'crDbAmount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.9,\r\n },\r\n {\r\n Header: 'Margin',\r\n accessor: 'margin',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.9,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.08,\r\n },\r\n ]\r\n};\r\n\r\nexport const accountBalanceTable:TableSettings = {\r\n tableVersion: 10006,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '550px',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'lightgray',\r\n columns: [\r\n {\r\n Header: 'Account',\r\n accessor: 'glDesc',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.18,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'currency',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.69,\r\n },\r\n {\r\n Header: 'AAA 2023',\r\n accessor: 'amount1',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.82,\r\n },\r\n {\r\n Header: 'BBB 2023',\r\n accessor: 'amount2',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.82,\r\n },\r\n {\r\n Header: 'CCC 2023',\r\n accessor: 'amount3',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.82,\r\n },\r\n {\r\n Header: 'Over 3 Months',\r\n accessor: 'amountOld',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.82,\r\n },\r\n {\r\n Header: 'Total',\r\n accessor: 'amountTot',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.18,\r\n },\r\n {\r\n Header: ' ',\r\n accessor: 'scroll',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.78,\r\n },\r\n ]\r\n};\r\n\r\nexport const volumeByCargoTypeYearsTable:TableSettings = {\r\n tableVersion: 10003,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n height: '550px',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'lightgray',\r\n columns: [\r\n {\r\n Header: 'TYPE',\r\n accessor: 'type',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.5,\r\n },\r\n {\r\n Header: 'YEAR5',\r\n accessor: 'amount5',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.5,\r\n },\r\n {\r\n Header: 'YEAR4',\r\n accessor: 'amount4',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.5,\r\n },\r\n {\r\n Header: 'YEAR3',\r\n accessor: 'amount3',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.5,\r\n },\r\n {\r\n Header: 'YEAR2',\r\n accessor: 'amount2',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.5,\r\n },\r\n {\r\n Header: 'YEAR1',\r\n accessor: 'amount1',\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.5,\r\n },\r\n ]\r\n};\r\n\r\nexport const deleteHistoryPaymentTable: TableSettings = {\r\n tableVersion: 10008,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n\r\n height: '120px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n { Header: '', accessor: 'indicator', resizable: false, sortable: false, visible: true, initialWidthPercentage: 2, },\r\n { Header: 'Date', accessor: 'historyDate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.5, },\r\n { Header: 'User', accessor: 'historyUser', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.5, },\r\n { Header: 'Action', accessor: 'historyAction', resizable: true, sortable: false, visible: true, initialWidthPercentage: 4.5, },\r\n { Header: 'Accrual Date', accessor: 'postDate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6, },\r\n { Header: 'Customer', accessor: 'billToName', resizable: true, sortable: false, visible: true, initialWidthPercentage: 10, },\r\n { Header: 'Received From', accessor: 'receivedFromName', resizable: true, sortable: false, visible: true, initialWidthPercentage: 10, },\r\n { Header: 'Payment', accessor: 'payType', resizable: true, sortable: false, visible: true, initialWidthPercentage: 4, },\r\n { Header: 'Check/EFT #', accessor: 'checkNo', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7.5, },\r\n { Header: 'Bank Entity', accessor: 'bankName', resizable: true, sortable: false, visible: true, initialWidthPercentage: 10, },\r\n { Header: 'CUR', accessor: 'currency', resizable: true, sortable: false, visible: true, initialWidthPercentage: 3, },\r\n { Header: 'Ex.Rate', accessor: 'exRate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 5, },\r\n { Header: 'Deposit Total', accessor: 'totalAmount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 6.5, },\r\n { Header: 'Block', accessor: 'block', resizable: true, sortable: false, visible: true, initialWidthPercentage: 3, },\r\n { Header: 'Draft', accessor: 'draft', resizable: true, sortable: false, visible: true, initialWidthPercentage: 3, },\r\n { Header: 'Remark', accessor: 'remark', resizable: true, sortable: false, visible: true, initialWidthPercentage: 9, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 2.5, },\r\n ]\r\n};\r\n\r\nexport const deleteHistoryPaymentSubTable: TableSettings = {\r\n tableVersion: 10004,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n\r\n height: '120px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n { Header: '', accessor: 'indicator', resizable: false, sortable: false, visible: true, initialWidthPercentage: 3.5, },\r\n { Header: 'Status', accessor: 'status', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8, },\r\n { Header: 'Branch', accessor: 'branch', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7, },\r\n { Header: 'Invoice Date', accessor: 'invoiceDate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 15, },\r\n { Header: 'Invoice #', accessor: 'invoiceNo', resizable: true, sortable: false, visible: true, initialWidthPercentage: 15, },\r\n { Header: 'Account Code', accessor: 'accountCode', resizable: true, sortable: false, visible: true, initialWidthPercentage: 19, },\r\n { Header: 'Description', accessor: 'description', resizable: true, sortable: false, visible: true, initialWidthPercentage: 20, },\r\n { Header: 'Received Amount', accessor: 'amount', resizable: true, sortable: false, visible: true, initialWidthPercentage: 10, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 2.5, },\r\n ]\r\n};\r\n","\r\nexport enum FmsSecCntr {\r\n // OIM\r\n OIMblHold = \"OI_MBL_Hold\",\r\n\r\n // OIH\r\n OIHblNomi = \"OI_HBL_Nomi\",\r\n OIHblFree = \"OI_HBL_Free\",\r\n OIHblCoLoad = \"OI_HBL_CoLoad\",\r\n OIHblExpressRelease = \"OI_HBL_ExpressRelease\",\r\n OIHblOBLReceived = \"OI_HBL_OBLReceived\",\r\n OIHblOBLReceivedDate = \"OI_HBL_OBLReceivedDate\",\r\n OIHblReleased = \"OI_HBL_Released\",\r\n OIHblReleasedBy = \"OI_HBL_ReleasedBy\",\r\n OIHblReleasedDate = \"OI_HBL_ReleasedDate\",\r\n OIHblSalesperson = \"OI_HBL_Salesperson\",\r\n\r\n // OEH\r\n OEHblSalesperson = \"OE_HBL_Salesperson\",\r\n\r\n // AIH\r\n AIHblSalesperson = \"AI_HAWB_Salesperson\",\r\n\r\n // AEH\r\n AEHblSalesperson = \"AE_HAWB_Salesperson\",\r\n\r\n // Other Shipment\r\n OtherShipmentSalesperson = \"OtherShipment_Salesperson\",\r\n\r\n // General Invoice\r\n GInvGiveCredit = \"GInv_GiveCredit\",\r\n GInvCancelCredit = \"GInv_CancelCredit\",\r\n GInvConfirmed = \"GInv_Confirmed\",\r\n\r\n //Storage Invoice\r\n STInvConfirmed = \"STInv_Confirmed\",\r\n\r\n // Invoice\r\n InvGivCredit = \"Inv_GiveCredit\",\r\n InvCancelCredit = \"Inv_CancelCredit\",\r\n InvConfirmed = \"Inv_Confirmed\",\r\n\r\n // General Bill\r\n GBillGivCredit = \"GBill_GiveCredit\",\r\n GBillCancelCredit = \"GBill_CancelCredit\",\r\n GBillConfirmed = \"GBill_Confirmed\",\r\n\r\n // Bill\r\n BillGivCredit = \"Bill_GiveCredit\",\r\n BillCancelCredit = \"Bill_CancelCredit\",\r\n BillConfirmed = \"Bill_Confirmed\",\r\n\r\n // Crdb\r\n CrDbConfirmed = \"CrDb_Confirmed\",\r\n\r\n\r\n //warehousing\r\n WHInvConfirmed = \"WHInv_Confirmed\",\r\n\tWHBillConfirmed = \"WHBill_Confirmed\",\r\n\tWHCrDbConfirmed = \"WHCrDb_Confirmed\",\r\n\r\n\r\n \r\n // Company\r\n ComAutoBillingRate = \"Com_AutoBillingRate\",\r\n ComCreditLimit = \"Com_CreditLimit\",\r\n ComCreditTerms = \"Com_CreditTerms\",\r\n ComCustomerServiceRep = \"Com_CustomerServiceRep\",\r\n ComSalesperson = \"Com_SalesPerson\",\r\n ComCreditHold = \"Com_CreditHold\",\r\n ComFullName = \"Com_FullName\",\r\n ComInactive = \"Com_Inactive\",\r\n ComShortName = \"Com_ShorName\",\r\n\r\n // Tool\r\n MemoEdit = \"Memo_Edit\",\r\n MemoDelete = \"Memo_Delete\",\r\n\r\n\r\n}\r\n","/**\r\n * Change History\r\n * 08/25/2022 ptkim Add showZero prop as boolean (default = false)\r\n */\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport useSystemSettings from '../hooks/useSystemSettings';\r\nimport { SystemSettings } from '../ifmsTypes';\r\nimport Float from '../ui/Float';\r\n\r\nfunction getDecimal(systemSettings:SystemSettings, currency:string|null|undefined) {\r\n if (!currency) {\r\n return 4;\r\n }\r\n\r\n if (!!systemSettings && !!systemSettings.currencies && systemSettings.currencies.length > 0) {\r\n const c = systemSettings.currencies.find(x => x.currency === currency);\r\n return !!c ? c.decimal : 0;\r\n }\r\n\r\n return 0;\r\n}\r\n\r\nfunction formatAmount(amount:any|null|undefined, decimalCount = 2, decimal = '.', thousands = ',') {\r\n try {\r\n if (amount === null || amount === undefined) {\r\n return '';\r\n }\r\n\r\n decimalCount = Math.abs(decimalCount);\r\n decimalCount = isNaN(decimalCount) ? 2 : decimalCount;\r\n\r\n const negativeSign = amount < 0 ? \"-\" : \"\";\r\n\r\n let i:any = parseInt(amount = Math.abs(Number(amount) || 0).toFixed(decimalCount)).toString();\r\n let j = (i.length > 3) ? i.length % 3 : 0;\r\n\r\n return negativeSign + (j ? i.substr(0, j) + thousands : '') + i.substr(j).replace(/(\\d{3})(?=\\d)/g, \"$1\" + thousands) + (decimalCount ? decimal + Math.abs(amount - i).toFixed(decimalCount).slice(2) : \"\");\r\n } catch (e) {\r\n console.log(e);\r\n return '';\r\n }\r\n}\r\n\r\nfunction CurrencyLabel({\r\n decimalOverride = undefined,\r\n value,\r\n currency,\r\n showZero = false,\r\n ...other\r\n}: {\r\n decimalOverride?: number|undefined,\r\n value: number|null|undefined,\r\n currency: string,\r\n [x:string]:any,\r\n\r\n}) {\r\n const systemSettings = useSystemSettings();\r\n \r\n const decimal = !decimalOverride ? getDecimal(systemSettings, currency) : decimalOverride;\r\n\r\n if(value === 0 && !showZero) value = null;\r\n const displayValue = (value !== null && value !== undefined)\r\n ? formatAmount(value, decimal, '.', ',')\r\n : '';\r\n\r\n return ;\r\n};\r\n\r\nCurrencyLabel.propTypes = {\r\n value: PropTypes.number,\r\n currency: PropTypes.string,\r\n decimalOverride: PropTypes.number,\r\n showZero: PropTypes.bool,\r\n disabled: PropTypes.bool.isRequired,\r\n};\r\n\r\n\r\nexport default React.memo(CurrencyLabel);\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABsCAYAAACVWrdDAAAACXBIWXMAAC4jAAAuIwF4pT92AAAGWmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMi0wNC0wOFQxMjowMToxNiswMjowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjItMDQtMTJUMTI6NTg6MzcrMDI6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjItMDQtMTJUMTI6NTg6MzcrMDI6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NGM0YjI2NDMtM2JiMS1hYzQ0LWI2NTQtMjlhYmE3NWUwOGQ1IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6OGNmNTU3MTAtMmNlNS1lNjQ1LTg0MDItNmI5ZDI1YjFiNzA3IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YmFhMDFhZmMtNTVlMy1lNzQ3LTgyZjEtNDc3MjQzMWNjYjdhIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiYWEwMWFmYy01NWUzLWU3NDctODJmMS00NzcyNDMxY2NiN2EiIHN0RXZ0OndoZW49IjIwMjItMDQtMDhUMTI6MDE6MTYrMDI6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMy4wIChXaW5kb3dzKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0YzRiMjY0My0zYmIxLWFjNDQtYjY1NC0yOWFiYTc1ZTA4ZDUiIHN0RXZ0OndoZW49IjIwMjItMDQtMTJUMTI6NTg6MzcrMDI6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMy4wIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz69DAgVAAACD0lEQVR4nO3d0VLCMBBA0eD4/7+sT2EAW6m4u3dD73lWJ9nbFAUGL2N8DXE+6AWc3Se9gAP+e0QvIatIcml6C8paVLsYnQJUL6RFjA4B6AWgIegHYXr4Y8BroE5Ah8FvKT8NxAnoOvwxgLVVB+g8/Kl0jZUBVhj+VLbWqgArDX8qWXNFgBWHP6WvPTvAysOfUveQGeAdhj+l7YX+Q+z0sgK809U/pewpI8A7Dn8K35u3IFj0c0EVV/+z52s6rOGwFV4Rm45uen7dErfCFQK8erUtESLyMSBjoxFHPeMp5rC9dn4Qjhxci5cft3QNkDGwlhGiAkTefjIHFfmzQ/bc9QScRrcAFbeJVreibgFOp1OAyiuzzSnoFOCUDAAzAMwAMAPADAAzAMwAMAPADAAzAMwAMAPADAAzAMwAMAPAjr43tPW7yxp7+srbbwEceqzNGHu3IIcfb3OmWwEcfp4fs30M4PDz3c3Y34JgtwG8+utcZ+0JgBkAZgCYAWAGgBkAZgCYAWAGgBkAZgCYAWAGgBkAZgCYAWAGgBkAZgCYAWAGgBkAZgCYAWAGgBkAZgCYAWAGgBkAZgCYAWAGgBkAZgCYAWAGgBkAZgCYAWAGgBkAZgCYAWAGgBkAdhugzb92OoHrrD0BsMcAnoJ8dzPeOgFGyPNjtnu3ICPE+9Pnhu5+g16yO8ujH12sJP4WBPsGTzM0xY4EXgYAAAAASUVORK5CYII=\"","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport CheckBox from './CheckBox';\r\nimport LabeledControl from './LabeledControl';\r\n\r\nfunction LabeledCheckBox({\r\n bold = false,\r\n label,\r\n value,\r\n onChange = () => {},\r\n alignRight = false,\r\n underline = false,\r\n disabled = false,\r\n dark = false,\r\n labelSize = '30%',\r\n reverse = false,\r\n checkboxMarginLeft = undefined,\r\n name\r\n}:{\r\n value: boolean,\r\n onChange: (x:boolean) => void,\r\n disabled?: boolean,\r\n reverse?: boolean,\r\n label: string,\r\n labelSize?: string,\r\n alignRight?: boolean,\r\n bold?: boolean,\r\n dark?: boolean,\r\n underline?: boolean,\r\n checkboxMarginLeft?: string|undefined,\r\n name?: string,\r\n}) {\r\n return }\r\n />;\r\n}\r\n\r\nLabeledCheckBox.defaultProps = {\r\n onChange: () => {},\r\n value: '',\r\n bold: false,\r\n alignRight: false,\r\n underline: false,\r\n disabled: false,\r\n dark: false,\r\n labelSize: '30%',\r\n reverse: false,\r\n};\r\n\r\nLabeledCheckBox.propTypes = {\r\n onChange: PropTypes.func.isRequired,\r\n value: PropTypes.bool.isRequired,\r\n bold: PropTypes.bool.isRequired,\r\n alignRight: PropTypes.bool.isRequired,\r\n underline: PropTypes.bool.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n labelSize: PropTypes.string.isRequired,\r\n reverse: PropTypes.bool.isRequired,\r\n checkboxMarginLeft: PropTypes.string\r\n};\r\n\r\n\r\nexport default React.memo(LabeledCheckBox);\r\n","import './filter.css';\r\nimport _ from 'lodash';\r\nimport { useState, useEffect, useRef } from 'react';\r\nimport postal from 'postal';\r\n\r\nimport styled from 'styled-components';\r\nimport Number from '../Number';\r\nimport Float from '../Float';\r\nimport TextBox from '../TextBox';\r\nimport LabeledCheckBox from '../LabeledCheckBox';\r\nimport IfmsDate from '../Date';\r\nimport InputControlRow from '../layout/InputControlRow';\r\nimport PrimaryButton from '../PrimaryButton';\r\nimport IfmsModal from '../IfmsModal';\r\n\r\nimport CheckBox from '../CheckBox';\r\nimport CheckBoxIcon from '../CheckBoxIcon';\r\nimport { dateTextToIso, formatDate } from '../../dateUtils';\r\nimport Select from '../Select';\r\nimport SecondaryButton from '../SecondaryButton';\r\nimport { initialSearch } from '../../filtering';\r\n\r\nexport const nullSearchEnableColumns = ['status', 'recognized', 'moveType', 'void', 'draft', 'isVoid', 'jobType', 'trStatus', 'trStatus2'];\r\n\r\nconst FilterContent = styled.div`\r\n margin: 10px;\r\n margin-top: 0px;\r\n font-family: Inter;\r\n\r\n .header-strong {\r\n margin-top: 5px;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 16px;\r\n color: #252A37;\r\n line-height: 28px;\r\n }\r\n\r\n .header {\r\n margin-top: 3px;\r\n font-style: normal;\r\n font-weight: normal;\r\n font-size: 16px;\r\n color: #252A37;\r\n line-height: 28px;\r\n }\r\n`;\r\n\r\n/*\r\nconst Pager = styled.div`\r\n margin-left: 5px;\r\n width: 135px;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-evenly;\r\n align-items: center;\r\n\r\n div {\r\n margin-left: 2px;\r\n margin-right: 2px;\r\n }\r\n`;\r\n*/\r\n\r\nconst IncludeSearchProperties = [\r\n 'general1',\r\n 'general2',\r\n 'general3',\r\n 'date',\r\n 'date1',\r\n 'date2',\r\n 'number',\r\n 'number1',\r\n 'number2',\r\n 'location1',\r\n 'location2',\r\n 'location3',\r\n 'generalText1',\r\n 'generalText2',\r\n 'generalText3',\r\n 'generalNullOrEmpty',\r\n 'dateFrom',\r\n 'dateTo',\r\n 'dateFrom1',\r\n 'dateTo1',\r\n 'dateFrom2',\r\n 'dateTo2',\r\n 'dateNullOrEmpty',\r\n 'location1Text',\r\n 'location2Text',\r\n 'location3Text',\r\n 'numberFrom',\r\n 'numberTo',\r\n 'numberFrom1',\r\n 'numberTo1',\r\n 'numberFrom2',\r\n 'numberTo2',\r\n 'numberNullOrEmpty',\r\n 'extras',\r\n];\r\n\r\nfunction searchInFilterOrderComparer(l:any, r:any) {\r\n if (!l || !r) {\r\n return false;\r\n }\r\n\r\n const result = _.isEqual(_.pick(l, IncludeSearchProperties), _.pick(r, IncludeSearchProperties));\r\n return result;\r\n}\r\n\r\n// Tries to get the data from DOM in order to have to change dependencies on all screens to add additional title param\r\nfunction extractScreenTitleBar() {\r\n const titleNodes = document.querySelectorAll('.ifms-screen-title-bar > h2');\r\n if (titleNodes && titleNodes.length) {\r\n const n = titleNodes[0] as HTMLElement;\r\n return n.innerText;\r\n }\r\n return '';\r\n\r\n}\r\n\r\nfunction StatusFilter({\r\n value,\r\n onChange,\r\n onEnter\r\n}: {\r\n value: string,\r\n onChange: (x:string) => void,\r\n customRenderers : any,\r\n accessor : any,\r\n onEnter : any\r\n}) {\r\n const items = [\r\n { label: '', value: '' },\r\n { label: 'OP Close', value: 'OC' },\r\n { label: 'Period Close', value: 'PC' },\r\n ]\r\n\r\n return (\r\n onChange(e.target.value)} \r\n applySearchWithEnter={onEnter}\r\n />\r\n );\r\n}\r\n\r\nfunction StatusFilterNotUseFileLocked({\r\n value,\r\n onChange,\r\n onEnter\r\n}: {\r\n value: string,\r\n onChange: (x:string) => void,\r\n customRenderers : any,\r\n accessor : any,\r\n onEnter : any\r\n}) {\r\n const items = [\r\n { label: '', value: '' },\r\n { label: 'Period Close', value: 'PC' },\r\n ]\r\n\r\n return (\r\n onChange(e.target.value)}\r\n applySearchWithEnter={onEnter}\r\n />\r\n );\r\n}\r\n\r\nfunction GeneralFilter({disabled, value, onChange, accessor, customRenderers, onEnter}:any) {\r\n\r\n if (accessor && customRenderers) {\r\n const customRenderer = customRenderers.find((x:any) => x.accessor === accessor);\r\n if (customRenderer) {\r\n return customRenderer.renderer({disabled, value, onChange, onEnter});\r\n }\r\n }\r\n\r\n return (\r\n onChange(e.target.value)}\r\n onEnter={onEnter}\r\n />\r\n );\r\n}\r\n\r\nfunction FilterSummary({ filterOrder, search }: any) {\r\n if (!filterOrder || filterOrder.length <= 0) {\r\n return
 
;\r\n }\r\n\r\n function renderDateRangeValue(x: any) {\r\n const parts = x.value ? x.value.split('~') : [];\r\n const from = parts.length > 0 ? formatDate(parts[0].trim()) : '';\r\n const to = parts.length > 1 ? formatDate(parts[1].trim()) : '';\r\n\r\n return {formatDate(from)} ~ {formatDate(to)};\r\n }\r\n\r\n function renderValue(x: any) {\r\n if (x.type === 'bool') {\r\n return ;\r\n }\r\n if (x.type === 'date') {\r\n return renderDateRangeValue(x);\r\n }\r\n return (\r\n <>\r\n {x.value}\r\n \r\n );\r\n }\r\n\r\n function getSearchHistoryValue(recordCount: number) {\r\n let result = '';\r\n if (recordCount !== undefined && recordCount !== null)\r\n //result = \"displayRecordNum / FoundRecordNum\"\r\n result = recordCount > search.pageSize ? `${search.pageSize}/${recordCount} Records found` : `${recordCount}/${recordCount} Records found`\r\n return result;\r\n }\r\n \r\n const tempReverseArray = [...filterOrder].reverse();\r\n\r\n return (\r\n
\r\n {tempReverseArray.slice(-6).map((x:any, i:number) => (\r\n
\r\n
\r\n Search {tempReverseArray.length <= 6 ? i + 1 : tempReverseArray.length - (5 - i)} \r\n {x.label}: {renderValue(x)}\r\n
\r\n
\r\n {getSearchHistoryValue(x.count)}\r\n
\r\n
\r\n
\r\n ))}\r\n
\r\n );\r\n}\r\n\r\nfunction FilterEntry({\r\n filterId,\r\n filterLabel,\r\n entryType,\r\n value,\r\n onChange,\r\n nullOrEmpty,\r\n setNullOrEmpty,\r\n customRenderers,\r\n applySearch,\r\n floatOverride,\r\n decimals,\r\n noNullOrEmptySearches,\r\n}: any) {\r\n\r\n // Status column has special rendering and to avoid duplication it is handled here. If no customRenderers are available,\r\n // render this as a default\r\n if (filterId === 'status' && !customRenderers.some((x: any) => x.accessor === filterId)) {\r\n return (\r\n\r\n
\r\n \r\n {customRenderers.some((x: any) => x.accessor === 'statusNotUseFileLocked') ?\r\n {\r\n onChange(value);\r\n setNullOrEmpty(value);\r\n }}\r\n customRenderers={customRenderers}\r\n accessor={filterId}\r\n onEnter={applySearch}\r\n />\r\n :\r\n {\r\n onChange(value);\r\n setNullOrEmpty(value);\r\n }}\r\n customRenderers={customRenderers}\r\n accessor={filterId}\r\n onEnter={applySearch}\r\n />\r\n }\r\n \r\n\r\n
\r\n );\r\n }\r\n\r\n if (!entryType) {\r\n return (\r\n
 
\r\n );\r\n }\r\n\r\n const checkbox = noNullOrEmptySearches.some((x: any) => x.accessor === filterId) ? null : \r\n
\r\n {\r\n if (nullOrEmpty) {\r\n if (entryType === 'date' || entryType === 'number') {\r\n value.to = null;\r\n value.from = null;\r\n onChange(value);\r\n }\r\n else\r\n onChange(null);\r\n }\r\n setNullOrEmpty(nullOrEmpty);\r\n }\r\n }\r\n />\r\n {/* \r\n {\r\n if (nullOrEmpty) {\r\n if (entryType === 'date' || entryType === 'number') {\r\n value.to = null;\r\n value.from = null;\r\n onChange(value);\r\n }\r\n else\r\n onChange(null);\r\n }\r\n setNullOrEmpty(nullOrEmpty);\r\n }\r\n } />\r\n
\r\n }\r\n right={\r\n <>Search by Null or Empty\r\n }\r\n /> */}\r\n
;\r\n\r\n if (entryType === 'general') {\r\n return (\r\n
\r\n {/* */}\r\n \r\n {/* */}\r\n
\r\n {checkbox}\r\n
\r\n
\r\n );\r\n }\r\n if (entryType === 'date') {\r\n return (\r\n
\r\n {/* */}\r\n
\r\n
\r\n onChange({ from, to: from })}\r\n onEnter={applySearch}\r\n // onTabNext={() => {\r\n // const focusElement = document.getElementById('ifms-filter-dateto') as HTMLInputElement;\r\n // if (focusElement) {\r\n // focusElement.focus();\r\n // focusElement.select();\r\n // return true;\r\n // }\r\n // return false;\r\n // }}\r\n noRangeCheck\r\n />\r\n
\r\n
\r\n \r\n
\r\n
\r\n onChange({ from: value?.from, to })}\r\n onEnter={applySearch}\r\n noRangeCheck\r\n />\r\n
\r\n
\r\n {/*
*/}\r\n
\r\n {checkbox}\r\n
\r\n
\r\n );\r\n }\r\n if (entryType === 'number') {\r\n const customRenderer = customRenderers.find((x:any) => x.accessor === filterId);\r\n if (filterId && customRenderer) {\r\n return customRenderer.renderer({nullOrEmpty, value, onChange});\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n onChange({ from, to: from })}\r\n onEnter={applySearch}\r\n decimals={floatOverride ? 0 : decimals}\r\n // onTabNext={() => {\r\n // const focusElement = document.getElementById('ifms-filter-number2') as HTMLInputElement;\r\n // if (focusElement) {\r\n // focusElement.focus();\r\n // focusElement.select();\r\n // return true;\r\n // }\r\n // return false;\r\n // }}\r\n />\r\n
\r\n
\r\n \r\n
\r\n
\r\n onChange({ from: value?.from, to })}\r\n onEnter={applySearch}\r\n decimals={floatOverride ? 0 : decimals}\r\n />\r\n
\r\n
\r\n {/* */}\r\n
\r\n {checkbox}\r\n
\r\n
\r\n );\r\n }\r\n if (entryType === 'location') {\r\n return (\r\n
\r\n {/* */}\r\n onChange(e.target.value)} onEnter={applySearch} />\r\n {/* */}\r\n
\r\n {checkbox}\r\n
\r\n
\r\n );\r\n }\r\n if (entryType === 'bool') {\r\n if (filterId && customRenderers) {\r\n const customRenderer = customRenderers.find((x:any) => x.accessor === filterId);\r\n if (customRenderer?.renderer) {\r\n return (\r\n // \r\n
\r\n {customRenderer.renderer({ nullOrEmpty, value, onChange })}\r\n
\r\n //
\r\n );\r\n }\r\n }\r\n \r\n return (\r\n
\r\n {/* */}\r\n
\r\n \r\n
\r\n {/*
*/}\r\n
\r\n );\r\n }\r\n\r\n return (\r\n
 
\r\n );\r\n}\r\n\r\nfunction getFilterLabel(columnAccessor:any, entryType:any, other:any) {\r\n const generalFilters = other.generalFilters;\r\n const dateFilters = other.dateFilters;\r\n const numberFilters = other.numberFilters;\r\n const boolFilters = other.boolFilters;\r\n\r\n if (entryType === 'general') {\r\n return generalFilters.find((x:any) => x.accessor === columnAccessor)?.Header || '';\r\n } else if (entryType === 'date') {\r\n return dateFilters.find((x:any) => x.accessor === columnAccessor)?.Header || '';\r\n } else if (entryType === 'number') {\r\n return numberFilters.find((x:any) => x.accessor === columnAccessor)?.Header || '';\r\n } else if (entryType === 'bool') {\r\n return boolFilters.find((x:any) => x.accessor === columnAccessor)?.Header || '';\r\n } \r\n\r\n return '';\r\n}\r\n\r\nfunction getPresetType(filterColumnPreset:any, other:any) {\r\n const generalFilters = other.generalFilters;\r\n const dateFilters = other.dateFilters;\r\n const numberFilters = other.numberFilters;\r\n const boolFilters = other.boolFilters;\r\n\r\n if (filterColumnPreset) {\r\n if (dateFilters.findIndex((x:any) => x.accessor === filterColumnPreset) >= 0) {\r\n return 'date';\r\n } else if (numberFilters.findIndex((x:any) => x.accessor === filterColumnPreset) >= 0) {\r\n return 'number';\r\n } else if (generalFilters.findIndex((x:any) => x.accessor === filterColumnPreset) >= 0) {\r\n return 'general';\r\n } else if (boolFilters.findIndex((x:any) => x.accessor === filterColumnPreset) >= 0) {\r\n return 'bool';\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction getPresetEmptySlot(search: any, entryType: any, multipleSearch: boolean) {\r\n const extraCount = search && search.extras ? search.extras.length : 0;\r\n if (!multipleSearch) {\r\n if (entryType === 'general' || entryType === 'bool')\r\n return 'general1';\r\n else if (entryType === 'date')\r\n return 'date';\r\n else if (entryType === 'location')\r\n return 'location1';\r\n else if (entryType === 'number')\r\n return 'number';\r\n }\r\n if (entryType === 'general' || entryType === 'bool') {\r\n if (!search.general1) {\r\n return 'general1';\r\n }\r\n if (!search.general2) {\r\n return 'general2';\r\n }\r\n if (!search.general3) {\r\n return 'general3';\r\n }\r\n return `extra-${extraCount}-general`;\r\n } else if (entryType === 'date') {\r\n if (!search.date) {\r\n return 'date';\r\n }\r\n if (!search.date1) {\r\n return 'date1';\r\n }\r\n if (!search.date2) {\r\n return 'date2';\r\n }\r\n return `extra-${extraCount}-date`;\r\n } else if (entryType === 'location') {\r\n if (!search.location1) {\r\n return 'location1';\r\n }\r\n if (!search.location2) {\r\n return 'location2';\r\n }\r\n if (!search.location3) {\r\n return 'location3';\r\n }\r\n return `extra-${extraCount}-general`;\r\n } else if (entryType === 'number') {\r\n if (!search.number) {\r\n return 'number';\r\n }\r\n if (!search.number1) {\r\n return 'number1';\r\n }\r\n if (!search.number2) {\r\n return 'number2';\r\n }\r\n return `extra-${extraCount}-number`;\r\n }\r\n return null;\r\n}\r\n\r\nfunction mapPresetValueToSearch(columnId:any, value:any, search:any, presetSlot:any) {\r\n if (!presetSlot) {\r\n return;\r\n }\r\n\r\n if (presetSlot.startsWith('extra')) {\r\n const extraParts = presetSlot.split('-');\r\n const extraIndex = parseInt(extraParts[1]);\r\n const extraSlot = extraParts[2];\r\n \r\n let tempSearchExtras = search.extras ? [...search.extras] : [];\r\n \r\n const extraCount = tempSearchExtras.length;\r\n \r\n if (tempSearchExtras.length === 0 || (extraIndex >= (extraCount - 1) && tempSearchExtras[extraIndex]?.extraSlot !== columnId)) {\r\n tempSearchExtras[extraIndex] = { extraSlot: columnId };\r\n }\r\n \r\n switch (extraSlot) {\r\n case 'general':\r\n tempSearchExtras[extraIndex] = {\r\n ...tempSearchExtras[extraIndex],\r\n generalText: value\r\n };\r\n break;\r\n case 'date':\r\n tempSearchExtras[extraIndex] = {\r\n ...tempSearchExtras[extraIndex],\r\n dateFrom: value?.from,\r\n dateTo: value?.to\r\n };\r\n break;\r\n case 'number':\r\n tempSearchExtras[extraIndex] = {\r\n ...tempSearchExtras[extraIndex],\r\n numberFrom: value?.from,\r\n numberTo: value?.to\r\n };\r\n break;\r\n default:\r\n break;\r\n }\r\n search.extras = tempSearchExtras;\r\n } else {\r\n search[presetSlot] = columnId;\r\n \r\n switch (presetSlot) {\r\n case 'general1':\r\n search.generalText1 = value;\r\n break;\r\n case 'general2':\r\n search.generalText2 = value;\r\n break;\r\n case 'general3':\r\n search.generalText3 = value;\r\n break;\r\n case 'date':\r\n search.dateFrom = value?.from;\r\n search.dateTo = value?.to;\r\n break;\r\n case 'date1':\r\n search.dateFrom1 = value?.from;\r\n search.dateTo1 = value?.to;\r\n break;\r\n case 'date2':\r\n search.dateFrom2 = value?.from;\r\n search.dateTo2 = value?.to;\r\n break;\r\n case 'location1':\r\n search.location1Text = value;\r\n break;\r\n case 'location2':\r\n search.location2Text = value;\r\n break;\r\n case 'location3':\r\n search.location3Text = value;\r\n break;\r\n case 'number':\r\n search.numberFrom = value?.from;\r\n search.numberTo = value?.to;\r\n break;\r\n case 'number1':\r\n search.numberFrom1 = value?.from;\r\n search.numberTo1 = value?.to;\r\n break;\r\n case 'number2':\r\n search.numberFrom2 = value?.from;\r\n search.numberTo2 = value?.to;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n\r\nfunction setPresetValue(value:any, setValue:any, entryType:any) {\r\n if (!entryType) {\r\n return;\r\n }\r\n\r\n if (entryType === 'date' || entryType === 'number') {\r\n setValue({from: value?.from, to: value?.to });\r\n } else {\r\n setValue(value);\r\n }\r\n}\r\n\r\nfunction FilterDrawer({\r\n // breakNo,\r\n // width,\r\n onSearch,\r\n onClick, /* Search button click */\r\n searchStorage,\r\n setFilterOrderInStorage,\r\n hidden,\r\n ...other\r\n}:any) {\r\n const [isPaneOpen, _setIsPaneOpen] = useState(false);\r\n\r\n const [filterColumnPreset, setFilterColumnPreset] = useState(null);\r\n //const [filterOrder, _setFilterOrder] = useState(other?.filterOrder);\r\n const [filterValue, _setFilterValue] = useState(null);\r\n\r\n const multipleSearchRef = useRef(false);\r\n const [isMultipleSearchChecked, setIsMultipleSearchChecked] = useState(false);\r\n\r\n const filterValueRef = useRef(null);\r\n\r\n const noNullOrEmptySearches = other.noNullOrEmptySearches;\r\n const isNullSearchEnableColumn = nullSearchEnableColumns.some(x => x === filterColumnPreset);\r\n \r\n const filterOrderRef = useRef(other?.filterOrder ?? []);\r\n\r\n function setFilterValue(value:any){\r\n filterValueRef.current = value;\r\n _setFilterValue(value);\r\n }\r\n\r\n function setFilterOrder(f:any) {\r\n filterOrderRef.current = f;\r\n setFilterOrderInStorage(f);\r\n //_setFilterOrder(f);\r\n }\r\n\r\n function setIsPaneOpen(open:any) {\r\n _setIsPaneOpen(open);\r\n if (!open) {\r\n setFilterColumnPreset(null);\r\n setFilterValue(null);\r\n }\r\n }\r\n\r\n const [search, _setSearch] = useState(searchStorage);\r\n const searchRef = useRef(search);\r\n\r\n function setSearch(data: any) {\r\n searchRef.current = data;\r\n _setSearch(searchRef.current);\r\n }\r\n\r\n let clearSubscription:ISubscriptionDefinition|null = null;\r\n let presetSubscription:ISubscriptionDefinition|null = null;\r\n let countSubscription:ISubscriptionDefinition|null = null;\r\n let dismissSubscription:ISubscriptionDefinition|null = null;\r\n\r\n function subscribeChannels() {\r\n presetSubscription = postal.subscribe({\r\n channel: 'ifms-filter',\r\n topic: 'ifms-filter.preset',\r\n callback: ({columnId, value}) => {\r\n const entryType = getPresetType(columnId, other);\r\n if (!entryType) {\r\n // Column is not searchable\r\n return;\r\n }\r\n\r\n if (entryType === 'date') {\r\n const parseResult = dateTextToIso(value);\r\n if (parseResult.valid) {\r\n setFilterValue({ from: value, to: null });\r\n } else {\r\n setFilterValue({ from: null, to: null });\r\n }\r\n } \r\n else if (entryType === 'number') {\r\n setFilterValue({ from: parseFloat(value.replaceAll(',','')), to: null });\r\n }\r\n else if (entryType === 'bool') {\r\n setFilterValue(value);\r\n } else {\r\n setFilterValue(_.isEmpty(value.trim()) ? null : value.trim());\r\n }\r\n setFilterColumnPreset(columnId);\r\n\r\n setIsPaneOpen(true);\r\n },\r\n });\r\n countSubscription = postal.subscribe({\r\n channel: 'ifms-filter',\r\n topic: 'ifms-filter.count',\r\n callback: setCount,\r\n });\r\n dismissSubscription = postal.subscribe({\r\n channel: 'ifms-filter',\r\n topic: 'ifms-filter.dismiss',\r\n callback: dismiss,\r\n });\r\n }\r\n\r\n function unsubscribeChannels() {\r\n if (clearSubscription) {\r\n postal.unsubscribe(clearSubscription);\r\n }\r\n if (presetSubscription) {\r\n postal.unsubscribe(presetSubscription);\r\n }\r\n if (countSubscription) {\r\n postal.unsubscribe(countSubscription);\r\n }\r\n if (dismissSubscription) {\r\n postal.unsubscribe(dismissSubscription);\r\n }\r\n }\r\n\r\n function setPageSize(pageSize:any) { \r\n setSearch({...searchRef.current, pageSize}); \r\n }\r\n\r\n useEffect(() => {\r\n multipleSearchRef.current = isMultipleSearchChecked;\r\n }, [isMultipleSearchChecked]);\r\n\r\n useEffect(() => {\r\n subscribeChannels();\r\n\r\n return () => {\r\n unsubscribeChannels();\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n\r\n function dismiss() {\r\n setNullOrEmpty(false);\r\n setIsMultipleSearchChecked(false);\r\n setOrderByAscending(false);\r\n setIsPaneOpen(false);\r\n }\r\n\r\n function setNullOrEmpty(value: any) {\r\n if (typeof value === 'string') { //for status, recognized\r\n value = value.length === 0;\r\n }\r\n setSearch({\r\n ...searchRef.current,\r\n generalNullOrEmpty: value,\r\n dateNullOrEmpty: value,\r\n numberNullOrEmpty: value,\r\n });\r\n }\r\n\r\n function setOrderByAscending(value: boolean) {\r\n setSearch({\r\n ...searchRef.current,\r\n orderByAscending : value\r\n });\r\n }\r\n\r\n function setCount({search, count}:any) {\r\n const filterIndex = filterOrderRef.current?.findIndex((x:any) => searchInFilterOrderComparer(x.s, search)); \r\n\r\n if (filterIndex >= 0) {\r\n const f:any = [...filterOrderRef.current];\r\n if (f[filterIndex] && f[filterIndex].count !== count) {\r\n const newFilterOrder = _.cloneDeep(f[filterIndex]);\r\n newFilterOrder.count = count;\r\n f[filterIndex] = newFilterOrder;\r\n setFilterOrder(f);\r\n //onSearch(search, false, f);\r\n }\r\n }\r\n }\r\n\r\n //Need when open the Search View and use apply button immediately with a empty('') value\r\n function isSpecialHeaderWithEmptyValue() {\r\n if (!search.generalNullOrEmpty)\r\n return isNullSearchEnableColumn;\r\n else\r\n return true;\r\n }\r\n\r\n function applySearch(applyPageSize: boolean = false) {\r\n \r\n const recalcApplyButtonDisable = entryType === 'number' || entryType ==='date' \r\n ? (filterValueRef.current?.from === '' || filterValueRef.current?.from === null) && (filterValueRef.current?.to === '' || filterValueRef.current?.to === null) && !(search.dateNullOrEmpty || search.numberNullOrEmpty)\r\n : ((filterValueRef.current === '' || filterValueRef.current === null) && !search.generalNullOrEmpty) && !isNullSearchEnableColumn;\r\n\r\n \r\n if (recalcApplyButtonDisable && !applyPageSize) return;\r\n\r\n if (!filterColumnPreset) {\r\n setIsPaneOpen(false);\r\n onSearch(search, false, filterOrderRef.current);\r\n return;\r\n }\r\n\r\n const newSearch = multipleSearchRef.current \r\n ? { ...search } \r\n : { ...(other.externalSetSearchInStorage ? other.externalSetSearchInStorage : initialSearch) };\r\n\r\n search.generalNullOrEmpty = isSpecialHeaderWithEmptyValue();\r\n newSearch.generalNullOrEmpty = search.generalNullOrEmpty;\r\n newSearch.dateNullOrEmpty = search.dateNullOrEmpty;\r\n newSearch.numberNullOrEmpty = search.numberNullOrEmpty;\r\n newSearch.pageSize = search.pageSize;\r\n if (!newSearch.orderByAscending && (entryType === 'number' || entryType === 'general'))\r\n newSearch.orderByAscending = true;\r\n newSearch.isExpressSearch = false; //Express Search 검색이 아닌 F5 단축키 또는 우클릭 메뉴를 통해 검색할 경우 기존 검색방식으로 동작하도록 하기 위해 추가\r\n \r\n const existingEntryIndex = filterOrderRef.current.findIndex((x:any) => x.columnId === filterColumnPreset);\r\n let filterSlot = existingEntryIndex >= 0 && multipleSearchRef.current ? (filterOrderRef.current[existingEntryIndex] as any|null|undefined)?.slot : null;\r\n\r\n let filterSlotOverride = true;\r\n\r\n if (!filterSlot) {\r\n filterSlot = getPresetEmptySlot(search, entryType, multipleSearchRef.current);\r\n filterSlotOverride = false;\r\n }\r\n\r\n mapPresetValueToSearch(filterColumnPreset, filterValueRef.current, newSearch, filterSlot);\r\n\r\n const searchToApply = {...newSearch};\r\n\r\n let displayValue = filterValueRef.current;\r\n if(!nullSearchEnableColumns.includes(filterColumnPreset) && displayValue === '') return;\r\n if (entryType === 'number' || entryType ==='date') {\r\n displayValue = `${filterValueRef.current?.from || ''} ~ ${filterValueRef.current?.to || ''}`;\r\n }\r\n \r\n const newFilterOrderEntry = {\r\n columnId: filterColumnPreset,\r\n slot: filterSlot,\r\n type: entryType,\r\n label: filterLabel,\r\n value: displayValue,\r\n s: _.cloneDeep(searchToApply),\r\n };\r\n\r\n if (!filterSlotOverride) {\r\n if (multipleSearchRef.current) {\r\n setFilterOrder([newFilterOrderEntry, ...filterOrderRef.current]);\r\n } else {\r\n setFilterOrder([newFilterOrderEntry]);\r\n }\r\n } else {\r\n if (multipleSearchRef.current) {\r\n //const multipleOf:any = [...filterOrderRef.current];\r\n //multipleOf[existingEntryIndex] = newFilterOrderEntry;\r\n const multipleOf: any[] = [newFilterOrderEntry, ...filterOrderRef.current];\r\n multipleOf.splice(existingEntryIndex + 1, 1);\r\n setFilterOrder(multipleOf);\r\n } else {\r\n setFilterOrder([newFilterOrderEntry]);\r\n }\r\n }\r\n\r\n setSearch(newSearch);\r\n setIsPaneOpen(false);\r\n\r\n onSearch(searchToApply, false, filterOrderRef.current);\r\n }\r\n\r\n /*\r\n function applyPageSize() {\r\n applySearch(true);\r\n }\r\n*/\r\n\r\n function focusEntry() {\r\n const dataEntryContainer = document.getElementById('ifms-filter-entry-container');\r\n if (!dataEntryContainer) {\r\n return;\r\n }\r\n\r\n if (dataEntryContainer) {\r\n let focusNode:any = null;\r\n\r\n const tabableElements = dataEntryContainer.querySelectorAll('.ifms-tabable-active');\r\n if (tabableElements && tabableElements.length > 0) {\r\n focusNode = tabableElements[0];\r\n }\r\n\r\n if (focusNode) {\r\n if (focusNode.focus) {\r\n focusNode.focus();\r\n }\r\n if (focusNode.select) {\r\n focusNode.select();\r\n }\r\n }\r\n }\r\n setNullOrEmpty(false);\r\n setOrderByAscending(false);\r\n let isMultiple = false;\r\n if(filterOrderRef.current !== undefined && filterOrderRef.current.length > 0){\r\n if(filterOrderRef.current.length === 1 && filterOrderRef.current[0].label === filterLabel){\r\n isMultiple = false;\r\n }else{\r\n isMultiple = true;\r\n }\r\n if(filterOrderRef.current[0].switchList){\r\n isMultiple = false;\r\n }\r\n }\r\n setIsMultipleSearchChecked(isMultiple);\r\n }\r\n const customRenderers = other.customRenderers || [];\r\n\r\n const entryType = getPresetType(filterColumnPreset, other);\r\n let filterLabel = getFilterLabel(filterColumnPreset, entryType, other);\r\n\r\n //const showmultipleSearch = !!filterOrder && filterOrder.filter((x:any) => x.columnId !== filterColumnPreset).length > 0;\r\n const decimals = getDecimals(filterColumnPreset, other);\r\n const floatOverride = (decimals === 0 ? true : false);\r\n\r\n const applyButtonDisable = entryType === 'number' || entryType ==='date' \r\n ? (filterValue?.from === '' || filterValue?.from === null) && (filterValue?.to === '' || filterValue?.to === null) && !(search.dateNullOrEmpty || search.numberNullOrEmpty)\r\n : ((filterValue === '' || filterValue === null) && !search.generalNullOrEmpty) && !isNullSearchEnableColumn;\r\n\r\n function onEntryValueChange(value:any) {\r\n setPresetValue(value, setFilterValue, entryType);\r\n }\r\n\r\n function getDecimals(columnAccessor: any, other: any) {\r\n const numberFilters = other.numberFilters;\r\n const formatString: string = numberFilters.find((x:any) => x.accessor === columnAccessor)?.formatString || '';\r\n let ret = formatString.slice(formatString.lastIndexOf(\".\")).length;\r\n\r\n if (ret === 0) ret = 2;\r\n else if (ret > 0) ret--;\r\n\r\n return ret; \r\n }\r\n\r\n return (\r\n <>\r\n \r\n Search\r\n \r\n\r\n \r\n
\r\n
\r\n {/* {showMultipleSearch && */}\r\n
\r\n { setIsMultipleSearchChecked(value); }} />\r\n
\r\n {/* } */}\r\n\r\n {entryType === 'date' ?\r\n
\r\n { setOrderByAscending(!value) }} />\r\n
\r\n :\r\n <>\r\n }\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n Max Records\r\n
\r\n
\r\n \r\n
\r\n
\r\n (*Max=65,000)\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n Apply\r\n   \r\n \r\n Cancel\r\n \r\n
\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nFilterDrawer.propTypes = {\r\n};\r\n\r\n// Don't use memo, it will break useFilterBar hook\r\nexport default FilterDrawer;\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport _ from 'lodash';\r\nimport React, { useContext, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { useHistory } from 'react-router';\r\n// import { useDispatch } from 'react-redux';\r\n\r\n// import FilterRow from './ui/tables/FilterRow';\r\nimport FilterDrawer from '../ui/tables/FilterDrawer';\r\nimport useStorage from './useStorage';\r\nimport useFunctionKeys from './useFunctionKeys';\r\n\r\nimport postal from 'postal';\r\n\r\n// import { setInStorage } from './actions/storage';\r\n\r\nimport { FilterStorageVersion, getInitialSearch } from '../filtering';\r\n\r\nimport ApplicationContext from '../ApplicationContext';\r\nimport useExternalScreenFilter from './useExternalScreenFilter';\r\nimport { TableColumn } from '../tableSettings';\r\nimport { XCellType } from '../framework.core/XExportColumn';\r\nimport { ListFilterType } from '../fms.core/constants';\r\nimport useDeepCompareEffect from './useDeepCompareEffect';\r\n\r\nfunction FilterButtonProxyFactory({initialized, ...other}:any) {\r\n if (!initialized) {\r\n return null;\r\n }\r\n\r\n return ;\r\n}\r\n\r\nfunction FilterButtonProxy(props:any) {\r\n const filterProps = {\r\n ...props,\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\n// function FilterRowProxyFactory({initialized, ...other}) {\r\n// if (!initialized) {\r\n// return null;\r\n// }\r\n \r\n// return \r\n// }\r\n\r\n// function FilterRowProxy(props) {\r\n// const { width, breakNo } = useIfmsColSizes();\r\n\r\n// const filterProps = {\r\n// width,\r\n// breakNo,\r\n// ...props,\r\n// }\r\n\r\n// return (\r\n// \r\n// );\r\n// }\r\n\r\n/**\r\n * useFilterBar - helper hook for list screens to provide generic filtering feature\r\n *\r\n * @export\r\n * @param {*} tableSettings - list table settings from where to extract filtering configuration\r\n * @param {*} onClear - on filter clear callback\r\n * @param {*} customRenderers - optional custom renderers for filter. Used for overriding default rendering of filters\r\n * @param {*} initialOrderBy - initial order by column\r\n * @param {string} [pageSizePlaceholderId='ifms-list-page-size'] - placeholder in DOM where page size management control will be injected\r\n * @param size\r\n * @return {*}\r\n */\r\nexport default function useFilterBar(tableSettings: any, customRenderers: any, initialOrderBy: any, customStorageName = '', hidden = false) {\r\n const appContext = useContext(ApplicationContext);\r\n useFunctionKeys({onEsc});\r\n const history = useHistory();\r\n\r\n const {setFilterForScreenExternally, setFilterForSearchModel} = useExternalScreenFilter();\r\n\r\n // const dispatch = useDispatch();\r\n const channel = postal.channel('ifms-filter');\r\n const storageName = `${FilterStorageVersion}-${window.location.pathname}${window.location.search}${customStorageName !== '' ? `-${customStorageName}` : ''}`;\r\n\r\n const storageKey = `filter-${storageName}`;\r\n const storageExternalSetKey = `filter-external-set-${storageName}`;\r\n const storageExternalSetSourceKey = `filter-external-set-source-${storageName}`;\r\n const orderByStorageKey = `filter-orderby-${storageName}`;\r\n const filterOrdersStorageKey = `filter-order-${storageName}`;\r\n\r\n const storageInitialize = !!initialOrderBy ? {...getInitialSearchWithPageSizeFromSettings(), ...initialOrderBy} : getInitialSearchWithPageSizeFromSettings();\r\n\r\n // In case search has been set externally by different screen, this is the default\r\n const [externalSetSearchInStorage, setExternalSetSearchInStorage, removeExternalSetSearchFromStorage] = useStorage(storageExternalSetKey, null);\r\n const [externalSetSearchSourceInStorage, setExternalSetSearchSourceInStorage, removeExternalSetSearchSourceFromStorage] = useStorage(storageExternalSetSourceKey, null);\r\n\r\n const [searchInStorage, _setSearchInStorage, removeSearchFromStorage] = useStorage(storageKey, storageInitialize);\r\n const [filterOrderInStorage, setFilterOrderInStorage, removeFilterOrderFromStorage] = useStorage(filterOrdersStorageKey, []);\r\n const storageRef = useRef(storageInitialize);\r\n\r\n const [, setInitialOrderByInStorage, removeInitialOrderByFromStorage] = useStorage(orderByStorageKey, null); // Use for external filter set\r\n\r\n const [search, _setSearch] = useState(searchInStorage);\r\n const searchRef = useRef(null);\r\n const searchCountRef = useRef(0);\r\n\r\n const generalFilters = tableSettings?.columns.filter((x:TableColumn) => x.filterable && (x.filterTypeV2 === undefined || x.filterTypeV2 === XCellType.String || x.filterTypeV2 === XCellType.StrBool ));\r\n const dateFilters = tableSettings?.columns.filter((x:TableColumn) => x.filterable && (x.filterTypeV2 === XCellType.Date || x.filterTypeV2 === XCellType.DateTime || x.filterType === \"date\"));\r\n const numberFilters = tableSettings?.columns.filter((x:TableColumn) => x.filterable && (x.filterTypeV2 === XCellType.Double || x.filterType === \"number\"));\r\n const boolFilters = tableSettings?.columns.filter((x:TableColumn) => x.filterable && (x.filterTypeV2 === XCellType.Bool || x.filterType === \"bool\"));\r\n const noNullOrEmptySearches = tableSettings?.columns.filter((x:TableColumn) => !!x.noNullOrEmptySearch);\r\n \r\n const initialized = !!search;\r\n let filterSetterSubscription = useRef|null>(null);\r\n let forceClearSubscription = useRef|null>(null);\r\n\r\n useEffect(() => {\r\n subscribeChannels(); \r\n setInitialOrderByInStorage(initialOrderBy);\r\n\r\n return () => {\r\n unsubscribeChannels();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useDeepCompareEffect(() => {\r\n const isEqual = _.isEqual(search, searchInStorage);\r\n if (!isEqual) {\r\n const s = {\r\n ...searchInStorage,\r\n };\r\n searchRef.current = s;\r\n _setSearch(s);\r\n searchCountRef.current = searchCountRef.current + 1;\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [searchInStorage]);\r\n\r\n function subscribeChannels() {\r\n filterSetterSubscription.current = postal.subscribe({\r\n channel: 'ifms-filter',\r\n topic: 'ifms-filter.countsetter',\r\n callback: applyCount,\r\n });\r\n forceClearSubscription.current = postal.subscribe({\r\n channel: 'ifms-filter',\r\n topic: 'ifms-filter.forceclear',\r\n callback: forceClear,\r\n });\r\n }\r\n\r\n function unsubscribeChannels() {\r\n if (filterSetterSubscription.current) {\r\n postal.unsubscribe(filterSetterSubscription.current);\r\n }\r\n if (forceClearSubscription.current) {\r\n postal.unsubscribe(forceClearSubscription.current);\r\n }\r\n }\r\n\r\n function onEsc() {\r\n // Detect if the filter is opened\r\n const filterNode = document.getElementById('ifms-list-screen-filter');\r\n\r\n if (!filterNode) {\r\n return false;\r\n } else {\r\n channel.publish('ifms-filter.dismiss');\r\n return true;\r\n }\r\n }\r\n\r\n function setSearchInStorage(s:any, filterOrder:any|undefined = undefined) {\r\n if (filterOrder !== null && filterOrder !== undefined) {\r\n setFilterOrderInStorage(filterOrder);\r\n }\r\n storageRef.current = s;\r\n _setSearchInStorage(s);\r\n }\r\n\r\n function setOrderBy(orderBy:any) {\r\n setSearchInStorage({...storageRef.current, ...orderBy});\r\n }\r\n\r\n function setListFilterType(listType:ListFilterType){\r\n setSearchInStorage({...storageRef.current, listType});\r\n }\r\n\r\n function getInitialSearchWithPageSizeFromSettings() {\r\n return {\r\n ...getInitialSearch(history, appContext.user?.id ?? null),\r\n pageSize: appContext.defaultPageSize,\r\n }\r\n }\r\n\r\n function runSearchValueExtractors(s:any) {\r\n let generalText1 = s.generalText1;\r\n let generalText2 = s.generalText2;\r\n let generalText3 = s.generalText3;\r\n\r\n let numberFrom = s.numberFrom;\r\n let numberTo = s.numberTo;\r\n let numberFrom1 = s.numberFrom1;\r\n let numberTo1 = s.numberTo1;\r\n let numberFrom2 = s.numberFrom2;\r\n let numberTo2 = s.numberTo2;\r\n\r\n let extras = s.extras;\r\n\r\n if (s.general1 && customRenderers) {\r\n const customRenderer = customRenderers.find((x:any) => x.accessor === s.general1);\r\n if (customRenderer && customRenderer.searchValueExtractor) {\r\n generalText1 = customRenderer.searchValueExtractor(s.generalText1);\r\n }\r\n }\r\n\r\n if (s.general2 && customRenderers) {\r\n const customRenderer = customRenderers.find((x:any) => x.accessor === s.general2);\r\n if (customRenderer && customRenderer.searchValueExtractor) {\r\n generalText2 = customRenderer.searchValueExtractor(s.generalText2);\r\n }\r\n }\r\n\r\n if (s.general3 && customRenderers) {\r\n const customRenderer = customRenderers.find((x:any) => x.accessor === s.general3);\r\n if (customRenderer && customRenderer.searchValueExtractor) {\r\n generalText3 = customRenderer.searchValueExtractor(s.generalText3);\r\n }\r\n }\r\n\r\n if (s.number && customRenderers) {\r\n const customRenderer = customRenderers.find((x:any) => x.accessor === s.number);\r\n if (customRenderer && customRenderer.searchValueExtractor) {\r\n const {from, to} = customRenderer.searchValueExtractor({from: s.numberFrom, to: s.numberTo});\r\n numberFrom = from;\r\n numberTo = to;\r\n }\r\n }\r\n if (s.number1 && customRenderers) {\r\n const customRenderer = customRenderers.find((x:any) => x.accessor === s.number1);\r\n if (customRenderer && customRenderer.searchValueExtractor) {\r\n const {from, to} = customRenderer.searchValueExtractor({from: s.numberFrom1, to: s.numberTo1});\r\n numberFrom1 = from;\r\n numberTo1 = to;\r\n }\r\n }\r\n if (s.number2 && customRenderers) {\r\n const customRenderer = customRenderers.find((x:any) => x.accessor === s.number2);\r\n if (customRenderer && customRenderer.searchValueExtractor) {\r\n const {from, to} = customRenderer.searchValueExtractor({from: s.numberFrom2, to: s.numberTo2});\r\n numberFrom2 = from;\r\n numberTo2 = to;\r\n }\r\n }\r\n\r\n if (extras && extras.length > 0 && customRenderers) {\r\n extras = extras.map((extra: any, i: number) => {\r\n const customRenderer = customRenderers.find((x: any) => x.accessor === extra.extraSlot);\r\n if (customRenderer && customRenderer.searchValueExtractor) {\r\n if (s.extras[i].generalText !== undefined) {\r\n return {\r\n ...extra,\r\n generalText: customRenderer.searchValueExtractor(extra.generalText)\r\n };\r\n } else if (s.extras[i].numberFrom || s.extras[i].numberTo) {\r\n return {\r\n ...extra,\r\n numberFrom: customRenderer.searchValueExtractor(extra.numberFrom),\r\n numberTo: customRenderer.searchValueExtractor(extra.numberTo)\r\n };\r\n }\r\n }\r\n return extra;\r\n });\r\n }\r\n\r\n return {\r\n ...s, generalText1, generalText2, generalText3,\r\n numberFrom, numberTo, numberFrom1, numberTo1, numberFrom2, numberTo2,extras};\r\n }\r\n\r\n function forceClear() {\r\n const s = { ...getInitialSearchWithPageSizeFromSettings(), version: storageRef.current.version + 1 };\r\n setSearchInStorage(s, []);\r\n setExternalSetSearchInStorage(null);\r\n setExternalSetSearchSourceInStorage(null);\r\n }\r\n\r\n function clearFilters() {\r\n\r\n const s = !externalSetSearchInStorage\r\n ? { ...getInitialSearchWithPageSizeFromSettings(), version: storageRef.current.version + 1 }\r\n : { ...getInitialSearchWithPageSizeFromSettings(), version: storageRef.current.version + 1, ...externalSetSearchInStorage };\r\n setSearchInStorage(s, []);\r\n }\r\n\r\n function clearFiltersFromStorage() {\r\n removeSearchFromStorage();\r\n removeFilterOrderFromStorage();\r\n removeInitialOrderByFromStorage();\r\n removeExternalSetSearchFromStorage();\r\n removeExternalSetSearchSourceFromStorage();\r\n }\r\n\r\n function applyCount(count:any) {\r\n channel.publish('ifms-filter.count', { search: searchRef.current, count });\r\n }\r\n\r\n const filterProps = {\r\n initialized,\r\n customRenderers,\r\n generalFilters,\r\n dateFilters,\r\n numberFilters,\r\n boolFilters,\r\n noNullOrEmptySearches,\r\n onSearch: (s:any, resetOrderBy:any, filterOrder:any) => {\r\n if (resetOrderBy) {\r\n setSearchInStorage({...runSearchValueExtractors(s), ...initialOrderBy, version: storageRef.current.version + 1}, filterOrder);\r\n } else {\r\n setSearchInStorage({...runSearchValueExtractors(s), version: storageRef.current.version + 1}, filterOrder);\r\n }\r\n },\r\n onClick: () => channel.publish('ifms-filter.filterPreset'),\r\n filterOrder: filterOrderInStorage,\r\n externalSetSearchInStorage,\r\n searchStorage: {...searchInStorage},\r\n setFilterOrderInStorage,\r\n hidden,\r\n };\r\n\r\n // function setFilterForScreenExternally(url, filter) {\r\n // const otherStorageKey = `filter-${FilterStorageVersion}-${url}`;\r\n\r\n // const filterObj = {\r\n // ...getInitialSearchWithPageSizeFromSettings(),\r\n // ...filter,\r\n // };\r\n // const obj = {};\r\n // obj[otherStorageKey] = filterObj;\r\n\r\n // dispatch(setInStorage(obj));\r\n // }\r\n\r\n return {\r\n // FilterRow: FilterRowProxyFactory.bind(this, filterProps),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n // FilterRow: useMemo(() => FilterRowProxyFactory.bind(this, filterProps), [tableSettings, searchInStorage.version, initialized]),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n // @ts-ignore:next-line\r\n FilterButton: useMemo(() => FilterButtonProxyFactory.bind(this, filterProps), [tableSettings, initialized, searchCountRef.current]),\r\n // search: prepareSearchForApi(search),\r\n search,\r\n clearFilters,\r\n clearFiltersFromStorage,\r\n setOrderBy,\r\n setFilterForScreenExternally,\r\n setFilterForSearchModel,\r\n openedByF6: !!externalSetSearchInStorage,\r\n f6Origin: !!externalSetSearchInStorage ? externalSetSearchSourceInStorage : null,\r\n f6Query: externalSetSearchInStorage?.generalText1 ?? null,\r\n setListFilterType\r\n };\r\n}","export default __webpack_public_path__ + \"static/media/container_tracking-white.beabfeb2.svg\";","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nfunction LinkButton({\r\n onClick = () => {},\r\n children = undefined,\r\n name=undefined,\r\n}: {\r\n onClick?: VoidFunction,\r\n children?: React.ReactChild|React.ReactNode|string|null|undefined,\r\n name?:string|undefined\r\n}) {\r\n \r\n return (\r\n \r\n );\r\n}\r\n\r\nLinkButton.defaultProps = {\r\n onClick: () => {},\r\n};\r\n\r\nLinkButton.propTypes = {\r\n onClick: PropTypes.func.isRequired,\r\n};\r\n\r\n\r\nexport default React.memo(LinkButton);\r\n","import { IApplicationContext } from '../../ApplicationContext';\r\nimport { infoAreaBicTable, ApplicableTableSettings } from \"../../tableSettings\";\r\nimport { TextAlignLeftRenderer, TextRenderer, DateRenderer } from '../../uiControls/SmartTableRenderers';\r\nimport SmartTable from '../../uiControls/SmartTable';\r\nimport { openNewPage, NavigationType } from '../../util/navigationHelpers';\r\nimport {AcctDetail} from '../../fms.core/AcctDetail';\r\nimport { IJobListViewContext } from \"./JobListViewContext\";\r\nimport CurrencyLabel from \"../../uiControls/CurrencyLabel\";\r\nimport Label from '../../ui/Label';\r\nimport LinkButton from '../../ui/LinkButton';\r\nimport { getJobNameFromInvBillCrDbJobType, isHouseJob, isMasterJob } from '../../framework.core/JobNames';\r\n\r\ninterface infoareaBicParam {\r\n appContext:IApplicationContext, \r\n jobName:string, \r\n jobId:number, \r\n jobListContext:IJobListViewContext,\r\n infoHeadline: string|undefined,\r\n history:any\r\n}\r\nasync function loadInfoAreaInvoiceBillCrDb({appContext, jobName, jobId, jobListContext, history, infoHeadline = undefined }:infoareaBicParam) {\r\n const apiResult = await appContext.api.getJobAcctDetails(jobName, jobId);\r\n\r\n if (!apiResult) {\r\n return null;\r\n }\r\n\r\n function AccountingEntityRenderer(onLinkToAccounting:any, {data, row, value}:any) {\r\n const entity = data[row.index];\r\n \r\n return
\r\n onLinkToAccounting(entity)}>{value}\r\n
;\r\n }\r\n \r\n function onLinkToAccounting(entity:AcctDetail) {\r\n if (!entity || !entity.type || !entity.invoiceNo) {\r\n return;\r\n }\r\n \r\n if (entity.type === 'B') {\r\n const linkPath = `/accounting/bill/view/${getJobNameFromInvBillCrDbJobType(entity.jobType)}/${entity.jobId}/${entity.id}`\r\n openNewPage(history, linkPath, NavigationType.newPage);\r\n }\r\n if (entity.type === 'I') {\r\n const linkPath = `/accounting/invoice/view/${getJobNameFromInvBillCrDbJobType(entity.jobType)}/${entity.jobId}/${entity.id}`\r\n openNewPage(history, linkPath, NavigationType.newPage);\r\n }\r\n if (entity.type === 'C') {\r\n const linkPath = `/accounting/crdb/view/${getJobNameFromInvBillCrDbJobType(entity.jobType)}/${entity.jobId}/${entity.id}`\r\n openNewPage(history, linkPath, NavigationType.newPage);\r\n }\r\n }\r\n \r\n function CurrencyRenderer(value:number|null|undefined, currency:string, isLast:boolean=false) {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n \r\n function acctTypeRenderer({value}:any) {\r\n if(value === 'I') return
Invoice
;\r\n else if(value === 'B') return
Bill
;\r\n else if(value === 'C') return
CrDb
;\r\n else return ;\r\n }\r\n\r\n function jobTypeRenderer({value}:any) {\r\n let job = getJobNameFromInvBillCrDbJobType(value);\r\n if(isMasterJob(job)) return
M
;\r\n else if(isHouseJob(job)) return
H
;\r\n else return ;\r\n }\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n tableName: 'infoAreaBicTable',\r\n ...infoAreaBicTable,\r\n data: apiResult,\r\n \r\n rowRenderers: [\r\n { accessor: 'postDate', Cell: DateRenderer },\r\n { accessor: 'type', Cell: acctTypeRenderer },\r\n { accessor: 'jobType', Cell: jobTypeRenderer },\r\n // @ts-ignore:next-line\r\n { accessor: 'invoiceNo', Cell: AccountingEntityRenderer.bind(this, onLinkToAccounting) },\r\n { accessor: 'entityName', Cell: TextAlignLeftRenderer },\r\n { accessor: 'cur', Cell: TextRenderer },\r\n // @ts-ignore:next-line\r\n { accessor: 'amount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.amount, cell.row.values.cur) },\r\n // @ts-ignore:next-line\r\n { accessor: 'paidAmount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.paidAmount, cell.row.values.cur) },\r\n // @ts-ignore:next-line\r\n { accessor: 'balance', Header: () =>
Balance
, Cell: ({cell}) => CurrencyRenderer(cell.row.values.balance, cell.row.values.cur, true) },\r\n ],\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default loadInfoAreaInvoiceBillCrDb;\r\n","import { TableSettings } from \"../../../../tableSettings\";\r\n\r\nexport const adjustBalanceTable: TableSettings = {\r\n tableVersion: 10044,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '221px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3,\r\n },\r\n {\r\n Header: 'Date',\r\n accessor: 'invoiceDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8,\r\n },\r\n {\r\n Header: 'Account Number',\r\n accessor: 'invoiceNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13,\r\n },\r\n {\r\n Header: 'Head Amount',\r\n accessor: 'invoiceAmt',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.5,\r\n },\r\n {\r\n Header: 'Detail Amount',\r\n accessor: 'detAmt',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.5,\r\n },\r\n {\r\n Header: 'Paid Amount',\r\n accessor: 'paidAmt',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.5,\r\n },\r\n {\r\n Header: 'Actual Paid Amount',\r\n accessor: 'aPaidAmt',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.5,\r\n },\r\n {\r\n Header: 'Duty Paid Amount',\r\n accessor: 'dutyPaidAmt',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.5,\r\n },\r\n {\r\n Header: 'Actual Duty Paid Amount',\r\n accessor: 'aDutyPaidAmt',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.5,\r\n },\r\n {\r\n Header: 'Error Amount',\r\n accessor: 'errorAmt',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.5,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.5,\r\n },\r\n ]\r\n};\r\n\r\nexport const sendFaxTable: TableSettings = {\r\n tableVersion: 10040,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '221px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: 'Select',\r\n accessor: 'isSelected',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: 'Company',\r\n accessor: 'companyName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 35.71,\r\n },\r\n {\r\n Header: 'Dept',\r\n accessor: 'dept',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.29,\r\n },\r\n {\r\n Header: 'Name',\r\n accessor: 'contactName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 21.43,\r\n },\r\n {\r\n Header: 'Fax',\r\n accessor: 'faxNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.86,\r\n },\r\n ]\r\n};\r\n\r\nexport const emailCcTable: TableSettings = {\r\n tableVersion: 10040,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '380px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: 'Select',\r\n accessor: 'selected',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.00,\r\n },\r\n {\r\n Header: 'Company Name',\r\n accessor: 'company',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 24.00,\r\n },\r\n {\r\n Header: 'Dept',\r\n accessor: 'dept',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.00,\r\n },\r\n {\r\n Header: 'Contact',\r\n accessor: 'contact',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20.00,\r\n },\r\n {\r\n Header: 'Email Address',\r\n accessor: 'email',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 30.00,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.00,\r\n },\r\n ]\r\n};\r\n\r\nexport const memoFileTable: TableSettings = {\r\n tableVersion: 10042,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '380px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: 'Select',\r\n accessor: 'selected',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.32,\r\n },\r\n {\r\n Header: 'File Name',\r\n accessor: 'file',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 28.30,\r\n },\r\n {\r\n Header: 'Date',\r\n accessor: 'date',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.09,\r\n },\r\n {\r\n Header: 'Memo Title',\r\n accessor: 'title',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 41.51,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.78,\r\n },\r\n ]\r\n};\r\n","import {useContext, MutableRefObject, useEffect, useState} from 'react';\r\nimport {useTypedFastStorage} from '../../../hooks/useFastStorage';\r\nimport useTableStorage from '../../../hooks/useTableStorage';\r\nimport {IGeneralWithList} from \"../../../ifmsTypes\";\r\nimport { ApplicableTableSettings } from '../../../tableSettings';\r\nimport SecondaryButton from \"../../../ui/SecondaryButton\";\r\nimport SmartTable from '../../../uiControls/SmartTable';\r\nimport { adjustBalanceTable } from './reportTableSettings/reportTableSettings';\r\nimport { DateRenderer, FloatRenderer, NumberedIndicatorRenderer, TextAlignLeftRenderer } from '../../../uiControls/SmartTableRenderers';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport { getTbNameByJobName, JobNames } from '../../../framework.core/JobNames';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport constants from '../../../constants';\r\n\r\ninterface AdjustBalanceStorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\ninterface AdjustBalanceViewParams {\r\n id: string | undefined,\r\n onPopupClose?: () => void,\r\n jobName: JobNames\r\n};\r\ninterface AdjustBalanceLoadedDetailsViewParams {\r\n adjustBalance: IGeneralWithList,\r\n adjustBalanceRef: MutableRefObject,\r\n setAdjustBalance: (x: Partial) => void,\r\n onPopupClose?: () => void,\r\n jobName: JobNames\r\n};\r\n\r\nfunction getAdjustBalanceStorageKeys(): AdjustBalanceStorageKeys {\r\n return {modelStorage: 'report-adjust-balance'}\r\n}\r\n\r\nfunction AdjustBalanceImpl(params: AdjustBalanceViewParams) {\r\n const {jobName} = params;\r\n const {modelStorage} = getAdjustBalanceStorageKeys();\r\n const [inStorage, setInStorage, removeAdjustBalanceFromStorage, adjustBalanceRef] = useTypedFastStorage(modelStorage, null);\r\n const [initialized, setInitialized] = useState(false);\r\n \r\n useEffect(() => {\r\n initialize();\r\n return () => {\r\n removeAdjustBalanceFromStorage()\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n async function loadExisting() {\r\n return {\r\n }\r\n }\r\n\r\n async function initialize() {\r\n if (!inStorage) {\r\n const data = await loadExisting();\r\n setInStorage({...data})\r\n }\r\n setInitialized(true);\r\n }\r\n\r\n if (!initialized || !inStorage) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction AdjustBalanceInitializedImpl({\r\n adjustBalance,\r\n adjustBalanceRef,\r\n setAdjustBalance,\r\n onPopupClose,\r\n jobName\r\n}: AdjustBalanceLoadedDetailsViewParams) {\r\n const tableStorage = useTableStorage();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [check, setCheck] = useState(true);\r\n const appContext = useContext(ApplicationContext);\r\n \r\n function onChange(change: Partial) {\r\n setAdjustBalance(change);\r\n }\r\n\r\n const tableOptions: ApplicableTableSettings = {\r\n tableName: 'adjustBalanceTable',\r\n ...adjustBalanceTable,\r\n data: adjustBalance.list,\r\n \r\n rowRenderers: [\r\n {accessor: 'indicator', Cell: NumberedIndicatorRenderer},\r\n {accessor: 'invoiceDate', Cell: DateRenderer },\r\n {accessor: 'invoiceNo', Cell: TextAlignLeftRenderer},\r\n {accessor: 'invoiceAmt', Cell: FloatRenderer},\r\n {accessor: 'detAmt', Cell: FloatRenderer},\r\n {accessor: 'paidAmt', Cell: FloatRenderer},\r\n {accessor: 'aPaidAmt', Cell: FloatRenderer},\r\n {accessor: 'dutyPaidAmt', Cell: FloatRenderer},\r\n {accessor: 'aDutyPaidAmt', Cell: FloatRenderer},\r\n {accessor: 'errorAmt', Cell: FloatRenderer},\r\n\r\n ],\r\n customStorage: tableStorage,\r\n headersColor: 'white',\r\n // footerRow: [ \r\n // {\r\n // colspan:9,\r\n // renderer:TotalAmountRenderer\r\n // }\r\n // ],\r\n height: '420px',\r\n }; \r\n \r\n// function TotalAmountRenderer() {\r\n// let totalErrorAmt = 0;\r\n// if(adjustBalance?.list){\r\n// totalErrorAmt = adjustBalance.list.map(x => x.errorAmt).reduce((acc: number, x) => acc + x , 0)\r\n// return ; \r\n// }\r\n// else {\r\n// return ; \r\n// } \r\n// }\r\n\r\n async function subFill(){\r\n const apiResult = await appContext.api.subFill(getTbNameByJobName(jobName),getAdjTypeByJobName(jobName));\r\n if(apiResult && apiResult.success){\r\n if(apiResult.result.length > 0){\r\n setCheck(false);\r\n onChange({list: apiResult.result})\r\n }\r\n else{\r\n setCheck(true);\r\n await showGlobalOkDialog(\"No Error Account List\");\r\n }\r\n }\r\n else{\r\n await showGlobalOkDialog(apiResult?.message ?? constants.LOAD_ERROR_MESSAGE);\r\n }\r\n }\r\n\r\n async function subUpdate(){\r\n const apiResult = await appContext.api.subUpdate(getTbNameByJobName(jobName));\r\n if(!apiResult || !apiResult.success){\r\n await showGlobalOkDialog(apiResult?.message ?? constants.LOAD_ERROR_MESSAGE);\r\n } else{\r\n onChange({list:[]})\r\n setCheck(true);\r\n }\r\n }\r\n\r\n function getAdjTypeByJobName(jobName: string){\r\n switch(jobName){\r\n case JobNames.Invoice: \r\n case JobNames.InvoAdj: \r\n case JobNames.AutoBillingStorage: \r\n case JobNames.AutoBillingInvoice: return \"AdjustInvo\";\r\n\r\n case JobNames.GInvo: return \"AdjustGInvo\";\r\n\r\n case JobNames.Bill: return \"AdjustAP\";\r\n\r\n case JobNames.GBill: return 'AdjustGAP';\r\n\r\n case JobNames.WHStorageInv: return 'AdjustStorage';\r\n\r\n default : return '';\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n READ ERROR\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nconst AdjustBalance = ({\r\n onPopupClose, \r\n jobName\r\n}: {\r\n onPopupClose?: () => void, jobName : JobNames\r\n}) => {\r\n // const { id } = useParams();\r\n\r\n return (\r\n \r\n );\r\n};\r\nexport default AdjustBalance;\r\n","import React, { cloneElement, useEffect, useMemo } from \"react\";\r\nimport { useContext, useState } from \"react\";\r\nimport { getTbNameByJobName, isMasterJob, JobNames } from \"../../framework.core/JobNames\";\r\nimport ActionButton, { ActionButtonItem } from \"../../ui/ActionButton\";\r\nimport { useJournal } from \"../accounting/general/journal/JournalListView\";\r\nimport JobListViewContext from \"./JobListViewContext\";\r\nimport useGlobalOkDialog from '../../hooks/useGlobalOkDialog';\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport { ApiResult } from \"../../framework.core/data/ApiResult\";\r\nimport AdjustBalance from './reports/AdjustBalance';\r\nimport IfmsModal from \"../../ui/IfmsModal\";\r\nimport { useAppSelector } from \"../../app/hooks\";\r\nimport constants from \"../../constants\";\r\n\r\n\r\ninterface IJobListSuntekCommand {\r\n jobName: JobNames,\r\n keyProp: string,\r\n showTransactionImpact?: boolean,\r\n showFixJournal?: boolean,\r\n showFixLockedData?: boolean,\r\n showAdjustBalance?: boolean,\r\n}\r\n\r\nfunction JobListSuntekCommand({ jobName, keyProp, showTransactionImpact=true, showFixJournal=true, showFixLockedData=true, showAdjustBalance=true }: IJobListSuntekCommand) {\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement;\r\n const {switchJournal} = useJournal();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const appContext = useContext(ApplicationContext);\r\n const userState = useAppSelector(state => state.user);\r\n const user = userState.user;\r\n\r\n useEffect(() => {\r\n if (selectedPopupMenuItem) {\r\n onSubMenuClick(selectedPopupMenuItem);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [selectedPopupMenuItem]);\r\n\r\n const adjBalancePopupLabel = useMemo(() =>{\r\n switch (jobName) {\r\n case JobNames.Invoice:\r\n return \"Adjust Invoice\";\r\n case JobNames.Bill:\r\n return \"Adjust Bill\";\r\n case JobNames.CrDb:\r\n return \"Adjust Credit/Debit\";\r\n case JobNames.GInvo:\r\n return \"Adjust General Invoice\";\r\n case JobNames.GBill:\r\n return \"Adjust General Bill\";\r\n default: \r\n return \"Adjust Balance\";\r\n }\r\n }, [jobName]);\r\n\r\n const onPopupClose = () => {\r\n setSelectedPopupMenuItem(null);\r\n }\r\n\r\n async function onSubMenuClick(item:ActionButtonItem) {\r\n if(!selectedElement) {\r\n return;\r\n }\r\n\r\n switch(item.label) {\r\n case 'Transaction Impact':\r\n setSelectedPopupMenuItem(null);\r\n \r\n // appContext.setJournalType(0);\r\n\r\n switchJournal(jobName, selectedElement[keyProp]);\r\n break;\r\n\r\n case 'Fix Journal':\r\n setSelectedPopupMenuItem(null);\r\n\r\n if(isMasterJob(jobName,true)){\r\n const apiResult:ApiResult = await appContext.api.fixJournalByMaster(getTbNameByJobName(jobName), jobName,selectedElement.id.toString());\r\n if(!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

{apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

); \r\n } else {\r\n await showGlobalOkDialog(

{apiResult.result}

); \r\n }\r\n }\r\n else{\r\n const apiResult:ApiResult = await appContext.api.fixJournalByTask(getTbNameByJobName(jobName), jobName,selectedElement.id.toString());\r\n if(!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

{apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

); \r\n } else {\r\n await showGlobalOkDialog(

{apiResult.result}

); \r\n }\r\n }\r\n break;\r\n\r\n case 'Fix Locked Data':\r\n let tbName = getTbNameByJobName(jobName);\r\n let tbId = selectedElement.id.toString();\r\n\r\n switch(jobName) {\r\n case JobNames.Invoice:\r\n tbName = selectedElement.tbName;\r\n tbId = selectedElement.tbId.toString();\r\n break;\r\n }\r\n setSelectedPopupMenuItem(null);\r\n\r\n const apiResult:ApiResult = await appContext.api.fixOpAcct(tbName, tbId);\r\n if(!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

{apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

); \r\n } else {\r\n await showGlobalOkDialog(

{apiResult.result === 1 ? \"Fixed !!\" : \"No change !!\"}

); \r\n }\r\n break; \r\n \r\n case 'Adjust Balance':\r\n break;\r\n }\r\n }\r\n\r\n return (\r\n
\r\n    \r\n {user?.isSuntekAdmin && setSelectedPopupMenuItem(event)}\r\n items={[\r\n // {label: 'Transaction Impact', separator: false, hidden: !showTransactionImpact, name:'sunket-transaction-impact'},\r\n {label: 'Fix Journal', separator: false, hidden: !showFixJournal, name:'sunket-fix-journal'},\r\n {label: 'Fix Locked Data', separator: false, hidden: !showFixLockedData, name:'sunket-fix-locked-data'},\r\n {label: 'Adjust Balance', separator: false, hidden: !showAdjustBalance, name:'sunket-adjust-balance', popupComponent: , popupLabel: adjBalancePopupLabel, popupWidth: 980 },\r\n ]}\r\n >\r\n Suntek\r\n \r\n }\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.popupComponent ? (\r\n \r\n {cloneElement(selectedPopupMenuItem.popupComponent!, {onPopupClose})}\r\n \r\n ) : null}\r\n
\r\n )\r\n}\r\n\r\nexport default JobListSuntekCommand;","export class TrackRequest {\r\n id: number = 0;\r\n jobName: string = '';\r\n jobId: number = 0;\r\n mblNo: string = '';\r\n bookNo: string = '';\r\n cntrNo: string = '';\r\n refNo: string = '';\r\n vcScac: string = '';\r\n vessel: string = '';\r\n voyage: string = '';\r\n requestKind: string = '';\r\n suntekID: string = '';\r\n suntekReqId: number = 0;\r\n tspId: string = '';\r\n status: string = '';\r\n statusDesc: string = '';\r\n u1Id: string = '';\r\n u1Date: string = '';\r\n u2Id: string = '';\r\n u2Date: string = '';\r\n noticeTo: string = '';\r\n\r\n readonly bl:string = '';\r\n readonly Booking:string = '';\r\n readonly Container:string = '';\r\n \r\n\r\n constructor(init?: Partial) {\r\n this.bl = 'bl';\r\n this.Booking = 'booking';\r\n this.Container = 'container';\r\n\r\n Object.assign(this, init);\r\n }\r\n}\r\n\r\nexport enum RequestType {\r\n bl = 'bl',\r\n Booking = 'booking',\r\n Container = 'container',\r\n}","export default __webpack_public_path__ + \"static/media/Tracking_R.ad7d71aa.svg\";","\r\nimport '../../trackingRequest.css';\r\nimport _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport { useTypedFastStorage } from '../../hooks/useFastStorage';\r\nimport { RequestType, TrackRequest } from '../../fms.core/TrackRequest';\r\nimport useGlobalOkDialog from '../../hooks/useGlobalOkDialog';\r\nimport { JobNames } from '../../framework.core/JobNames';\r\nimport { ApiResult } from '../../framework.core/data/ApiResult';\r\nimport Skeleton, { SkeletonTheme } from 'react-loading-skeleton';\r\nimport SecondaryButton from '../../ui/SecondaryButton';\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport Fieldset from '../common/Fieldset';\r\nimport InlineInputControlRow from '../../ui/layout/InlineInputControlRow';\r\nimport TextBox from '../../ui/TextBox';\r\nimport MultilineTextBox from '../../ui/MultilineTextBox';\r\nimport LabeledControl from '../../ui/LabeledControl';\r\nimport Label from '../../ui/Label';\r\nimport LeftRightSplit from '../../ui/LeftRightSplit';\r\nimport Tracking_R from '../../img/Tracking_R.svg';\r\nimport { formatDateTime } from '../../dateUtils';\r\nimport JobListViewContext from '../common/JobListViewContext';\r\nimport constants from '../../constants';\r\n\r\nfunction TrackingRequestImpl({\r\n jobId,\r\n storageKey,\r\n onClose,\r\n jobName,\r\n trStatus,\r\n trType,\r\n mode,\r\n vcResult,\r\n containerNo,\r\n}: {\r\n jobId: number,\r\n storageKey: string,\r\n onClose: VoidFunction,\r\n jobName: JobNames,\r\n trStatus: string,\r\n trType: string,\r\n mode: string,\r\n vcResult: string,\r\n containerNo: string\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const [initialized, setInitialized] = useState(false);\r\n\r\n const [newRequest, setNewRequest] = useState(false);\r\n\r\n const groupTitleRef = useRef('');\r\n const groupVisibleRef = useRef(true);\r\n\r\n const groupItem = useRef([]);\r\n\r\n const [data, setData, removeData, ] = useTypedFastStorage(storageKey, null);\r\n\r\n\r\n useEffect(() => {\r\n initialize();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function doClose() {\r\n cleanup();\r\n onClose();\r\n }\r\n\r\n function cleanup() {\r\n removeData();\r\n }\r\n\r\n async function loadExisting() {\r\n const result: TrackRequest[] = await appContext.api.getTrackRequest(jobName, jobId, trType, mode === 'new');\r\n // if (result.length < 0) {\r\n // await showGlobalOkDialog('Cannot load data');\r\n // doClose();\r\n // return;\r\n // }\r\n if (result[0]?.id <= 0) {\r\n result[0].noticeTo = mode === 'new' ? jobListContext.trackingRequestEmailList ?? '' : result[0].noticeTo;\r\n result[0].requestKind = trType === 'M' ? RequestType.bl : RequestType.Container;\r\n setNewRequest(true);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n //InitAccordion\r\n function InitTrackRequestGroup(trs: TrackRequest[]) {\r\n groupTitleRef.current = trs[0].requestKind === RequestType.bl ? 'By MBL' : 'By Container'\r\n\r\n trs.sort((a, b) => a.cntrNo.localeCompare(b.cntrNo)); //trs.OrderBy(x => x.CntrNo))\r\n trs.forEach(tr => {\r\n const divElement = document.createElement('div');\r\n const text = _.isEmpty(tr.cntrNo) ? 'NO CONTAINER#' : tr.cntrNo;\r\n divElement.innerHTML = (tr.status === 'failed' ? ` ` : '') + text;\r\n divElement.className = 'trackingrequest-item';\r\n divElement.dataset.tooltip = tr.status === 'failed' ? tr.statusDesc : '';\r\n groupItem.current.push(divElement);\r\n })\r\n }\r\n\r\n function checkPopupWidth(groupDataLength: number) {\r\n if (groupDataLength === 1 && jobName === JobNames.OIContainer) {\r\n groupVisibleRef.current = false;\r\n\r\n const element = document.getElementById('ifms-modal-width-element');\r\n if (element) {\r\n element.style.width = '350px';\r\n }\r\n }\r\n }\r\n\r\n async function initialize() {\r\n if (!data) {\r\n const groupData = await loadExisting();\r\n if (groupData) {\r\n InitTrackRequestGroup(groupData)\r\n checkPopupWidth(groupData.length);\r\n setData(groupData[0]);\r\n }\r\n }\r\n setInitialized(true);\r\n }\r\n\r\n if (!initialized || !data) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {!initialized &&\r\n
\r\n \r\n \r\n \r\n
\r\n }\r\n\r\n \r\n\r\n
\r\n );\r\n}\r\n\r\nfunction TrackingRequestInitializedImpl({\r\n data,\r\n jobId,\r\n close,\r\n jobName,\r\n trStatus,\r\n newRequest,\r\n groupTitle,\r\n groupItem,\r\n groupVisible,\r\n mode,\r\n vcResult,\r\n containerNo,\r\n trType\r\n}: {\r\n data: TrackRequest,\r\n jobId: number\r\n close: VoidFunction,\r\n jobName: JobNames\r\n trStatus: string,\r\n newRequest: boolean,\r\n groupTitle: string,\r\n groupItem: HTMLDivElement[],\r\n groupVisible: boolean,\r\n mode: string,\r\n vcResult: string,\r\n containerNo: string,\r\n trType: string,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const [memo, setMemo] = useState(mode === 'new' ? jobListContext.trackingRequestEmailList ?? '' : data.noticeTo);\r\n\r\n function validateEmails(emails: string): boolean {\r\n const emailArray: string[] = emails.split(';');\r\n try {\r\n for (const email of emailArray) {\r\n const isValid: boolean = /^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/.test(email);\r\n if (!isValid) return false;\r\n }\r\n return true;\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n\r\n function clickItem(e: any) {\r\n const alreadySettingsMenuOpend = document.querySelectorAll('.trackingrequest-item-selected');\r\n for (let i = 0; i < alreadySettingsMenuOpend.length; ++i) {\r\n alreadySettingsMenuOpend[i].className = `trackingrequest-item`;\r\n }\r\n\r\n e.currentTarget.className = 'trackingrequest-item-selected';\r\n }\r\n\r\n async function btnRequestCancel() {\r\n const apiResult: ApiResult = await appContext.api.trackingCancelRequest(jobName, jobId);\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

{apiResult?.message ?? constants.SAVE_ERROR_MESSAGE}

);\r\n return;\r\n }\r\n jobListContext.reloadData();\r\n close();\r\n }\r\n\r\n async function btnSave() {\r\n let emailTo = data.noticeTo;\r\n\r\n const noticeToUpdates: {\r\n jobName: string,\r\n jobId: number,\r\n emailTo: string\r\n }[] = [];\r\n\r\n if (data.noticeTo !== memo) {\r\n if (memo === '') {\r\n emailTo = memo;\r\n } else {\r\n emailTo = memo.trim()\r\n .replace(/\\r?\\n/g, \"\")\r\n .replace(/\\s/g, \"\")\r\n .replace(/,/g, \"\");\r\n\r\n if (!validateEmails(emailTo)) {\r\n await showGlobalOkDialog(

Please check email list again!

);\r\n return;\r\n }\r\n }\r\n\r\n if (!newRequest) noticeToUpdates.push({ jobName: jobName, jobId: jobId, emailTo: emailTo });\r\n }\r\n\r\n if (noticeToUpdates.length > 0) {\r\n const apiResult: ApiResult = await appContext.api.trackingUpdateRequest(noticeToUpdates);\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

{\"Save failure: \" + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE)}

);\r\n close();\r\n return;\r\n }\r\n }\r\n else {\r\n let trackingRequestResult: {\r\n success: boolean,\r\n message: string\r\n } = { success: false, message: '' }\r\n\r\n if (jobName === JobNames.OIMbl || jobName === JobNames.OtherOP)\r\n trackingRequestResult = await appContext.api.trackingRequestByMbl(jobName, jobId, vcResult, emailTo);\r\n else\r\n trackingRequestResult = await appContext.api.trackingRequestByContainer(containerNo, emailTo);\r\n\r\n if (!trackingRequestResult || !trackingRequestResult.success) {\r\n await showGlobalOkDialog(

{trackingRequestResult?.message ?? constants.SAVE_ERROR_MESSAGE}

);\r\n // close();\r\n return;\r\n }\r\n }\r\n\r\n jobListContext.reloadData();\r\n close();\r\n }\r\n\r\n let mblLabel = trType === 'M' ? 'Master B/L #' : 'Container #';\r\n let editNumber = trType === 'M' ? data.mblNo : data.cntrNo;\r\n\r\n return (\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n {groupItem.map((item, index) => (\r\n \r\n
\r\n ))}\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n }\r\n />\r\n \r\n }\r\n right={\r\n \r\n }\r\n />\r\n { setMemo(e.target.value) }}\r\n />\r\n \r\n \r\n }\r\n right={\r\n \r\n }\r\n />\r\n \r\n\r\n \r\n \r\n }\r\n right={\r\n \r\n }\r\n />\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n {(trStatus === 'Q' && !newRequest) ?\r\n \r\n Cancel Request\r\n \r\n :\r\n <>\r\n }\r\n {(trStatus !== \"failed\" && trStatus !== \"tracking_stopped\") ?\r\n \r\n {newRequest ? 'Request' : 'Update'}\r\n \r\n :\r\n <>\r\n }\r\n \r\n Cancel\r\n \r\n\r\n
\r\n
\r\n );\r\n}\r\n\r\nconst TrackingRequestPopup = ({\r\n jobId,\r\n storageKey,\r\n onClose,\r\n jobName,\r\n trStatus,\r\n trType,\r\n mode,\r\n vcResult,\r\n containerNo,\r\n}: {\r\n jobId: number,\r\n storageKey: string,\r\n onClose: VoidFunction,\r\n jobName: JobNames,\r\n trStatus: string,\r\n trType: string,\r\n mode: string,\r\n vcResult: string,\r\n containerNo?: string,\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nTrackingRequestPopup.defaultProps = {\r\n};\r\n\r\nTrackingRequestPopup.propTypes = {\r\n jobId: PropTypes.number.isRequired,\r\n storageKey: PropTypes.string.isRequired,\r\n jobName: PropTypes.string.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default TrackingRequestPopup;\r\n","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport { useTypedFastStorage } from '../../hooks/useFastStorage';\r\nimport useGlobalOkDialog from '../../hooks/useGlobalOkDialog';\r\nimport { JobNames } from '../../framework.core/JobNames';\r\nimport Skeleton, { SkeletonTheme } from 'react-loading-skeleton';\r\nimport SecondaryButton from '../../ui/SecondaryButton';\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport { emailOptionItem } from '../accounting/tableSettings';\r\nimport { ApplicableTableSettings } from '../../tableSettings';\r\nimport CheckBox from '../../ui/CheckBox';\r\nimport SmartTable from '../../uiControls/SmartTable';\r\nimport { TextAlignLeftRenderer } from '../../uiControls/SmartTableRenderers';\r\n\r\ninterface emailOptionData {\r\n email: string,\r\n isSelect: boolean\r\n}\r\n\r\nfunction EmailOptionImpl({\r\n jobId,\r\n storageKey,\r\n onClose,\r\n jobName,\r\n isUsedTrackingRequest,\r\n}: {\r\n jobId: number,\r\n storageKey: string,\r\n onClose: (x: any) => void,\r\n jobName: JobNames,\r\n isUsedTrackingRequest: boolean,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const [initialized, setInitialized] = useState(false);\r\n\r\n const emailListRef = useRef('')\r\n const emailCntRef = useRef(0);\r\n const [displayData, setDisplayData] = useState([]);\r\n\r\n const [data, setData, removeData, ] = useTypedFastStorage(storageKey, null);\r\n\r\n useEffect(() => {\r\n initialize();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function doClose(emailList: string = '') {\r\n cleanup();\r\n onClose(emailList);\r\n }\r\n\r\n function cleanup() {\r\n removeData();\r\n }\r\n\r\n async function loadExisting() {\r\n const result: string = await appContext.api.getCompaniesToNotify(jobName, jobId);\r\n // if (!result) {\r\n // await showGlobalOkDialog('Cannot load data');\r\n // doClose();\r\n // return;\r\n // }\r\n\r\n return result;\r\n }\r\n\r\n function addReservedEmail(email: string) {\r\n emailListRef.current = emailListRef.current + email;\r\n emailCntRef.current = emailCntRef.current + 1;\r\n\r\n return { email, isSelect: false };\r\n }\r\n\r\n async function getCode(id: string) {\r\n let tempList: emailOptionData[] = [];\r\n\r\n if (isUsedTrackingRequest && !_.isEmpty(appContext.user?.email)) {\r\n tempList.push(addReservedEmail(appContext.user?.email ?? ''));\r\n }\r\n\r\n if (!_.isEmpty(id)) {\r\n let Add: string = String.fromCharCode(127);\r\n const comList: string[] = id.split(String.fromCharCode(127));\r\n\r\n for (let i = 0; i < comList.length; i++) {\r\n if (comList[i].trim() === '') continue;\r\n\r\n const arg = comList[i].split('|');\r\n if (arg.length === 1) {\r\n const ipos = Add.indexOf(String.fromCharCode(127) + arg[0] + String.fromCharCode(127));\r\n if (parseInt(arg[0]) > 0 && ipos === -1) {\r\n if (i === 0) {\r\n id = arg[0];\r\n }\r\n\r\n const adoList = await appContext.api.getCode(arg[0], appContext.user?.email);\r\n if (adoList !== null) {\r\n for (let j = 0; j < adoList.length; j++) {\r\n const s = adoList[j].DEPT + ' ' + adoList[j].F_EMAIL;\r\n tempList.push({ email: s, isSelect: false });\r\n\r\n emailListRef.current = emailListRef.current + (adoList[j].F_EMAIL.length > 0 ? adoList[j].F_EMAIL + ';' : '');\r\n Add = Add + adoList[j].F_ID + String.fromCharCode(127);\r\n emailCntRef.current = emailCntRef.current + 1;\r\n }\r\n }\r\n }\r\n } else {\r\n tempList.push({ email: arg[4], isSelect: false });\r\n emailListRef.current = emailListRef.current + arg[4];\r\n emailCntRef.current = emailCntRef.current + 1;\r\n }\r\n }\r\n // if (tempList.length > 0) {\r\n // tempList[0].isSelect = true;\r\n // }\r\n }\r\n return tempList;\r\n }\r\n\r\n async function initialize() {\r\n if (!data) {\r\n const comIds = await loadExisting();\r\n setDisplayData(await getCode(String(comIds ?? '')));\r\n setData(true);\r\n }\r\n setInitialized(true);\r\n }\r\n\r\n if (!initialized || !data) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {!initialized &&\r\n
\r\n \r\n \r\n \r\n
\r\n }\r\n\r\n \r\n
\r\n );\r\n}\r\n\r\nfunction EmailOptionInitializedImpl({\r\n close,\r\n displayData,\r\n setDisplayData,\r\n isUsedTrackingRequest,\r\n}: {\r\n close: (x: any) => void,\r\n displayData: emailOptionData[],\r\n setDisplayData: any\r\n isUsedTrackingRequest: boolean,\r\n}) {\r\n // const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n async function btnOk() {\r\n if (isUsedTrackingRequest) {\r\n if (!displayData.some(x => x.isSelect)) {\r\n // await showGlobalOkDialog(

Please select email

);\r\n close('');\r\n return;\r\n }\r\n\r\n let temp: string;\r\n let emailText: string[] = [];\r\n\r\n let EmailList: string = \"\";\r\n const tempList = displayData.filter(x => x.isSelect);\r\n\r\n for (let i = 0; i < tempList.length; i++) {\r\n temp = tempList[i].email;\r\n emailText = temp.split(']');\r\n\r\n if (emailText.length >= 2) {\r\n EmailList += emailText[1] + \";\";\r\n } else {\r\n EmailList += temp + \";\";\r\n }\r\n }\r\n\r\n if (EmailList.length > 2)\r\n EmailList = EmailList.substring(0, EmailList.length - 1).trimLeft();\r\n\r\n close(EmailList);\r\n return;\r\n }\r\n close(undefined);\r\n }\r\n\r\n function toggleSelection(i: number) {\r\n const tempList = _.cloneDeep(displayData).map(item => {\r\n return item;\r\n });\r\n tempList[i].isSelect = !tempList[i].isSelect;\r\n setDisplayData(tempList);\r\n }\r\n\r\n function SelectRenderer({ data, row }: any) {\r\n const toggleSelection = data[0].toggleSelection;\r\n const l = data[row.index];\r\n\r\n return (\r\n
\r\n toggleSelection(row.index)}\r\n />\r\n
\r\n );\r\n }\r\n\r\n const tableOptions: ApplicableTableSettings = {\r\n tableName: 'emailoptiontable',\r\n ...emailOptionItem,\r\n height: '300px',\r\n data: displayData.map((x, i) => ({\r\n ...x,\r\n i,\r\n toggleSelection,\r\n })),\r\n rowRenderers: [\r\n { accessor: 'email', Cell: TextAlignLeftRenderer },\r\n { accessor: 'select', Cell: SelectRenderer },\r\n ],\r\n headersColor: 'gray',\r\n };\r\n\r\n const RenderedTable = React.useMemo(() => ,\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [displayData]);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {RenderedTable}\r\n
\r\n
\r\n\r\n
\r\n \r\n Ok\r\n \r\n close('')}>\r\n Cancel\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nconst EmailOptionPopup = ({\r\n jobId,\r\n storageKey,\r\n onClose,\r\n jobName,\r\n isUsedTrackingRequest,\r\n}: {\r\n jobId: number,\r\n storageKey: string,\r\n onClose: (x: any) => void,\r\n jobName: JobNames,\r\n isUsedTrackingRequest: boolean\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nEmailOptionPopup.defaultProps = {\r\n};\r\n\r\nEmailOptionPopup.propTypes = {\r\n jobId: PropTypes.number.isRequired,\r\n storageKey: PropTypes.string.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default EmailOptionPopup;","import React, {cloneElement, useContext, useEffect, useState} from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\nimport {oceanImportMblList, TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,\r\n ExportRowRenderer,\r\n ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\n\r\nimport constants from '../../../constants';\r\nimport MoveTypeDropDown from \"../../../uiControls/MoveTypeDropDown\";\r\nimport {Search} from \"../../../filtering\";\r\n\r\nimport {NavigationType, openNewPage} from '../../../util/navigationHelpers';\r\n\r\nimport lockBlue from '../../../img/lock_blue.png';\r\nimport lockRed from '../../../img/lock_red.png';\r\nimport cntrBlack from '../../../img/container_tracking-black.svg';\r\nimport cntrWhite from '../../../img/container_tracking-white.svg';\r\n\r\nimport {\r\n DateRenderer,DateTimeRenderer,\r\n FloatRenderer,\r\n NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport JobListViewContext, {IJobListViewContext, RightClickContext} from '../../common/JobListViewContext';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport {ActionButtonItem, borderColors, splitMenuItemsIntoSections} from '../../../ui/ActionButton';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport IfmsModal from '../../../ui/IfmsModal';\r\nimport {JobNames} from '../../../framework.core/JobNames';\r\nimport loadInfoAreaInvoiceBillCrDb from '../../../components/common/InfoAreaInvoiceBillCrDb';\r\nimport {OiMblListItem, OimListType} from '../../../fms.data/models/OiMblListItem';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\n\r\nimport MblMilestonePopup from './MblMilestonePopup';\r\nimport fastStorage from '../../../fastStorage';\r\nimport Menu, {IfmsMenuItem} from '../../../ui/menu/Menu';\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport PrimaryInverseButton from '../../../ui/PrimaryInverseButton';\r\nimport { FmsSubMenu } from '../../../constants/fmsSubMenu';\r\nimport { getSelectedSubMenuArgs } from '../../JobListSubMenu';\r\nimport useReportViewer from '../../../hooks/useReportViewer';\r\nimport JobListSuntekCommand from '../../common/JobListSuntekCommand';\r\nimport { ShipmentTypeRenderer, ShipmentTypeFilterRenderer, LclFclFilterRenderer, BillInvoiceCrdbFilterRenderer, LclFclRenderer, RecognizedFilterRenderer, RecognizedRenderer, BillingsRenderer, TrackEventNameRenderer, RQFilterRenderer, LastEventRenderer } from '../../common/commonListRenderers';\r\nimport DeleteHistory from \"../../reports/DeleteHistory\";\r\nimport postal from 'postal';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport { getFmsGlobal } from '../../../globals';\r\nimport TrackingRequest from '../../reports/TrackingRequest';\r\nimport _ from 'lodash';\r\nimport { ApiResult } from '../../../framework.core/data/ApiResult';\r\nimport EmailOptionPopup from '../../reports/EmailOption';\r\nimport { RequestType } from '../../../fms.core/TrackRequest';\r\nimport { SuntekSettings, SystemSettings } from '../../../ifmsTypes';\r\nimport { findSecurityTask } from '../../../util';\r\nimport { useJournal } from '../../accounting/general/journal/JournalListView';\r\nimport useSuntekSettings from '../../../hooks/useSuntekSettings';\r\nimport RecogModal from '../../../ui/RecogModal';\r\nimport useSetEditedId from '../../../hooks/useSetEditedId';\r\nimport { formatLclFcl, formatShipmentType } from '../../common/utils/formatUtils';\r\nimport { access } from 'fs';\r\nimport { formatDateTime } from '../../../dateUtils';\r\nimport { nullableCheckBoxValue } from '../../common/commonExportFormat';\r\n\r\nlet vcResult:string = '';\r\n\r\nfunction MoveTypeFilterRenderer({value, onChange}:any) {\r\n return (\r\n onChange(moveType)}\r\n />\r\n );\r\n}\r\n\r\n// function IndicatorRenderer({value, data, row}: any) {\r\n// const jobListContext = useContext(JobListViewContext);\r\n// let content:React.ReactNode | null = null;\r\n\r\n// content = {value};\r\n\r\n// function onIndicatorClick() {\r\n// if (jobListContext.rowExtrasId) {\r\n// return; // Some row is already selected\r\n// }\r\n\r\n// jobListContext.setRowExtrasId(data[row.index].id);\r\n// }\r\n\r\n// return (\r\n//
\r\n// {content}\r\n//
\r\n// );\r\n// }\r\n\r\nfunction IndicatorRenderer({ data, row }: any) {\r\n const l = data[row.index];\r\n\r\n let dataTooltip = '';\r\n const lStatus = (l as any).status as string;\r\n if (lStatus === 'PC') dataTooltip = 'Period Close';\r\n else if (lStatus === 'OC') dataTooltip = 'OP Close';\r\n\r\n\r\n // function onIndicatorClick() {\r\n // if (jobListContext.rowExtrasId) {\r\n // return; // Some row is already selected\r\n // }\r\n // jobListContext.setRowExtrasId(data[row.index].id);\r\n // }\r\n\r\n let content: React.ReactNode = <>;\r\n //if ((l as any).isClosed) {\r\n if (lStatus === 'PC')\r\n content = \"\"/;\r\n else if (lStatus === 'OC')\r\n content = \"\"/;\r\n //}\r\n\r\n return (\r\n //
{content}
\r\n
{content}
\r\n );\r\n}\r\n\r\nfunction HblRenderer({value, data, row}: any) {\r\n const {switchToHblFor} = useMblOperations();\r\n\r\n const isNumber = !isNaN(parseInt(value));\r\n\r\n if (!isNumber) {\r\n return
{value}
;\r\n }\r\n\r\n return switchToHblFor(data[row.index])} style={{width: '100%', color: 'blue', fontWeight: 'bold', lineHeight:'1em'}}>{value}\r\n}\r\n\r\n//\r\n// function formatLclFcl(v:string) {\r\n// if(v === 'F') return 'FCL';\r\n// else if(v === 'L') return 'LCL';\r\n// else if(v === 'O') return 'FAK';\r\n// else return '';\r\n// }\r\n\r\n\r\nfunction useMblOperations() {\r\n const history = useHistory();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n function switchToHblFor(mbl:OiMblListItem|null) {\r\n if (!mbl) {\r\n return;\r\n }\r\n\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/hbl/oceanImport', \r\n //'refNo', 'Ref No', mbl.refNo ?? '', 'updated', false\r\n // 'refNo', '', mbl.refNo ?? '', 'update', false);\r\n 'oiMblId', 'Ref. #', mbl.id, 'update', false, true, null, 'refNo', mbl.refNo,false,true);\r\n openNewPage(history, `/common/joblistview/hbl/oceanImport`, NavigationType.newPage);\r\n }\r\n\r\n function switchToContainerFor(mbl:OiMblListItem|null) {\r\n if (!mbl) {\r\n return;\r\n }\r\n\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/OICN/oceanImport', \r\n //'refNo', 'Ref No', mbl.refNo ?? '', 'updated', false\r\n // 'refNo', '', mbl.refNo ?? '', 'update', false);\r\n 'oiMblId', 'Ref. #', mbl.id, 'update', false, true, null, 'refNo', mbl.refNo, false, true);\r\n openNewPage(history, `/common/joblistview/OICN/oceanImport`, NavigationType.newPage);\r\n }\r\n\r\n\r\n function switchToAmsFor(mbl:OiMblListItem|null) {\r\n if (!mbl) {\r\n return;\r\n }\r\n\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/AMSM/oceanImport', \r\n //'refNo', 'Ref No', mbl.refNo ?? '', 'updated', false\r\n // 'refNo', '', mbl.refNo ?? '', 'update', false);\r\n 'amsLinkId', 'AMS ID', mbl.amsLinkId, 'update', false, true, null, null, null, false, true);\r\n openNewPage(history, `/common/joblistview/AMSM/oceanImport`, NavigationType.newPage);\r\n }\r\n\r\n async function switchToAcctInfo(mbl:OiMblListItem|null) {\r\n if (!mbl) {\r\n return;\r\n }\r\n \r\n openNewPage(history, `/accounting/Acct/${JobNames.OIMbl}/${mbl.id}`, NavigationType.newPage);\r\n }\r\n\r\n return { switchToHblFor, switchToContainerFor, switchToAmsFor ,switchToAcctInfo};\r\n}\r\n\r\nfunction useSelectedMblOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const history = useHistory();\r\n const { switchToHblFor, switchToContainerFor, switchToAmsFor } = useMblOperations();\r\n\r\n const selectedElement = jobListContext.selectedElement as OiMblListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const channel = postal.channel('ajax');\r\n \r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/oceanImport/mbl/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n\r\n openNewPage(history, '/oceanImport/mbl/add', NavigationType.newPage);\r\n }\r\n\r\n async function deleteMbl() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if ((selectedElement.hblCount !== 'DBL' && selectedElement.hblCount !== 'X' && selectedElement.hblCount !== '0')) {\r\n await showGlobalOkDialog('Need to delete HBL first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/mbl/edit/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/mbl/view/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close MBL first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/bill/view/OIMB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/bill/edit/OIMB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/invoice/view/OIMB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/invoice/edit/OIMB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/crdb/view/OIMB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/crdb/edit/OIMB/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Bill/Invoice/CrDb first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n , false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.OIMbl, { id:selectedElement.id, pimsLinkId: selectedElement.pimsLinkId });\r\n if (apiResult && apiResult.success) {\r\n jobListContext.reloadData();\r\n } else {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n await showGlobalOkDialog(message, false, null, 'warning');\r\n }\r\n }\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/oceanImport/mbl/edit/${id}`;\r\n const viewUrl = `/oceanImport/mbl/view/${id}`;\r\n\r\n // if (jobListContext.hasOpenedScreenStartingWithUrlWithoutMe('/oceanImport/mbl/edit', editUrl)) {\r\n // await showGlobalOkDialog(

Edit operation is already in progress

);\r\n // return;\r\n // }\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function viewBillings() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n\r\n const viewUrl = `/oceanImport/viewBillings/mbl/${id}`;\r\n openNewPage(history, viewUrl, NavigationType.newPage);\r\n }\r\n\r\n async function moveToDeleteHistoryReport() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const viewUrl = `/common/deleteHistory?jobname=${JobNames.OIMbl}&id=${id}`;\r\n \r\n openNewPage(history, viewUrl, NavigationType.newPage);\r\n }\r\n\r\n async function viewProfit(viewEdit:boolean) {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n \r\n const editUrl = `/oceanImport/mbl/edit/${id}`;\r\n const viewUrl = `/oceanImport/mbl/view/${id}`;\r\n //let url = `/oceanImport/mbl/${viewEdit ? 'edit' : 'view'}/${id}`;\r\n let editUrlProfitTab = `${editUrl}/2`;\r\n let viewUrlProfitTab = `${viewUrl}/2`;\r\n\r\n if (viewEdit && jobListContext.hasOpenedScreenStartingWithUrlWithoutMe(`/oceanImport/mbl/edit`, editUrl)) {\r\n await showGlobalOkDialog(

Edit operation is already in progress

);\r\n return;\r\n }\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewEdit ? editUrlProfitTab : viewUrlProfitTab, [viewUrl, editUrl]);\r\n }\r\n\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/oceanImport/mbl/edit/${id}`;\r\n const viewUrl = `/oceanImport/mbl/view/${id}`;\r\n \r\n const listSec = findSecurityTask(appContext, FmsSecTask.OIMbl);\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n async function copy() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/oceanImport/mbl/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n openNewPage(history, `/oceanImport/mbl/add?copyId=${id}`, NavigationType.newPage);\r\n }\r\n\r\n function switchToHbl() {\r\n const selectedElement = jobListContext.selectedElement as OiMblListItem;\r\n if (selectedElement?.hblCount !== 'DBL') switchToHblFor(selectedElement);\r\n }\r\n\r\n function switchToContainer() {\r\n const selectedElement = jobListContext.selectedElement as OiMblListItem;\r\n switchToContainerFor(selectedElement);\r\n }\r\n\r\n function switchToAms() {\r\n const selectedElement = jobListContext.selectedElement as OiMblListItem;\r\n switchToAmsFor(selectedElement);\r\n }\r\n\r\n function recognize(isSet: boolean) {\r\n jobListContext.setRecogModalData({ isOpen: true, isSet: isSet });\r\n }\r\n\r\n return { create, deleteMbl, edit, view, copy, switchToHbl, switchToContainer, switchToAms, recognize, viewBillings, moveToDeleteHistoryReport, viewProfit };\r\n}\r\n\r\nfunction RightClickMenu({dismiss, column, isStatus}:{dismiss: VoidFunction, column : number, isStatus : boolean}) {\r\n const { create, deleteMbl, edit, view, copy, switchToHbl, switchToContainer, switchToAms, recognize, viewBillings, moveToDeleteHistoryReport, viewProfit } = useSelectedMblOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as OiMblListItem;\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OIMbl);\r\n const fmsGlobal = getFmsGlobal();\r\n\r\n function openContainerTracking() {\r\n if (selectedElement.trStatus && selectedElement.trStatus !== 'C' && selectedElement.trStatus !== 'failed' && selectedElement.trStatus !== 'Q') {\r\n window.open(`https://quicktrack2.suntekscm.com/?licid=${fmsGlobal.AcmeID}&mbl=${selectedElement.mblNo}&email=${appContext.user?.email}`);\r\n }\r\n }\r\n\r\n function openContainerStatus() {\r\n if (jobListContext.rowExtrasId) {\r\n return; // Some row is already selected\r\n }\r\n\r\n jobListContext.setRowExtrasId(selectedElement.id);\r\n }\r\n\r\n async function processFileLock() {\r\n const fileLockResult = await appContext.api.opClose(JobNames.OIMbl, selectedElement.id, !selectedElement.isClosed);\r\n if (!!fileLockResult) {\r\n await showGlobalOkDialog(fileLockResult,false,null,'warning');\r\n return;\r\n }\r\n\r\n if (selectedElement.isClosed && jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/mbl/edit/${selectedElement.id}`)) {\r\n const editModelKey = `editOiMbl${selectedElement.id}-/oceanImport/mbl/edit`;\r\n const keyMatch = _.keys(fastStorage).find(x => x.startsWith(editModelKey));\r\n if (keyMatch) {\r\n fastStorage[keyMatch].fileClosed = 0;\r\n fastStorage[keyMatch].isClosed = false;\r\n fastStorage[keyMatch].closedBy = '';\r\n fastStorage[keyMatch].closeDate = null;\r\n }\r\n }\r\n\r\n jobListContext.reloadData();\r\n }\r\n\r\n async function TrackRequestFunc(jobName:JobNames) {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (_.isEmpty(selectedElement.mblNo) || _.isEmpty(selectedElement.containerNo)) {\r\n await showGlobalOkDialog(

Master B/L number is empty or Master B/L has no container.

, false, null, 'warning');\r\n return;\r\n }\r\n\r\n const plusIndex = selectedElement.containerNo.indexOf('+');\r\n let containerCount: number = 1;\r\n\r\n if (plusIndex !== -1) containerCount = Number(selectedElement.containerNo.substring(plusIndex + 1).trim()) + 1\r\n\r\n await CheckAndDoTrackRequest(jobName, selectedElement.id, selectedElement.trType, selectedElement.trStatus, selectedElement.mblNo, containerCount)\r\n }\r\n\r\n async function CheckAndDoTrackRequest(jobName: string, jobId: number, trType: string, trStatus: string, mblNo: string, cntrCount: number = 1) {\r\n let result: string = '';\r\n if (!await CheckTrStatus(jobName, jobId, trType, trStatus, cntrCount)) return result;\r\n \r\n const apiResult = await IsShippingLineSupported(mblNo?.substring(0, 4), jobName === JobNames.OIMbl ? RequestType.bl : RequestType.Container)\r\n if (!apiResult.success || (jobName === JobNames.OIContainer && apiResult.result === RequestType.bl))\r\n return result;\r\n\r\n vcResult = apiResult.result;\r\n\r\n const errMsg = await CheckTrackRequestAllowed(cntrCount)\r\n if(!_.isEmpty(errMsg)){\r\n if (!errMsg.endsWith('?')){\r\n await showGlobalOkDialog(

{errMsg}

);\r\n return result;\r\n }\r\n else{\r\n const doClose = await showGlobalYesNoDialog(\r\n
\r\n

{errMsg}

\r\n
\r\n ,false, 0, true);\r\n \r\n if (!doClose) {\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n jobListContext.setRowExtrasId(jobId);\r\n jobListContext.setTrackingRequestEmailList('OpenEmailOptionPopup');\r\n }\r\n\r\n async function CheckTrackRequestAllowed(countToSend: number) {\r\n let result = '';\r\n\r\n const perMonth = appContext.suntekSettings?.company?.containersPerMonth ?? 0;\r\n if (perMonth > 0) {\r\n const apiResult = await appContext.api.checkThisMonthRequests();\r\n if (perMonth - apiResult < countToSend) {\r\n result = `Credit for containers per month is limited.\r\nThis request will cause additional fee.\r\nDo you want to request this tracking?`;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n async function IsShippingLineSupported(vcScac: string, reqType: string) {\r\n let apiResult: ApiResult = { success: false, result: '', message: '' };\r\n\r\n if (_.isEmpty(vcScac)) {\r\n await showGlobalOkDialog(

Vessel carrier was not given. Please retry with valid Master B/L number.

, false, null,'warning');\r\n return apiResult;\r\n }\r\n\r\n apiResult = await appContext.api.trackingCheckShippingLine(vcScac);\r\n\r\n if(!apiResult || !apiResult.success){\r\n await showGlobalOkDialog(

{apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

);\r\n return apiResult;\r\n }\r\n else {\r\n switch (apiResult.result) {\r\n case 'X':\r\n await showGlobalOkDialog(

Tracking Service does not support Vessel carrier {`[${vcScac}]`}.

, false, null, 'warning');\r\n apiResult.success = false;\r\n break;\r\n case RequestType.bl:\r\n if (reqType !== RequestType.bl) {\r\n await showGlobalOkDialog(

Vessel carrier {`[${vcScac}] support only Master B/L tracking.`}\r\nPlease retry from Master B/L list.

, false, null, 'warning');\r\n apiResult.success = false;\r\n }\r\n break;\r\n }\r\n }\r\n return apiResult;\r\n }\r\n\r\n async function CheckTrStatus(jobName: string, jobId: number, trType: string, trStatus: string, cntrCount: number = 1) {\r\n if (!_.isEmpty(trType)) {\r\n switch (jobName) {\r\n case JobNames.OIContainer:\r\n if (!(trStatus === \"failed\" || trStatus === \"C\")) {\r\n await showGlobalOkDialog(

Tracking service was already requested at {`[${trType === 'C' ? 'Container List' : 'Master B/L List'}].`}

);\r\n return false;\r\n }\r\n break;\r\n case JobNames.OIHbl:\r\n break;\r\n case JobNames.OIMbl:\r\n if(trType === 'C'){\r\n const apiResult = await appContext.api.getTrackRequestedContainerCountPerMbl(jobId);\r\n if(apiResult >= cntrCount){\r\n await showGlobalOkDialog(

All containers are already requested at {'['}Container List{']'}.

, false, null, 'warning');\r\n return false;\r\n }\r\n else {\r\n await showGlobalOkDialog(

Part of containers are requested at [Container List].\r\nYou can request tracking service for the remaining containers\r\n

,false, null, 'warning');\r\n }\r\n }\r\n else if (trType === 'M' && !(trStatus === \"failed\" || trStatus === \"C\")) {\r\n await showGlobalOkDialog(

Tracking service was already requested at [Master B/L List].

,false, null, 'warning');\r\n return false;\r\n }\r\n break;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n let showFileLock = (!selectedElement?.isClosed ? getFmsGlobal().CanFileLock : getFmsGlobal().CanFileUnlock);\r\n let showCntrTracking = (selectedElement?.trStatus && selectedElement?.trStatus !== 'C' && selectedElement?.trStatus !== 'failed' && selectedElement?.trStatus !== 'Q') ?? false;\r\n const lockCancelRecog = selectedElement?.recognized === 'R' && (selectedElement?.status === 'PC' || selectedElement?.status === 'OC');\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'View', shortcut: 'F9', separator: !listSec?.grantEdit && !listSec?.grantDel },\r\n { label: 'Edit', shortcut: 'F3', separator: !listSec?.grantDel, hidden: !listSec?.grantEdit },\r\n { label: 'Delete', shortcut: '', separator: true, hidden: !listSec?.grantDel },\r\n { label: 'Switch to Container List', shortcut: 'F4', separator: false },\r\n { label: 'Switch to AMS', shortcut: 'Shift+F4', separator: false },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: 'Switch to HBL List', shortcut: 'F6', separator: false, disabled : selectedElement?.hblCount === 'DBL' },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n { label: 'Copy', shortcut: 'Ctrl+F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'Bilings', shortcut: 'F7', separator: !listSec?.grantEdit },\r\n { label: 'Profit', shortcut: 'Ctrl+F7', separator: true, hidden: !listSec?.grantEdit },\r\n { label: 'Container Status Update', shortcut: '', separator: false },\r\n { label: 'Container Tracking', shortcut: '', separator: false, hidden: !showCntrTracking },\r\n { label: 'Request Tracking Service', shortcut: '', separator: false, hidden: !appContext.suntekSettings?.company?.trackingService },\r\n { label: !selectedElement?.isClosed ? 'OP Close' : 'OP Open', shortcut: '', separator: false, hidden: !showFileLock },\r\n // { label: 'Recog', shortcut: '', separator: false, disabled : selectedElement?.recognized === 'R', hidden: !getFmsGlobal().CanFinalize },\r\n { label: selectedElement?.recognized !== 'R' ? 'Recog' : 'Undo Recog', shortcut: '', separator: false, disabled : lockCancelRecog, hidden: !getFmsGlobal().CanFinalize },\r\n ];\r\n\r\n const itemStatus = [\r\n { label: !selectedElement?.isClosed ? 'OP Close' : 'OP Open', shortcut: '', separator: false, hidden: !showFileLock },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) => ({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n disabled: i?.disabled ?? false,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n \r\n const menuStatus: ActionButtonItem[] = itemStatus.map((i, index) => ({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n index,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n deleteMbl();\r\n break;\r\n case 4:\r\n switchToContainer();\r\n break;\r\n case 5:\r\n switchToAms();\r\n break;\r\n case 6:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 7:\r\n switchToHbl();\r\n break;\r\n case 8:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 9:\r\n copy();\r\n break;\r\n case 10:\r\n viewBillings();\r\n break;\r\n case 11:\r\n viewProfit(listSec?.grantEdit ? true : false);\r\n break;\r\n case 12:\r\n openContainerStatus();\r\n break;\r\n case 13:\r\n openContainerTracking();\r\n break;\r\n case 14:\r\n TrackRequestFunc(JobNames.OIMbl);\r\n break;\r\n case 15:\r\n processFileLock();\r\n break;\r\n case 16:\r\n recognize(selectedElement?.recognized !== 'R');\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n function onStatusSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n processFileLock();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction PaidRenderer({value, data, row}: any) {\r\n const {switchToAcctInfo} = useMblOperations();\r\n\r\n const isPaid = value !== 'x';\r\n\r\n if (!isPaid) {\r\n return
{value}
;\r\n }\r\n\r\n return switchToAcctInfo(data[row.index])} style={{width: '100%', lineHeight:'1em'}}>{value}\r\n}\r\n\r\n// function AfterMemoLogButtonCommands() {\r\n// const jobListContext = useContext(JobListViewContext);\r\n// const selectedElement = jobListContext.selectedElement as OiMblListItem;\r\n\r\n// return (\r\n// <>\r\n//   \r\n// window.open(`http://dotnet.freightstream.com/fsutil/customs.asp?mbn=${selectedElement?.mblNo}`)}>\r\n// \"Go\r\n// \r\n// \r\n// )\r\n// }\r\n\r\nfunction TrancationImpactButtonCommands({ userId } : {userId: string}) {\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as OiMblListItem;\r\n const {switchJournal} = useJournal();\r\n const suntekSettings = useSuntekSettings();\r\n \r\n if (!suntekSettings.general?.allowViewJournalOP && !userId.startsWith('@')) {\r\n return null;\r\n }\r\n\r\n return (\r\n switchJournal(JobNames.OIMbl, selectedElement.id)}>\r\n {constants.List_Journal}\r\n \r\n );\r\n}\r\n\r\n\r\nfunction MblListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n \r\n const selectedElement = jobListContext.selectedElement as OiMblListItem;\r\n const { deleteMbl, edit, view, copy, viewBillings, moveToDeleteHistoryReport } = useSelectedMblOperations();\r\n\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const { viewReport } = useReportViewer();\r\n const appContext = useContext(ApplicationContext);\r\n const setSavedEntityAfterRecog = useSetEditedId([JobNames.OIHbl, JobNames.SlipJournal]);\r\n\r\n function hasOpenedViewOrEditFor(id:number) {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/mbl/edit/${id}`) || jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/mbl/view/${id}`);\r\n }\r\n\r\n function doAfterRecog(){\r\n jobListContext.reloadData();\r\n setSavedEntityAfterRecog('0', false, false, true);\r\n }\r\n\r\n const onRecogModalClose = () => {\r\n jobListContext.setRecogModalData({ isOpen: false, isSet: false });\r\n }\r\n\r\n function hasOpenedNew() {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/mbl/add`);\r\n }\r\n\r\n const onPopupClose = () => {\r\n setSelectedPopupMenuItem(null);\r\n }\r\n \r\n async function onSubMenuClick(fmsSubMenu: FmsSubMenu) {\r\n setSelectedPopupMenuItem(null);\r\n\r\n if (!selectedElement) {\r\n return;\r\n }\r\n \r\n if (fmsSubMenu === FmsSubMenu.STARCFSMANI) {\r\n var result = await appContext.api.makeCfsManifest(selectedElement?.id?.toString()||'0');\r\n if (result) {\r\n if (!result.item1) {\r\n await showGlobalOkDialog(

CFS/Contact not configured for email manifest. (Name='ediManifest', Dept=ID, EMail=Address).

, false, null, 'warning');\r\n return;\r\n } else if (result.item3){\r\n // FMS3.3 Code : FrmPrintPreview.RunEmptyReport(false, result.Item2, \"Manifest\", result.Item3, \"T_OIMMAIN\", tbId.ToInt());\r\n //await showGlobalOkDialog(

Not Implemented Yet
(An email pop-up window should open.)

).then();\r\n return;\r\n }\r\n }\r\n } else {\r\n // Call ReportViewer \r\n const args = await getSelectedSubMenuArgs(fmsSubMenu, JobNames.OIMbl, selectedElement, appContext, showGlobalYesNoDialog, showGlobalOkDialog);\r\n if(args){\r\n viewReport(args, \"\", true);\r\n }\r\n }\r\n }\r\n\r\n const onLinkClick = (link: string) => {\r\n setSelectedPopupMenuItem(null);\r\n\r\n if (!selectedElement) {\r\n return;\r\n }\r\n \r\n window.open(link);\r\n }\r\n \r\n const listSec = findSecurityTask(appContext, FmsSecTask.OIMbl);\r\n \r\n const hasSelectedRow = !!selectedElement;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n\r\n const canBeCopied = hasSelectedRow && !hasOpenedNew() && listSec?.grantAdd;\r\n const canBeAdd = !hasOpenedNew() && listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n\r\n return (\r\n
\r\n
\r\n  \r\n View \r\n Edit \r\n Delete \r\n Copy\r\n
\r\n
\r\n {constants.List_Billings} \r\n Delete History\r\n
\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.popupComponent ? (\r\n \r\n {cloneElement(selectedPopupMenuItem.popupComponent!, {onPopupClose})}\r\n \r\n ) : null}\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.subMenu ? onSubMenuClick(selectedPopupMenuItem.subMenu) : null}\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.link ? onLinkClick(selectedPopupMenuItem.link) : null}\r\n {jobListContext.recogModalData?.isOpen ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n}\r\n\r\nfunction MblListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data.map(d => ({\r\n ...d,\r\n // shipmentType: formatShipmentType(d.shipmentType),\r\n }));\r\n}\r\n\r\nfunction MblListViewExtras({\r\n hideLogHistory\r\n}: any,\r\n) {\r\n useFunctionKeys({ onFunction: onFunctionKey });\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const history = useHistory();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OIMbl);\r\n\r\n const { create, copy, edit, view, switchToHbl, switchToContainer, switchToAms, viewBillings, viewProfit } = useSelectedMblOperations();\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n switchToHbl();\r\n } else if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"CTRL+F2\") {\r\n if(listSec?.grantAdd)\r\n copy();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F4\") {\r\n switchToContainer();\r\n } else if (unprocessedFkey === \"SHIFT+F4\") {\r\n switchToAms();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');\r\n } else if (unprocessedFkey === \"F7\") {\r\n viewBillings();\r\n } else if (unprocessedFkey === \"CTRL+F7\") {\r\n viewProfit(listSec?.grantEdit ? true : false);\r\n }\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey:string) {\r\n if (['F6', 'F2', 'CTRL+F2', 'F3', 'F4', 'SHIFT+F4', 'F9', 'F11', 'F8', 'F7', 'CTRL+F7'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /* pt211223\r\n async function loadInfoAreaInvoiceBillCrDb(id:string) {\r\n const apiResult = await appContext.api.getOceanImportMblInfoAreaBics(id);\r\n if (!apiResult) {\r\n return null;\r\n }\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n tableName: 'infoAreaBicTable',\r\n ...infoAreaBicTable,\r\n data: apiResult,\r\n \r\n rowRenderers: [\r\n { accessor: 'date', Cell: TextRenderer },\r\n { accessor: 'category', Cell: TextRenderer },\r\n // @ts-ignore:next-line\r\n { accessor: 'number', Cell: AccountingEntityRenderer.bind(this, onLinkToAccounting) },\r\n { accessor: 'companyName', Cell: TextAlignLeftRenderer },\r\n { accessor: 'cur', Cell: TextRenderer },\r\n // @ts-ignore:next-line\r\n { accessor: 'amount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.amount, cell.row.values.cur) },\r\n // @ts-ignore:next-line\r\n { accessor: 'paidAmount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.paidAmount, cell.row.values.cur) },\r\n // @ts-ignore:next-line\r\n { accessor: 'balance', Header: () =>
Balance
, Cell: ({cell}) => CurrencyRenderer(cell.row.values.balance, cell.row.values.cur, true) },\r\n ],\r\n };\r\n \r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n*/\r\n const infoHeadline = `MBL No: ${(jobListContext.selectedElement as OiMblListItem|null)?.mblNo ?? ''}`;\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n hideLogHistory={hideLogHistory}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for MBL List screen\r\n *\r\n * @class MblListView\r\n * @extends {AbstractListView}\r\n */\r\n class MblListView extends AbstractListView {\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(JobNames.OIMbl, 'OiMblListItem',\r\n OiMblListItem.calculateSearchParameters(search, OiMblListItem.MapSearchFields, ['shipmentType', 'lclFcl', 'moveType']),\r\n 1,\r\n search.pageSize);\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return { data: formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n {\r\n accessor: 'recognized',\r\n renderer: RecognizedFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n {\r\n accessor: 'shipmentType',\r\n renderer: ShipmentTypeFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n {\r\n accessor: 'lclFcl', //'containerMode',\r\n renderer: LclFclFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n // {\r\n // accessor: 're',\r\n // renderer: RailFilterRenderer,\r\n // searchValueExtractor: (v:any|null|undefined) => v,\r\n // },\r\n {\r\n accessor: 'moveType',\r\n renderer: MoveTypeFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n {\r\n accessor: 'invStat', //'inFlag',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v, \r\n },\r\n {\r\n accessor: 'billStat', //'biFlag',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n {\r\n accessor: 'crDbStat', //crdbFlag',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n {\r\n accessor: 'trStatus',\r\n renderer: RQFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings, listCount: number, useDarkMode: boolean ): ListRowRenderer[] {\r\n const useTrackingService = suntekSettings?.company?.trackingService ?? false;\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n const listType = this.suntekSettings?.oceanAir?.useLotNumber ? OimListType.UseLot : OimListType.Normal;\r\n\r\n return OiMblListItem.getExportCollection(listType, useTrackingService, useBranch).map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if (x.dataIndex === \"status\") {\r\n colRenderer.Cell = IndicatorRenderer;\r\n }\r\n else if(x.dataIndex === 'recognized') { colRenderer.Cell = RecognizedRenderer; }\r\n else if(x.dataIndex === 'invStat' || x.dataIndex === 'billStat' || x.dataIndex === 'crDbStat') colRenderer.Cell = BillingsRenderer;\r\n // { accessor:'hblCount', Cell: HblRenderer, Header: () => HBL(s) },\r\n else if(x.dataIndex === 'hblCount') {\r\n colRenderer.Cell = HblRenderer;\r\n colRenderer.Header = () => HBL(s);\r\n }\r\n else if (x.dataIndex === 'oFrt') colRenderer.Cell = PaidRenderer;\r\n else if (x.dataIndex === 'lastEvent') colRenderer.Cell = TrackEventNameRenderer;\r\n // else if (x.dataIndex === 're') { <250213 jhlee - R컬럼 제거 />\r\n // colRenderer.Cell = RailRenderer;\r\n // }\r\n else if(x.dataIndex === 'trStatus'){\r\n colRenderer.Cell = (props: any) => ;;\r\n colRenderer.Header = () =>
Container Tracking
;\r\n }\r\n // else if(x.dataIndex === 'containerNo') {\r\n // colRenderer.Cell = CntrNoRenderer;\r\n // }\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n else if(x.type === XCol.XCellType.Double) colRenderer.Cell = FloatRenderer;\r\n \r\n if (x.dataIndex === 'eBl' || x.dataIndex === 'expRls') {\r\n colRenderer.Cell = NullableCheckboxIconRenderer;\r\n }\r\n if (x.dataIndex === 'shipmentType') {\r\n colRenderer.Cell = ShipmentTypeRenderer;\r\n }\r\n if (x.dataIndex === 'lclFcl') {\r\n colRenderer.Cell = LclFclRenderer;\r\n }\r\n return colRenderer;\r\n });\r\n }\r\n\r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'recognized', changedValue: (value: any)=> { return !value['recognized'] ? '' : value['recognized']}});\r\n colRenderer.push({accessor: 'lastEvent', changedValue: (value: any)=> { return (!!value['lastEvent'] ? value['lastEvent'] + ' ' + formatDateTime(value['lastEventDate']) : '')}});\r\n colRenderer.push({accessor: 'te', changedValue: (value: any)=> { return nullableCheckBoxValue(value['te'])}});\r\n colRenderer.push({accessor: 're', changedValue: (value: any)=> { return nullableCheckBoxValue(value['re'])}});\r\n //colRenderer.push({accessor: 'trStatus', changedValue: (value: any)=> { return formatLclFcl(value)}});\r\n colRenderer.push({accessor: 'eBl', changedValue: (value: any)=> { return nullableCheckBoxValue(value['eBl'])}});\r\n colRenderer.push({accessor: 'expRls', changedValue: (value: any)=> { return nullableCheckBoxValue(value['expRls'])}});\r\n colRenderer.push({accessor: 'shipmentType', changedValue: (value: any)=> { return formatShipmentType(value['shipmentType'])}});\r\n colRenderer.push({accessor: 'lclFcl', changedValue: (value: any)=> { return formatLclFcl(value['lclFcl'])}});\r\n colRenderer.push({accessor: 'trStatus', changedValue: (value: any)=> { \r\n let text = '';\r\n if(value['trType'] === 'C' || value['trType'] === 'M'){\r\n switch(value['trStatus']){\r\n case 'Q':\r\n text = 'Start to Request';\r\n break;\r\n case 'failed':\r\n text = 'Invalid or Error';\r\n break;\r\n case 'tracking_stopped':\r\n text = 'End of Tracking';\r\n break;\r\n default:\r\n text = 'Under Movement';\r\n break;\r\n }\r\n }\r\n return text;\r\n }});\r\n colRenderer.push({accessor: 'trStatus2', changedValue: (value: any)=> { \r\n let text = '';\r\n if(value['trType'] === 'C' || value['trType'] === 'M'){\r\n switch(value['trStatus2']){\r\n case 'Q':\r\n text = 'Start to Request';\r\n break;\r\n case 'failed':\r\n text = 'Invalid or Error';\r\n break;\r\n case 'tracking_stopped':\r\n text = 'End of Tracking';\r\n break;\r\n default:\r\n text = 'Under Movement';\r\n break;\r\n }\r\n }\r\n return text;\r\n }});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'u2Date',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): TableSettings {\r\n //return oceanImportMblList;\r\n const tsettings = oceanImportMblList;\r\n const cols = OiMblListItem.getExportCollection(\r\n this.suntekSettings?.oceanAir?.useLotNumber ? OimListType.UseLot : OimListType.Normal, \r\n suntekSettings?.company?.trackingService ?? false,\r\n systemSettings?.enableBranch ?? false\r\n );\r\n\r\n // const getFilterType = (x: XCol.XExportColumn) => {\r\n // if (x.dataIndex === 'eBl' || x.dataIndex === 'expRls')\r\n // return XCol.XCellType.String;\r\n // }\r\n\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n \r\n }\r\n\r\n getTableDomIdSuffix(): string {\r\n let domIdSuffix = ''; \r\n if (this.suntekSettings?.oceanAir?.useLotNumber) domIdSuffix = '-uselotoim';\r\n if (this.suntekSettings?.company?.trackingService) domIdSuffix += '-trackingService';\r\n\r\n return domIdSuffix;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n renderExtras(hideLogHistory: boolean) {\r\n return \r\n }\r\n\r\n getViewUrlFor(row: OiMblListItem) {\r\n return row && row.id ? `/oceanImport/mbl/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'MBL List';\r\n };\r\n\r\n renderRowExtras(rowId: number | null, context: IJobListViewContext, cell: any): React.ReactNode | null {\r\n if (!rowId) {\r\n return null;\r\n }\r\n\r\n function onCloseMilestonePopup() {\r\n const storageKey = `oi-mbl-milestone-${rowId}`;\r\n fastStorage[storageKey] = null;\r\n context.setRowExtrasId(null);\r\n }\r\n\r\n function onCloseTracking49Popup() {\r\n const storageKey = `oim-trackrequest-${rowId}`;\r\n fastStorage[storageKey] = null;\r\n context.setRowExtrasId(null);\r\n context.setTrackingRequestEmailList(undefined);\r\n vcResult = '';\r\n }\r\n\r\n function onCloseEmailOptionPopup(emailList: string | undefined) {\r\n const storageKey = `emailoption-${rowId}`;\r\n fastStorage[storageKey] = null;\r\n if (_.isUndefined(emailList)) {\r\n context.setRowExtrasId(null);\r\n context.setTrackingRequestEmailList(undefined);\r\n }\r\n else\r\n context.setTrackingRequestEmailList(emailList);\r\n }\r\n\r\n function getTrackRequestTitle(trStatus: string) {\r\n return 'Tracking Request' + (!_.isEmpty(trStatus) && trStatus !== 'Q' ? ` - ${trStatus.toUpperCase().replace('_', ' ')}` : '');\r\n }\r\n\r\n function getEmailOptionTitle() {\r\n return `[MBL #${cell.row.original.mblNo}] Tracking Request: Choose email notice recipients`;\r\n }\r\n\r\n if (!_.isUndefined(context.trackingRequestEmailList)) {\r\n if (context.trackingRequestEmailList === 'OpenEmailOptionPopup')\r\n return (\r\n onCloseEmailOptionPopup(undefined)} draggable isOpen title={getEmailOptionTitle()} width=\"790px\">\r\n \r\n \r\n );\r\n else {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n else\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n\r\n renderAdditionalCommands() {\r\n return ;\r\n }\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n commandsAfterMemoLogBtn():React.ReactNode{\r\n //#1607\r\n // return \r\n return null;\r\n }\r\n\r\n transactionImpactBtn(userId: string): React.ReactNode {\r\n return \r\n }\r\n\r\n useLogHistory(): boolean {\r\n return true;\r\n }\r\n};\r\n\r\nexport default MblListView;\r\n","/**\r\n * Revision History\r\n * Data Model for OI Load Plan List\r\n * \r\n * 02/25/2022 hykim Create\r\n */\r\nimport {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class OiLoadListItem extends SearchModelBase {\r\n id: number = 0;\r\n loadNo: string = '';\r\n sName: string = '';\r\n amount: number|null = null;\r\n fromAmount: number|null = null;\r\n toAmount: number|null = null;\r\n truckingETD: string | null = null;\r\n fromTruckingETD: string | null = null;\r\n toTruckingETD: string | null = null;\r\n postDate: string | null = null;\r\n fromPostDate: string | null = null;\r\n toPostDate: string | null = null;\r\n createdAt: string | null = null;\r\n truckingCoId: number = 0;\r\n warehouseId: number = 0;\r\n warehouseName: string = '';\r\n u2Date: string | null = null;\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n fromCreatedAt: string | null = null;\r\n toCreatedAt: string | null = null;\r\n u2Id: string = '';\r\n u1Id: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Date', width: 75, dataIndex: 'postDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy'}),\r\n XCol.Create({ col: 2, text: 'Load #', width: 100, dataIndex: 'loadNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 3, text: 'Trucking Vendor', width: 120, dataIndex: 'sName'}),\r\n XCol.Create({ col: 4, text: 'Warehouse', width: 120, dataIndex: 'warehouseName'}),\r\n XCol.Create({ col: 5, text: 'Amount', width: 100, dataIndex: 'amount', type: XCol.XCellType.Double, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 6, text: 'Trucking ETD', width: 75, dataIndex: 'truckingETD', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy'}),\r\n XCol.Create({ col: 7, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy'}),\r\n XCol.Create({ col: 8, text: 'Create by', width: 80, dataIndex: 'u1Id'}),\r\n XCol.Create({ col: 9, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy'}),\r\n XCol.Create({ col: 10, text: 'Update by', width: 80, dataIndex: 'u2Id'}),\r\n ];\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: OiLoadListItem.prototype.createdAt, orderByAscending: false };\r\n\r\n public static formatData(data: OiLoadListItem[]) {\r\n return data.map((d: OiLoadListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n amount: {from: 'fromAmount', to: 'toAmount'},\r\n truckingETD: {from: 'fromTruckingETD', to: 'toTruckingETD'},\r\n postDate: {from: 'fromPostDate', to: 'toPostDate'},\r\n createdAt: {from: 'fromCreatedAt', to: 'toCreatedAt'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n };\r\n\r\n}\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport {oceanImportLoadPlanList,} from './tableSettings';\r\nimport {Search} from \"../../../filtering\";\r\nimport {NavigationType, openNewPage} from '../../../util/navigationHelpers';\r\nimport {\r\n DateRenderer,DateTimeRenderer,FloatRenderer,NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,TextAlignRightRenderer, TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport {JobNames} from '../../../framework.core/JobNames';\r\nimport {OiLoadListItem} from '../../../fms.data/models/OiLoadListItem';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../ui/ActionButton';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport { TrailerLoadArgs } from '../../../fms.report/args';\r\nimport { DocumentType } from '../../../framework.core/DocumentType';\r\nimport useReportViewer from '../../../hooks/useReportViewer';\r\nimport { findSecurityTask } from '../../../util';\r\n\r\nfunction useSelectedLoadPlanOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const history = useHistory();\r\n\r\n const selectedElement = jobListContext.selectedElement as OiLoadListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const { viewReport } = useReportViewer();\r\n\r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/oceanImport/loadPlan/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress.

);\r\n return;\r\n }\r\n\r\n openNewPage(history, '/oceanImport/loadPlan/add', NavigationType.newPage);\r\n }\r\n\r\n async function deleteLoadPlan() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/loadPlan/edit/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/loadPlan/view/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Load Plan first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n ,false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n await appContext.api.deleteJobDetail(JobNames.OITruckLoad, { id:selectedElement.id, pimsLinkId: 0 });\r\n jobListContext.reloadData();\r\n }\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/oceanImport/loadPlan/edit/${id}`;\r\n const viewUrl = `/oceanImport/loadPlan/view/${id}`;\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrlWithoutMe('/oceanImport/loadPlan/edit', editUrl)) {\r\n await showGlobalOkDialog(

Edit operation is already in progress.

);\r\n return;\r\n }\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n\r\n const editUrl = `/oceanImport/loadPlan/edit/${id}`;\r\n const viewUrl = `/oceanImport/loadPlan/view/${id}`;\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OITruckLoad);\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n async function print(){\r\n const title = `Express Trailer Load Plan [${selectedElement.loadNo}]`;\r\n const args = new TrailerLoadArgs({\r\n docType: DocumentType.TrailerLoad,\r\n subject: title,\r\n formCaption:title,\r\n tbId: selectedElement.id.toString(),\r\n toCompanyid:`${selectedElement.truckingCoId}, ${selectedElement.warehouseId}`\r\n })\r\n viewReport(args, \"\", true);\r\n }\r\n\r\n\r\n return { create, deleteLoadPlan, edit, view, print };\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const { create, deleteLoadPlan, edit, view } = useSelectedLoadPlanOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as OiLoadListItem;\r\n const appContext = useContext(ApplicationContext);\r\n // const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OITruckLoad);\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, newCol: false, hidden: !listSec?.grantAdd },\r\n { label: 'View', shortcut: 'F9', separator: !listSec?.grantEdit && !listSec?.grantDel },\r\n { label: 'Edit', shortcut: 'F3', separator: !listSec?.grantDel, hidden: !listSec?.grantEdit },\r\n { label: 'Delete', shortcut: '', separator: true, hidden: !listSec?.grantDel },\r\n { label: 'Search', shortcut: 'F5', separator: true },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n deleteLoadPlan();\r\n break;\r\n case 4:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 5:\r\n jobListContext.reloadData();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction LoadPlanListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const selectedElement = jobListContext.selectedElement as OiLoadListItem;\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const { deleteLoadPlan, edit, view, print } = useSelectedLoadPlanOperations();\r\n\r\n function hasOpenedViewOrEditFor(id:number) {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/loadPlan/edit/${id}`) || jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/loadPlan/view/${id}`);\r\n }\r\n\r\n // function hasOpenedNew() {\r\n // return jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/loadPlan/add`);\r\n // }\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OITruckLoad);\r\n \r\n const hasSelectedRow = !!selectedElement;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n const canBeAdd = listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n\r\n return (\r\n
\r\n
\r\n  \r\n View \r\n Edit \r\n Delete\r\n
\r\n
\r\n Print Load Plan\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nfunction LoadPlanListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data;\r\n}\r\n\r\nfunction LoadPlanListViewExtras({\r\n hideLogHistory\r\n}: any,\r\n) {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OITruckLoad);\r\n\r\n const { create, edit, view } = useSelectedLoadPlanOperations();\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F2', 'F3', 'F9', 'F11'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n\r\n \r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for Load Plan List screen\r\n *\r\n * @class LoadPlanListView\r\n * @extends {AbstractListView}\r\n */\r\n class LoadPlanListView extends AbstractListView {\r\n\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(JobNames.OILoad, 'OiLoadListItem',\r\n OiLoadListItem.calculateSearchParameters(search, OiLoadListItem.MapSearchFields),\r\n 1,\r\n search.pageSize);\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return { data: formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return '';\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n return colRenderer;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n return OiLoadListItem.getExportCollection().map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.align === XCol.XAlignType.Right) colRenderer.Cell = TextAlignRightRenderer;\r\n if(x.dataIndex === \"status\") {\r\n colRenderer.Cell = () => ;\r\n colRenderer.Header = () => ;\r\n }\r\n if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n else if(x.type === XCol.XCellType.Double) colRenderer.Cell = FloatRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'update',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = oceanImportLoadPlanList;\r\n const cols = OiLoadListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n renderExtras(hideLogHistory: boolean) {\r\n return \r\n }\r\n\r\n getViewUrlFor(row: OiLoadListItem) {\r\n return row && row.id ? `/oceanImport/loadPlan/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'Load Plan List';\r\n };\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n \r\n useLogHistory(): boolean {\r\n return true;\r\n }\r\n};\r\n\r\nexport default LoadPlanListView;","import {TableSettings} from \"../../../tableSettings\";\r\n\r\nexport const containerStatusList:TableSettings = {\r\n tableVersion: 10063,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: []\r\n};\r\n\r\nexport const myEventList: TableSettings ={\r\n tableVersion: 10058,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n showNewRowPlaceholder: false,\r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'status', Header: ' ', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'eventStatus', Header: 'My Events', visible: true, width: 125, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'containerNo', Header: 'CNTR #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'mblNo', Header: 'MBL #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n // { accessor:'trStatus', Header: 'TR', visible: true, width: 30, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n // { accessor:'te', Header: 'T', visible: true, width: 30, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'cargo', Header: 'Cargo', visible: true, width: 50, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'hblNo', Header: 'HBL #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'pod', Header: 'POD', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'anSentDate', Header: 'A/N Sent', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'eta', Header: 'ETA', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'lastFreeDay', Header: 'LFD', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'vesselArrivalDate', Header: 'Vessel ARR', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'unloadVesselDate', Header: 'Vessel ULD', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'railDepartureDate', Header: 'Rail DEP', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'railArrivalDate', Header: 'Rail ARR', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'carrierRlsDate', Header: 'Carrier Rel.', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'customsRlsDate', Header: 'Customs Rel.', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'pickupAvailableDate', Header: 'Pickup Avail', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'pickupDate', Header: 'Pickup', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'emptyCntrRtnDate', Header: 'Emp RTN', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'billingsDate', Header: 'Billings', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'consignee', Header: 'Consignee', visible: true, width: 110, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n // { accessor:'trDate', Header: 'Req Date', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n ]\r\n}\r\n\r\nexport const vesselInfoList:TableSettings = {\r\n tableVersion: 1005,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'status', Header: 'S', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'vessel', Header: 'Vessel Name', visible: true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'voyage', Header: 'Voyage #', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'discharge', Header: 'Discharge Port', visible: true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'eta', Header: 'ETA', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n ]\r\n};\r\n\r\nexport const amsVoyageList:TableSettings = {\r\n tableVersion: 1006,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'status', Header: ' ', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'id', Header: 'AMS ID', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'amsStatus', Header: 'S', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'userId', Header: 'User', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'block', Header: 'Block', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'vesselName', Header: 'Vessel Name', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'voyage', Header: 'Voyage #', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'lloyds', Header: 'Lloyds', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'loadPort', Header: 'Loading Port', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'etd', Header: 'ETD', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'lastPort', Header: 'Foreign Last Port', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'lastETD', Header: 'ETD', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'firstPort', Header: 'First US Port', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'eta', Header: 'ETA', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n ]\r\n};\r\n\r\nexport const amsMblList:TableSettings = {\r\n tableVersion: 1006,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'status', Header: ' ', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'id', Header: 'AMS ID', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'amsStatus', Header: 'S', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'userId', Header: 'User', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'block', Header: 'Block', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'branch', Header: 'BR', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'manifestSeq', Header: 'Manifest #', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'mblNo', Header: 'MBL #', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'vesselName', Header: 'Vessel Name', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'voyage', Header: 'Voyage #', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'onBoard', Header: 'Org. Load ETD', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'loadEtd', Header: 'M. Vessel ETD', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'eta', Header: 'ETA', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'loadingPort', Header: 'Loading Port', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'discharge', Header: 'Discharge Port', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'finalDest', Header: 'Final Destination', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'notify', Header: 'Notify', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'containerNo', Header: 'Container #', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const amsHblList:TableSettings = {\r\n tableVersion: 1007,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'customStatus', Header: ' ', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'id', Header: ' ', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'amsStatus', Header: 'AMS ID', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'userId', Header: 'S', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'block', Header: 'User', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'branch', Header: 'Block', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'vSendDate', Header: 'Send Date', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'status', Header: 'Error Status', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'responseCode', Header: 'DP', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'manifestSeq', Header: 'Manifest #', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'hblNo', Header: 'MBL #', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'mblNo', Header: 'HBL#', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'vesselName', Header: 'Vessel Name', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'voyage', Header: 'Voyage #', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'coLoadAms', Header: 'Co-Load', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'coLoadAmsbl', Header: 'Co-Load B/L', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'responseDate', Header: 'response', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'statusRemark', Header: 'Status', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'sName', Header: 'Shipper', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'cName', Header: 'Consignee #', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'nName', Header: 'Notify', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'loadPort', Header: 'Loading Port', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'dCode', Header: 'Discharge Port', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'eta', Header: 'ETA', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'loadEtd', Header: 'L. Port ETD', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'moveType', Header: 'H. Move Type', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'onBoard', Header: 'Onboard', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const amsUsersList:TableSettings = {\r\n tableVersion: 1004,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'status', Header: ' ', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'id', Header: 'User ID', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'amsID', Header: 'SCAC', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'userID', Header: 'User', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'passWord', Header: 'Password', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'name', Header: 'User Name', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'email', Header: 'Email', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'amsSubGroup', Header: 'Branch', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'agentId', Header: 'Agent ID', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'active', Header: 'InactiveNo', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const amsBranchList:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'status', Header: 'S', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'amsID', Header: 'SCAC', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'branch', Header: 'Branch', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'email', Header: 'Email', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const amsBillingCodeList:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'status', Header: ' ', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'amsBillingCode', Header: 'Billing Code', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'description', Header: 'Description', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const amsHistoryCodeList:TableSettings = {\r\n tableVersion: 1005,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'status', Header: ' ', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'userID', Header: 'User', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'amsMessage', Header: 'DP', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'date', Header: 'Date', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'description', Header: 'DP Description', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'hblNo', Header: 'HBL #', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'mblNo', Header: 'MBL #', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'sName', Header: 'Shipper', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'cName', Header: 'Consignee', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'nName', Header: 'Notify', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'voyage', Header: 'Voyage', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'eta', Header: 'ETA', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'dCode', Header: 'Discharge Port', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'conVName', Header: 'Vessel Name', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'moveType', Header: 'Move Type', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const amsCrHistoryCodeList:TableSettings = {\r\n tableVersion: 1005,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'status', Header: ' ', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'date', Header: 'Date', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date', defaultColumnFocus: true },\r\n { accessor:'hblNo', Header: 'HBL #', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'hblNo', Header: 'Entry #', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'containerNo', Header: 'Container #', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'pkg', Header: 'Qty', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n ]\r\n};\r\n\r\nexport const aciVoyageList:TableSettings = {\r\n tableVersion: 1004,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'status', Header: ' ', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false, hiddenInColumnSetup: true },\r\n { accessor:'id', Header: 'ID', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'amsStatus', Header: 'S', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'userId', Header: 'User', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'block', Header: 'Block', visible: true, width: 180, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'vesselName', Header: 'Vessel Name', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'voyage', Header: 'Voyage #', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'lloyds', Header: 'Lloyds', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'loadPort', Header: 'Loading Port', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'etd', Header: 'ETD', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'lastPort', Header: 'Foreign Last Port', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'lastETD', Header: 'ETD', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'firstPort', Header: 'First US Port', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'eta', Header: 'ETA', visible: true, width: 85, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n ]\r\n};\r\n\r\nexport const releaseBlContainerTable:TableSettings = {\r\n tableVersion: 1003,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '80px',\r\n headersColor: 'white',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n columns: [\r\n { Header: '', accessor: 'no', resizable: true, sortable: false, visible: true, initialWidthPercentage: 12, },\r\n { Header: 'Container #', accessor: 'containerNo', resizable: true, sortable: false, visible: true, initialWidthPercentage: 73, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 15, },\r\n ]\r\n};\r\n\r\nexport const releaseBlPaybleTable:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '80px',\r\n headersColor: 'white',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n columns: [\r\n { Header: 'Date', accessor: 'postDate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 8, },\r\n { Header: 'Vendor', accessor: 'vendorName', resizable: true, sortable: false, visible: true, initialWidthPercentage: 18, },\r\n { Header: 'Description', accessor: 'descript', resizable: true, sortable: false, visible: true, initialWidthPercentage: 20, },\r\n { Header: 'Invoice #', accessor: 'invoiceNo', resizable: true, sortable: false, visible: true, initialWidthPercentage: 14, },\r\n { Header: 'Due Date', accessor: 'dueDate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 9, },\r\n { Header: 'Amount', accessor: 'billAmt', resizable: true, sortable: false, visible: true, initialWidthPercentage: 10, },\r\n { Header: 'Paid Amount', accessor: 'paidAmt', resizable: true, sortable: false, visible: true, initialWidthPercentage: 10, },\r\n { Header: 'Status', accessor: 'status', resizable: true, sortable: false, visible: true, initialWidthPercentage: 7, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 4, },\r\n ]\r\n};\r\n\r\nexport const releaseBlReceivableTable:TableSettings = {\r\n tableVersion: 1003,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '80px',\r\n headersColor: 'white',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n columns: [\r\n { Header: 'Inv. Date', accessor: 'invoiceDate', resizable: true, sortable: false, visible: true, initialWidthPercentage: 9, },\r\n { Header: 'Inv. #', accessor: 'invoiceNo', resizable: true, sortable: false, visible: true, initialWidthPercentage: 23, },\r\n { Header: 'House B/L #', accessor: 'hblNo', resizable: true, sortable: false, visible: true, initialWidthPercentage: 23, },\r\n { Header: 'Over Due', accessor: 'overDue', resizable: true, sortable: false, visible: true, initialWidthPercentage: 9, },\r\n { Header: 'Invo. Amount', accessor: 'invoiceAmt', resizable: true, sortable: false, visible: true, initialWidthPercentage: 11, },\r\n { Header: 'Balance', accessor: 'balance', resizable: true, sortable: false, visible: true, initialWidthPercentage: 9, },\r\n { Header: 'Paid Amount', accessor: 'paidAmt', resizable: true, sortable: false, visible: true, initialWidthPercentage: 11, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 5, },\r\n ]\r\n};\r\n\r\nexport const houseBillList:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: []\r\n};\r\n\r\n","import { SearchModelBase } from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class OiContainerListItem extends SearchModelBase {\r\n id: number = 0;\r\n oiMblId: number = 0;\r\n containerNo: string = '';\r\n conType: string = '';\r\n refNo: string = '';\r\n mblNo: string = '';\r\n loadingPort: string = '';\r\n dischargePort: string = '';\r\n placeOfDelivery: string = '';\r\n\r\n eta: string | null = null;\r\n fromEta: string | null = null;\r\n toEta: string | null = null;\r\n\r\n //Booking\r\n bookingDate: string | null = null;\r\n fromBookingDate: string | null = null;\r\n toBookingDate: string | null = null;\r\n\r\n //Container Dispatched\r\n ord: string | null = null;\r\n fromOrd: string | null = null;\r\n toOrd: string | null = null;\r\n\r\n //Gate In\r\n inDate: string | null = null;\r\n fromInDate: string | null = null;\r\n toInDate: string | null = null;\r\n\r\n //Vessel Departure\r\n loadDate: string | null = null;\r\n fromLoadDate: string | null = null;\r\n toLoadDate: string | null = null;\r\n\r\n //Vessel Departure\r\n atd: string | null = null;\r\n fromAtd: string | null = null;\r\n toAtd: string | null = null;\r\n\r\n //Vessel Arrival\r\n ata: string | null = null;\r\n fromAta: string | null = null;\r\n toAta: string | null = null;\r\n\r\n //Vessel Arrival\r\n unloadDate: string | null = null;\r\n fromUnloadDate: string | null = null;\r\n toUnloadDate: string | null = null;\r\n\r\n //Carrier Release\r\n carrierRls: string | null = null;\r\n fromCarrierRls: string | null = null;\r\n toCarrierRls: string | null = null;\r\n\r\n //Customs Release\r\n customsRls: string | null = null;\r\n fromCustomsRls: string | null = null;\r\n toCustomsRls: string | null = null;\r\n\r\n //Rail Departure\r\n rAtd: string | null = null;\r\n fromRAtd: string | null = null;\r\n toRAtd: string | null = null;\r\n\r\n //Inland ETA\r\n inlandEta: string | null = null;\r\n fromInlandEta: string | null = null;\r\n toInlandEta: string | null = null;\r\n\r\n //Rail Arrival\r\n rAta: string | null = null;\r\n fromRAta: string | null = null;\r\n toRAta: string | null = null;\r\n\r\n //Last Free Day\r\n lastFreeDay: string | null = null;\r\n fromLastFreeDay: string | null = null;\r\n toLastFreeDay: string | null = null;\r\n\r\n //Pickup Avilable\r\n puDate: string | null = null;\r\n fromPuDate: string | null = null;\r\n toPuDate: string | null = null;\r\n\r\n //Pickup Container\r\n outDate: string | null = null;\r\n fromOutDate: string | null = null;\r\n toOutDate: string | null = null;\r\n\r\n //Actual Delivery\r\n dcDate: string | null = null;\r\n fromDcDate: string | null = null;\r\n toDcDate: string | null = null;\r\n\r\n //Emtpy Return\r\n emptyReturn: string | null = null;\r\n fromEmptyReturn: string | null = null;\r\n toEmptyReturn: string | null = null;\r\n\r\n vessel: string = '';\r\n voyage: string = '';\r\n\r\n etd: string | null = null;\r\n fromEtd: string | null = null;\r\n toEtd: string | null = null;\r\n\r\n trType: string = '';\r\n trStatus: string = '';\r\n trStatusDesc: string = '';\r\n\r\n trDate: string | null = null;\r\n fromTrDate: string | null = null;\r\n toTrDate: string | null = null;\r\n \r\n //Track Event\r\n lastEvent: string = '';\r\n lastEventDate: string | null = null;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'stat', hiddenInColumnSetup: true }),\r\n XCol.Create({ col: 1, text: 'Container #', width: 100, dataIndex: 'containerNo', defaultColumnFocus: true }),\r\n XCol.Create({ col: 2, text: 'Type', width: 60, dataIndex: 'conType' }),\r\n XCol.Create({ col: 3, text: 'Ref. #', width: 100, dataIndex: 'refNo' }),\r\n XCol.Create({ col: 4, text: 'RQ', width: 210, dataIndex: 'trStatus' }),\r\n XCol.Create({ col: 5, text: 'MBL #', width: 100, dataIndex: 'mblNo' }),\r\n XCol.Create({ col: 6, text: 'Loading Port', width: 100, dataIndex: 'loadingPort' }),\r\n XCol.Create({ col: 7, text: 'Discharge Port', width: 100, dataIndex: 'dischargePort' }),\r\n XCol.Create({ col: 8, text: 'Place of Delivery', width: 100, dataIndex: 'placeOfDelivery' }),\r\n XCol.Create({ col: 9, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 10, text: 'ETD', width: 75, dataIndex: 'etd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 11, text: 'Vessel', width: 120, dataIndex: 'vessel' }),\r\n XCol.Create({ col: 12, text: 'Voyage', width: 120, dataIndex: 'voyage' }),\r\n XCol.Create({ col: 13, text: 'Tracking Date', width: 100, dataIndex: 'trDate', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: true }),\r\n XCol.Create({ col: 14, text: 'Booking', width: 80, dataIndex: 'bookingDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 15, text: 'Container Dispatched', width: 75, dataIndex: 'ord', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 16, text: 'Gate In', width: 75, dataIndex: 'inDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 17, text: 'Load on Vessel', width: 75, dataIndex: 'loadDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 18, text: 'Vessel Departure', width: 75, dataIndex: 'atd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 19, text: 'Vessel Arrival', width: 75, dataIndex: 'ata', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 20, text: 'Unloaded Vessel', width: 75, dataIndex: 'unloadDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 21, text: 'Carrier Releease', width: 75, dataIndex: 'carrierRls', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 22, text: 'Customs Release', width: 75, dataIndex: 'customRls', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 23, text: 'Rail Departure', width: 75, dataIndex: 'rAtd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 24, text: 'Inland ETA', width: 75, dataIndex: 'inlandEta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 25, text: 'Rail Arrival', width: 75, dataIndex: 'rAta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 26, text: 'LFD', width: 75, dataIndex: 'lastFreeDay', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 27, text: 'Pickup Available', width: 75, dataIndex: 'puDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 28, text: 'Pickup Container', width: 75, dataIndex: 'outDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 29, text: 'Actual Delivery', width: 75, dataIndex: 'dcDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 30, text: 'Empty CNTR Return', width: 75, dataIndex: 'emptyReturn', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n ];\r\n\r\n\r\n public static getExportCollection(useTrackingService: boolean): XCol.XExportColumn[] {\r\n let returnCloumns = this.ExportCollection;\r\n if (!useTrackingService) returnCloumns = returnCloumns.filter(x => x.dataIndex !== 'trDate');\r\n return returnCloumns;\r\n };\r\n\r\n public static OrderBy = { orderBy: OiContainerListItem.prototype.id, orderByAscending: false };\r\n\r\n public static formatData(data: OiContainerListItem[]) {\r\n return data.map((d: OiContainerListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: { [key: string]: { [key: string]: string } } = {\r\n eta: { from: 'fromEta', to: 'toEta' },\r\n booking: { from: 'fromBooking', to: 'toBooking' },\r\n ord: { from: 'fromOrd', to: 'toOrd' },\r\n inDate: { from: 'fromInDate', to: 'toInDate' },\r\n loadDate: { from: 'fromLoadDate', to: 'toLoadDate' },\r\n atd: { from: 'fromAtd', to: 'toAtd' },\r\n ata: { from: 'fromAta', to: 'toAta' },\r\n unloadDate: { from: 'fromUnloadDate', to: 'toUnloadDate' },\r\n carrierRls: { from: 'fromCarrierRls', to: 'toCarrierRls' },\r\n customRls: { from: 'fromCustomRls', to: 'toCustomRls' },\r\n rAtd: { from: 'fromRAtd', to: 'toRAtd' },\r\n inlandEta: { from: 'fromInlandEta', to: 'toInlandEta' },\r\n rAta: { from: 'fromRAta', to: 'toRAta' },\r\n lastFreeDay: { from: 'fromLastFreeDay', to: 'toLastFreeDay' },\r\n puDate: { from: 'fromPuDate', to: 'toPuDate' },\r\n outDate: { from: 'fromOutDate', to: 'toOutDate' },\r\n dcDate: { from: 'fromDcDate', to: 'toDcDate' },\r\n emptyReturn: { from: 'fromEmptyReturn', to: 'toEmptyReturn' },\r\n etd: { from: 'fromEtd', to: 'toEtd' },\r\n trDate: { from: 'fromTrDate', to: 'toTrDate' }\r\n };\r\n}\r\n","import React, {useContext, useEffect, useState} from 'react';\r\n\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,\r\n ExportRowRenderer,\r\n ListCustomFilterRenderer,\r\n ListOrderBy,\r\n ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\n\r\nimport constants from '../../../constants';\r\n\r\nimport {containerStatusList} from '../tableSettings';\r\nimport {Search} from \"../../../filtering\";\r\n\r\nimport {\r\n DateRenderer,\r\n DateTimeRenderer,\r\n FloatRenderer,\r\n NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,\r\n TextAlignRightRenderer,\r\n TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport JobListViewContext, { IJobListViewContext, RightClickContext } from '../../common/JobListViewContext';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport {JobNames} from '../../../framework.core/JobNames';\r\nimport {OiContainerListItem} from '../../../fms.data/models/OiContainerListItem';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../ui/ActionButton';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport IfmsModal from '../../../ui/IfmsModal';\r\nimport { formatDate } from '../../../dateUtils';\r\nimport Date from '../../../ui/Date';\r\nimport SecondaryButton from '../../../ui/SecondaryButton';\r\nimport { SQLField, SQLInfo, SQLType } from '../../../framework.core/data/SQLInfo';\r\nimport { ApiResult, InsertResultsWithData } from '../../../framework.core/data/ApiResult';\r\nimport fastStorage from '../../../fastStorage';\r\nimport _ from 'lodash';\r\nimport { OmContainer } from '../../../fms.core/OmContainer';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport { RequestType } from '../../../fms.core/TrackRequest';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport TrackingRequest from '../../reports/TrackingRequest';\r\nimport EmailOptionPopup from '../../reports/EmailOption';\r\nimport { getFmsGlobal } from '../../../globals';\r\nimport { SuntekSettings, SystemSettings } from '../../../ifmsTypes';//\r\nimport {useHistory} from 'react-router-dom';\r\nimport { NavigationType, openNewPage } from '../../../util/navigationHelpers';\r\nimport { LastEventRenderer, RQFilterRenderer } from '../../common/commonListRenderers';\r\nimport cntrBlack from '../../../img/container_tracking-black.svg';\r\nimport cntrWhite from '../../../img/container_tracking-white.svg';\r\n\r\n// function CntrNoRenderer({value, data, row}: any) {\r\n// const history = useHistory();\r\n// const jobListContext = useContext(JobListViewContext);\r\n\r\n// function switchToCntrFor() {\r\n// jobListContext.setFilterForScreenExternally('/common/joblistview/mbl/oceanImport', \r\n// 'containerNo', '', data[row.index].containerNo ?? '', 'update', false);\r\n// openNewPage(history, `/common/joblistview/mbl/oceanImport`, NavigationType.newPage);\r\n// }\r\n\r\n// return {value}\r\n// }\r\n\r\nlet vcResult:string = '';\r\n\r\nasync function DoSave(rowId: number, dataIndex: any, datePopupInputValue: string|null, appContext: any, rowMblId:number) {\r\n //const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n let sqlInfo: SQLInfo = new SQLInfo({\r\n tableName: \"T_OIMCONTAINER\",\r\n type: SQLType.Update,\r\n fields: [\r\n new SQLField({ fieldName: `f_${dataIndex}`, propertyName: dataIndex, value: datePopupInputValue }),\r\n ],\r\n key: new SQLField({ fieldName: \"F_Id\", propertyName: \"Id\", value: rowId }),\r\n });\r\n\r\n const apiResult: ApiResult = await appContext.api.updateContainerInfo(sqlInfo);\r\n\r\n const editModelKey = `editOiMbl${rowMblId}-/oceanImport/mbl/edit`;\r\n const keyMatch = _.keys(fastStorage).find(x => x.startsWith(editModelKey));\r\n if (keyMatch) {\r\n const oimContainerArray = fastStorage[keyMatch].oimContainerList as OmContainer[];\r\n const oimContainer = oimContainerArray.find(x => x.id === rowId);\r\n if (oimContainer) {\r\n if (dataIndex === 'goDate')\r\n oimContainer.goDate = datePopupInputValue;\r\n else\r\n oimContainer.lastFreeDay = datePopupInputValue;\r\n }\r\n }\r\n \r\n\r\n if (apiResult && apiResult.success) {\r\n //await showGlobalOkDialog(

The data has been saved

);\r\n } else {\r\n //await showGlobalOkDialog(
\r\n //

Cannot save

\r\n //

{apiResult.message}

\r\n //
);\r\n }\r\n}\r\n\r\nfunction ClickAbleDateRenderer({ cell, data, row }: any) {\r\n const jobListContext = useContext(JobListViewContext);\r\n const l = data[row.index];\r\n\r\n function onDateCellClick() {\r\n if (jobListContext.rowExtrasId) {\r\n return; // Some row is already selected\r\n }\r\n\r\n jobListContext.setRowExtrasId(l.id);\r\n //jobListContext.setClickedCell(cell);\r\n }\r\n let content: React.ReactNode = <>;\r\n if (cell.value)\r\n content = formatDate(cell.value);\r\n\r\n return (\r\n
{content}
\r\n );\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as OiContainerListItem;\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const fmsGlobal = getFmsGlobal();\r\n const {switchToMbl} = useSelectedOperations();\r\n\r\n let showCntrTracking = (selectedElement?.trStatus && selectedElement?.trStatus !== 'C' && selectedElement?.trStatus !== 'failed' && selectedElement?.trStatus !== 'Q') ?? false;\r\n\r\n const items = [\r\n { label: 'Search', shortcut: 'F5', separator: false, newCol: false },\r\n { label: 'Switch to MBL List', shortcut: 'F6', separator: true, newCol: false },\r\n { label: 'Container Tracking', shortcut: '', separator: false, hidden: !showCntrTracking },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function openContainerTracking() {\r\n if (selectedElement.trStatus && selectedElement.trStatus !== 'C' && selectedElement.trStatus !== 'failed' && selectedElement.trStatus !== 'Q') {\r\n window.open(`https://quicktrack2.suntekscm.com/?licid=${fmsGlobal.AcmeID}&cntr=${selectedElement.containerNo}&email=${appContext.user?.email}`);\r\n }\r\n }\r\n\r\n async function TrackRequestFunc(jobName: JobNames) {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (_.isEmpty(selectedElement.containerNo)) {\r\n await showGlobalOkDialog(

Empty container number.

);\r\n return;\r\n }\r\n\r\n await CheckAndDoTrackRequest(jobName, selectedElement.id, selectedElement.trType, selectedElement.trStatus, selectedElement.mblNo)\r\n }\r\n\r\n async function CheckAndDoTrackRequest(jobName: string, jobId: number, trType: string, trStatus: string, mblNo: string, cntrCount: number = 1) {\r\n let result: string = '';\r\n if (!await CheckTrStatus(jobName, jobId, trType, trStatus, cntrCount)) return result;\r\n \r\n const apiResult = await IsShippingLineSupported(mblNo?.substring(0, 4), jobName === JobNames.OIMbl ? RequestType.bl : RequestType.Container)\r\n if (!apiResult.success || (jobName === JobNames.OIContainer && apiResult.result === RequestType.bl))\r\n return result;\r\n\r\n vcResult = apiResult.result;\r\n\r\n const errMsg = await CheckTrackRequestAllowed(cntrCount)\r\n if(!_.isEmpty(errMsg)){\r\n if (!errMsg.endsWith('?')){\r\n await showGlobalOkDialog(

{errMsg}

);\r\n return result;\r\n }\r\n else{\r\n const doClose = await showGlobalYesNoDialog(\r\n
\r\n

{errMsg}

\r\n
,false, 1\r\n );\r\n \r\n if (!doClose) {\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n jobListContext.setRowExtrasId(jobId);\r\n jobListContext.setTrackingRequestEmailList('OpenEmailOptionPopup');\r\n }\r\n\r\n async function CheckTrackRequestAllowed(countToSend: number) {\r\n let result = '';\r\n\r\n const perMonth = appContext.suntekSettings?.company?.containersPerMonth ?? 0;\r\n if (perMonth > 0) {\r\n const apiResult = await appContext.api.checkThisMonthRequests();\r\n if (perMonth - apiResult < countToSend) {\r\n result = `Credit for containers per month is limited.\r\nThis request will cause additional fee.\r\nDo you want to request this tracking?`;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n async function IsShippingLineSupported(vcScac: string, reqType: string) {\r\n let apiResult: ApiResult = { success: false, result: '', message: '' };\r\n\r\n if (_.isEmpty(vcScac)) {\r\n await showGlobalOkDialog(

Vessel carrier was not given. Please retry with valid Master B/L number.

);\r\n return apiResult;\r\n }\r\n\r\n apiResult = await appContext.api.trackingCheckShippingLine(vcScac);\r\n\r\n if(!apiResult || !apiResult.success){\r\n await showGlobalOkDialog(

{apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

);\r\n return apiResult;\r\n }\r\n else {\r\n switch (apiResult.result) {\r\n case 'X':\r\n await showGlobalOkDialog(

Tracking Service does not support Vessel carrier {`[${vcScac}]`}.

);\r\n apiResult.success = false;\r\n break;\r\n case RequestType.bl:\r\n if (reqType !== RequestType.bl) {\r\n await showGlobalOkDialog(

Vessel carrier {`[${vcScac}] support only Master B/L tracking.`}\r\nPlease retry from Master B/L list.

);\r\n apiResult.success = false;\r\n }\r\n break;\r\n }\r\n }\r\n return apiResult;\r\n }\r\n\r\n async function CheckTrStatus(jobName: string, jobId: number, trType: string, trStatus: string, cntrCount: number = 1) {\r\n if (!_.isEmpty(trType)) {\r\n switch (jobName) {\r\n case JobNames.OIContainer:\r\n if (!(trStatus === \"failed\" || trStatus === \"C\")) {\r\n await showGlobalOkDialog(

Tracking service was already requested at {`[${trType === 'C' ? 'Container List' : 'Master B/L List'}].`}

);\r\n return false;\r\n }\r\n break;\r\n case JobNames.OIHbl:\r\n break;\r\n case JobNames.OIMbl:\r\n if(trType === 'C'){\r\n const apiResult = await appContext.api.getTrackRequestedContainerCountPerMbl(jobId);\r\n if(apiResult >= cntrCount){\r\n await showGlobalOkDialog(

All containers are already requested at {'['}Container List{']'}.

);\r\n return false;\r\n }\r\n else {\r\n await showGlobalOkDialog(

Part of containers are requested at [Container List].\r\nYou can request tracking service for the remaining containers\r\n

);\r\n }\r\n }\r\n else if (trType === 'M' && !(trStatus === \"failed\" || trStatus === \"C\")) {\r\n await showGlobalOkDialog(

Tracking service was already requested at [Master B/L List].

);\r\n return false;\r\n }\r\n break;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n\r\n function onMenuItemSelected(item: IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 1:\r\n switchToMbl();\r\n break;\r\n case 2:\r\n openContainerTracking();\r\n break;\r\n case 3:\r\n TrackRequestFunc(JobNames.OIContainer);\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction CsListCommands() {\r\n return null;\r\n}\r\n\r\nfunction CsListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data;\r\n}\r\n\r\nfunction useOperations() {\r\n const history = useHistory();\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n function switchToMblFor(c: OiContainerListItem | null) {\r\n if (!c) {\r\n return;\r\n }\r\n\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/mbl/oceanImport', \r\n 'id', 'Ref. #', c.oiMblId, 'updated', false, true, null, 'refNo', c.refNo, false,true);\r\n \r\n openNewPage(history, `/common/joblistview/mbl/oceanImport`, NavigationType.newPage);\r\n }\r\n\r\n return {switchToMblFor};\r\n}\r\n\r\n\r\nfunction useSelectedOperations(){\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const history = useHistory();\r\n\r\n const { switchToMblFor } = useOperations();\r\n\r\n function switchToMbl() {\r\n const selectedElement = jobListContext.selectedElement as OiContainerListItem;\r\n switchToMblFor(selectedElement);\r\n }\r\n\r\n return {switchToMbl};\r\n\r\n}\r\n\r\n\r\nfunction CsListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n const {switchToMbl} = useSelectedOperations();\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if(unprocessedFkey === \"F6\"){\r\n switchToMbl();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey:string) {\r\n if (['F6','F11'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n //hideLogHistory={true}\r\n />\r\n );\r\n}\r\n\r\nfunction ContainerPopup({ rowId, onClose, cell, save }: { rowId: any, onClose: any, cell: any, save: any }) {\r\n const [datePopupInputValue, setDatePopupInputValue] = useState(null);\r\n \r\n return (\r\n \r\n
\r\n
\r\n {cell.column.Header}\r\n
\r\n { setDatePopupInputValue(date ?? null) }}\r\n />\r\n
\r\n
\r\n
\r\n { save(rowId, cell.column.dataIndex, datePopupInputValue) }}>\r\n SAVE\r\n   \r\n \r\n CANCEL\r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for Container List screen\r\n *\r\n * @class ContainerStatusListView\r\n * @extends {AbstractListView}\r\n */\r\n class ContainerStatusListView extends AbstractListView {\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(JobNames.OIContainer, 'OiContainerListItem',\r\n OiContainerListItem.calculateSearchParameters(search, OiContainerListItem.MapSearchFields),\r\n 1,\r\n search.pageSize);\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return { data: formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n {\r\n accessor: 'trStatus',\r\n renderer: RQFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings, listCount: number, useDarkMode: boolean ): ListRowRenderer[] {\r\n const useTrackingService = suntekSettings?.company?.trackingService ?? false;\r\n return OiContainerListItem.getExportCollection(useTrackingService).map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n // if(x.dataIndex === 'containerNo') {\r\n // colRenderer.Cell = CntrNoRenderer;\r\n // colRenderer.Header = () => Container No;\r\n // }\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.align === XCol.XAlignType.Right) colRenderer.Cell = TextAlignRightRenderer;\r\n if(x.dataIndex === \"stat\") {\r\n colRenderer.Cell = () => \r\n colRenderer.Header = () => ;\r\n }\r\n else if(x.dataIndex === \"refNo\") colRenderer.Cell = TextAlignLeftRenderer;\r\n else if(x.dataIndex === 'trStatus'){\r\n colRenderer.Cell = (props: any) => ;\r\n colRenderer.Header = () =>
Container Tracking
;\r\n }\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if (x.type === XCol.XCellType.Date) {\r\n if (x.dataIndex === \"eta\")\r\n colRenderer.Cell = DateRenderer\r\n else {\r\n colRenderer.Cell = ClickAbleDateRenderer\r\n }\r\n }\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n else if (x.type === XCol.XCellType.Double) {\r\n if (x.dataIndex === 'pkgs')\r\n colRenderer.Cell = (props: any) => ;\r\n else\r\n colRenderer.Cell = (props: any) => ;\r\n }\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n colRenderer.push({ accessor: 'pkgs', changedValue: (value: any) => { return value['pkgs'] } });\r\n colRenderer.push({ accessor: 'bookingDate', changedValue: (value: any) => { return formatDate(value['bookingDate']) } });\r\n colRenderer.push({ accessor: 'ord', changedValue: (value: any) => { return formatDate(value['ord']) } });\r\n colRenderer.push({ accessor: 'inDate', changedValue: (value: any) => { return formatDate(value['inDate']) } });\r\n colRenderer.push({ accessor: 'loadDate', changedValue: (value: any) => { return formatDate(value['loadDate']) } });\r\n colRenderer.push({ accessor: 'atd', changedValue: (value: any) => { return formatDate(value['atd']) } });\r\n colRenderer.push({ accessor: 'ata', changedValue: (value: any) => { return formatDate(value['ata']) } });\r\n colRenderer.push({ accessor: 'unloadDate', changedValue: (value: any) => { return formatDate(value['unloadDate']) } });\r\n colRenderer.push({ accessor: 'carrierRls', changedValue: (value: any) => { return formatDate(value['carrierRls']) } });\r\n colRenderer.push({ accessor: 'customRls', changedValue: (value: any) => { return formatDate(value['customRls']) } });\r\n colRenderer.push({ accessor: 'rAtd', changedValue: (value: any) => { return formatDate(value['rAtd']) } });\r\n colRenderer.push({ accessor: 'inlandEta', changedValue: (value: any) => { return formatDate(value['inlandEta']) } });\r\n colRenderer.push({ accessor: 'rAta', changedValue: (value: any) => { return formatDate(value['rAta']) } });\r\n colRenderer.push({ accessor: 'lastFreeDay', changedValue: (value: any) => { return formatDate(value['lastFreeDay']) } });\r\n colRenderer.push({ accessor: 'puDate', changedValue: (value: any) => { return formatDate(value['puDate']) } });\r\n colRenderer.push({ accessor: 'outDate', changedValue: (value: any) => { return formatDate(value['outDate']) } });\r\n colRenderer.push({ accessor: 'dcDate', changedValue: (value: any) => { return formatDate(value['dcDate']) } });\r\n colRenderer.push({ accessor: 'emptyReturn', changedValue: (value: any) => { return formatDate(value['emptyReturn']) } });\r\n colRenderer.push({ accessor: 'etd', changedValue: (value: any) => { return formatDate(value['etd']) } });\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'id',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n renderRowExtras(rowId: number | null, context: IJobListViewContext, cell: any, appContext: any): React.ReactNode | null {\r\n if (!rowId) {\r\n return null;\r\n }\r\n\r\n function onClose() {\r\n context.setRowExtrasId(null);\r\n }\r\n\r\n function onCloseTracking49Popup() {\r\n const storageKey = `oi-container-trackrequest-${rowId}`;\r\n fastStorage[storageKey] = null;\r\n context.setRowExtrasId(null);\r\n context.setTrackingRequestEmailList(undefined);\r\n vcResult = '';\r\n }\r\n\r\n function onCloseEmailOptionPopup(emailList: string | undefined) {\r\n const storageKey = `emailoption-${rowId}`;\r\n fastStorage[storageKey] = null;\r\n if (_.isUndefined(emailList)) {\r\n context.setRowExtrasId(null);\r\n context.setTrackingRequestEmailList(undefined);\r\n }\r\n else\r\n context.setTrackingRequestEmailList(emailList);\r\n }\r\n\r\n function getTrackRequestTitle(trStatus: string) {\r\n return 'Tracking Request' + (!_.isEmpty(trStatus) && trStatus !== 'Q' ? ` - ${trStatus.toUpperCase().replace('_', ' ')}` : '');\r\n }\r\n\r\n function getEmailOptionTitle() {\r\n return `[Container #${cell.row.original.containerNo}] Tracking Request: Choose email notice recipients`;\r\n }\r\n\r\n function save(rowId: number, dataIndex: any, datePopupInputValue: string) {\r\n if (cell.value !== datePopupInputValue) {\r\n DoSave(rowId, dataIndex, datePopupInputValue, appContext, cell.row.original.oiMblId);\r\n onClose();\r\n context.reloadData();\r\n }\r\n else\r\n onClose();\r\n }\r\n \r\n if (!_.isUndefined(context.trackingRequestEmailList)) {\r\n if (context.trackingRequestEmailList === 'OpenEmailOptionPopup')\r\n return (\r\n onCloseEmailOptionPopup(undefined)} draggable isOpen title={getEmailOptionTitle()} width=\"790px\">\r\n \r\n \r\n );\r\n else {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n else\r\n return \r\n }\r\n\r\n getTableSettings(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): TableSettings {\r\n const tsettings = containerStatusList;\r\n const useTrackingService = suntekSettings?.company?.trackingService ?? false;\r\n const cols = OiContainerListItem.getExportCollection(useTrackingService);\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n\r\n return tsettings;\r\n \r\n }\r\n\r\n getTableDomIdSuffix(): string {\r\n let domIdSuffix = ''; \r\n if (this.suntekSettings?.company?.trackingService) domIdSuffix += '-trackingService';\r\n\r\n return domIdSuffix;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor() {\r\n return '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'Container List';\r\n };\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n};\r\n\r\nexport default ContainerStatusListView;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class OiVesselListItem extends SearchModelBase {\r\n vessel: string = '';\r\n voyage: string = '';\r\n discharge: string = '';\r\n eta: string | null = null;\r\n fromEta: string | null = null;\r\n toEta: string | null = null;\r\n id: number = 0;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true, filterable: false }),\r\n XCol.Create({ col: 1, text: 'Vessel Name', width: 150, dataIndex: 'vessel', defaultColumnFocus : true}),\r\n XCol.Create({ col: 2, text: 'Voyage #', width: 80, dataIndex: 'voyage'}),\r\n XCol.Create({ col: 3, text: 'Discharge Port', width: 150, dataIndex: 'discharge'}),\r\n XCol.Create({ col: 4, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: OiVesselListItem.prototype.id, orderByAscending: false };\r\n\r\n public static formatData(data: OiVesselListItem[]) {\r\n return data.map((d: OiVesselListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n eta: {from: 'fromEta', to: 'toEta'},\r\n };\r\n}\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport constants from '../../../constants';\r\nimport {vesselInfoList,} from '../tableSettings';\r\nimport {Search} from \"../../../filtering\";\r\nimport {\r\n DateRenderer,DateTimeRenderer,NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport {JobNames} from '../../../framework.core/JobNames';\r\nimport {OiVesselListItem} from '../../../fms.data/models/OiVesselListItem';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport IfmsModal from '../../../ui/IfmsModal';\r\nimport IfmsDate from '../../../ui/Date';\r\nimport SecondaryButton from '../../../ui/SecondaryButton';\r\nimport CheckBoxUncontrolled from '../../../ui/CheckBoxUncontrolled';\r\nimport LeftRightSplit from '../../../ui/LeftRightSplit';\r\nimport Label from '../../../ui/Label';\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport useReportViewer from '../../../hooks/useReportViewer';\r\nimport { VesselAcctArgs } from '../../../fms.report/args';\r\nimport { DocumentType } from '../../../framework.core/DocumentType';\r\nimport { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../ui/ActionButton';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\n\r\ninterface ChangeEtaModel {\r\n id: number;\r\n eta: string;\r\n isReminder: boolean;\r\n};\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const jobListContext = useContext(JobListViewContext);\r\n // const selectedElement = jobListContext.selectedElement as OceanQuoteListItem;\r\n // const appContext = useContext(ApplicationContext);\r\n // const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const items = [\r\n { label: 'Search', shortcut: 'F5', separator: true, newCol: false },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 1:\r\n jobListContext.reloadData();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction useSelectedVi() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as OiVesselListItem|null;\r\n\r\n return { selectedElement };\r\n}\r\n\r\nfunction SelectedViEta({\r\n changeEtaModel,\r\n onChange\r\n}: {\r\n changeEtaModel: ChangeEtaModel,\r\n onChange: (x: Partial) => void,\r\n}) {\r\n useEffect(() => {\r\n const focusElement = document.getElementById(`${changeEtaModel.id}-eta`) as HTMLInputElement;\r\n\r\n if (focusElement) {\r\n setTimeout(() => {\r\n focusElement.focus();\r\n focusElement.select();\r\n }, 100);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n return onChange({eta: date??''})} />;\r\n}\r\n\r\nfunction ViListCommands() {\r\n const { selectedElement } = useSelectedVi();\r\n const [showEtaEdit, setShowEtaEdit] = useState(false);\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const {viewReport} = useReportViewer();\r\n const [changeEtaModel, setChangeEtaModel] = useState({id: 0, eta: '', isReminder: false});\r\n\r\n function onChange(change: Partial) {\r\n setChangeEtaModel(prevState => ({...prevState, ...change}));\r\n }\r\n\r\n useEffect(() => {\r\n setChangeEtaModel({id: selectedElement?.id??0, eta: selectedElement?.eta??'', isReminder: selectedElement?.isReminder??false})\r\n }, [selectedElement])\r\n \r\n async function print() {\r\n if (!selectedElement) return;\r\n \r\n const title = \"Vessel Account Report\";\r\n const args = new VesselAcctArgs({\r\n formCaption: title,\r\n subject: title,\r\n docType: DocumentType.VesselAcct,\r\n vesselName: selectedElement.vessel,\r\n voyage: selectedElement.voyage\r\n });\r\n viewReport(args, \"\", true);\r\n }\r\n\r\n async function changeETA() {\r\n if (!selectedElement) return;\r\n \r\n const apiResult = await appContext.api.setOIetaByVessel(changeEtaModel.eta, selectedElement.vessel, selectedElement.voyage, \r\n selectedElement.discharge, selectedElement.eta, changeEtaModel.isReminder);\r\n if(!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

Failed !

);\r\n return\r\n } \r\n\r\n await showGlobalOkDialog(

Successful !

);\r\n setShowEtaEdit(false);\r\n jobListContext.reloadData();\r\n }\r\n\r\n return (\r\n
\r\n
\r\n setShowEtaEdit(true)}\r\n name='vesselInfo-list-etaChange-button'\r\n >\r\n ETA Change\r\n  \r\n Billing Status\r\n
\r\n
\r\n {(showEtaEdit && selectedElement) &&\r\n setShowEtaEdit(false)} draggable isOpen={showEtaEdit} title=\"ETA Change\" width=\"180px\">\r\n \r\n { onChange({ isReminder: value }) }} />}\r\n right={\r\n }\r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction ViListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data;\r\n}\r\n\r\nfunction ViListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey:string) {\r\n if (['F11'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return (\r\n <>\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for Vessel Status List screen\r\n *\r\n * @class VesselInfoListView\r\n * @extends {AbstractListView}\r\n */\r\n class VesselInfoListView extends AbstractListView {\r\n\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(JobNames.OIVessel, 'OiVesselListItem',\r\n OiVesselListItem.calculateSearchParameters(search, OiVesselListItem.MapSearchFields),\r\n 1,\r\n search.pageSize);\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return { data: formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n return OiVesselListItem.getExportCollection().map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.dataIndex === \"status\") {\r\n colRenderer.Cell = () => \r\n colRenderer.Header = () => ;\r\n }\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'id',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = vesselInfoList;\r\n const cols = OiVesselListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n \r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor() {\r\n return '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'Vessel Info List';\r\n };\r\n\r\n hasMemo(): boolean {\r\n return false;\r\n }\r\n \r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n};\r\n\r\nexport default VesselInfoListView;","import {SearchModelBase} from './SearchModelBase';\r\nimport { ListFilterType } from '../../fms.core/constants';\r\n\r\nexport class AmsListItemBase extends SearchModelBase {\r\n listType: ListFilterType = 0;\r\n}\r\n","import {AmsListItemBase} from './AmsListItemBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class AmsVoyageListItem extends AmsListItemBase {\r\n id: string = '';\r\n amsStatus: string = '';\r\n userId: string = '';\r\n block: number | null = null;\r\n vesselName: string = '';\r\n voyage: string = '';\r\n lloyds: string = '';\r\n loadPort: string = '';\r\n etd: string | null = null;\r\n fromETD: string | null = null;\r\n toETD: string | null = null;\r\n firstPort: string = '';\r\n eta: string | null = null;\r\n fromETA: string | null = null;\r\n toETA: string | null = null;\r\n lastPort: string = '';\r\n lastETD: string | null = null;\r\n fromLastETD: string | null = null;\r\n toLastETD: string | null = null;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true, filterable: false }),\r\n XCol.Create({ col: 1, text: 'AMS ID', width: 80, dataIndex: 'id', align: XCol.XAlignType.Right, hiddenInColumnSetup: true }),\r\n XCol.Create({ col: 2, text: 'S', width: 40, dataIndex: 'amsStatus', align: XCol.XAlignType.Center, hiddenInColumnSetup: true }),\r\n XCol.Create({ col: 3, text: 'User', width: 100, dataIndex: 'userId'}),\r\n XCol.Create({ col: 4, text: 'Block', width: 40, dataIndex: 'block', type: XCol.XCellType.StrBool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 5, text: 'Vessel Name', width: 120, dataIndex: 'vesselName', defaultColumnFocus : true}),\r\n XCol.Create({ col: 6, text: 'Voyage #', width: 80, dataIndex: 'voyage'}),\r\n XCol.Create({ col: 7, text: 'Lloyds', width: 80, dataIndex: 'lloyds'}),\r\n XCol.Create({ col: 8, text: 'Loading Port', width: 100, dataIndex: 'loadPort'}),\r\n XCol.Create({ col: 9, text: 'ETD', width: 75, dataIndex: 'etd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 10, text: 'Foreign Last Port', width: 100, dataIndex: 'lastPort'}),\r\n XCol.Create({ col: 11, text: 'ETD', width: 75, dataIndex: 'lastETD', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 12, text: 'First US Port', width: 100, dataIndex: 'firstPort'}),\r\n XCol.Create({ col: 13, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: AmsVoyageListItem.prototype.id, orderByAscending: false };\r\n\r\n public static formatData(data: AmsVoyageListItem[]) {\r\n return data.map((d: AmsVoyageListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n etd: {from: 'fromETD', to: 'toETD'},\r\n lastETD: {from: 'fromLastETD', to: 'toLastETD'},\r\n eta: {from: 'fromETA', to: 'toETA'},\r\n }\r\n}\r\n","import {TrackableEntity} from './../../fms.core/data/ChangeTrackable';\r\n\r\nexport class AmsVoyage extends TrackableEntity {\r\n id: number = 0;\r\n amsUserID: number = 0;\r\n userName: string = '';\r\n vesselName: string = '';\r\n lloyds: string = '';\r\n voyage: string = '';\r\n loadPort: string = '';\r\n lastPort: string = '';\r\n firstPort: string = '';\r\n loadETD: string | null = null;\r\n lastETD: string | null = null;\r\n firstETA: string | null = null;\r\n vesselIndex: number|null = null;\r\n lPortName: string = '';\r\n fPortName: string = '';\r\n uPortName: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n}\r\n","import React, { useContext, useEffect} from 'react';\r\nimport Date from '../../../../ui/Date';\r\nimport LeftRightSplit from '../../../../ui/LeftRightSplit';\r\nimport SecondaryButton from '../../../../ui/SecondaryButton';\r\nimport InlineInputControlRow from '../../../../ui/layout/InlineInputControlRow';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport Label from '../../../../ui/Label';\r\nimport { AmsVoyage } from '../../../../fms.data/models/AmsVoyage';\r\nimport { useTypedFastStorage } from '../../../../hooks/useFastStorage';\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport _ from 'lodash';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\n\r\ninterface ViewVoyageStorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\ninterface ViewVoyageParams {\r\n id: string | undefined,\r\n onPopupClose?: () => void,\r\n};\r\n\r\ninterface ViewVoyageLoadedDetailsViewParams {\r\n voyage: AmsVoyage,\r\n onPopupClose?: () => void\r\n};\r\n\r\nfunction getViewVoyageStorageKeys(): ViewVoyageStorageKeys {\r\n return {modelStorage: 'oi-ams-voyage'}\r\n}\r\n\r\nfunction ViewVoyageImpl(params: ViewVoyageParams) {\r\n const {id, onPopupClose} = params;\r\n const {modelStorage} = getViewVoyageStorageKeys();\r\n const [inStorage, setInStorage, removeVoyageFromStorage] = useTypedFastStorage(modelStorage, null);\r\n const appContext = useContext(ApplicationContext);\r\n\r\n useFunctionKeys({onEsc: cancel});\r\n\r\n function cancel() {\r\n if(onPopupClose) onPopupClose();\r\n return true;\r\n }\r\n \r\n useEffect(() => {\r\n initialize();\r\n return () => {\r\n removeVoyageFromStorage()\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n);\r\n\r\nasync function loadExisting() {\r\n const apiResult = await appContext.api.getAmsVessel(id);\r\n if(apiResult && apiResult.success) {\r\n let data: AmsVoyage = new AmsVoyage(apiResult.result);\r\n return data;\r\n }\r\n return {}\r\n}\r\n\r\nasync function initialize() {\r\n const data = await loadExisting();\r\n setInStorage(_.cloneDeep(data));\r\n}\r\n\r\nif (!inStorage) {\r\n return null;\r\n}\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction ViewVoyageImplInitializedImpl({\r\n voyage,\r\n onPopupClose\r\n}: ViewVoyageLoadedDetailsViewParams) {\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n }\r\n right={}\r\n />\r\n \r\n\r\n \r\n }\r\n right={}\r\n />\r\n \r\n\r\n \r\n }\r\n right={}\r\n />\r\n \r\n\r\n \r\n }\r\n right={}\r\n />\r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n  
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n CANCEL\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nconst ViewVoyage = ({onPopupClose, selectedElementId}: { onPopupClose?: () => void, selectedElementId: string }) => {\r\n\r\n return (\r\n \r\n );\r\n};\r\nexport default ViewVoyage;\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAADAFBMVEUBAAAAAAAAgACAgAAAAICAAIAAgICAgIDAwMD/AAAA/wD//wAAAP//AP8A//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJRqB8AAAAAXRSTlMAQObYZgAAAE9JREFUeNpjZGBgYYCDPwwMjFgEGPlg/E//oQI//yAUQVR8RRIAm/AXoQsm8IOBgQOEPzGCjfyEpIIRKMn4kxoqkNyB6nCQAELyP9TpqAAA2jYiIfd2AiMAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAADAFBMVEUBAAAAAAAAgACAgAAAAICAAIAAgICAgIDAwMD/AAAA/wD//wAAAP//AP8A//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJRqB8AAAAAXRSTlMAQObYZgAAAGtJREFUeNqNzksOgCAMBNCpGj4h4f4nNYUFWFtAlnY3DwpDSMDtMKaAFLxFz7UbZAPGhHGhL0h6fv2EiAMNfIoYUNDn9eMFjNGsuiIrHERsHCpFCSJ5NiOS9YKvGflQjqZRKihgn7cY7dDxAMz2OxU975A4AAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAADAFBMVEUBAAAAAAAAgACAgAAAAICAAIAAgICAgIDAwMD/AAAA/wD//wAAAP//AP8A//////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJRqB8AAAAAXRSTlMAQObYZgAAAGlJREFUeNqNz7EOgCAMBNCrGjGQ8P/f6dAAgwhXMIx2IPSVpIcgAHpiVIYQnLUulWoQDRImjAf1g8D58RN4h+7tWEDBxQTxvR/JypkF4nXmbF7EXTfihETI9omRrMP2cNwiELBWDyYrVLzHPzkV2rTAiwAAAABJRU5ErkJggg==\"","import React, {useContext, useEffect, useState} from 'react';\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport constants from '../../../constants';\r\nimport {amsVoyageList,} from '../tableSettings';\r\nimport {Search} from \"../../../filtering\";\r\nimport {\r\n DateRenderer,DateTimeRenderer,NullableCheckboxIconRenderer,TextAlignLeftRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../ui/ActionButton';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport {JobNames} from '../../../framework.core/JobNames';\r\nimport {AmsVoyageListItem} from '../../../fms.data/models/AmsVoyageListItem';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport IfmsModal from '../../../ui/IfmsModal';\r\nimport ViewVoyage from './implementation/ViewVoyage';\r\nimport CheckBoxUncontrolled from \"../../../ui/CheckBoxUncontrolled\";\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport BlackInverseButton from '../../../ui/BlackInverseButton';\r\nimport voyageAll from '../../../img/DownloadAll.png';\r\nimport voyageNotDown from '../../../img/NotDownloaded.png';\r\nimport voyageDown from '../../../img/Downloaded.png';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport { ListFilterType } from '../../../fms.core/constants';\r\nimport { useHistory } from 'react-router';\r\nimport { openNewPage, NavigationType } from '../../../util/navigationHelpers';\r\nimport { nullableCheckBoxValue } from '../../common/commonExportFormat';\r\n\r\nfunction BlockRenderer({value, row}: any) {\r\n /*const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n async function updateConfirmed(newValue:boolean) {\r\n const updatedRow = await appContext.api.setCrdbConfirmed(row.original.id, newValue);\r\n jobListContext.updateDataRow(updatedRow);\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );*/\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nfunction useAMSVOperations() {\r\n const history = useHistory();\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n function switchToHblFor(voyage:AmsVoyageListItem|null) {\r\n if (!voyage) {\r\n return;\r\n }\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/AMSH/oceanImport', \r\n 'amsVoyageId', '', voyage.id, 'update', false, true);\r\n openNewPage(history, `/common/joblistview/AMSH/oceanImport`, NavigationType.newPage);\r\n }\r\n return { switchToHblFor};\r\n}\r\n\r\nfunction useSelectedAMSVOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const { switchToHblFor} = useAMSVOperations();\r\n\r\n const selectedElement = jobListContext.selectedElement as AmsVoyageListItem|null;\r\n\r\n function view() {\r\n jobListContext.showPopupRow();\r\n }\r\n\r\n function switchToAmsHbl() {\r\n const selectedElement = jobListContext.selectedElement as AmsVoyageListItem;\r\n switchToHblFor(selectedElement);\r\n }\r\n\r\n return { selectedElement, view, switchToAmsHbl };\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const { view, switchToAmsHbl } = useSelectedAMSVOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n // const selectedElement = jobListContext.selectedElement as OceanQuoteListItem;\r\n // const appContext = useContext(ApplicationContext);\r\n // const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const items = [\r\n { label: 'View', shortcut: 'F9', separator: true },\r\n { label: 'Switch to AMS HBL List', shortcut: 'F4', separator: false },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n view();\r\n break;\r\n case 1:\r\n switchToAmsHbl();\r\n break;\r\n case 2:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 3:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 4:\r\n jobListContext.reloadData();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction ViListCommands() {\r\n const { selectedElement } = useSelectedAMSVOperations();\r\n const [ showGlobalYesNoDialog ] = useGlobalYesNoDialog();\r\n const [view, showView] = useState(false);\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const [listFilter, setListFilter] = useState('A');\r\n const history = useHistory();\r\n\r\n async function block(isBlock: boolean) {\r\n const doBlock = await showGlobalYesNoDialog(

Are you sure you want to {(isBlock ? \"Block\" : \"Cancel block\")}?

,false, 0, true)\r\n\r\n if (doBlock) {\r\n const id = selectedElement?.id;\r\n\r\n await appContext.api.block(JobNames.AMSVoyage, id, isBlock);\r\n\r\n jobListContext.reloadData();\r\n } else {\r\n return;\r\n }\r\n }\r\n function dismissView() {\r\n showView(false);\r\n jobListContext.dismissPopupRow();\r\n }\r\n\r\n async function changeVoyageListData(type: string) {\r\n setListFilter(type);\r\n const listFilterType = type === 'A' ? ListFilterType.All : (type === 'D' ? ListFilterType.Downloaded : ListFilterType.Virgin);\r\n const apiResult = await appContext.api.getListItems(JobNames.AMSVoyage,\r\n 'AmsVoyageListItem',\r\n AmsVoyageListItem.calculateSearchParameters(jobListContext.search, AmsVoyageListItem.MapSearchFields),\r\n 1,\r\n jobListContext.search.pageSize, 'AMS', listFilterType);\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n jobListContext.setData && jobListContext.setData(AmsVoyageListItem.formatData([]), 0);\r\n }\r\n else\r\n jobListContext.setData && jobListContext.setData(AmsVoyageListItem.formatData(apiResult.entities), apiResult.totalCount);\r\n }\r\n\r\n async function viewDownloadView() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n\r\n const viewUrl = `/oceanImport/download/${JobNames.AMSVoyage}/${id}`;\r\n\r\n openNewPage(history, viewUrl, NavigationType.newPage);\r\n }\r\n\r\n const allIconSelected = \r\n const allIcon = \r\n const downloadedIconSelected = \r\n const downloadedIcon = \r\n const notDownIconSelected = \r\n const notDownIcon = \r\n\r\n return (\r\n
\r\n
\r\n showView(true)}\r\n >\r\n View\r\n  \r\n\r\n block(true)}\r\n >\r\n Block\r\n  \r\n\r\n block(false)}\r\n >\r\n Cancel Block\r\n \r\n
\r\n
\r\n viewDownloadView()}\r\n >\r\n Download to OI\r\n \r\n
\r\n
\r\n {\r\n await changeVoyageListData('A')\r\n }}>{listFilter === 'A'? allIconSelected : allIcon}\r\n  \r\n {\r\n await changeVoyageListData('D')\r\n }}>{listFilter === 'D'? downloadedIconSelected :downloadedIcon}\r\n  \r\n {\r\n await changeVoyageListData('N')\r\n }}>{listFilter === 'N'? notDownIconSelected :notDownIcon}\r\n  \r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nfunction ViListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data;\r\n}\r\n\r\nfunction ViListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n const { view, switchToAmsHbl } = useSelectedAMSVOperations();\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F4\") {\r\n switchToAmsHbl();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey:string) {\r\n if (['F4', 'F8', 'F9', 'F11'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Concrete implementation for AMS Voyage List screen\r\n *\r\n * @class VoyageListView\r\n * @extends {AbstractListView}\r\n */\r\n class VoyageListView extends AbstractListView {\r\n async fetchAndFormatData(api: any, search: Search, opType :any): Promise {\r\n const apiResult = await api.getListItems(JobNames.AMSVoyage, 'AmsVoyageListItem',\r\n AmsVoyageListItem.calculateSearchParameters(search,AmsVoyageListItem.MapSearchFields),\r\n 1,\r\n search.pageSize,\r\n 'AMS');\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return { data: formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n return AmsVoyageListItem.getExportCollection().map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.dataIndex === \"status\") {\r\n colRenderer.Cell = () => \r\n colRenderer.Header = () => ;\r\n }\r\n else if(x.type === XCol.XCellType.StrBool) colRenderer.Cell = BlockRenderer;\r\n else if(x.type === XCol.XCellType.Bool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n colRenderer.push({accessor: 'block', changedValue: (value: any)=> { return nullableCheckBoxValue(value['block'])}});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'id',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = amsVoyageList;\r\n const cols = AmsVoyageListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor() {\r\n return '';\r\n }\r\n\r\n hasViewPopup(): boolean {\r\n return true;\r\n }\r\n\r\n getListViewTitle() {\r\n return `AMS Voyage List`;\r\n };\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n hasMemo(): boolean {\r\n return false;\r\n }\r\n};\r\n\r\nexport default VoyageListView;","import {AmsListItemBase} from './AmsListItemBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport _ from 'lodash';\r\n\r\nexport class AmsMasterListItem extends AmsListItemBase {\r\n id: string = '';\r\n amsStatus: string = '';\r\n userId: string = '';\r\n block: boolean|null = null;\r\n branch: string = '';\r\n manifestSeq: string = '';\r\n mblNo: string = '';\r\n vesselName: string = '';\r\n voyage: string = '';\r\n eta: string | null = null;\r\n fromEta: string | null = null;\r\n toEta: string | null = null;\r\n loadingPort: string = '';\r\n finalDest: string = '';\r\n loadEtd: string | null = null;\r\n fromLoadEtd: string | null = null;\r\n toLoadEtd: string | null = null;\r\n onBoard: string | null = null;\r\n fromOnBoard: string | null = null;\r\n toOnBoard: string | null = null;\r\n discharge: string = '';\r\n notify: string = '';\r\n containerNo: string = '';\r\n amsVoyageId: string = '';\r\n expr1: number|null = null;\r\n amsUserId: number|null = null;\r\n amsGroupId: number|null = null;\r\n firstETA: string | null = null;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true, filterable: false }),\r\n XCol.Create({ col: 1, text: 'AMS ID', width: 80, dataIndex: 'id', align: XCol.XAlignType.Right, hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 2, text: 'S', width: 40, dataIndex: 'amsStatus', align: XCol.XAlignType.Center, hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 3, text: 'User', width: 100, dataIndex: 'userId'}),\r\n XCol.Create({ col: 4, text: 'Block', width:40, dataIndex: 'block', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 5, text: 'BR', width: 40, dataIndex: 'branch', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 6, text: 'Manifest #', width: 100, dataIndex: 'manifestSeq'}),\r\n XCol.Create({ col: 7, text: 'MBL #', width: 100, dataIndex: 'mblNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 8, text: 'Vessel Name', width: 120, dataIndex: 'vesselName'}),\r\n XCol.Create({ col: 9, text: 'Voyage #', width: 80, dataIndex: 'voyage'}),\r\n XCol.Create({ col: 10, text: 'Org. Load ETD', width: 75, dataIndex: 'onBoard', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 11, text: 'M. Vessel ETD', width: 75, dataIndex: 'loadEtd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 12, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 13, text: 'Loading Port', width: 120, dataIndex: 'loadingPort'}),\r\n XCol.Create({ col: 14, text: 'Discharge Port', width: 120, dataIndex: 'discharge'}),\r\n XCol.Create({ col: 15, text: 'Final Destination', width: 120, dataIndex: 'finalDest'}),\r\n XCol.Create({ col: 16, text: 'Notify', width: 80, dataIndex: 'notify'}),\r\n XCol.Create({ col: 17, text: 'Container #', width: 90, dataIndex: 'containerNo'})\r\n ];\r\n\r\n\r\n public static getExportCollection(useBranch: boolean): XCol.XExportColumn[] {\r\n let returnCloumns = _.cloneDeep(this.ExportCollection);\r\n if (!useBranch) returnCloumns = returnCloumns.filter(x => x.dataIndex !== 'branch');\r\n return returnCloumns;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: AmsMasterListItem.prototype.id, orderByAscending: false };\r\n\r\n public static formatData(data: AmsMasterListItem[]) {\r\n return data.map((d: AmsMasterListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n onBoard: {from: 'fromOnBoard', to: 'toOnBoard'},\r\n loadEtd: {from: 'fromLoadEtd', to: 'toLoadEtd'},\r\n eta: {from: 'fromEta', to: 'toEta'},\r\n }\r\n}\r\n","import {TrackableEntity} from './../data/ChangeTrackable';\r\n\r\nexport class AmsContainer extends TrackableEntity {\r\n id: number = 0;\r\n containerNo: string = '';\r\n sealNo1: string = '';\r\n sealNo2: string = '';\r\n descCode: string = '';\r\n length: number = 0;\r\n height: number = 0;\r\n width: number = 0;\r\n type: string = '';\r\n status: string = '';\r\n serviceCode: string = '';\r\n amsMasterID: number = 0;\r\n created: string = '';\r\n modified: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key=undefined;\r\n Object.assign(this, init);\r\n }\r\n}\r\n","import {TrackableEntity} from './../data/ChangeTrackable';\r\nimport {AmsContainer} from './AmsContainer';\r\n\r\nexport class AmsMbl extends TrackableEntity {\r\n id: number = 0;\r\n mblNo: string = '';\r\n fsCompanyId: number = 0;\r\n eta: string | null = null;\r\n onBoard: string | null = null;\r\n loadEtd: string | null = null;\r\n convRefNo: string = '';\r\n svcBulletNo: string = '';\r\n vesselName: string = '';\r\n voyage: string = '';\r\n origin: string = '';\r\n loadPort: string = '';\r\n dCode: string = '';\r\n vesselFlag: string = '';\r\n lfp: string = '';\r\n pou: string = '';\r\n manifestSeq: string = '';\r\n svcNo: string = '';\r\n mCommodity: string = '';\r\n feederVessel: string = '';\r\n fCode: string = '';\r\n finalDest: string = '';\r\n moveType: string = '';\r\n n1Scac: string = '';\r\n n2Scac: string = '';\r\n coload: boolean = false;\r\n coloadBlNo: string = '';\r\n lclFcl: string = '';\r\n expRls: boolean = false;\r\n branch: string = '';\r\n caType: string = '';\r\n cntrId: number = 0;\r\n cntrNo: string = '';\r\n cntrType: string = '';\r\n sealNo1: string = '';\r\n sealNo2: string = '';\r\n acctID: string = '';\r\n acDesc: string = '';\r\n preRevenue: number = 0;\r\n preCost: number = 0;\r\n colRevenue: number = 0;\r\n colCost: number = 0;\r\n lloyds: string = '';\r\n amsUserId: number = 0;\r\n userName: string = '';\r\n lPortName: string = '';\r\n dPortName: string = '';\r\n carrierName1: string = '';\r\n container: AmsContainer[] = [];\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n if(this.id === 0) this.id = this.GetNextId();\r\n\r\n if(this.container.length > 0) {\r\n this.container = this.container.map(d => new AmsContainer(d));\r\n } else {\r\n this.container = [];\r\n }\r\n }\r\n}\r\n","import React, { useContext, useEffect} from 'react';\r\nimport Date from '../../../../ui/Date';\r\nimport LeftRightSplit from '../../../../ui/LeftRightSplit';\r\nimport SecondaryButton from '../../../../ui/SecondaryButton';\r\nimport InlineInputControlRow from '../../../../ui/layout/InlineInputControlRow';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport { ApplicableTableSettings, TableSettings } from '../../../../tableSettings';\r\nimport { TextAlignLeftRenderer } from '../../../../uiControls/SmartTableRenderers';\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport { useTypedFastStorage } from '../../../../hooks/useFastStorage';\r\nimport { AmsMbl } from '../../../../fms.core/ams/AmsMbl';\r\nimport _ from 'lodash';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\n\r\nexport const viewListSettings:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'no', Header: '#', visible: true, resizable: true, sortable: false, initialWidthPercentage: 7.69, },\r\n { accessor:'containerNo', Header: 'Container #', visible: true, resizable: true, sortable: false, initialWidthPercentage: 25.64, },\r\n { accessor:'type', Header: 'ISO Type', visible: true, resizable: true, sortable: false, initialWidthPercentage: 20.51, },\r\n { accessor:'sealNo1', Header: 'Seal #', visible: true, resizable: true, sortable: false, initialWidthPercentage: 20.51, },\r\n { accessor:'sealNo2', Header: 'Seal #', visible: true, resizable: true, sortable: false, initialWidthPercentage: 20.51, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: true, sortable: false, initialWidthPercentage: 5.14, },\r\n ]\r\n};\r\n\r\ninterface ViewMblStorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\ninterface ViewMblParams {\r\n id: string | undefined,\r\n onPopupClose?: () => void,\r\n};\r\n\r\ninterface ViewMblLoadedDetailsViewParams {\r\n mbl: AmsMbl,\r\n onPopupClose?: () => void\r\n};\r\n\r\nfunction getViewMblStorageKeys(): ViewMblStorageKeys {\r\n return {modelStorage: 'oi-ams-mbl'}\r\n}\r\n\r\nfunction ViewMblImpl(params: ViewMblParams) {\r\n const {id, onPopupClose} = params;\r\n const {modelStorage} = getViewMblStorageKeys();\r\n const [inStorage, setInStorage, removeMblFromStorage] = useTypedFastStorage(modelStorage, null);\r\n const appContext = useContext(ApplicationContext);\r\n\r\n useFunctionKeys({onEsc: cancel});\r\n\r\n function cancel() {\r\n if(onPopupClose) onPopupClose();\r\n return true;\r\n }\r\n\r\n useEffect(() => {\r\n initialize();\r\n return () => {\r\n removeMblFromStorage()\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []);\r\n\r\n async function loadExisting() {\r\n const apiResult = await appContext.api.getAmsMbl(id);\r\n if(apiResult && apiResult.success) {\r\n let data: AmsMbl = new AmsMbl(apiResult.result);\r\n return data;\r\n }\r\n return {}\r\n }\r\n\r\n async function initialize() {\r\n const data = await loadExisting();\r\n setInStorage(_.cloneDeep(data));\r\n }\r\n\r\n if (!inStorage) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction IndicatorRenderer({row}: any) {\r\n return
{row.index + 1}
;\r\n}\r\n\r\nfunction ViewMblImplInitializedImpl({\r\n mbl,\r\n onPopupClose\r\n}: ViewMblLoadedDetailsViewParams) {\r\n\r\n const tableSettings:ApplicableTableSettings = {\r\n customTableId: 'oi-mblView',\r\n tableName: 'oi-mblView',\r\n ...viewListSettings,\r\n height: '200px',\r\n data: mbl.container.map(x => ({...x})),\r\n rowRenderers: [\r\n { accessor: 'no', Cell: IndicatorRenderer },\r\n { accessor: 'containerNo', Cell: TextAlignLeftRenderer },\r\n { accessor: 'type', Cell: TextAlignLeftRenderer },\r\n { accessor: 'sealNo1', Cell: TextAlignLeftRenderer },\r\n { accessor: 'sealNo2', Cell: TextAlignLeftRenderer },\r\n { accessor: 'scroll', Cell: TextAlignLeftRenderer },\r\n ],\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n }\r\n right={}\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n }\r\n right={}\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n }\r\n right={}\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n }\r\n right={}\r\n />\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n CANCEL\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nconst ViewMbl = ({onPopupClose, selectedElementId}: { onPopupClose?: () => void, selectedElementId: string }) => {\r\n\r\n return (\r\n \r\n );\r\n};\r\nexport default ViewMbl;\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport constants from '../../../constants';\r\nimport {amsMblList,} from '../tableSettings';\r\nimport {Search} from \"../../../filtering\";\r\nimport {\r\n DateRenderer,DateTimeRenderer,NullableCheckboxIconRenderer,TextAlignLeftRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../ui/ActionButton';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport {JobNames} from '../../../framework.core/JobNames';\r\nimport {AmsMasterListItem} from '../../../fms.data/models/AmsMasterListItem';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport IfmsModal from '../../../ui/IfmsModal';\r\nimport ViewMbl from './implementation/ViewMbl';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport { SuntekSettings, SystemSettings } from '../../../ifmsTypes';\r\n\r\nimport BlackInverseButton from '../../../ui/BlackInverseButton';\r\n\r\nimport mblAll from '../../../img/DownloadAll.png';\r\nimport mblNotDown from '../../../img/NotDownloaded.png';\r\nimport mblDown from '../../../img/Downloaded.png';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport { ListFilterType } from '../../../fms.core/constants';\r\nimport { useHistory } from 'react-router';\r\nimport { openNewPage, NavigationType } from '../../../util/navigationHelpers';\r\nimport useReportViewer from '../../../hooks/useReportViewer';\r\nimport { AmsHistoryMasterArgs, AmsManifestArgs } from '../../../fms.report/args';\r\nimport { DocumentType } from '../../../framework.core/DocumentType';\r\nimport { nullableCheckBoxValue } from '../../common/commonExportFormat';\r\n\r\nfunction useMblOperations() {\r\n const history = useHistory();\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n function switchToHblFor(mbl:AmsMasterListItem|null) {\r\n if (!mbl) {\r\n return;\r\n }\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/AMSH/oceanImport', \r\n 'mblNo', 'MBL #', mbl.mblNo, 'update', false, true,null, null, null, false, true);\r\n openNewPage(history, `/common/joblistview/AMSH/oceanImport`, NavigationType.newPage);\r\n }\r\n\r\n function switchToVoyageFor(mbl:AmsMasterListItem|null) {\r\n if (!mbl) {\r\n return;\r\n }\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/AMSV/oceanImport', \r\n 'id', 'AMS ID', mbl.amsVoyageId, 'update', false, true,null, null, null, false, true);\r\n openNewPage(history, `/common/joblistview/AMSV/oceanImport`, NavigationType.newPage);\r\n }\r\n\r\n\r\n function switchToMblFor(mbl:AmsMasterListItem|null) {\r\n if (!mbl) {\r\n return;\r\n }\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/mbl/oceanImport', \r\n 'refNo', 'Ref', mbl.mblNo, 'update', false, true,null, null, null, false, true);\r\n openNewPage(history, `/common/joblistview/mbl/oceanImport`, NavigationType.newPage);\r\n }\r\n\r\n return { switchToHblFor, switchToVoyageFor, switchToMblFor };\r\n}\r\n\r\nfunction useSelectedMblOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const { switchToHblFor, switchToVoyageFor, switchToMblFor } = useMblOperations();\r\n\r\n const selectedElement = jobListContext.selectedElement as AmsMasterListItem|null;\r\n\r\n function view() {\r\n jobListContext.showPopupRow();\r\n }\r\n\r\n function switchToAmsHbl() {\r\n const selectedElement = jobListContext.selectedElement as AmsMasterListItem;\r\n switchToHblFor(selectedElement);\r\n }\r\n\r\n function switchToMbl() {\r\n const selectedElement = jobListContext.selectedElement as AmsMasterListItem;\r\n switchToMblFor(selectedElement);\r\n }\r\n\r\n function switchToAmsVoyage() {\r\n const selectedElement = jobListContext.selectedElement as AmsMasterListItem;\r\n switchToVoyageFor(selectedElement);\r\n }\r\n\r\n return { selectedElement,view, switchToMbl, switchToAmsVoyage, switchToAmsHbl };\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const { view, switchToMbl, switchToAmsVoyage, switchToAmsHbl } = useSelectedMblOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n // const selectedElement = jobListContext.selectedElement as OceanQuoteListItem;\r\n // const appContext = useContext(ApplicationContext);\r\n // const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const items = [\r\n { label: 'View', shortcut: 'F9', separator: true },\r\n { label: 'Switch to AMS Voyage List', shortcut: 'F4', separator: false },\r\n { label: 'Switch to MBL List', shortcut: 'Shift+F4', separator: false },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: 'Switch to HBL List', shortcut: 'F6', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n view();\r\n break;\r\n case 1:\r\n switchToAmsVoyage();\r\n break;\r\n case 2:\r\n switchToMbl();\r\n break;\r\n case 3:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 4:\r\n switchToAmsHbl();\r\n break;\r\n case 5:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 6:\r\n jobListContext.reloadData();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction ViListCommands() {\r\n const {viewReport} = useReportViewer(); \r\n const { selectedElement } = useSelectedMblOperations();\r\n const [ showGlobalYesNoDialog ] = useGlobalYesNoDialog();\r\n const [view, showView] = useState(false);\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const [listFilter, setListFilter] = useState('A');\r\n const history = useHistory();\r\n\r\n async function block(isBlock: boolean) {\r\n const doBlock = await showGlobalYesNoDialog(

Are you sure you want to {(isBlock ? \"Block\" : \"Cancel block\")}?

,false, 0, true)\r\n\r\n if (doBlock) {\r\n const id = selectedElement?.id;\r\n\r\n await appContext.api.block(JobNames.AMSMaster, id, isBlock);\r\n\r\n jobListContext.reloadData();\r\n } else {\r\n return;\r\n }\r\n }\r\n function dismissView() {\r\n showView(false);\r\n jobListContext.dismissPopupRow();\r\n }\r\n\r\n async function changeMblListData(type: string) {\r\n setListFilter(type);\r\n const listFilterType = type === 'A' ? ListFilterType.All : (type === 'D' ? ListFilterType.Downloaded : ListFilterType.Virgin);\r\n const apiResult = await appContext.api.getListItems(JobNames.AMSMaster,\r\n 'AmsMasterListItem',\r\n AmsMasterListItem.calculateSearchParameters(jobListContext.search, AmsMasterListItem.MapSearchFields),\r\n 1,\r\n jobListContext.search.pageSize, 'AMS', listFilterType);\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n jobListContext.setData && jobListContext.setData(AmsMasterListItem.formatData([]),0);\r\n } else\r\n jobListContext.setData && jobListContext.setData(AmsMasterListItem.formatData(apiResult.entities), apiResult.totalCount);\r\n }\r\n\r\n async function openMasterHistoryReport() {\r\n if(!selectedElement?.id) return;\r\n const title = \"Ams Master BL # \" + selectedElement?.mblNo;\r\n const args = new AmsHistoryMasterArgs({\r\n docType: DocumentType.AmsHistoryMaster,\r\n formCaption: title,\r\n subject: title,\r\n\r\n dataCompanyID: 0,\r\n masterID: Number(selectedElement?.id),\r\n amsMode: 'AMS'\r\n })\r\n viewReport(args, \"\", true);\r\n }\r\n\r\n async function openAmsManifestReport() {\r\n if(!selectedElement?.id) return;\r\n\r\n const title = \"Ams Master Manifest\";\r\n const args = new AmsManifestArgs({\r\n docType: DocumentType.AmsManifest,\r\n formCaption: title,\r\n subject: title,\r\n\r\n amsVoyageId: Number(selectedElement.amsVoyageId),\r\n amsMasterId: Number(selectedElement?.id),\r\n amsMode: 'AMS'\r\n })\r\n viewReport(args, \"\", true);\r\n }\r\n\r\n async function viewDownloadView() {\r\n if (!selectedElement) {\r\n return;\r\n } \r\n\r\n const id = selectedElement.id;\r\n\r\n const viewUrl = `/oceanImport/download/${JobNames.AMSMaster}/${id}`;\r\n\r\n openNewPage(history, viewUrl, NavigationType.newPage);\r\n }\r\n\r\n async function handleAmsFiling() {\r\n try {\r\n const isAmsEnable = appContext.suntekSettings?.compliance?.amsEnable;\r\n const apiResult = await appContext.api.getAmsLink();\r\n \r\n if (apiResult && apiResult.success) {\r\n if (isAmsEnable) {\r\n window.open('https://ams1.suntekscm.com/login_auto.aspx?' + apiResult.result);\r\n } else {\r\n window.open('https://ams1.suntekscm.com/login_2017.aspx'); \r\n }\r\n } \r\n } catch (error) {\r\n console.error('AMS Filing Error:', error);\r\n }\r\n };\r\n\r\n const allIconSelected = \r\n const allIcon = \r\n const downloadedIconSelected = \r\n const downloadedIcon = \r\n const notDownIconSelected = \r\n const notDownIcon = \r\n\r\n return (\r\n
\r\n
\r\n showView(true)}\r\n name='amsMbl-list-view-button'\r\n >\r\n View\r\n  \r\n\r\n block(true)}\r\n >\r\n Block\r\n  \r\n\r\n block(false)}\r\n >\r\n Cancel Block\r\n \r\n
\r\n
\r\n viewDownloadView()}\r\n >\r\n Download to OI\r\n \r\n
\r\n
\r\n openMasterHistoryReport()}\r\n >\r\n AMS Master History\r\n  \r\n openAmsManifestReport()}\r\n >\r\n AMS Manifest\r\n  \r\n \r\n AMS Filing\r\n \r\n
\r\n
\r\n {\r\n await changeMblListData('A')\r\n }}>{listFilter === 'A'? allIconSelected : allIcon}\r\n  \r\n {\r\n await changeMblListData('D')\r\n }}>{listFilter === 'D'? downloadedIconSelected :downloadedIcon}\r\n  \r\n {\r\n await changeMblListData('N')\r\n }}>{listFilter === 'N'? notDownIconSelected :notDownIcon}\r\n  \r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nfunction ViListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data;\r\n}\r\n\r\nfunction ViListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n const { view, switchToMbl, switchToAmsVoyage, switchToAmsHbl } = useSelectedMblOperations();\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n switchToAmsHbl();\r\n } else if (unprocessedFkey === \"F4\") {\r\n switchToAmsVoyage();\r\n } else if (unprocessedFkey === \"SHIFT+F4\") {\r\n switchToMbl();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey:string) {\r\n if (['F4', 'SHIFT+F4', 'F6', 'F8', 'F9', 'F11'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Concrete implementation for AMS MBL List screen\r\n *\r\n * @class MblListView\r\n * @extends {AbstractListView}\r\n */\r\n class MblListView extends AbstractListView {\r\n async fetchAndFormatData(api: any, search: Search, opType :any): Promise {\r\n const apiResult = await api.getListItems(JobNames.AMSMaster, 'AmsMasterListItem',\r\n AmsMasterListItem.calculateSearchParameters(search,AmsMasterListItem.MapSearchFields),\r\n 1,\r\n search.pageSize,\r\n 'AMS');\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return { data: formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): ListRowRenderer[] {\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n return AmsMasterListItem.getExportCollection(useBranch).map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.dataIndex === \"status\") {\r\n colRenderer.Cell = () => \r\n colRenderer.Header = () => ;\r\n }\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n colRenderer.push({accessor: 'block', changedValue: (value: any)=> { return nullableCheckBoxValue(value['block'])}});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'id',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): TableSettings {\r\n const tsettings = amsMblList;\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n const cols = AmsMasterListItem.getExportCollection(useBranch);\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n \r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor() {\r\n return '';\r\n }\r\n\r\n hasViewPopup(): boolean {\r\n return true;\r\n }\r\n\r\n getListViewTitle() {\r\n return `AMS MBL List`;\r\n };\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n hasMemo(): boolean {\r\n return false;\r\n }\r\n};\r\n\r\nexport default MblListView;\r\n","import {AmsListItemBase} from './AmsListItemBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport _ from 'lodash';\r\n\r\nexport class AmsHouseListItem extends AmsListItemBase {\r\n id: string = '';\r\n amsStatus: string = '';\r\n userId: string = '';\r\n strBlock: string = '';\r\n block: boolean|null = null;\r\n branch: string = '';\r\n vSendDate: string | null = null;\r\n fromVSendDate: string | null = null;\r\n toVSendDate: string | null = null;\r\n status: string = '';\r\n responseCode: string = '';\r\n hblNo: string = '';\r\n vInbondNo: string = '';\r\n mblNo: string = '';\r\n coLoadAms: boolean|null = null;\r\n coLoadAmsbl: string = '';\r\n responseDate: string | null = null;\r\n fromResponseDate: string | null = null;\r\n toResponseDate: string | null = null;\r\n statusRemark: string = '';\r\n sName: string = '';\r\n cName: string = '';\r\n nName: string = '';\r\n manifestSeq: string = '';\r\n vesselName: string = '';\r\n voyage: string = '';\r\n eta: string | null = null;\r\n fromEta: string | null = null;\r\n toEta: string | null = null;\r\n loadPort: string = '';\r\n dCode: string = '';\r\n moveType: string = '';\r\n amsMasterId: number = 0;\r\n loadEtd: string | null = null;\r\n fromLoadEtd: string | null = null;\r\n toLoadEtd: string | null = null;\r\n onBoard: string | null = null;\r\n fromOnBoard: string | null = null;\r\n toOnBoard: string | null = null;\r\n amsUserId: number|null = null;\r\n amsVoyageId: number|null = null;\r\n amsGroupId: number|null = null;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'stat', hiddenInColumnSetup: true, filterable: false }),\r\n XCol.Create({ col: 1, text: 'AMS ID', width: 80, dataIndex: 'id', align: XCol.XAlignType.Right, hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 2, text: 'S', width: 40, dataIndex: 'amsStatus', align: XCol.XAlignType.Center, hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 3, text: 'User', width: 100, dataIndex: 'userId'}),\r\n XCol.Create({ col: 4, text: 'Block', width: 40, dataIndex: 'block', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 5, text: 'BR', width: 40, dataIndex: 'branch', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 6, text: 'Send Date', width: 75, dataIndex: 'vSendDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: ' HH:mm'}),\r\n XCol.Create({ col: 7, text: 'Error Status', width: 100, dataIndex: 'status'}),\r\n XCol.Create({ col: 8, text: 'DP', width: 60, dataIndex: 'responseCode', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 9, text: 'Manifest #', width: 100, dataIndex: 'manifestSeq'}),\r\n XCol.Create({ col: 10, text: 'HBL #', width: 100, dataIndex: 'hblNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 11, text: 'MBL #', width: 100, dataIndex: 'mblNo'}),\r\n XCol.Create({ col: 12, text: 'Vessel Name', width: 120, dataIndex: 'vesselName'}),\r\n XCol.Create({ col: 13, text: 'Voyage #', width: 80, dataIndex: 'voyage'}),\r\n XCol.Create({ col: 14, text: 'Co-Load', width: 60, dataIndex: 'coLoadAms', type: XCol.XCellType.Bool, noNullOrEmptySearch: true}),\r\n // XCol.Create({ col: 14, text: 'Co-Load B/L', width: 120, dataIndex: 'coLoadAmsbl'}),\r\n XCol.Create({ col: 15, text: 'Response', width: 75, dataIndex: 'responseDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: ' HH:mm'}),\r\n XCol.Create({ col: 16, text: 'Status', width: 120, dataIndex: 'statusRemark'}),\r\n XCol.Create({ col: 17, text: 'Shipper', width: 120, dataIndex: 'sName'}),\r\n XCol.Create({ col: 18, text: 'Consignee', width: 120, dataIndex: 'cName'}),\r\n XCol.Create({ col: 19, text: 'Notify', width: 120, dataIndex: 'nName'}),\r\n XCol.Create({ col: 20, text: 'Loading', width: 60, dataIndex: 'loadPort'}),\r\n XCol.Create({ col: 21, text: 'Discharge', width: 60, dataIndex: 'dCode'}),\r\n XCol.Create({ col: 22, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 23, text: 'ETD', width: 75, dataIndex: 'loadEtd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 24, text: 'H. Move Type', width: 80, dataIndex: 'moveType'}),\r\n XCol.Create({ col: 25, text: 'Onboard', width: 75, dataIndex: 'onBoard', type: XCol.XCellType.Date, align: XCol.XAlignType.Center})\r\n ];\r\n\r\n\r\n public static getExportCollection(useBranch: boolean): XCol.XExportColumn[] {\r\n let returnCloumns = _.cloneDeep(this.ExportCollection);\r\n if (!useBranch) returnCloumns = returnCloumns.filter(x => x.dataIndex !== 'branch');\r\n return returnCloumns;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: AmsHouseListItem.prototype.id, orderByAscending: false };\r\n\r\n public static formatData(data: AmsHouseListItem[]) {\r\n return data.map((d: AmsHouseListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n responseDate: {from: 'fromResponseDate', to: 'toResponseDate'},\r\n eta: {from: 'fromEta', to: 'toEta'},\r\n loadEtd: {from: 'fromLoadEtd', to: 'toLoadEtd'},\r\n onBoard: {from: 'fromOnBoard', to: 'toOnBoard'},\r\n }\r\n}\r\n","import {TrackableEntity} from './../data/ChangeTrackable';\r\n\r\nexport class AmsHts extends TrackableEntity {\r\n containerNo: string = '';\r\n id: number = 0;\r\n amsContainerId: number = 0;\r\n htsNo: string = '';\r\n description: string = '';\r\n marks: string = '';\r\n pkgs: number = 0;\r\n weight: number = 0;\r\n wUnit: string = '';\r\n value: number = 0;\r\n pUnit: string = '';\r\n country: string = '';\r\n amsHouseId: number = 0;\r\n volume: number = 0;\r\n vUnit: string = '';\r\n flagMarks: string = '';\r\n flagDesc: string = '';\r\n created: string = '';\r\n modified: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n}\r\n","import {TrackableEntity} from './../data/ChangeTrackable';\r\n\r\nexport class AmsHm extends TrackableEntity {\r\n containerNo: string = '';\r\n id: number = 0;\r\n amsContainerId: number = 0;\r\n amsHouseId: number = 0;\r\n hmCode: string = '';\r\n hmClass: string = '';\r\n hmQualifier: string = '';\r\n hmDescript: string = '';\r\n hmContact: string = '';\r\n hmUnpage: string = '';\r\n flashPoint: number = 0;\r\n flashUnit: string = '';\r\n negative: string = '';\r\n created: string = '';\r\n modified: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n}\r\n","import {TrackableEntity} from './../data/ChangeTrackable';\r\nimport {AmsHts} from './AmsHts';\r\nimport {AmsHm} from './AmsHm';\r\n\r\nexport class AmsHbl extends TrackableEntity {\r\n id: number = 0;\r\n amsMasterId: number = 0;\r\n amsID: string = '';\r\n valueCargo: boolean = false;\r\n hblNo: string = '';\r\n itNo: string = '';\r\n vInbondNo: string = '';\r\n amsMblNo: string = '';\r\n mblNo: string = '';\r\n sName: string = '';\r\n sAddress1: string = '';\r\n sAddress2: string = '';\r\n sAddress3: string = '';\r\n sPhone: string = '';\r\n cName: string = '';\r\n cType: string = '';\r\n cAddress1: string = '';\r\n cAddress2: string = '';\r\n cAddress3: string = '';\r\n cPhone: string = '';\r\n nName: string = '';\r\n nAddress1: string = '';\r\n nAddress2: string = '';\r\n nAddress3: string = '';\r\n nPhone: string = '';\r\n bsName: string = '';\r\n bsAddress1: string = '';\r\n bsAddress2: string = '';\r\n bsAddress3: string = '';\r\n bsPhone: string = '';\r\n bcName: string = '';\r\n bcAddress1: string = '';\r\n bcAddress2: string = '';\r\n bcAddress3: string = '';\r\n bcPhone: string = '';\r\n bnName: string = '';\r\n bnAddress1: string = '';\r\n bnAddress2: string = '';\r\n bnAddress3: string = '';\r\n bnPhone: string = '';\r\n placeOfRec: string = '';\r\n dCode1: string = '';\r\n fDestPort: string = '';\r\n foreignDest: string = '';\r\n foreignPort: string = '';\r\n delivery: string = '';\r\n custRefNo: string = '';\r\n expRls: boolean = false;\r\n moveType: string = '';\r\n coLoadAms: boolean|null = null;\r\n coloadAmsBl: string = '';\r\n marks: string = '';\r\n description: string = '';\r\n hValue: number = 0;\r\n sPkgs: number = 0;\r\n spUnit: string = '';\r\n sWeight: number = 0;\r\n swUnit: string = '';\r\n sVolume: number = 0;\r\n svUnit: string = '';\r\n sValue: number = 0;\r\n caType: string = '';\r\n containerHId: number = 0;\r\n containerMId: number = 0;\r\n pkgs: number = 0;\r\n pUnit: string = '';\r\n weight: number = 0;\r\n wUnit: string = '';\r\n volume: number = 0;\r\n vUnit: string = '';\r\n value: number = 0;\r\n acctID: string = '';\r\n acDesc: string = '';\r\n preRevenue: number = 0;\r\n preCost: number = 0;\r\n colRevenue: number = 0;\r\n colCost: number = 0;\r\n crDate: string | null = null;\r\n created: string = '';\r\n modified: string = '';\r\n fPortName: string = '';\r\n dPortName1: string = '';\r\n hts: AmsHts[] = [];\r\n hm: AmsHm[] = [];\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n if(this.id === 0) this.id = this.GetNextId();\r\n\r\n if(this.hts.length > 0) {\r\n this.hts = this.hts.map(d => new AmsHts(d));\r\n } else {\r\n this.hts = [];\r\n }\r\n if(this.hm.length > 0) {\r\n this.hm = this.hm.map(d => new AmsHm(d));\r\n } else {\r\n this.hm = [];\r\n }\r\n }\r\n}\r\n","import React, { useContext, useEffect, useState} from 'react';\r\nimport GrayButtonTabs from \"../../../../ui/GrayButtonTabs\";\r\nimport PrimaryButtonTabs from \"../../../../ui/PrimaryButtonTabs\";\r\nimport LeftRightSplit from '../../../../ui/LeftRightSplit';\r\nimport SecondaryButton from '../../../../ui/SecondaryButton';\r\nimport InlineInputControlRow from '../../../../ui/layout/InlineInputControlRow';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport { ApplicableTableSettings, TableSettings } from '../../../../tableSettings';\r\nimport { FloatRenderer, TextAlignLeftRenderer } from '../../../../uiControls/SmartTableRenderers';\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\nimport InlineInputControlRowNoLabel from '../../../../ui/layout/InlineInputControlRowNoLabel';\r\nimport Float from '../../../../ui/Float';\r\nimport Label from '../../../../ui/Label';\r\nimport Number from '../../../../ui/Number';\r\nimport { AmsHbl } from '../../../../fms.core/ams/AmsHbl';\r\nimport { useTypedFastStorage } from '../../../../hooks/useFastStorage';\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport _ from 'lodash';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\nimport DeepBlueButtonTabs from '../../../../ui/DeepBlueButtonTabs';\r\n\r\nexport const descriptionOfContainerSettings:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'no', Header: '#', visible: true, resizable: true, sortable: false, initialWidthPercentage: 4.41, },\r\n { accessor:'containerNo', Header: 'Container #', visible: true, resizable: true, sortable: false, initialWidthPercentage: 13.24, },\r\n { accessor:'htsNo', Header: 'HTS #', visible: true, resizable: true, sortable: false, initialWidthPercentage: 11.76, },\r\n { accessor:'description', Header: 'Description', visible: true, resizable: true, sortable: false, initialWidthPercentage: 16.18, },\r\n { accessor:'marks', Header: 'Marks', visible: true, resizable: true, sortable: false, initialWidthPercentage: 16.18, },\r\n { accessor:'pkgs', Header: 'Pkgs', visible: true, resizable: true, sortable: false, initialWidthPercentage: 8.82, },\r\n { accessor:'pUnit', Header: 'Unit', visible: true, resizable: true, sortable: false, initialWidthPercentage: 8.82, },\r\n { accessor:'weight', Header: 'KGS', visible: true, resizable: true, sortable: false, initialWidthPercentage: 8.82, },\r\n { accessor:'volume', Header: 'CBM', visible: true, resizable: true, sortable: false, initialWidthPercentage: 8.82, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: true, sortable: false, initialWidthPercentage: 2.95, },\r\n ]\r\n};\r\n\r\nexport const hazardousInfoSettings:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'no', Header: '#', visible: true, resizable: true, sortable: false, initialWidthPercentage: 4.41, },\r\n { accessor:'containerNo', Header: 'Container #', visible: true, resizable: true, sortable: false, initialWidthPercentage: 14.71, },\r\n { accessor:'hmCode', Header: 'Code', visible: true, resizable: true, sortable: false, initialWidthPercentage: 8.82, },\r\n { accessor:'hmClass', Header: 'Class', visible: true, resizable: true, sortable: false, initialWidthPercentage: 5.88, },\r\n { accessor:'hmQualifier', Header: 'Qualifier', visible: true, resizable: true, sortable: false, initialWidthPercentage: 8.82, },\r\n { accessor:'hmDescript', Header: 'Description', visible: true, resizable: true, sortable: false, initialWidthPercentage: 14.71, },\r\n { accessor:'hmContact', Header: 'Contact', visible: true, resizable: true, sortable: false, initialWidthPercentage: 8.82, },\r\n { accessor:'hmUnpage', Header: 'Unpage', visible: true, resizable: true, sortable: false, initialWidthPercentage: 8.82, },\r\n { accessor:'flashPoint', Header: 'Flash Point', visible: true, resizable: true, sortable: false, initialWidthPercentage: 8.82, },\r\n { accessor:'flashUnit', Header: 'Unit', visible: true, resizable: true, sortable: false, initialWidthPercentage: 8.82, },\r\n { accessor:'negative', Header: 'Nag', visible: true, resizable: true, sortable: false, initialWidthPercentage: 4.41, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: true, sortable: false, initialWidthPercentage: 2.96, },\r\n ]\r\n};\r\n\r\n\r\n\r\nfunction NoOfContainerRenderer(num: number) {\r\n return (\r\n
\r\n }\r\n right={}\r\n />\r\n
\r\n );\r\n}\r\n\r\nfunction TotaPkgsRenderer(num: number) {\r\n return (\r\n
\r\n
\r\n\r\n
\r\n }\r\n right={}\r\n />\r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction TotalKgsRenderer(num: number) {\r\n return (\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction TotalCbmRenderer(num: number) {\r\n return (\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\ninterface ViewHblStorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\ninterface ViewHblParams {\r\n id: string | undefined,\r\n onPopupClose?: () => void,\r\n};\r\n\r\ninterface ViewHblLoadedDetailsViewParams {\r\n hbl: AmsHbl,\r\n onPopupClose?: () => void,\r\n useDarkMode: boolean\r\n};\r\n\r\nfunction getViewHblStorageKeys(): ViewHblStorageKeys {\r\n return {modelStorage: 'oi-ams-hbl'}\r\n}\r\n\r\nfunction ViewHblImpl(params: ViewHblParams) {\r\n const {id, onPopupClose} = params;\r\n const {modelStorage} = getViewHblStorageKeys();\r\n const [inStorage, setInStorage, removeHblFromStorage] = useTypedFastStorage(modelStorage, null);\r\n const appContext = useContext(ApplicationContext);\r\n\r\n useFunctionKeys({onEsc: cancel});\r\n\r\n function cancel() {\r\n if(onPopupClose) onPopupClose();\r\n return true;\r\n }\r\n\r\n useEffect(() => {\r\n initialize();\r\n return () => {\r\n removeHblFromStorage()\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n);\r\n\r\nasync function loadExisting() {\r\n const apiResult = await appContext.api.getAmsHbl(id);\r\n if(apiResult && apiResult.success) {\r\n let data: AmsHbl = new AmsHbl(apiResult.result);\r\n return data;\r\n }\r\n return {}\r\n}\r\n\r\nasync function initialize() {\r\n const data = await loadExisting();\r\n setInStorage(_.cloneDeep(data));\r\n}\r\n\r\nif (!inStorage) {\r\n return null;\r\n}\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction IndicatorRenderer({row}: any) {\r\n return
{row.index + 1}
;\r\n}\r\n\r\nfunction renderTitleButton(label:React.ReactNode|string|null|undefined, selected:boolean, onClick: VoidFunction, useDarkMode: boolean) {\r\n const Button = !selected ? GrayButtonTabs : !useDarkMode ? PrimaryButtonTabs : DeepBlueButtonTabs;\r\n\r\n return \r\n}\r\n\r\nfunction ViewHblImplInitializedImpl({\r\n hbl,\r\n onPopupClose,\r\n useDarkMode\r\n}: ViewHblLoadedDetailsViewParams) {\r\n const [tab, setTab] = useState(0);\r\n\r\n function BlInfo() {\r\n return (\r\n
\r\n
\r\n \r\n }\r\n right={}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  }>\r\n \r\n \r\n \r\n  }>\r\n \r\n \r\n \r\n  }>\r\n \r\n \r\n \r\n  }>\r\n
\r\n \r\n
\r\n
\r\n \r\n  \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n }\r\n right={}\r\n />\r\n \r\n \r\n \r\n }\r\n right={}\r\n />\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n  }>\r\n \r\n \r\n \r\n  }>\r\n \r\n \r\n \r\n  }>\r\n \r\n \r\n \r\n  }>\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n  }>\r\n \r\n \r\n \r\n  }>\r\n \r\n \r\n \r\n  }>\r\n \r\n \r\n \r\n  }>\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n function DescriptionOfContainer() {\r\n const tableSettings:ApplicableTableSettings = {\r\n customTableId: 'oi-mbl-cnt-desc',\r\n tableName: 'oi-mbl-cnt-desc',\r\n ...descriptionOfContainerSettings,\r\n height: '234px',\r\n data: hbl.hts.map(x => ({...x})),\r\n rowRenderers: [\r\n { accessor: 'no', Cell: IndicatorRenderer },\r\n { accessor: 'containerNo', Cell: TextAlignLeftRenderer },\r\n { accessor: 'htsNo', Cell: TextAlignLeftRenderer },\r\n { accessor: 'description', Cell: TextAlignLeftRenderer },\r\n { accessor: 'marks', Cell: TextAlignLeftRenderer },\r\n { accessor: 'pkgs', Cell: FloatRenderer },\r\n { accessor: 'pUnit', Cell: (props: any) => },\r\n { accessor: 'weight', Cell: FloatRenderer },\r\n { accessor: 'volume', Cell: FloatRenderer },\r\n ],\r\n footerRow: [\r\n {\r\n colspan: 3,\r\n renderer: () => NoOfContainerRenderer(hbl.hts.length)\r\n },\r\n {\r\n colspan: 1,\r\n renderer: () =>
\r\n },\r\n {\r\n colspan: 2,\r\n renderer: () => TotaPkgsRenderer(hbl.hts.map(x => x.pkgs).reduce((acc:number,x) => acc + x, 0))\r\n },\r\n {\r\n colspan: 1,\r\n renderer: () =>
\r\n },\r\n {\r\n colspan: 1,\r\n renderer: () => TotalKgsRenderer(hbl.hts.map(x => x.weight).reduce((acc:number,x) => acc + x, 0))\r\n },\r\n {\r\n colspan: 1,\r\n renderer: () => TotalCbmRenderer(hbl.hts.map(x => x.volume).reduce((acc:number,x) => acc + x, 0))\r\n },\r\n ],\r\n };\r\n \r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n function HazardousInfo() {\r\n const tableSettings:ApplicableTableSettings = {\r\n customTableId: 'oi-mbl-h-info',\r\n tableName: 'oi-mbl-h-info',\r\n ...hazardousInfoSettings,\r\n height: '234px',\r\n data: hbl.hm.map(x => ({...x})),\r\n rowRenderers: [\r\n { accessor: 'no', Cell: IndicatorRenderer },\r\n { accessor: 'containerNo', Cell: TextAlignLeftRenderer },\r\n { accessor: 'hmCode', Cell: TextAlignLeftRenderer },\r\n { accessor: 'hmClass', Cell: TextAlignLeftRenderer },\r\n { accessor: 'hmQualifier', Cell: TextAlignLeftRenderer },\r\n { accessor: 'hmDescript', Cell: TextAlignLeftRenderer },\r\n { accessor: 'hmContact', Cell: TextAlignLeftRenderer },\r\n { accessor: 'hmUnpage', Cell: TextAlignLeftRenderer },\r\n { accessor: 'flashPoint', Cell: FloatRenderer },\r\n { accessor: 'flashUnit', Cell: TextAlignLeftRenderer },\r\n { accessor: 'negative', Cell: TextAlignLeftRenderer },\r\n ],\r\n footerRow: [\r\n {\r\n colspan: 3,\r\n renderer: () => NoOfContainerRenderer(hbl.hm.length)\r\n },\r\n ],\r\n };\r\n \r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n function renderContent() {\r\n if (tab === 0) {\r\n return \r\n }\r\n\r\n if (tab === 1) {\r\n return \r\n }\r\n\r\n if (tab === 2) {\r\n return \r\n }\r\n\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
{renderTitleButton(House B/L Information, tab === 0, () => setTab(0), useDarkMode)}
\r\n
{renderTitleButton(Description of Container, tab === 1, () => setTab(1), useDarkMode)}
\r\n
{renderTitleButton(Hazardous Information, tab === 2, () => setTab(2), useDarkMode)}
\r\n
\r\n\r\n {renderContent()}\r\n\r\n
\r\n
\r\n \r\n CANCEL\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nconst ViewHbl = ({onPopupClose, selectedElementId}: { onPopupClose?: () => void, selectedElementId: string }) => {\r\n\r\n return (\r\n \r\n );\r\n};\r\nexport default ViewHbl;\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport constants from '../../../constants';\r\nimport {amsHblList,} from '../tableSettings';\r\nimport {Search} from \"../../../filtering\";\r\nimport {\r\n DateRenderer,DateTimeRenderer,NullableCheckboxIconRenderer,TextAlignLeftRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../ui/ActionButton';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport {JobNames} from '../../../framework.core/JobNames';\r\nimport {AmsHouseListItem} from '../../../fms.data/models/AmsHouseListItem';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport IfmsModal from '../../../ui/IfmsModal';\r\nimport ViewHbl from './implementation/ViewHbl';\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport { SuntekSettings, SystemSettings } from '../../../ifmsTypes';\r\nimport BlackInverseButton from '../../../ui/BlackInverseButton';\r\nimport hblAll from '../../../img/DownloadAll.png';\r\nimport hblNotDown from '../../../img/NotDownloaded.png';\r\nimport hblDown from '../../../img/Downloaded.png';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport { ListFilterType } from '../../../fms.core/constants';\r\nimport TextBox from '../../../ui/TextBox';\r\nimport { useHistory } from 'react-router';\r\nimport { openNewPage, NavigationType } from '../../../util/navigationHelpers';\r\nimport { AmsHistoryArgs } from '../../../fms.report/args';\r\nimport { DocumentType } from '../../../framework.core/DocumentType';\r\nimport useReportViewer from '../../../hooks/useReportViewer';\r\nimport { nullableCheckBoxValue } from '../../common/commonExportFormat';\r\n\r\nfunction StatusFilterRenderer({value, onChange}:any) {\r\n return (\r\n onChange(e.target.value)} \r\n />\r\n );\r\n}\r\n\r\nfunction useHblOperations() {\r\n const history = useHistory();\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n function switchToHblFor(hbl:AmsHouseListItem|null) {\r\n if (!hbl) {\r\n return;\r\n }\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/hbl/oceanImport', \r\n 'hblNo', 'HBL', hbl.hblNo, 'update', false, true,null,null,null,false,true);\r\n openNewPage(history, `/common/joblistview/hbl/oceanImport`, NavigationType.newPage);\r\n }\r\n\r\n function switchToMblFor(hbl:AmsHouseListItem|null) {\r\n if (!hbl) {\r\n return;\r\n }\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/AMSM/oceanImport', \r\n 'mblNo', 'MBL #', hbl.mblNo, 'update', false, true,null,null,null,false,true);\r\n openNewPage(history, `/common/joblistview/AMSM/oceanImport`, NavigationType.newPage);\r\n }\r\n\r\n return { switchToHblFor, switchToMblFor };\r\n}\r\n\r\nfunction useSelectedHblOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const { switchToHblFor, switchToMblFor } = useHblOperations();\r\n\r\n const selectedElement = jobListContext.selectedElement as AmsHouseListItem|null;\r\n\r\n function view() {\r\n jobListContext.showPopupRow();\r\n }\r\n\r\n function switchToAmsHbl() {\r\n const selectedElement = jobListContext.selectedElement as AmsHouseListItem;\r\n switchToHblFor(selectedElement);\r\n }\r\n\r\n function switchToAmsMbl() {\r\n const selectedElement = jobListContext.selectedElement as AmsHouseListItem;\r\n switchToMblFor(selectedElement);\r\n }\r\n\r\n return { selectedElement, view, switchToAmsHbl, switchToAmsMbl };\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const { view, switchToAmsMbl, switchToAmsHbl } = useSelectedHblOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n // const selectedElement = jobListContext.selectedElement as OceanQuoteListItem;\r\n // const appContext = useContext(ApplicationContext);\r\n // const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const items = [\r\n { label: 'View', shortcut: 'F9', separator: true },\r\n { label: 'Switch to MBL List', shortcut: 'Shift+F4', separator: false },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: 'Switch to HBL List', shortcut: 'F6', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n \r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n view();\r\n break;\r\n case 1:\r\n switchToAmsMbl();\r\n break;\r\n case 2:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 3:\r\n switchToAmsHbl();\r\n break;\r\n case 4:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 5:\r\n jobListContext.reloadData();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction ViListCommands() {\r\n const { selectedElement } = useSelectedHblOperations();\r\n const {viewReport} = useReportViewer(); \r\n const [ showGlobalYesNoDialog ] = useGlobalYesNoDialog();\r\n const [view, showView] = useState(false);\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const [listFilter, setListFilter] = useState('A');\r\n const history = useHistory();\r\n\r\n async function block(isBlock: boolean) {\r\n const doBlock = await showGlobalYesNoDialog(

Are you sure you want to {(isBlock ? \"Block\" : \"Cancel block\")}?

,false, 0, true)\r\n\r\n if (doBlock) {\r\n const id = selectedElement?.id;\r\n\r\n await appContext.api.block(JobNames.AMSHouse, id, isBlock);\r\n\r\n jobListContext.reloadData();\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n function dismissView() {\r\n showView(false);\r\n jobListContext.dismissPopupRow();\r\n }\r\n\r\n async function changeHblListData(type: string) {\r\n setListFilter(type);\r\n const listFilterType = type === 'A' ? ListFilterType.All : (type === 'D' ? ListFilterType.Downloaded : ListFilterType.Virgin);\r\n const apiResult = await appContext.api.getListItems(JobNames.AMSHouse,\r\n 'AmsHouseListItem',\r\n AmsHouseListItem.calculateSearchParameters(jobListContext.search, AmsHouseListItem.MapSearchFields),\r\n 1,\r\n jobListContext.search.pageSize, 'AMS', listFilterType);\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n jobListContext.setData && jobListContext.setData(AmsHouseListItem.formatData([]), 0);\r\n }\r\n else\r\n jobListContext.setData && jobListContext.setData(AmsHouseListItem.formatData(apiResult.entities), apiResult.totalCount);\r\n }\r\n\r\n async function openHouseHistoryReport() {\r\n if (!selectedElement?.id) return;\r\n\r\n const title = \"Ams House BL # \" + selectedElement?.hblNo;\r\n const args = new AmsHistoryArgs({\r\n docType: DocumentType.AmsHistory,\r\n formCaption: title,\r\n subject: title,\r\n\r\n dataCompanyID: 0,\r\n houseID: Number(selectedElement?.id),\r\n amsMode: 'AMS'\r\n })\r\n viewReport(args, \"\", true);\r\n }\r\n\r\n async function viewDownloadView() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n\r\n const viewUrl = `/oceanImport/download/${JobNames.AMSHouse}/${id}`;\r\n\r\n openNewPage(history, viewUrl, NavigationType.newPage);\r\n }\r\n\r\n const allIconSelected = \r\n const allIcon = \r\n const downloadedIconSelected = \r\n const downloadedIcon = \r\n const notDownIconSelected = \r\n const notDownIcon = \r\n\r\n return (\r\n
\r\n
\r\n showView(true)}\r\n >\r\n View\r\n  \r\n\r\n block(true)}\r\n >\r\n Block\r\n  \r\n\r\n block(false)}\r\n >\r\n Cancel Block\r\n \r\n
\r\n
\r\n viewDownloadView()}\r\n >\r\n Download to OI\r\n \r\n
\r\n
\r\n openHouseHistoryReport()}\r\n >\r\n AMS House History\r\n \r\n
\r\n
\r\n {\r\n await changeHblListData('A')\r\n }}>{listFilter === 'A'? allIconSelected : allIcon}\r\n  \r\n {\r\n await changeHblListData('D')\r\n }}>{listFilter === 'D'? downloadedIconSelected :downloadedIcon}\r\n  \r\n {\r\n await changeHblListData('N')\r\n }}>{listFilter === 'N'? notDownIconSelected :notDownIcon}\r\n  \r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nfunction ViListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data;\r\n}\r\n\r\nfunction ViListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n const { view, switchToAmsMbl, switchToAmsHbl } = useSelectedHblOperations();\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n switchToAmsMbl();\r\n } else if (unprocessedFkey === \"SHIFT+F4\") {\r\n switchToAmsHbl();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey:string) {\r\n if (['F4', 'SHIFT+F4', 'F6', 'F8', 'F9', 'F11'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Concrete implementation for AMS HBL List screen\r\n *\r\n * @class HblListView\r\n * @extends {AbstractListView}\r\n */\r\n class MblListView extends AbstractListView {\r\n async fetchAndFormatData(api: any, search: Search, opType :any): Promise {\r\n const apiResult = await api.getListItems(JobNames.AMSHouse, 'AmsHouseListItem',\r\n AmsHouseListItem.calculateSearchParameters(search,AmsHouseListItem.MapSearchFields),\r\n 1,\r\n search.pageSize,\r\n 'AMS');\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return { data: formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n {\r\n accessor: 'status',\r\n renderer: StatusFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): ListRowRenderer[] {\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n\r\n return AmsHouseListItem.getExportCollection(useBranch).map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.dataIndex === \"stat\") {\r\n colRenderer.Cell = () => \r\n colRenderer.Header = () => ;\r\n }\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n colRenderer.push({accessor: 'block', changedValue: (value: any)=> { return nullableCheckBoxValue(value['block'])}});\r\n colRenderer.push({accessor: 'coLoadAms', changedValue: (value: any)=> { return nullableCheckBoxValue(value['coLoadAms'])}});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'id',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): TableSettings {\r\n const tsettings = amsHblList;\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n const cols = AmsHouseListItem.getExportCollection(useBranch);\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor() {\r\n return '';\r\n }\r\n\r\n hasViewPopup(): boolean {\r\n return true;\r\n }\r\n\r\n getListViewTitle() {\r\n return `AMS HBL List`;\r\n };\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n hasMemo(): boolean {\r\n return false;\r\n }\r\n};\r\n\r\nexport default MblListView;","import {AmsListItemBase} from './AmsListItemBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class AmsUserListItem extends AmsListItemBase {\r\n id: string = '';\r\n amsID: string = '';\r\n userID: string = '';\r\n passWord: string = '';\r\n name: string = '';\r\n email: string = '';\r\n amsSubGroup: string = '';\r\n agentId: number|null = null;\r\n active: boolean|null = null;\r\n amsGroupId: number|null = null;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true, filterable: false }),\r\n XCol.Create({ col: 1, text: 'User ID', width: 80, dataIndex: 'id', align: XCol.XAlignType.Right, hiddenInColumnSetup: true }),\r\n XCol.Create({ col: 2, text: 'SCAC', width: 60, dataIndex: 'amsID'}),\r\n XCol.Create({ col: 3, text: 'User', width: 100, dataIndex: 'userID', defaultColumnFocus : true}),\r\n XCol.Create({ col: 4, text: 'Password', width: 80, dataIndex: 'passWord'}),\r\n XCol.Create({ col: 5, text: 'User Name', width: 120, dataIndex: 'name'}),\r\n XCol.Create({ col: 6, text: 'Email', width: 200, dataIndex: 'email'}),\r\n XCol.Create({ col: 7, text: 'Branch', width: 60, dataIndex: 'amsSubGroup'}),\r\n XCol.Create({ col: 8, text: 'Agent ID', width: 100, dataIndex: 'agentId'}),\r\n XCol.Create({ col: 9, text: 'Inactive', width: 60, dataIndex: 'active', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: AmsUserListItem.prototype.id, orderByAscending: false };\r\n\r\n public static formatData(data: AmsUserListItem[]) {\r\n return data.map((d: AmsUserListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import {TableSettings} from \"../../../../tableSettings\";\r\n\r\nexport const amsUserPortTable:TableSettings = {\r\n tableVersion: 10041,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '150px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Code',\r\n accessor: 'code',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 34.78,\r\n },\r\n {\r\n Header: 'Port Name',\r\n accessor: 'portName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 56.52,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.70,\r\n },\r\n ]\r\n};\r\n\r\nexport const amsUserScacTable:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'hidden',\r\n overflowY: 'auto',\r\n \r\n height: '150px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Code',\r\n accessor: 'code',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 34.78,\r\n },\r\n {\r\n Header: 'SCAC Name',\r\n accessor: 'scacName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 56.52,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.70,\r\n },\r\n ]\r\n};","import {TrackableEntity} from './../../fms.core/data/ChangeTrackable';\r\n\r\nexport class AmsUserPort extends TrackableEntity {\r\n id: number = 0;\r\n portID: number = 0;\r\n scacID: number = 0;\r\n code: string = '';\r\n portName: string = '';\r\n carrierName: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key=undefined;\r\n Object.assign(this, init);\r\n }\r\n}\r\n","import {TrackableEntity} from './../fms.core/data/ChangeTrackable';\r\nimport { AmsUserPort } from './../fms.data/models/AmsUserPort';\r\n\r\nexport class AmsUser extends TrackableEntity {\r\n id: number = 0;\r\n amsGroupID: number = 0;\r\n amsGroupName: string = '';\r\n password: string = '';\r\n name: string = '';\r\n email: string = '';\r\n active: boolean = false;\r\n userID: string = '';\r\n seq: number = 0;\r\n amsSubGroup: string = '';\r\n fsCompanyID: number = 0;\r\n pageRowCnt: number = 0;\r\n companyName: string = '';\r\n portList: AmsUserPort[] = [];\r\n carrierList: AmsUserPort[] = [];\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n if(this.id === 0) this.id = this.GetNextId();\r\n\r\n if(this.portList.length > 0) {\r\n this.portList = this.portList.map(d => new AmsUserPort(d));\r\n } else {\r\n this.portList = [];\r\n }\r\n if(this.carrierList.length > 0) {\r\n this.carrierList = this.carrierList.map(d => new AmsUserPort(d));\r\n } else {\r\n this.carrierList = [];\r\n }\r\n }\r\n}\r\n","import React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport LeftRightSplit from '../../../../ui/LeftRightSplit';\r\nimport SecondaryButton from '../../../../ui/SecondaryButton';\r\nimport InlineInputControlRow from '../../../../ui/layout/InlineInputControlRow';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport Label from '../../../../ui/Label';\r\nimport InlineInputControlRowNoLabel from '../../../../ui/layout/InlineInputControlRowNoLabel';\r\nimport CheckBox from '../../../../ui/CheckBox';\r\nimport LabeledSelect from '../../../../ui/LabeledSelect';\r\nimport { ApplicableTableSettings } from '../../../../tableSettings';\r\nimport useTableStorage from '../../../../hooks/useTableStorage';\r\nimport { amsUserPortTable, amsUserScacTable } from '../tableSettings';\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\nimport TextBoxUncontrolled from '../../../../ui/TextBoxUncontrolled';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons';\r\nimport { AmsUser } from '../../../../framework.core/AmsUser';\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport { useTypedFastStorage } from '../../../../hooks/useFastStorage';\r\nimport _ from 'lodash';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\n\r\n\r\nconst findButtonStyle:React.CSSProperties = {\r\n width: '100%',\r\n borderTop: '1px solid black',\r\n borderRight: '1px solid black',\r\n borderBottom: '1px solid black',\r\n}\r\n\r\nconst findTextBoxStyle: React.CSSProperties = {\r\n display: 'block',\r\n float: 'left',\r\n width: '100%',\r\n paddingRight: '35px',\r\n height: '18px',\r\n};\r\n\r\nconst findIconStyle: React.CSSProperties = {\r\n cursor: 'pointer',\r\n position: 'absolute',\r\n right: '5px',\r\n top: '3px',\r\n};\r\n\r\ninterface ViewUserStorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\ninterface ViewUserParams {\r\n id: string | undefined,\r\n mode: string,\r\n onPopupClose?: () => void,\r\n};\r\n\r\ninterface ViewUserLoadedDetailsViewParams {\r\n user: AmsUser,\r\n isView: boolean,\r\n onPopupClose?: () => void\r\n};\r\n\r\nfunction getViewUserStorageKeys(): ViewUserStorageKeys {\r\n return {modelStorage: 'oi-ams-user'}\r\n}\r\n\r\nfunction ViewUserImpl(params: ViewUserParams) {\r\n const {id, onPopupClose} = params;\r\n const {modelStorage} = getViewUserStorageKeys();\r\n const [inStorage, setInStorage, removeUserFromStorage] = useTypedFastStorage(modelStorage, null);\r\n const appContext = useContext(ApplicationContext);\r\n\r\n useFunctionKeys({onEsc: cancel});\r\n\r\n function cancel() {\r\n if(onPopupClose) onPopupClose();\r\n return true;\r\n }\r\n \r\n useEffect(() => {\r\n initialize();\r\n return () => {\r\n removeUserFromStorage()\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n);\r\n\r\nasync function loadExisting() {\r\n const apiResult = await appContext.api.getAmsUser(id);\r\n if(apiResult && apiResult.success) {\r\n let data: AmsUser = new AmsUser(apiResult.result);\r\n return data;\r\n }\r\n return {}\r\n}\r\n\r\nasync function initialize() {\r\n const data = await loadExisting();\r\n setInStorage(_.cloneDeep(data));\r\n}\r\n\r\nif (!inStorage) {\r\n return null;\r\n}\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction ViewUserImplInitializedImpl({\r\n user,\r\n isView,\r\n onPopupClose\r\n}: ViewUserLoadedDetailsViewParams) {\r\n const [userRef, setUserRef] = useState(user);\r\n const [dirty, setDirty] = useState(false);\r\n\r\n const portSearchRef = useRef(null);\r\n const scacSearchRef = useRef(null);\r\n\r\n const tableStorage = useTableStorage();\r\n\r\n function onChange(change: Partial) {\r\n const eur = _.cloneDeep(_.merge(userRef, change));\r\n\r\n setUserRef(eur);\r\n if (!dirty) {\r\n setDirty(true);\r\n }\r\n }\r\n\r\n const portLeftTableOptions: ApplicableTableSettings = {\r\n tableName: 'portLeftTable',\r\n ...amsUserPortTable,\r\n data: [],\r\n rowRenderers: [\r\n ],\r\n customStorage: tableStorage,\r\n headersColor: 'gray',\r\n height: '120px'\r\n };\r\n\r\n const portRightTableOptions: ApplicableTableSettings = {\r\n tableName: 'portRightTable',\r\n ...amsUserPortTable,\r\n data: [],\r\n rowRenderers: [\r\n ],\r\n customStorage: tableStorage,\r\n headersColor: 'gray',\r\n height: '120px'\r\n };\r\n\r\n const scacLeftTableOptions: ApplicableTableSettings = {\r\n tableName: 'sacLeftTable',\r\n ...amsUserScacTable,\r\n data: [],\r\n rowRenderers: [\r\n ],\r\n customStorage: tableStorage,\r\n headersColor: 'gray',\r\n height: '120px'\r\n };\r\n\r\n const scacRightTableOptions: ApplicableTableSettings = {\r\n tableName: 'scacRightTable',\r\n ...amsUserScacTable,\r\n data: [],\r\n rowRenderers: [\r\n ],\r\n customStorage: tableStorage,\r\n headersColor: 'gray',\r\n height: '120px'\r\n };\r\n\r\n function handlePortSearch() {\r\n\r\n }\r\n\r\n function handleScacSearch() {\r\n \r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n onChange({userID: e.target.value})} />\r\n \r\n\r\n \r\n onChange({amsGroupName: e.target.value})} />\r\n \r\n
\r\n\r\n
\r\n Password
}>\r\n onChange({password: e.target.value})} />\r\n \r\n\r\n Branch
}>\r\n onChange({amsSubGroup: e.target.value})} />\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n onChange({active})} />\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n onChange({name: e.target.value})} />\r\n \r\n\r\n \r\n onChange({email: e.target.value})} />\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n }\r\n right={\r\n
\r\n \r\n
\r\n }\r\n />\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
:\r\n
\r\n \r\n \r\n
\r\n }\r\n right={\r\n Find\r\n }\r\n />\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n }\r\n right={\r\n
\r\n \r\n
\r\n }\r\n />\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
:\r\n
\r\n \r\n \r\n
\r\n }\r\n right={\r\n Find\r\n }\r\n />\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n CANCEL\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nconst ViewUser = ({selectedElementId, mode, onPopupClose}: { selectedElementId: string, mode: string, onPopupClose?: () => void }) => {\r\n\r\n return (\r\n \r\n );\r\n};\r\nexport default ViewUser;\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport constants from '../../../constants';\r\nimport {amsUsersList,} from '../tableSettings';\r\nimport {Search} from \"../../../filtering\";\r\nimport {\r\n DateRenderer,DateTimeRenderer,NullableCheckboxIconRenderer,TextAlignLeftRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport JobListViewContext, { IJobListViewContext, RightClickContext } from '../../common/JobListViewContext';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport {JobNames} from '../../../framework.core/JobNames';\r\nimport {AmsUserListItem} from '../../../fms.data/models/AmsUserListItem';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\nimport {faCopy, faFileAlt, faPencilAlt, faPlus, faTrashAlt} from \"@fortawesome/free-solid-svg-icons\";\r\nimport PrimaryButton from \"../../../ui/PrimaryButton\";\r\nimport { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../ui/ActionButton';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport ViewUser from './implementation/ViewUser';\r\nimport IfmsModal from '../../../ui/IfmsModal';\r\nimport { findSecurityTask } from '../../../util';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport { nullableCheckBoxValue } from '../../common/commonExportFormat';\r\n\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n // const { view } = useSelectedOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n // const selectedElement = jobListContext.selectedElement as OceanQuoteListItem;\r\n // const appContext = useContext(ApplicationContext);\r\n // const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false },\r\n { label: 'View', shortcut: 'F9', separator: false },\r\n { label: 'Edit', shortcut: 'F3', separator: true },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n { label: 'Copy', shortcut: 'Ctrl+F2', separator: false },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n // case 0:\r\n // view();\r\n // break;\r\n // case 1:\r\n // switchToAmsHbl();\r\n // break;\r\n case 3:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n // case 3:\r\n // switchToAmsMbl();\r\n // break;\r\n case 4:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 5:\r\n jobListContext.reloadData();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction ViListCommands() {\r\n const [popupMode, setPopupMode] = useState('none');\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n \r\n const selectedElement = jobListContext.selectedElement as AmsUserListItem;\r\n const listSec = findSecurityTask(appContext, FmsSecTask.AMSUser);\r\n \r\n function dismissUserView() {\r\n setPopupMode('none');\r\n jobListContext.dismissPopupRow();\r\n }\r\n\r\n const hasSelectedRow = !!selectedElement;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n const canBeCopied = hasSelectedRow && listSec?.grantAdd;\r\n\r\n return (\r\n
\r\n
\r\n setPopupMode('new')}>New \r\n setPopupMode('view')}>View \r\n setPopupMode('edit')}>Edit \r\n Delete \r\n Copy\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nfunction ViListToolbar() {\r\n return null;\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data;\r\n}\r\n\r\nfunction ViListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey:string) {\r\n if (['F11'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Concrete implementation for AMS User List screen\r\n *\r\n * @class UsersListView\r\n * @extends {AbstractListView}\r\n */\r\n class UsersListView extends AbstractListView {\r\n async fetchAndFormatData(api: any, search: Search, opType :any): Promise {\r\n const apiResult = await api.getListItems(JobNames.AMSUser, 'AmsUserListItem',\r\n AmsUserListItem.calculateSearchParameters(search),\r\n 1,\r\n search.pageSize,\r\n 'AMS');\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return { data: formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n return AmsUserListItem.getExportCollection().map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.dataIndex === \"status\") {\r\n colRenderer.Cell = () => \r\n colRenderer.Header = () => ;\r\n }\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}}); \r\n colRenderer.push({accessor: 'active', changedValue: (value: any)=> { return nullableCheckBoxValue(value['active'])}});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: '¨id',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = amsUsersList;\r\n const cols = AmsUserListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor() {\r\n return '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'AMS User List';\r\n };\r\n\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n hasMemo(): boolean {\r\n return false;\r\n }\r\n};\r\n\r\nexport default UsersListView;","import {AmsListItemBase} from './AmsListItemBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport _ from 'lodash';\r\n\r\nexport class AmsBranchListItem extends AmsListItemBase {\r\n amsID: string = '';\r\n branch: string = '';\r\n email: string = '';\r\n amsGroupId: number|null = null;\r\n id: number = 0;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'SCAC', width: 60, dataIndex: 'amsID', align: XCol.XAlignType.Right, defaultColumnFocus : true}),\r\n XCol.Create({ col: 2, text: 'Branch', width: 60, dataIndex: 'branch'}),\r\n XCol.Create({ col: 3, text: 'Email', width: 200, dataIndex: 'email'})\r\n ];\r\n\r\n\r\n public static getExportCollection(useBranch: boolean): XCol.XExportColumn[] {\r\n let returnCloumns = _.cloneDeep(this.ExportCollection);\r\n if (!useBranch) returnCloumns = returnCloumns.filter(x => x.dataIndex !== 'branch');\r\n return returnCloumns;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: AmsBranchListItem.prototype.id, orderByAscending: false };\r\n\r\n public static formatData(data: AmsBranchListItem[]) {\r\n return data.map((d: AmsBranchListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport constants from '../../../constants';\r\nimport {amsBranchList,} from '../tableSettings';\r\nimport {Search} from \"../../../filtering\";\r\nimport {\r\n DateRenderer,DateTimeRenderer,NullableCheckboxIconRenderer,TextAlignLeftRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport {JobNames} from '../../../framework.core/JobNames';\r\nimport {AmsBranchListItem} from '../../../fms.data/models/AmsBranchListItem';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport PrimaryButton from \"../../../ui/PrimaryButton\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\nimport {faPencilAlt, faPlus, faTrashAlt} from \"@fortawesome/free-solid-svg-icons\";\r\nimport _ from \"lodash\";\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../ui/ActionButton';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport { SuntekSettings, SystemSettings } from '../../../ifmsTypes';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\n\r\nfunction useSelectedOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as AmsBranchListItem;\r\n\r\n async function create() {\r\n const _data = _.cloneDeep(jobListContext.data);\r\n if(_data?.find(item => item.isSelected)) {\r\n return;\r\n }\r\n const maxId = _data?.reduce((t, it) => it.id > t ? it.id : t, 0) || 0\r\n _data?.unshift({\r\n id: maxId + 1,\r\n status: '',\r\n amsID: '',\r\n branch: '',\r\n email: '',\r\n isSelected: true,\r\n isNew: true\r\n })\r\n jobListContext.setData && jobListContext.setData(_data, _data?.length || 0)\r\n }\r\n\r\n async function remove() {\r\n const _data = _.cloneDeep(jobListContext.data);\r\n const foundIndex = _data?.findIndex(item => item.isSelected)\r\n if(foundIndex === undefined || foundIndex < 0) {\r\n return;\r\n }\r\n _data?.splice(foundIndex, 1);\r\n jobListContext.setData && jobListContext.setData(_data, _data?.length || 0)\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n const _data = _.cloneDeep(jobListContext.data);\r\n if(_data?.find(item => item.isSelected)) {\r\n return;\r\n }\r\n\r\n if(_data) {\r\n const foundData = _data.find(item => item.id === selectedElement.id);\r\n foundData.isSelected = true;\r\n jobListContext.setData && jobListContext.setData(_data, _data?.length || 0)\r\n }\r\n }\r\n\r\n return {create, edit, remove};\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n // const { view } = useSelectedOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n // const selectedElement = jobListContext.selectedElement as OceanQuoteListItem;\r\n // const appContext = useContext(ApplicationContext);\r\n // const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, newCol: false },\r\n { label: 'Edit', shortcut: 'F3', separator: true },\r\n { label: 'Search', shortcut: 'F5', separator: true, newCol: true },\r\n { label: 'Refresh', shortcut: 'F11', separator: true },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n // case 0:\r\n // view();\r\n // break;\r\n // case 1:\r\n // switchToAmsHbl();\r\n // break;\r\n case 2:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n // case 3:\r\n // switchToAmsMbl();\r\n // break;\r\n case 3:\r\n jobListContext.reloadData();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction ViListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n \r\n const selectedElement = jobListContext.selectedElement as AmsBranchListItem;\r\n const hasSelectedRow = !!selectedElement;\r\n\r\n const {edit, create, remove} = useSelectedOperations();\r\n\r\n return (\r\n
\r\n
\r\n New \r\n Edit \r\n Delete\r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction ViListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data;\r\n}\r\n\r\nfunction ViListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey, onEsc: cancel});\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n function cancel() {\r\n const _data = _.cloneDeep(jobListContext.data);\r\n const foundIndex = _data?.findIndex(item => item.isNew)\r\n if(foundIndex === undefined || foundIndex < 0) {\r\n return true;\r\n }\r\n _data?.splice(foundIndex, 1);\r\n jobListContext.setData && jobListContext.setData(_data, _data?.length || 0)\r\n return true;\r\n }\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey:string) {\r\n if (['F11'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Concrete implementation for AMS Branch List screen\r\n *\r\n * @class BranchListView\r\n * @extends {AbstractListView}\r\n */\r\n class BranchListView extends AbstractListView {\r\n async fetchAndFormatData(api: any, search: Search, opType :any): Promise {\r\n const apiResult = await api.getListItems(JobNames.AMSBranch, 'AmsBranchListItem',\r\n AmsBranchListItem.calculateSearchParameters(search),\r\n 1,\r\n search.pageSize,\r\n 'AMS');\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return { data: formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): ListRowRenderer[] {\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n \r\n return AmsBranchListItem.getExportCollection(useBranch).map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.dataIndex === \"status\") {\r\n colRenderer.Cell = () => \r\n colRenderer.Header = () => ;\r\n }\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: '¨id',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): TableSettings {\r\n const tsettings = amsBranchList;\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n const cols = AmsBranchListItem.getExportCollection(useBranch);\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor() {\r\n return '';\r\n }\r\n\r\n getListViewTitle() {\r\n return `AMS Branch List`;\r\n };\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n hasMemo(): boolean {\r\n return false;\r\n }\r\n};\r\n\r\nexport default BranchListView;","import {AmsListItemBase} from './AmsListItemBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class AmsBillingCodeListItem extends AmsListItemBase {\r\n id: number = 0;\r\n amsBillingCode: string = '';\r\n description: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Billing Code', width: 100, dataIndex: 'amsBillingCode', defaultColumnFocus : true}),\r\n XCol.Create({ col: 2, text: 'Description', width: 200, dataIndex: 'description'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: AmsBillingCodeListItem.prototype.amsBillingCode, orderByAscending: true };\r\n\r\n public static formatData(data: AmsBillingCodeListItem[]) {\r\n return data.map((d: AmsBillingCodeListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer} from \"../../common/AbstractListView\";\r\nimport constants from '../../../constants';\r\nimport {amsBillingCodeList,} from '../tableSettings';\r\nimport {Search} from \"../../../filtering\";\r\nimport {\r\n DateRenderer,DateTimeRenderer,NullableCheckboxIconRenderer,TextAlignLeftRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\r\nimport {faPencilAlt, faPlus, faTrashAlt} from '@fortawesome/free-solid-svg-icons';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport {JobNames} from '../../../framework.core/JobNames';\r\nimport {AmsBillingCodeListItem} from '../../../fms.data/models/AmsBillingCodeListItem';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport _ from \"lodash\";\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../ui/ActionButton';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\n\r\nfunction useSelectedOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as AmsBillingCodeListItem;\r\n\r\n async function create() {\r\n const _data = _.cloneDeep(jobListContext.data);\r\n if(_data?.find(item => item.isSelected)) {\r\n return;\r\n }\r\n const maxId = _data?.reduce((t, it) => it.id > t ? it.id : t, 0) || 0\r\n _data?.unshift({\r\n id: maxId + 1,\r\n status: '',\r\n amsID: '',\r\n branch: '',\r\n email: '',\r\n isSelected: true,\r\n isNew: true\r\n })\r\n jobListContext.setData && jobListContext.setData(_data, _data?.length || 0)\r\n }\r\n\r\n async function remove() {\r\n //debugger\r\n const _data = _.cloneDeep(jobListContext.data);\r\n const foundIndex = _data?.findIndex(item => item.isSelected)\r\n if(foundIndex === undefined || foundIndex < 0) {\r\n return;\r\n }\r\n _data?.splice(foundIndex, 1);\r\n jobListContext.setData && jobListContext.setData(_data, _data?.length || 0)\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n const _data = _.cloneDeep(jobListContext.data);\r\n if(_data?.find(item => item.isSelected)) {\r\n return;\r\n }\r\n\r\n if(_data) {\r\n const foundData = _data.find(item => item.id === selectedElement.id);\r\n foundData.isSelected = true;\r\n jobListContext.setData && jobListContext.setData(_data, _data?.length || 0)\r\n }\r\n }\r\n\r\n return {create, edit, remove};\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n // const { view } = useSelectedOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n // const selectedElement = jobListContext.selectedElement as OceanQuoteListItem;\r\n // const appContext = useContext(ApplicationContext);\r\n // const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, newCol: false },\r\n { label: 'Edit', shortcut: 'F3', separator: true },\r\n { label: 'Search', shortcut: 'F5', separator: true, newCol: true },\r\n { label: 'Refresh', shortcut: 'F11', separator: true },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n // case 0:\r\n // view();\r\n // break;\r\n // case 1:\r\n // switchToAmsHbl();\r\n // break;\r\n case 2:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n // case 3:\r\n // switchToAmsMbl();\r\n // break;\r\n case 3:\r\n jobListContext.reloadData();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction ViListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n \r\n const selectedElement = jobListContext.selectedElement as AmsBillingCodeListItem;\r\n const hasSelectedRow = !!selectedElement;\r\n\r\n const { edit, create, remove } = useSelectedOperations();\r\n\r\n return (\r\n
\r\n
\r\n New \r\n Edit \r\n Delete\r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction ViListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data;\r\n}\r\n\r\nfunction ViListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey, onEsc: cancel});\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n function cancel() {\r\n const _data = _.cloneDeep(jobListContext.data);\r\n const foundIndex = _data?.findIndex(item => item.isNew)\r\n if(foundIndex === undefined || foundIndex < 0) {\r\n return true;\r\n }\r\n _data?.splice(foundIndex, 1);\r\n jobListContext.setData && jobListContext.setData(_data, _data?.length || 0)\r\n return true;\r\n }\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey:string) {\r\n if (['F11'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Concrete implementation for AMS Billing Code List screen\r\n *\r\n * @class BillingCodeListView\r\n * @extends {AbstractListView}\r\n */\r\n class BillingCodeListView extends AbstractListView {\r\n async fetchAndFormatData(api: any, search: Search, opType :any): Promise {\r\n const apiResult = await api.getListItems(JobNames.AMSBilling, 'AmsBillingCodeListItem',\r\n AmsBillingCodeListItem.calculateSearchParameters(search),\r\n 1,\r\n search.pageSize,\r\n 'AMS');\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return { data: formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n return AmsBillingCodeListItem.getExportCollection().map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.dataIndex === \"status\") {\r\n colRenderer.Cell = () => \r\n colRenderer.Header = () => ;\r\n }\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: '¨id',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = amsBillingCodeList;\r\n const cols = AmsBillingCodeListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor() {\r\n return '';\r\n }\r\n\r\n getListViewTitle() {\r\n return `AMS Billing Code List`;\r\n };\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n hasMemo(): boolean {\r\n return false;\r\n }\r\n};\r\n\r\nexport default BillingCodeListView;","import {AmsListItemBase} from './AmsListItemBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class AmsHistoryListItem extends AmsListItemBase {\r\n userID: string = '';\r\n amsMessage: string = '';\r\n date: string | null = null;\r\n toDate: string | null = null;\r\n fromDate: string | null = null;\r\n description: string = '';\r\n hblNo: string = '';\r\n mblNo: string = '';\r\n sName: string = '';\r\n cName: string = '';\r\n nName: string = '';\r\n voyage: string = '';\r\n eta: string | null = null;\r\n fromEta: string | null = null;\r\n toEta: string | null = null;\r\n dCode: string = '';\r\n conVName: string = '';\r\n moveType: string = '';\r\n id: number = 0;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'User', width: 100, dataIndex: 'userID', defaultColumnFocus : true}),\r\n XCol.Create({ col: 2, text: 'DP', width: 60, dataIndex: 'amsMessage', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 3, text: 'Date', width: 75, dataIndex: 'date', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 4, text: 'DP Description', width: 200, dataIndex: 'description'}),\r\n XCol.Create({ col: 5, text: 'HBL #', width: 100, dataIndex: 'hblNo'}),\r\n XCol.Create({ col: 6, text: 'MBL #', width: 100, dataIndex: 'mblNo'}),\r\n XCol.Create({ col: 7, text: 'Shipper', width: 120, dataIndex: 'sName'}),\r\n XCol.Create({ col: 8, text: 'Consignee', width: 120, dataIndex: 'cName'}),\r\n XCol.Create({ col: 9, text: 'Notify', width: 120, dataIndex: 'nName'}),\r\n XCol.Create({ col: 10, text: 'Voyage #', width: 80, dataIndex: 'voyage'}),\r\n XCol.Create({ col: 11, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 12, text: 'Discharge', width: 80, dataIndex: 'dCode'}),\r\n XCol.Create({ col: 13, text: 'Vessel Name', width: 120, dataIndex: 'conVName'}),\r\n XCol.Create({ col: 14, text: 'Move Type', width: 80, dataIndex: 'moveType', noNullOrEmptySearch: true})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: AmsHistoryListItem.prototype.id, orderByAscending: false };\r\n\r\n public static formatData(data: AmsHistoryListItem[]) {\r\n return data.map((d: AmsHistoryListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n date: {from: 'fromDate', to: 'toDate'},\r\n eta: {from: 'fromEta', to: 'toEta'},\r\n }\r\n}\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,\r\n ExportRowRenderer,\r\n ListCustomFilterRenderer,\r\n ListOrderBy,\r\n ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\n\r\nimport constants from '../../../constants';\r\n\r\nimport {amsHistoryCodeList,} from '../tableSettings';\r\nimport {Search} from \"../../../filtering\";\r\n\r\nimport {\r\n DateRenderer,\r\n DateTimeRenderer,\r\n NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,\r\n TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport JobListViewContext from '../../common/JobListViewContext';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport {JobNames} from '../../../framework.core/JobNames';\r\nimport {AmsHistoryListItem} from '../../../fms.data/models/AmsHistoryListItem';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\n\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\n\r\nfunction ViListCommands() {\r\n return (\r\n <>\r\n \r\n );\r\n}\r\n\r\nfunction ViListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data;\r\n}\r\n\r\nfunction ViListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey:string) {\r\n if (['F11'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Concrete implementation for AMS History List screen\r\n *\r\n * @class HistoryListView\r\n * @extends {AbstractListView}\r\n */\r\n class HistoryListView extends AbstractListView {\r\n async fetchAndFormatData(api: any, search: Search, opType :any): Promise {\r\n const apiResult = await api.getListItems(JobNames.AMSHistory, 'AmsHistoryListItem',\r\n AmsHistoryListItem.calculateSearchParameters(search, AmsHistoryListItem.MapSearchFields),\r\n 1,\r\n search.pageSize,\r\n 'AMS');\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return { data: formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n return AmsHistoryListItem.getExportCollection().map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.dataIndex === \"status\") {\r\n colRenderer.Cell = () => \r\n colRenderer.Header = () => ;\r\n }\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: '¨id',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = amsHistoryCodeList;\r\n const cols = AmsHistoryListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor() {\r\n return '';\r\n }\r\n\r\n getListViewTitle() {\r\n return `AMS History List`;\r\n };\r\n\r\n hasMemo(): boolean {\r\n return false;\r\n }\r\n};\r\n\r\nexport default HistoryListView;","import {AmsListItemBase} from './AmsListItemBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class Ams1CHistoryListItem extends AmsListItemBase {\r\n date: string = '';\r\n toDate: string | null = null;\r\n fromDate: string | null = null;\r\n hblNo: string = '';\r\n entryNo: string = '';\r\n containerNo: string = '';\r\n pkg: number|null = null;\r\n toPkg: number|null = null;\r\n fromPkg: number|null = null;\r\n amsGroupId: number|null = null;\r\n branch: string = '';\r\n id: number = 0;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Date', width: 75, dataIndex: 'date', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 2, text: 'HBL #', width: 100, dataIndex: 'hblNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 3, text: 'Entry #', width: 100, dataIndex: 'entryNo'}),\r\n XCol.Create({ col: 4, text: 'Container #', width: 90, dataIndex: 'containerNo'}),\r\n XCol.Create({ col: 5, text: 'Qty', width: 60, dataIndex: 'pkg', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, noNullOrEmptySearch: true }),\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: Ams1CHistoryListItem.prototype.id, orderByAscending: false };\r\n\r\n public static formatData(data: Ams1CHistoryListItem[]) {\r\n return data.map((d: Ams1CHistoryListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n date: {from: 'fromDate', to: 'toDate'},\r\n pkg: {from: 'toPkg', to: 'fromPkg'},\r\n }\r\n}\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,\r\n ExportRowRenderer,\r\n ListCustomFilterRenderer,\r\n ListOrderBy,\r\n ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\n\r\nimport constants from '../../../constants';\r\n\r\nimport {amsCrHistoryCodeList,} from '../tableSettings';\r\nimport {Search} from \"../../../filtering\";\r\n\r\nimport {\r\n DateRenderer,\r\n DateTimeRenderer,\r\n NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,\r\n TextAlignRightRenderer,\r\n TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport JobListViewContext from '../../common/JobListViewContext';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport {JobNames} from '../../../framework.core/JobNames';\r\nimport {Ams1CHistoryListItem} from '../../../fms.data/models/Ams1CHistoryListItem';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\n\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\n\r\nfunction ViListCommands() {\r\n return (\r\n <>\r\n \r\n );\r\n}\r\n\r\nfunction ViListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data;\r\n}\r\n\r\nfunction ViListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey:string) {\r\n if (['F11'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Concrete implementation for AMS CR History List screen\r\n *\r\n * @class CrHistoryListView\r\n * @extends {AbstractListView}\r\n */\r\n class CrHistoryListView extends AbstractListView {\r\n async fetchAndFormatData(api: any, search: Search, opType :any): Promise {\r\n const apiResult = await api.getListItems(JobNames.AMSC1History, 'Ams1CHistoryListItem',\r\n Ams1CHistoryListItem.calculateSearchParameters(search, Ams1CHistoryListItem.MapSearchFields),\r\n 1,\r\n search.pageSize,\r\n 'AMS');\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return { data: formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n return Ams1CHistoryListItem.getExportCollection().map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.align === XCol.XAlignType.Right) colRenderer.Cell = TextAlignRightRenderer;\r\n if(x.dataIndex === \"status\") {\r\n colRenderer.Cell = () => \r\n colRenderer.Header = () => ;\r\n }\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: '¨id',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = amsCrHistoryCodeList;\r\n const cols = Ams1CHistoryListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n\r\n return tsettings; \r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor() {\r\n return '';\r\n }\r\n\r\n getListViewTitle() {\r\n return `AMS CR History List`;\r\n };\r\n \r\n hasMemo(): boolean {\r\n return false;\r\n }\r\n};\r\n\r\nexport default CrHistoryListView;","import React, {cloneElement, useContext, useEffect, useState} from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,\r\n ExportRowRenderer,\r\n ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\n\r\nimport constants from '../../../constants';\r\nimport MoveTypeDropDown from \"../../../uiControls/MoveTypeDropDown\";\r\nimport {Search} from \"../../../filtering\";\r\n\r\nimport {NavigationType, openNewPage} from '../../../util/navigationHelpers';\r\n\r\nimport lockBlue from '../../../img/lock_blue.png';\r\nimport lockRed from '../../../img/lock_red.png';\r\n\r\nimport {\r\n DateRenderer,DateTimeRenderer,\r\n NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\r\nimport { faCalculator, faCopy, faFileAlt, faPencilAlt, faPlus, faTrashAlt, } from '@fortawesome/free-solid-svg-icons';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport JobListViewContext, {IJobListViewContext, RightClickContext} from '../../common/JobListViewContext';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport {ActionButtonItem, borderColors, splitMenuItemsIntoSections} from '../../../ui/ActionButton';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport {JobNames} from \"../../../framework.core/JobNames\";\r\nimport {OeMblListItem, OemListType} from \"../../../fms.data/models/OeMblListItem\";\r\nimport {oceanExportMblList} from \"../tableSettings\";\r\nimport IfmsModal from \"../../../ui/IfmsModal\";\r\nimport fastStorage from \"../../../fastStorage\";\r\nimport MblMilestonePopup from \"./MblMilestonePopup\";\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport PrimaryInverseButton from '../../../ui/PrimaryInverseButton';\r\nimport { FmsSubMenu } from '../../../constants/fmsSubMenu';\r\nimport { getSelectedSubMenuArgs } from '../../JobListSubMenu';\r\nimport useReportViewer from '../../../hooks/useReportViewer';\r\nimport loadInfoAreaInvoiceBillCrDb from '../../common/InfoAreaInvoiceBillCrDb';\r\nimport JobListSuntekCommand from '../../common/JobListSuntekCommand';\r\nimport { BillingsRenderer, BillInvoiceCrdbFilterRenderer, LclFclFilterRenderer, LclFclRenderer, RecognizedFilterRenderer, RecognizedRenderer, ShipmentTypeFilterRenderer, ShipmentTypeRenderer, TrackEventNameRenderer } from '../../common/commonListRenderers';\r\nimport DeleteHistory from \"../../reports/DeleteHistory\";\r\nimport postal from 'postal';\r\nimport { getFmsGlobal } from '../../../globals';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport BlackInverseButton from '../../../ui/BlackInverseButton';\r\nimport carriersTrackingIcon from '../../../img/carriers-tracking.svg';\r\nimport { SuntekSettings, SystemSettings } from '../../../ifmsTypes';\r\nimport { findSecurityTask } from '../../../util';\r\nimport { useJournal } from '../../accounting/general/journal/JournalListView';\r\nimport useSuntekSettings from '../../../hooks/useSuntekSettings';\r\nimport _ from 'lodash';\r\nimport RecogModal from '../../../ui/RecogModal';\r\nimport useSetEditedId from '../../../hooks/useSetEditedId';\r\nimport { formatDateTime } from '../../../dateUtils';\r\nimport { formatShipmentType, formatLclFcl } from '../../common/utils/formatUtils';\r\n\r\n// function ColoadFilterRenderer({value, onChange}: any) {\r\n// return (\r\n// onChange(e.target.value)}\r\n// items={[\r\n// // { value: 'A', label: 'Agent'},\r\n// {value: '', label: 'None'},\r\n// {value: 'C', label: 'Consol'},\r\n// {value: '1', label: 'Co-Load'},\r\n// // { value: 'N', label: 'Direct(No HBL)'},\r\n// ]}\r\n// />\r\n// );\r\n// }\r\n\r\nfunction MoveTypeFilterRenderer({value, onChange}: any) {\r\n return (\r\n onChange(moveType)} \r\n />\r\n );\r\n}\r\n\r\n// function CurrencyRenderer(value: number | null | undefined, currency: string, isLast: boolean = false) {\r\n// return (\r\n//
\r\n//
\r\n// \r\n//
\r\n//
\r\n// );\r\n// }\r\n\r\n// function IndicatorRenderer({value, data, row}: any) {\r\n// const jobListContext = useContext(JobListViewContext);\r\n// let content:React.ReactNode | null = null;\r\n\r\n// if(!value) {\r\n// content = D;\r\n// }else{\r\n// content = {value}; \r\n// }\r\n\r\n// function onIndicatorClick() {\r\n// if (jobListContext.rowExtrasId) {\r\n// return; // Some row is already selected\r\n// }\r\n\r\n// jobListContext.setRowExtrasId(data[row.index].id);\r\n// }\r\n\r\n// return (\r\n//
{content}
\r\n// );\r\n// }\r\nfunction IndicatorRenderer({ data, row }: any) {\r\n const l = data[row.index];\r\n let dataTooltip = '';\r\n const lStatus = (l as any).status as string;\r\n if (lStatus === 'PC') dataTooltip = 'Period Close';\r\n else if (lStatus === 'OC') dataTooltip = 'OP Close';\r\n\r\n // function onIndicatorClick() {\r\n // if (jobListContext.rowExtrasId) {\r\n // return; // Some row is already selected\r\n // }\r\n\r\n // jobListContext.setRowExtrasId(data[row.index].id);\r\n // }\r\n\r\n let content: React.ReactNode = <>;\r\n //if ((l as any).isClosed) {\r\n if (lStatus === 'PC')\r\n content = \"\";\r\n else if (lStatus === 'OC')\r\n content = \"\";\r\n //}\r\n\r\n return (\r\n //
{content}
\r\n
{content}
\r\n );\r\n}\r\n\r\n// function ColoadRenderer({cell}: any) {\r\n// if (cell && cell.value === '1') {\r\n// return
\r\n// \r\n//
; \r\n// }\r\n\r\n// return null;\r\n// }\r\n\r\n// function AccountingEntityRenderer(onLinkToAccounting: any, {data, row, value}: any) {\r\n// const entity = data[row.index];\r\n\r\n// return
\r\n// \r\n//  \r\n//
;\r\n// }\r\n\r\nfunction HblRenderer({data, row, value}: any) {\r\n const {switchToHblFor} = useMblOperations();\r\n\r\n if (data[row.index].direct) {\r\n return
DBL
;\r\n }\r\n\r\n const isNumber = !isNaN(parseInt(value));\r\n\r\n if (!isNumber) {\r\n return
{value}
;\r\n }\r\n\r\n return switchToHblFor(data[row.index])} style={{width: '100%', color: 'blue', fontWeight: 'bold', lineHeight:'1em'}}>{value}\r\n}\r\n\r\nfunction PaidRenderer({value, data, row}: any) {\r\n const {switchToAcctInfo} = useMblOperations();\r\n\r\n const isPaid = value !== 'x';\r\n\r\n if (!isPaid) {\r\n return
{value}
;\r\n }\r\n\r\n return switchToAcctInfo(data[row.index])} style={{width: '100%', lineHeight:'1em'}}>{value}\r\n}\r\n\r\n// function CntrNoRenderer({value}: any) {\r\n// return {value}\r\n// }\r\n\r\nfunction useMblOperations() {\r\n const history = useHistory();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n function switchToHblFor(mbl: OeMblListItem | null) {\r\n if (!mbl) {\r\n return;\r\n }\r\n\r\n // jobListContext.setFilterForScreenExternally('/common/joblistview/oeHbl/oceanExport', 'refNo', 'Ref No', mbl.refNo ?? '', 'updated', false);\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/oeHbl/oceanExport', \r\n 'oeMblId', 'Ref. #', mbl.id, 'updated', false, true, null, 'refNo', mbl.refNo, false,true);\r\n openNewPage(history, `/common/joblistview/oeHbl/oceanExport`, NavigationType.newPage);\r\n }\r\n \r\n async function switchToAcctInfo(mbl:OeMblListItem|null) {\r\n if (!mbl) {\r\n return;\r\n }\r\n \r\n openNewPage(history, `/accounting/Acct/${JobNames.OEMbl}/${mbl.id}`, NavigationType.newPage);\r\n }\r\n\r\n return {switchToHblFor, switchToAcctInfo};\r\n}\r\n\r\nfunction useSelectedMblOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const history = useHistory();\r\n const {switchToHblFor} = useMblOperations();\r\n\r\n const selectedElement = jobListContext.selectedElement as OeMblListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const channel = postal.channel('ajax');\r\n\r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/oceanExport/mbl/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress.

);\r\n return;\r\n }\r\n\r\n openNewPage(history, '/oceanExport/mbl/add', NavigationType.newPage);\r\n }\r\n\r\n async function deleteMbl() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if ((selectedElement.hblCount !== 'DBL' && selectedElement.hblCount !== 'X' && selectedElement.hblCount !== '0')) {\r\n await showGlobalOkDialog('Need to delete HBL first.',false,null,'warning');\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/oceanExport/mbl/edit/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/oceanExport/mbl/view/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close MBL first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/bill/view/OEMB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/bill/edit/OEMB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/invoice/view/OEMB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/invoice/edit/OEMB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/crdb/view/OEMB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/crdb/edit/OEMB/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Bill/Invoice/CrDb first.',false,null,'warning');\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n ,false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.OEMbl, { id:selectedElement.id, pimsLinkId: 0 });\r\n if (apiResult && apiResult.success) {\r\n jobListContext.reloadData();\r\n } else {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n await showGlobalOkDialog(message,false,null,'warning');\r\n }\r\n }\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl =`/oceanExport/mbl/edit/${id}`;\r\n const viewUrl = `/oceanExport/mbl/view/${id}`;\r\n \r\n // if (jobListContext.hasOpenedScreenStartingWithUrlWithoutMe('/oceanExport/mbl/edit', editUrl)) {\r\n // await showGlobalOkDialog(

Edit operation is already in progress.

);\r\n // return;\r\n // }\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function viewBillings() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n\r\n const viewUrl = `/oceanExport/viewBillings/mbl/${id}`;\r\n openNewPage(history, viewUrl, NavigationType.newPage);\r\n }\r\n\r\n async function moveToDeleteHistoryReport() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const viewUrl = `/common/deleteHistory?jobname=${JobNames.OEMbl}&id=${id}`;\r\n \r\n openNewPage(history, viewUrl, NavigationType.newPage);\r\n }\r\n\r\n async function viewProfit(viewEdit:boolean) {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/oceanExport/mbl/edit/${id}`;\r\n const viewUrl = `/oceanExport/mbl/view/${id}`;\r\n //let url = `/oceanExport/mbl/${viewEdit ? 'edit' : 'view'}/${id}`;\r\n \r\n let editUrlProfitTab = `${editUrl}/3`;\r\n let viewUrlProfitTab = `${viewUrl}/3`;\r\n\r\n if (viewEdit && jobListContext.hasOpenedScreenStartingWithUrlWithoutMe(`/oceanExport/mbl/edit`, editUrl)) {\r\n await showGlobalOkDialog(

Edit operation is already in progress.

);\r\n return;\r\n }\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewEdit ? editUrlProfitTab : viewUrlProfitTab, [viewUrl, editUrl]);\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl =`/oceanExport/mbl/edit/${id}`;\r\n const viewUrl = `/oceanExport/mbl/view/${id}`;\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OEMbl);\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n async function copy() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/oceanExport/mbl/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress.

);\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n openNewPage(history, `/oceanExport/mbl/add?copyId=${id}`, NavigationType.newPage);\r\n }\r\n\r\n function switchToHbl() {\r\n const selectedElement = jobListContext.selectedElement as OeMblListItem;\r\n if (selectedElement?.hblCount !== 'DBL') switchToHblFor(selectedElement);\r\n }\r\n\r\n function recognize(isSet: boolean) {\r\n jobListContext.setRecogModalData({ isOpen: true, isSet: isSet });\r\n }\r\n\r\n return {create, deleteMbl, edit, view, copy, switchToHbl, recognize, viewBillings, moveToDeleteHistoryReport, viewProfit};\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const { create, deleteMbl, edit, view, copy, switchToHbl, recognize, viewBillings, viewProfit } = useSelectedMblOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as any;\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n \r\n const listSec = findSecurityTask(appContext, FmsSecTask.OEMbl);\r\n const fmsGlobal = getFmsGlobal();\r\n\r\n function openContainerStatus() {\r\n if (jobListContext.rowExtrasId) {\r\n return; // Some row is already selected\r\n }\r\n\r\n jobListContext.setRowExtrasId(selectedElement.id);\r\n }\r\n\r\n async function processFileLock() {\r\n const fileLockResult = await appContext.api.opClose(JobNames.OEMbl, selectedElement.id, !selectedElement.isClosed);\r\n if (!!fileLockResult) {\r\n await showGlobalOkDialog(fileLockResult,false,null,'warning');\r\n return;\r\n }\r\n\r\n if (selectedElement.isClosed && jobListContext.hasOpenedScreenStartingWithUrl(`/oceanExport/mbl/edit/${selectedElement.id}`)) {\r\n const editModelKey = `editOeMbl${selectedElement.id}-/oceanExport/mbl/edit`;\r\n const keyMatch = _.keys(fastStorage).find(x => x.startsWith(editModelKey));\r\n if (keyMatch) {\r\n fastStorage[keyMatch].fileClosed = 0;\r\n fastStorage[keyMatch].isFileClosed = false;\r\n fastStorage[keyMatch].closedBy = '';\r\n fastStorage[keyMatch].closeDate = null;\r\n }\r\n }\r\n\r\n jobListContext.reloadData();\r\n }\r\n\r\n let showFileLock = (!selectedElement?.isClosed ? getFmsGlobal().CanFileLock : getFmsGlobal().CanFileUnlock);\r\n const lockCancelRecog = selectedElement?.recognized === 'R' && (selectedElement?.status === 'PC' || selectedElement?.status === 'OC');\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'View', shortcut: 'F9', separator: !listSec?.grantEdit && !listSec?.grantDel },\r\n { label: 'Edit', shortcut: 'F3', separator: !listSec?.grantDel, hidden: !listSec?.grantEdit },\r\n { label: 'Delete', shortcut: '', separator: true, hidden: !listSec?.grantDel },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: 'Switch to HBL List', shortcut: 'F6', separator: false, disabled : selectedElement?.hblCount === 'DBL' },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n { label: 'Copy', shortcut: 'Ctrl+F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'Bilings', shortcut: 'F7', separator: !listSec?.grantEdit },\r\n { label: 'Profit', shortcut: 'Ctrl+F7', separator: true, hidden: !listSec?.grantEdit },\r\n { label: 'Container Status Update', shortcut: '', separator: false },\r\n { label: !selectedElement?.isClosed ? 'OP Close' : 'OP Open', shortcut: '', separator: false, hidden: !showFileLock },\r\n // { label: 'Recog', shortcut: '', separator: false, disabled : selectedElement?.recognized === 'R', hidden: !getFmsGlobal().CanFinalize },\r\n { label: selectedElement?.recognized !== 'R' ? 'Recog' : 'Undo Recog', shortcut: '', separator: false, disabled : lockCancelRecog, hidden: !getFmsGlobal().CanFinalize },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n disabled: i?.disabled ?? false,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n \r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n deleteMbl();\r\n break;\r\n case 4:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 5:\r\n switchToHbl();\r\n break;\r\n case 6:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 7:\r\n copy();\r\n break;\r\n case 8:\r\n viewBillings();\r\n break;\r\n case 9:\r\n viewProfit(listSec?.grantEdit ? true : false);\r\n break;\r\n case 10:\r\n openContainerStatus();\r\n break;\r\n case 11:\r\n processFileLock();\r\n break;\r\n case 12:\r\n recognize(selectedElement?.recognized !== 'R');\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\n// function AfterMemoLogButtonCommands() {\r\n// const jobListContext = useContext(JobListViewContext);\r\n// const selectedElement = jobListContext.selectedElement as OeMblListItem;\r\n\r\n// return (\r\n// <>\r\n//   \r\n// window.open(`http://dotnet.freightstream.com/fsutil/customs.asp?mbn=${selectedElement?.mblNo}`)}>\r\n// \"Go\r\n// \r\n// \r\n// )\r\n// }\r\n\r\nfunction TrancationImpactButtonCommands({ userId } : {userId: string}) {\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as OeMblListItem;\r\n const {switchJournal} = useJournal();\r\n const suntekSettings = useSuntekSettings();\r\n \r\n if (!suntekSettings.general?.allowViewJournalOP && !userId.startsWith('@')) {\r\n return null;\r\n }\r\n\r\n return (\r\n switchJournal(JobNames.OEMbl, selectedElement.id)}>\r\n {constants.List_Journal}\r\n \r\n );\r\n}\r\n\r\nfunction MblListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n const selectedElement = jobListContext.selectedElement as OeMblListItem;\r\n\r\n const {deleteMbl, edit, view, copy, viewBillings, moveToDeleteHistoryReport} = useSelectedMblOperations();\r\n\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const { viewReport } = useReportViewer();\r\n const appContext = useContext(ApplicationContext);\r\n const setSavedEntityAfterRecog = useSetEditedId([JobNames.OEHbl, JobNames.SlipJournal]);\r\n \r\n function hasOpenedViewOrEditFor(id: number) {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/oceanExport/mbl/edit/${id}`) || jobListContext.hasOpenedScreenStartingWithUrl(`/oceanExport/mbl/view/${id}`);\r\n }\r\n\r\n function doAfterRecog(){\r\n jobListContext.reloadData();\r\n setSavedEntityAfterRecog('0', false, false, true);\r\n }\r\n\r\n const onRecogModalClose = () => {\r\n jobListContext.setRecogModalData({ isOpen: false, isSet: false });\r\n }\r\n\r\n function hasOpenedNew() {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/oceanExport/mbl/add`);\r\n }\r\n\r\n const onPopupClose = () => {\r\n setSelectedPopupMenuItem(null);\r\n }\r\n\r\n async function onSubMenuClick(fmsSubMenu: FmsSubMenu) {\r\n setSelectedPopupMenuItem(null);\r\n\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const args = await getSelectedSubMenuArgs(fmsSubMenu, JobNames.OEMbl, selectedElement, appContext, showGlobalYesNoDialog, showGlobalOkDialog);\r\n if(args){\r\n viewReport(args, \"\", true);\r\n }\r\n }\r\n\r\n const onLinkClick = (link: string) => {\r\n setSelectedPopupMenuItem(null);\r\n\r\n if (!selectedElement) {\r\n return;\r\n }\r\n \r\n window.open(link);\r\n }\r\n\r\n const allowedStatuses = ['', 'E', 'D'];\r\n \r\n const listSec = findSecurityTask(appContext, FmsSecTask.OEMbl);\r\n\r\n const hasSelectedRow = !!selectedElement;\r\n // const canBeDeleted = hasSelectedRow && !hasOpenedViewOrEditFor(selectedElement.id) && selectedElement.canBeDeleted\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n const canBeCopied = hasSelectedRow && !hasOpenedNew() && listSec?.grantAdd;\r\n const canBeAdd = !hasOpenedNew() && listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n\r\n\r\n return (\r\n
\r\n
\r\n  \r\n View \r\n Edit \r\n Delete \r\n Copy\r\n
\r\n
\r\n {constants.List_Billings} \r\n Delete History\r\n
\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.popupComponent ? (\r\n \r\n {cloneElement(selectedPopupMenuItem.popupComponent!, {onPopupClose})}\r\n \r\n ) : null}\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.subMenu ? onSubMenuClick(selectedPopupMenuItem.subMenu) : null}\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.link ? onLinkClick(selectedPopupMenuItem.link) : null}\r\n {jobListContext.recogModalData?.isOpen ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n}\r\n\r\nfunction MblListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction MblListViewExtras({\r\n hideLogHistory\r\n}: any,\r\n) {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const history = useHistory();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OEMbl);\r\n\r\n const {copy, create, edit, view, switchToHbl, viewBillings, viewProfit} = useSelectedMblOperations();\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n switchToHbl();\r\n } else if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n } else if (unprocessedFkey === \"CTRL+F2\") {\r\n copy();\r\n } else if (unprocessedFkey === \"F7\") {\r\n viewBillings();\r\n } else if (unprocessedFkey === \"CTRL+F7\") {\r\n viewProfit(listSec?.grantEdit ? true : false);\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F6', 'F2', 'CTRL+F2', 'F3', 'F4', 'F9', 'F11', 'F8', 'F7', 'CTRL+F7'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n const infoHeadline = `MBL #: ${(jobListContext.selectedElement as OeMblListItem|null)?.mblNo ?? ''}`;\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n hideLogHistory={hideLogHistory}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for MBL List screen\r\n *\r\n * @class MblListView\r\n * @extends {AbstractListView}\r\n */\r\nclass MblListView extends AbstractListView {\r\n\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(\r\n JobNames.OEMbl,\r\n 'OeMblListItem',\r\n OeMblListItem.calculateSearchParameters(search, OeMblListItem.MapOeSearchFields, ['shipmentType', 'invStat', 'billStat', 'crDbStat', 'lclFcl', 'moveType']),\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return {data: OeMblListItem.formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n /*{\r\n accessor: 'ebl',\r\n renderer: CheckboxFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v ? 'true' : 'false',\r\n },\r\n {\r\n accessor: 'expressRelease',\r\n renderer: CheckboxFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v ? 'true' : 'false',\r\n },*/\r\n {\r\n accessor: 'recognized',\r\n renderer: RecognizedFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n {\r\n accessor: 'shipmentType',\r\n renderer: ShipmentTypeFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'lclFcl',\r\n renderer: LclFclFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'moveType',\r\n renderer: MoveTypeFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'coload',\r\n renderer: undefined,\r\n searchValueExtractor: (v: any | null | undefined) => v === true ? '1' : '0',\r\n },\r\n {\r\n accessor: 'billStat',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'crDbStat',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'invStat',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanExportMbl;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n return [\r\n {accessor: 'status', Cell: IndicatorRenderer},\r\n {accessor: 'shipmentType', Cell: ShipmentTypeRenderer},\r\n {accessor: 'recognized', Cell: RecognizedRenderer},\r\n {accessor: 'invStat', Cell: BillingsRenderer},\r\n {accessor: 'billStat', Cell: BillingsRenderer},\r\n {accessor: 'crDbStat', Cell: BillingsRenderer},\r\n {accessor: 'coload', Cell: NullableCheckboxIconRenderer},\r\n {accessor: 'lclFcl', Cell: LclFclRenderer},\r\n {accessor: 'refNo', Cell: TextAlignLeftRenderer},\r\n {accessor: 'mblNo', Cell: TextAlignLeftRenderer},\r\n {accessor: 'hblCount', Cell: HblRenderer, Header: () => HBL(s)},\r\n {accessor: 'branch', Cell: TextRenderer},\r\n {accessor: 'moveType', Cell: TextAlignLeftRenderer},\r\n {accessor: 'agentSName', Cell: TextAlignLeftRenderer},\r\n {accessor: 'agentRefNo', Cell: TextAlignLeftRenderer},\r\n {accessor: 'carrierSName', Cell: TextAlignLeftRenderer},\r\n {accessor: 'bookingNo', Cell: TextAlignLeftRenderer},\r\n {accessor: 'pLofRec', Cell: TextAlignLeftRenderer},\r\n {accessor: 'finalDest', Cell: TextAlignLeftRenderer},\r\n {accessor: 'bookCfrm', Cell: DateRenderer},\r\n {accessor: 'sedSent', Cell: DateRenderer},\r\n {accessor: 'dlvrToCarr', Cell: DateRenderer},\r\n // Don't know yet\r\n {accessor: 'cargoRelease', Cell: DateRenderer},\r\n\r\n {accessor: 'vessel', Cell: TextAlignLeftRenderer},\r\n {accessor: 'voyage', Cell: TextAlignLeftRenderer},\r\n {accessor: 'cutOffDate', Cell: DateRenderer},\r\n {accessor: 'loadingPort', Cell: TextAlignLeftRenderer},\r\n {accessor: 'etd', Cell: DateRenderer},\r\n {accessor: 'disCharge', Cell: TextAlignLeftRenderer},\r\n {accessor: 'eta', Cell: DateRenderer},\r\n // {accessor: 'deliveryPort', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'feta', Cell: DateRenderer},\r\n {accessor: 'paidStatus', Cell: PaidRenderer},\r\n {accessor: 'paidDate', Cell: DateRenderer},\r\n {accessor: 'containerNo', Cell: TextAlignLeftRenderer},\r\n {accessor: 'conType', Cell: TextRenderer},\r\n {accessor: 'lotNo', Cell: TextAlignLeftRenderer},\r\n {accessor: 'svccNo', Cell: TextAlignLeftRenderer},\r\n {accessor: 'createdAt', Cell: DateTimeRenderer},\r\n {accessor: 'u2Date', Cell: DateTimeRenderer},\r\n {accessor: 'u2ID', Cell: TextAlignLeftRenderer},\r\n {accessor: 'u1ID', Cell: TextAlignLeftRenderer},\r\n {accessor: 'lastEvent', Cell: TrackEventNameRenderer}\r\n ];\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({ accessor: 'status', changedValue: (value: any) => { return value['status'] === 'PC' ? 'Period Close' : '' } });\r\n colRenderer.push({ accessor: 'shipmentType', changedValue: (value: any) => { return formatShipmentType(value['shipmentType']) } });\r\n colRenderer.push({ accessor: 'lclFcl', changedValue: (value: any) => { return formatLclFcl(value['lclFcl']) } });\r\n colRenderer.push({ accessor: 'lastEvent', changedValue: (value: any) => { return (!!value['lastEvent'] ? value['lastEvent'] + ' ' + formatDateTime(value['lastEventDate']) : '') } });\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'id',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(opType: string, systemSettings: SystemSettings, suntekSettings: SuntekSettings): TableSettings {\r\n const tsettings = oceanExportMblList;\r\n const lType = this.suntekSettings?.oceanAir?.useLotNumber ? OemListType.UseLot : OemListType.Normal;\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n const cols = OeMblListItem.getExportCollection(lType, useBranch);\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n }\r\n \r\n getTableDomIdSuffix(): string {\r\n return this.suntekSettings?.oceanAir?.useLotNumber ? 'uselotoem' : '';\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderExtras(hideLogHistory: boolean) {\r\n return \r\n }\r\n\r\n getViewUrlFor(row: OeMblListItem) {\r\n return row && row.id ? `/oceanExport/mbl/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'MBL List';\r\n };\r\n\r\n renderRowExtras(rowId: number | null, context: IJobListViewContext): React.ReactNode|null {\r\n if (!rowId) {\r\n return null;\r\n }\r\n\r\n function onClose() {\r\n const storageKey = `oe-mbl-milestone-${rowId}`;\r\n fastStorage[storageKey] = null;\r\n context.setRowExtrasId(null);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderAdditionalCommands() {\r\n return ;\r\n }\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n commandsAfterMemoLogBtn():React.ReactNode{\r\n //#1607\r\n // return \r\n return null;\r\n }\r\n\r\n transactionImpactBtn(userId: string): React.ReactNode {\r\n return \r\n }\r\n\r\n useLogHistory(): boolean {\r\n return true;\r\n }\r\n}\r\n\r\nexport default MblListView;\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_48_7463)\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M11.7381 19C10.7503 17.5129 9.97127 15.9225 9.03165 14.335C8.14775 12.8417 6.90822 11.3674 6.32524 9.76718C5.10495 6.41762 7.49651 3.45281 10.5352 3.06124C14.2356 2.58444 17.4398 4.9289 16.9504 8.79531C16.714 10.663 15.3362 12.423 14.4445 14.0434C13.5168 15.7291 12.5532 17.2936 11.7381 19ZM8.93141 8.01781C8.88891 10.8822 13.8744 11.0103 14.0435 8.21218C14.1474 6.49498 12.6138 5.65829 10.9362 5.97687C9.79165 6.19428 8.94915 6.82182 8.93141 8.01781Z\",\n fill: \"#0079A4\"\n}));\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_48_7463\"\n}, /*#__PURE__*/React.createElement(\"rect\", {\n width: 24,\n height: 24\n})));\n\nfunction SvgContainerTracking(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 22 22\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgContainerTracking);\nexport default __webpack_public_path__ + \"static/media/container_tracking.1b05ae73.svg\";\nexport { ForwardRef as ReactComponent };","import { TrackableEntity } from \"../../fms.core/data/ChangeTrackable\";\r\n\r\nexport class ReleaseHblInfo extends TrackableEntity {\r\n refNo: string = '';\r\n branch: string = '';\r\n mblNo: string = '';\r\n carrier: string = '';\r\n hblNo: string = '';\r\n custName: string = '';\r\n subBl: string = '';\r\n pkgs: number = 0;\r\n podEta: string | null = null;\r\n kgs: number = 0;\r\n lbs: number = 0;\r\n cbm: number = 0;\r\n cft: number = 0;\r\n cdtLmt: number|null = null;\r\n mExpRls: boolean = false;\r\n pMemo: string = '';\r\n cfsLoc: string = '';\r\n cfsDate: string | null = null;\r\n expRls: boolean = false;\r\n pror: boolean = false;\r\n edi: boolean = false;\r\n oblCol: number = 0;\r\n oblDate: string | null = null;\r\n rlsd: boolean = false;\r\n rlsDate: string | null = null;\r\n rlsBy: string = '';\r\n containers: ContainerItem[] = [];\r\n billItems: BillItem[] = [];\r\n invoItems: InvoItem[] = [];\r\n id: number = 0;\r\n mRlsDate: string | null = null;\r\n billTo: number|null = null;\r\n billToName: string = '';\r\n oiMblId: number = 0;\r\n cdtHold: boolean = false;\r\n isfNo: string = '';\r\n totalBalance: number = 0;\r\n totalPastDue: number = 0;\r\n\r\n // for cloud\r\n cfsYn: boolean = false;\r\n\r\n printRelOrder: boolean = false;\r\n cfsRelOrder: boolean = false;\r\n releaseOrder: boolean = false;\r\n\r\n rlsBtnEnable: boolean = false;\r\n rlsBtnText: string = 'Release';\r\n \r\n constructor(init?:Partial) {\r\n super();\r\n this.key=undefined;\r\n Object.assign(this, init);\r\n }\r\n}\r\n\r\nexport class ContainerItem {\r\n containerNo: string = '';\r\n}\r\n\r\nexport class BillItem {\r\n postDate: string = '';\r\n vendorName: string = '';\r\n descript: string = '';\r\n invoiceNo: string = '';\r\n dueDate: string | null = null;\r\n billAmt: number = 0;\r\n paidAmt: number = 0;\r\n status: string = '';\r\n}\r\n\r\nexport class InvoItem {\r\n invoiceDate: string | null = null;\r\n invoiceNo: string = '';\r\n hblNo: string = '';\r\n overDue: number = 0;\r\n invoiceAmt: number = 0;\r\n paidAmt: number = 0;\r\n balance: number = 0;\r\n billTo: number = 0;\r\n id: number = 0;\r\n flag: boolean = false;\r\n}\r\n\r\nexport class SavePaymentItem {\r\n receivedFrom: string = '';\r\n checkNo: string = '';\r\n currency: string = '';\r\n remark: string = '';\r\n billToId: number = 0;\r\n postDate: string = '';\r\n bank: string = '';\r\n invoItem: InvoItem[] = [];\r\n}\r\n\r\nexport class HblInfo {\r\n hblNo: string = '';\r\n pkgs: number = 0;\r\n releaseBy: string = '';\r\n rlsDate: string | null = null;\r\n containerNo: string = '';\r\n}","import React, { useContext } from \"react\";\r\nimport { ReleaseHblInfo } from \"../../../../fms.data/models/ReleaseHblInfo\";\r\nimport TextBox from \"../../../../ui/TextBox\";\r\nimport InlineInputControlRow from \"../../../../ui/layout/InlineInputControlRow\";\r\nimport Fieldset from \"../../../common/Fieldset\";\r\nimport LeftRightSplit from \"../../../../ui/LeftRightSplit\";\r\nimport Float from \"../../../../ui/Float\";\r\nimport Date from '../../../../ui/Date';\r\nimport CheckBox from \"../../../../ui/CheckBox\";\r\nimport SmartTable from \"../../../../uiControls/SmartTable\";\r\nimport MultilineTextBox from \"../../../../ui/MultilineTextBox\";\r\nimport Label from \"../../../../ui/Label\";\r\nimport { ApplicableTableSettings } from \"../../../../tableSettings\";\r\nimport { DateRenderer, FloatRenderer, TextAlignLeftRenderer, TextRenderer } from \"../../../../uiControls/SmartTableRenderers\";\r\nimport { releaseBlContainerTable, releaseBlPaybleTable, releaseBlReceivableTable } from \"../../tableSettings\";\r\nimport { now } from \"../../../../dateUtils\";\r\nimport ApplicationContext from \"../../../../ApplicationContext\";\r\n\r\n\r\nfunction HblRelease({\r\n blInfo,\r\n setBlInfo,\r\n rlsYN,\r\n isView,\r\n updateFlag, setUpdateFlag,\r\n relFlag, setRelFlag,\r\n}: {\r\n blInfo: ReleaseHblInfo,\r\n setBlInfo: (x: Partial) => void,\r\n rlsYN: string,\r\n isView: boolean,\r\n updateFlag: boolean,\r\n setUpdateFlag: (x: Partial) => void,\r\n relFlag: boolean,\r\n setRelFlag: (x: Partial) => void,\r\n}) {\r\n\r\n\r\n\r\n //\r\n Container Count: {blInfo.containers?.length ?? 0}\r\n
;\r\n }\r\n\r\n const containerTableOptions: ApplicableTableSettings = {\r\n tableName: 'rlsblContainer',\r\n ...releaseBlContainerTable,\r\n data: (blInfo?.containers ?? []).map((x, i) => ({\r\n ...x,\r\n no: i + 1\r\n })),\r\n rowRenderers: [\r\n { accessor: 'no', Cell: TextRenderer },\r\n { accessor: 'containerNo', Cell: TextAlignLeftRenderer },\r\n ],\r\n footerRow: [\r\n {\r\n colspan: 2,\r\n renderer: TotalNoOfContainersLabelRenderer\r\n },\r\n ]\r\n };\r\n //bl info - container>\r\n\r\n const paybleTableOptions: ApplicableTableSettings = {\r\n tableName: 'rlsblPayble',\r\n ...releaseBlPaybleTable,\r\n data: blInfo?.billItems ?? [],\r\n rowRenderers: [\r\n { accessor: 'postDate', Cell: DateRenderer },\r\n { accessor: 'vendorName', Cell: TextAlignLeftRenderer },\r\n { accessor: 'descript', Cell: TextAlignLeftRenderer },\r\n { accessor: 'invoiceNo', Cell: TextAlignLeftRenderer },\r\n { accessor: 'dueDate', Cell: DateRenderer },\r\n { accessor: 'billAmt', Cell: (props: any) => },\r\n { accessor: 'paidAmt', Cell: (props: any) => },\r\n { accessor: 'status', Cell: TextAlignLeftRenderer },\r\n ],\r\n };\r\n\r\n\r\n\r\n\r\n //{cell.value}
\r\n );\r\n }\r\n\r\n\r\n function BalanceRenderer({ cell, row }: any) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n const receivableTableOptions: ApplicableTableSettings = {\r\n tableName: 'rlsblReceivable',\r\n ...releaseBlReceivableTable,\r\n data: blInfo?.invoItems ?? [],\r\n rowRenderers: [\r\n { accessor: 'invoiceDate', Cell: DateRenderer },\r\n { accessor: 'invoiceNo', Cell: TextAlignLeftRenderer },\r\n { accessor: 'hblNo', Cell: TextAlignLeftRenderer },\r\n { accessor: 'overDue', Cell: OverDueRenderer },\r\n { accessor: 'invoiceAmt', Cell: (props: any) => },\r\n { accessor: 'paidAmt', Cell: (props: any) => },\r\n { accessor: 'balance', Cell: BalanceRenderer },\r\n { accessor: 'paidAmt', Cell: (props: any) => },\r\n ],\r\n };\r\n //receivableTableOptions>\r\n\r\n\r\n //change action\r\n\r\n function subEnableRelease() {\r\n const mainChange: Partial = {};\r\n\r\n mainChange.rlsBtnEnable = true;\r\n \r\n if (relFlag) {\r\n mainChange.rlsBtnText = 'Release';\r\n } else if (updateFlag) {\r\n mainChange.rlsBtnText = 'Update';\r\n } \r\n // else {\r\n // mainChange.rlsBtnText = '';\r\n // }\r\n\r\n setBlInfo(mainChange);\r\n }\r\n\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const userid = appContext.user ? appContext.user.id ?? '' : '';\r\n const disabledRlsYn = rlsYN === 'xY';\r\n\r\n return (\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n }\r\n right={\r\n
\r\n \r\n
\r\n }\r\n />\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n }\r\n right={\r\n
\r\n ETA\r\n
\r\n \r\n
\r\n
\r\n }\r\n />\r\n\r\n\r\n \r\n \r\n \r\n }\r\n right={\r\n
\r\n LBS\r\n
\r\n \r\n
\r\n
\r\n }\r\n />\r\n\r\n \r\n \r\n \r\n }\r\n right={\r\n
\r\n CFT\r\n
\r\n \r\n
\r\n
\r\n }\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n\r\n
\r\n\r\n\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n CFS EDI Release\r\n \r\n
\r\n\r\n
\r\n CFS EDI Release Date\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n {\r\n setBlInfo({expRls: check});\r\n setUpdateFlag(true);\r\n subEnableRelease();\r\n }}\r\n />\r\n
\r\n\r\n
\r\n setBlInfo({printRelOrder: check}) }\r\n />\r\n
\r\n\r\n
\r\n setBlInfo({cfsRelOrder: check}) }\r\n />\r\n
\r\n
\r\n\r\n
\r\n
\r\n 0} label=\"Original B/L Recveived\"\r\n onChange={check => {\r\n setBlInfo({ oblCol: check ? 1 : 0 });\r\n\r\n if (blInfo.oblCol === 0) {\r\n setBlInfo({ oblDate: null });\r\n } else if (blInfo.oblDate === null) {\r\n setBlInfo({ oblDate: now() });\r\n }\r\n setUpdateFlag(true);\r\n subEnableRelease();\r\n }}\r\n\r\n />\r\n
\r\n\r\n
\r\n O B/L Rec'd Date\r\n
\r\n {\r\n setUpdateFlag(true);\r\n subEnableRelease();\r\n }}\r\n\r\n />\r\n
\r\n
\r\n\r\n\r\n {\r\n /**\r\n * 240607.dwshin. 본래 FmsComboType.Obl combo(Component Name:cbo0)가 있어야 할 위치이나, \r\n * 3.3에서 visible 설정을 해주는 곳이 없어 작성하지 않음.\r\n */}\r\n
\r\n\r\n
\r\n
\r\n {\r\n setBlInfo({ rlsd : check, releaseOrder: check });\r\n\r\n if (blInfo.rlsd) {\r\n setBlInfo({\r\n rlsDate: now(),\r\n rlsBy: userid\r\n });\r\n setRelFlag(true);\r\n } else {\r\n setBlInfo({\r\n rlsDate: null,\r\n rlsBy: ''\r\n });\r\n setRelFlag(false);\r\n setUpdateFlag(true);\r\n }\r\n\r\n subEnableRelease();\r\n }}\r\n />\r\n\r\n {\r\n /**\r\n * 240607.dwshin. 본래 Rls Text (Component Name:txt4)가 있어야 할 위치이나, \r\n * 3.3에서 visible 설정을 해주는 곳이 없어 작성하지 않음.\r\n */}\r\n
\r\n\r\n
\r\n Rls'd Date\r\n
\r\n \r\n
\r\n
\r\n
\r\n By\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default React.memo(HblRelease);\r\n","export class CFSManifestReleaseOption {\r\n id: number = 0;\r\n companyId: number = 0;\r\n requestDept: string = '';\r\n contact: string = '';\r\n email: string = '';\r\n}\r\n","import { useContext, useEffect, useState } from \"react\";\r\nimport PropTypes from 'prop-types';\r\nimport ApplicationContext from \"../../../ApplicationContext\";\r\nimport { ReleaseHblInfo } from \"../../../fms.data/models/ReleaseHblInfo\";\r\nimport JobListViewContext from \"../../common/JobListViewContext\";\r\nimport { useTypedFastStorage } from \"../../../hooks/useFastStorage\";\r\nimport useDirtyCheck from \"../../../hooks/useDirtyCheck2\";\r\nimport useGlobalOkDialog from \"../../../hooks/useGlobalOkDialog\";\r\nimport React from \"react\";\r\nimport HblRelease from \"./implementation/HblRelease\";\r\nimport { ApiResult, InsertResultsWithData } from \"../../../framework.core/data/ApiResult\";\r\nimport _ from \"lodash\";\r\nimport { SQLField, SQLInfo, SQLType } from \"../../../framework.core/data/SQLInfo\";\r\nimport SecondaryButton from \"../../../ui/SecondaryButton\";\r\nimport { cbmToCft } from \"../../../util\";\r\nimport { CFSManifestReleaseOption } from \"../../../framework.core/edi/CFSManifestReleaseOption\";\r\nimport { getOriginalValue } from \"../../../fms.core/data/TrackingModule\";\r\nimport { historyUpdate } from \"../../../fms.data/modules/FmsModFunc\";\r\nimport fastStorage from \"../../../fastStorage\";\r\nimport { NavigationType, openNewPage } from \"../../../util/navigationHelpers\";\r\nimport { JobNames } from \"../../../framework.core/JobNames\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nfunction HblReleaseImpl({\r\n hblId,\r\n hblNo,\r\n billToId,\r\n rlsYN,\r\n pimsLinkId,\r\n storageKey,\r\n onClose,\r\n isView,\r\n}: {\r\n hblId: number,\r\n hblNo: string,\r\n billToId: number,\r\n rlsYN: string,\r\n pimsLinkId: number,\r\n storageKey: string,\r\n onClose: (x: ReleaseHblInfo | null) => void,\r\n isView: boolean,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const userid = appContext.user ? appContext.user.id ?? '' : '';\r\n const jobListContext = useContext(JobListViewContext);\r\n const history = useHistory();\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const [//initialized\r\n , setInitialized] = useState(false);\r\n const [updateFlag, setUpdateFlag] = useState(false);\r\n const [relFlag, setRelFlag] = useState(false);\r\n let cfsOption = new CFSManifestReleaseOption();\r\n\r\n const [blInfo, setBlInfo, removeBlInfo, blInfoRef] = useTypedFastStorage(storageKey, null);\r\n const { setCleanState, dirtyCleanup } = useDirtyCheck(storageKey);\r\n\r\n useEffect(() => {\r\n initialize();\r\n return () => {\r\n removeBlInfo();\r\n dirtyCleanup();\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function doClose(notifyResult: boolean = false) {\r\n onClose(notifyResult ? blInfoRef.current : null);\r\n }\r\n\r\n function RefreshListView(hblId: number) {\r\n const editModelKey = 'ifms-list-data-/common/joblistview/hbl/oceanImport';\r\n const keyMatch = _.keys(fastStorage).find(x => x.startsWith(editModelKey));\r\n if (keyMatch) {\r\n const listData = _.values(fastStorage[keyMatch]);\r\n listData.filter(x => x.id === hblId)[0].rlsStat = blInfoRef.current?.releaseOrder ? 'Y' : 'N';\r\n listData.filter(x => x.id === hblId)[0].rlsDate = blInfoRef.current?.rlsDate;\r\n jobListContext.updateDataRow(listData.filter(x => x.id === hblId)[0]);\r\n }\r\n }\r\n\r\n async function initialize() {\r\n\r\n const apiResult2 = await appContext.api.checkReleaseOrder(hblId);\r\n let cfsyn = 1;\r\n if (apiResult2 && apiResult2.success) {\r\n const opt = apiResult2.result as CFSManifestReleaseOption;\r\n cfsOption = opt;\r\n if (cfsOption === null || !cfsOption.requestDept || !cfsOption.email)\r\n cfsyn = 0;\r\n }\r\n\r\n const apiResult: ApiResult = await appContext.api.getReleaseHblInfo(hblId, billToId);\r\n\r\n if (!apiResult) {\r\n await showGlobalOkDialog('Cannot load data');\r\n doClose();\r\n return;\r\n }\r\n\r\n const loadedModelObj = new ReleaseHblInfo(apiResult.result);\r\n\r\n // init\r\n loadedModelObj.cft = cbmToCft(loadedModelObj.cbm, 0);\r\n loadedModelObj.rlsd = loadedModelObj.rlsDate !== null;\r\n loadedModelObj.cfsYn = (cfsyn === 1);\r\n\r\n setCleanState(loadedModelObj);\r\n setBlInfo(new ReleaseHblInfo(_.cloneDeep(loadedModelObj)));\r\n\r\n if (blInfoRef.current !== null) {\r\n blInfoRef.current.trackable = true;\r\n }\r\n\r\n setInitialized(true);\r\n }\r\n\r\n async function save() {\r\n if (!blInfo || !blInfoRef.current) {\r\n throw new Error('Invalid operation');\r\n }\r\n\r\n if (!blInfoRef.current.isDirty) {\r\n //await showGlobalOkDialog(

Nothing to save!!!

);\r\n doClose();\r\n return;\r\n }\r\n\r\n const si: SQLInfo[] = [];\r\n\r\n\r\n si.push(new SQLInfo({\r\n tableName: 'T_OIHMAIN',\r\n type: SQLType.Update,\r\n fields: [\r\n new SQLField({ fieldName: \"F_EXPRLS\", propertyName: \"EXPRLS\", value: blInfo.expRls }),\r\n new SQLField({ fieldName: \"F_OBLCOL\", propertyName: \"OBLCOL\", value: blInfo.oblCol }),\r\n new SQLField({ fieldName: \"F_OBLDATE\", propertyName: \"OBLDATE\", value: blInfo.oblDate }),\r\n new SQLField({ fieldName: \"F_RLSDATE\", propertyName: \"RLSDATE\", value: blInfo.rlsDate }),\r\n new SQLField({ fieldName: \"F_RELEASEBY\", propertyName: \"RELEASEBY\", value: blInfo.rlsBy }),\r\n ],\r\n key: new SQLField({ fieldName: \"f_id\", propertyName: \"id\", value: hblId })\r\n }));\r\n\r\n\r\n let oriOblCol = getOriginalValue(blInfoRef.current, \"oblCol\");\r\n if (oriOblCol > 0 && blInfo.oblCol === 0) {\r\n let temp = historyUpdate(\"T_OIHMAIN\", hblId, userid, \"Cancel O/BL Receive\");\r\n if (temp) si.push(temp);\r\n }\r\n if (oriOblCol === 0 && blInfo.oblCol > 0) {\r\n let temp = historyUpdate(\"T_OIHMAIN\", hblId, userid, \"O/BL Receive\");\r\n if (temp) si.push(temp);\r\n }\r\n\r\n let oriExpRls = getOriginalValue(blInfoRef.current, \"expRls\");\r\n if (!oriExpRls && blInfo.expRls) {\r\n let temp = historyUpdate(\"T_OIHMAIN\", hblId, userid, \"Express Released\");\r\n if (temp) si.push(temp);\r\n }\r\n if (oriExpRls && !blInfo.expRls) {\r\n let temp = historyUpdate(\"T_OIHMAIN\", hblId, userid, \"Express Released Cancelled\");\r\n if (temp) si.push(temp);\r\n }\r\n\r\n let oriRlsd = getOriginalValue(blInfoRef.current, \"rlsd\");\r\n if (!oriRlsd && blInfo.rlsd) {\r\n let temp = historyUpdate(\"T_OIHMAIN\", hblId, userid, \"Released\");\r\n if (temp) si.push(temp);\r\n }\r\n if (oriRlsd && !blInfo.rlsd) {\r\n let temp = historyUpdate(\"T_OIHMAIN\", hblId, userid, \"Released Cancelled\");\r\n if (temp) si.push(temp);\r\n }\r\n\r\n const apiResult: ApiResult = await appContext.api.saveReleaseHblInfo(si,\r\n {\r\n pimsLinkId: pimsLinkId,\r\n rlsBy: blInfo.rlsBy,\r\n rlsDate: blInfo.rlsDate\r\n });\r\n\r\n if (apiResult && apiResult.success) {\r\n\r\n //let subCalled = false;\r\n let result = \"\";\r\n\r\n if (blInfo.rlsd) {\r\n if (blInfo.cfsRelOrder) {\r\n const apiResult = await appContext.api.makeCfsRelease({ id: hblId, contact: cfsOption.contact, requestDept: cfsOption.requestDept })\r\n if (apiResult && apiResult.success) {\r\n //FrmPrintPreview.RunEmptyReport(false, opt.Email, \"Release\", vContents, \"T_OIHMAIN\", listItem.Id);\r\n }\r\n //subCalled = true;\r\n }\r\n\r\n if (blInfo.printRelOrder) {\r\n setTimeout(() => {\r\n openNewPage(history, `/oceanImport/releaseOrderTurnover?jobname=${JobNames.OIHbl}&id=${hblId}`, NavigationType.newPage);\r\n }, 1000);\r\n }\r\n result = \"yes\"; // m_bRlsYN\r\n }\r\n\r\n if(result === 'yes'){\r\n // Released now...\r\n await appContext.api.releaseNow({hblId, hblNo});\r\n RefreshListView(hblId);\r\n }\r\n \r\n doClose(true);\r\n } else {\r\n await showGlobalOkDialog(
\r\n

Cannot save

\r\n

{apiResult?.message}

\r\n
);\r\n }\r\n }\r\n\r\n\r\n return (\r\n
\r\n {!!blInfo &&\r\n
\r\n \r\n\r\n
\r\n \r\n Cancel\r\n \r\n \r\n {blInfo.rlsBtnText} \r\n \r\n
\r\n
\r\n }\r\n
\r\n );\r\n}\r\n\r\nfunction HblReleaseInitializedImpl({\r\n blInfo, setBlInfo,\r\n rlsYN,\r\n isView,\r\n updateFlag, setUpdateFlag,\r\n relFlag, setRelFlag,\r\n}: {\r\n blInfo: ReleaseHblInfo,\r\n setBlInfo: (x: Partial) => void,\r\n rlsYN: string,\r\n isView: boolean,\r\n updateFlag: boolean,\r\n setUpdateFlag: (x: Partial) => void,\r\n relFlag: boolean,\r\n setRelFlag: (x: Partial) => void,\r\n}) {\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nconst HblReleasePopup = ({\r\n hblId,\r\n hblNo,\r\n billToId,\r\n rlsYN,\r\n pimsLinkId,\r\n storageKey,\r\n onClose,\r\n isView,\r\n}: {\r\n hblId: number,\r\n hblNo: string,\r\n billToId: number,\r\n rlsYN: string,\r\n pimsLinkId: number,\r\n storageKey: string,\r\n onClose: (x: ReleaseHblInfo | null) => void,\r\n isView: boolean,\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nHblReleasePopup.defaultProps = {\r\n};\r\n\r\nHblReleasePopup.propTypes = {\r\n hblId: PropTypes.number.isRequired,\r\n hblNo: PropTypes.string,\r\n billToId: PropTypes.number,\r\n rlsYN: PropTypes.string,\r\n pimsLinkId: PropTypes.number,\r\n storageKey: PropTypes.string.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n isView: PropTypes.bool.isRequired,\r\n releaseNow: PropTypes.func,\r\n};\r\n\r\nexport default React.memo(HblReleasePopup);\r\n","export default __webpack_public_path__ + \"static/media/Isf_P_circle.148d1d51.svg\";","import React, {cloneElement, ReactNode, useContext, useEffect, useState} from \"react\";\r\nimport {useHistory} from \"react-router\";\r\nimport {Search} from \"../../../filtering\";\r\nimport {oceanImportHblList, TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport {NavigationType, openNewPage} from '../../../util/navigationHelpers';\r\nimport lockBlue from '../../../img/lock_blue.png';\r\nimport lockRed from '../../../img/lock_red.png';\r\nimport cntrBlack from '../../../img/container_tracking-black.svg';\r\nimport cntrWhite from '../../../img/container_tracking-white.svg';\r\nimport iManifestIcon_blue from '../../../img/iManifest-blue.svg';\r\nimport {\r\n DateRenderer,DateTimeRenderer,FloatRenderer,TextAlignLeftWithAddressTooltipRenderer,\r\n NullableCheckboxIconRenderer,TextAlignLeftRenderer,TextAlignRightRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport Select from '../../../ui/Select';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport {ActionButtonItem, borderColors, splitMenuItemsIntoSections} from '../../../ui/ActionButton';\r\nimport MoveTypeDropDown from '../../../uiControls/MoveTypeDropDown';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport JobListViewContext, {IJobListViewContext, RightClickContext} from '../../common/JobListViewContext';\r\nimport ApplicationContext from \"../../../ApplicationContext\";\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport {formatHblType} from './implementation/hblUtils';\r\nimport {JobNames} from \"../../../framework.core/JobNames\";\r\nimport loadInfoAreaInvoiceBillCrDb from '../../../components/common/InfoAreaInvoiceBillCrDb';\r\nimport {OiHblListItem, OihListType} from '../../../fms.data/models/OiHblListItem';\r\nimport * as XCol from \"../../../framework.core/XExportColumn\";\r\nimport IfmsModal from \"../../../ui/IfmsModal\";\r\nimport Menu, {IfmsMenuItem} from \"../../../ui/menu/Menu\";\r\nimport ListViewShortcutMenu from \"../../common/ListViewShortcutMenu\";\r\nimport fastStorage from '../../../fastStorage';\r\nimport HblBlStatusPopup from \"./HblBlStatusPopup\";\r\nimport {ReactComponent as ContainerTrackingIcon} from \"../../../img/container_tracking.svg\";\r\nimport { FmsSubMenu } from \"../../../constants/fmsSubMenu\";\r\nimport { getSelectedSubMenuArgs } from '../../JobListSubMenu';\r\nimport useReportViewer from \"../../../hooks/useReportViewer\";\r\nimport JobListSuntekCommand from '../../common/JobListSuntekCommand';\r\nimport { BillingsRenderer, BillInvoiceCrdbFilterRenderer, RecognizedFilterRenderer, RecognizedRenderer, ShipmentTypeFilterRenderer, \r\n ShipmentTypeRenderer, TrackEventNameRenderer, RQFilterRenderer, \r\n LastEventRenderer} from \"../../common/commonListRenderers\";\r\nimport DeleteHistory from \"../../reports/DeleteHistory\";\r\nimport postal from 'postal';\r\nimport { formatDate, formatDateTime, nowDate } from \"../../../dateUtils\";\r\nimport useSetEditedId from \"../../../hooks/useSetEditedId\";\r\nimport { FmsSecTask } from \"../../../fms.core/constants\";\r\nimport { getFmsGlobal } from \"../../../globals\";\r\nimport BlackInverseButton from '../../../ui/BlackInverseButton';\r\nimport _ from \"lodash\";\r\nimport TrackingRequest from \"../../reports/TrackingRequest\";\r\nimport { SuntekSettings, SystemSettings } from \"../../../ifmsTypes\";\r\nimport { findSecurityTask } from \"../../../util\";\r\nimport { useJournal } from \"../../accounting/general/journal/JournalListView\";\r\nimport useSuntekSettings from \"../../../hooks/useSuntekSettings\";\r\nimport useSystemSettings from \"../../../hooks/useSystemSettings\";\r\nimport HblReleasePopup from \"./HblReleasePopup\";\r\nimport CheckBoxIcon from \"../../../ui/CheckBoxIcon\";\r\nimport PrimaryInverseButton from \"../../../ui/PrimaryInverseButton\";\r\nimport { useAppDispatch } from \"../../../app/hooks\";\r\nimport RecogModal from \"../../../ui/RecogModal\";\r\nimport constants from \"../../../constants\";\r\nimport { Decimalformat, intAsCheckBoxValue, nullableCheckBoxValue } from \"../../common/commonExportFormat\";\r\nimport UseAMSISfIcon from '../../../img/Isf_P_circle.svg';\r\n\r\n// function IndicatorRenderer({data, value, row}:any) {\r\n// const jobListContext = useContext(JobListViewContext);\r\n\r\n// function onIndicatorClick() {\r\n// if (jobListContext.rowExtrasId) {\r\n// return; // Some row is already selected\r\n// }\r\n\r\n// jobListContext.setRowExtrasId(data[row.index].id);\r\n// }\r\n\r\n// let content = ;\r\n\r\n// if (value === 'A') {\r\n// content = A;\r\n// }\r\n// if (value === 'C') {\r\n// content = \r\n// }\r\n// if (value === 'P') {\r\n// content = \"P.;\r\n// } else {\r\n// content = D;\r\n// }\r\n\r\n// return (\r\n//
{content}
\r\n// );\r\n// }\r\n\r\n// function RefNoRenderer({cell, data, row}: any) {\r\n// const jobListContext = useContext(JobListViewContext);\r\n// const history = useHistory();\r\n\r\n// function switchToMbl() {\r\n// jobListContext.setFilterForScreenExternally('/common/joblistview/mbl/oceanImport',\r\n// 'id', '', data[row.index].oiMblId.toString(), 'update', false, true\r\n// );\r\n// openNewPage(history, `/common/joblistview/mbl/oceanImport`, NavigationType.newPage);\r\n// }\r\n\r\n// return (\r\n//
{cell.value}
\r\n// );\r\n// }\r\n\r\nfunction IndicatorRenderer({ data, row }: any) {\r\n const l = data[row.index];\r\n let dataTooltip = '';\r\n const lStatus = (l as any).status as string;\r\n if (lStatus === 'PC') dataTooltip = 'Period Close';\r\n else if (lStatus === 'OC') dataTooltip = 'OP Close';\r\n\r\n /*\r\n function onIndicatorClick() {\r\n if (jobListContext.rowExtrasId) {\r\n return; // Some row is already selected\r\n }\r\n\r\n jobListContext.setRowExtrasId(data[row.index].id);\r\n }\r\n*/\r\n\r\n let content: React.ReactNode = <>;\r\n //if ((l as any).isClosed) {\r\n if (lStatus === 'PC')\r\n content = \"\";\r\n else if (lStatus === 'OC')\r\n content = \"\";\r\n //}\r\n\r\n return (\r\n //
{content}
\r\n
{content}
\r\n );\r\n}\r\n\r\n function OblDateRenderer({ row, cell }: any) {\r\n\r\n const {OblColClickFor} = useHblOperations();\r\n\r\n return
OblColClickFor('oblDate', row.original)}>\r\n {formatDate(cell.value)} \r\n
\r\n}\r\n\r\nfunction OblColRenderer({ row, cell }: any) {\r\n const {OblColClickFor} = useHblOperations();\r\n\r\n return
OblColClickFor('oblStat', row.original)} className=\"ifms-table-default\">{cell.value} 
;\r\n}\r\n\r\nfunction RlsDateRenderer({ row, cell }: any) {\r\n const {RlsColClickFor} = useHblOperations();\r\n\r\n return
RlsColClickFor(row, row.original)}>\r\n {formatDate(cell.value)} \r\n
\r\n}\r\n\r\nfunction RlsStatRenderer({ row, cell }: any) {\r\n const {RlsColClickFor} = useHblOperations();\r\n\r\n return
RlsColClickFor(row, row.original)} className=\"ifms-table-default\">{cell.value} 
;\r\n}\r\n\r\nfunction HblTypeFilterRenderer({value, onChange}:any) {\r\n return (\r\n onChange(e.target.value)}\r\n items={[\r\n { value: 'None', label: 'None'},\r\n { value: 'S', label: 'Standard'},\r\n { value: 'C', label: 'Co-Load'},\r\n ]}\r\n />\r\n );\r\n}\r\n\r\nfunction MoveTypeFilterRenderer({value, onChange}:any) {\r\n return (\r\n onChange(moveType)}\r\n />\r\n );\r\n}\r\n\r\n// function CheckboxFilterRenderer({value, onChange}:any) {\r\n// const boolValue = typeof value === 'boolean' ? value : !!value;\r\n// return \r\n// }\r\n\r\nfunction AmsRenderer({ cell, row, data }: any) {\r\n const l = data[row.index];\r\n const useAms = (l as any).useAms as boolean;\r\n\r\n if (useAms) {\r\n if (cell && cell.value) {\r\n return (\r\n
\"\"
\r\n );\r\n }\r\n } else {\r\n if (cell && cell.value) {\r\n return
\r\n \r\n
; \r\n }\r\n }\r\n\r\n return
x
;\r\n}\r\n\r\nfunction IsfRenderer({ cell, row, data }: any) {\r\n const l = data[row.index];\r\n const useIsf = (l as any).useIsf as boolean;\r\n\r\n if (useIsf) {\r\n if (cell && cell.value) {\r\n return (\r\n
\"\"
\r\n );\r\n }\r\n } else {\r\n if (cell && cell.value) {\r\n return
\r\n \r\n
; \r\n }\r\n }\r\n\r\n return
x
;\r\n}\r\n\r\nfunction InbondRenderer({ cell, row, data }: any) {\r\n const l = data[row.index];\r\n\r\n if (!!l.itNo) {\r\n if (cell && cell.value) {\r\n return (\r\n
{l.itNo}
\r\n );\r\n }\r\n } else {\r\n if (cell && cell.value) {\r\n return
x
;\r\n }\r\n }\r\n return
x
;\r\n}\r\n\r\n// function ChbRenderer({value, data, row}: any) {\r\n// let content: React.ReactNode = <>;\r\n// if (value)\r\n// content = \"\";\r\n// else\r\n// content = \"\";\r\n\r\n// return (\r\n//
{content}
\r\n// );\r\n// }\r\n\r\nfunction ChbRenderer({ cell, row, data }:any) {\r\n const l = data[row.index];\r\n const tooltip = l.chbRspCode === 'x' ? undefined : `${l.chbRspCode} - ${l.chbRspMsg}`;\r\n return
{cell.value}
;\r\n}\r\n\r\nfunction PaidRenderer({value, data, row}: any) {\r\n const {switchToAcctInfo} = useHblOperations();\r\n\r\n const isPaid = value !== 'x';\r\n\r\n if (!isPaid) {\r\n return
{value}
;\r\n }\r\n\r\n return switchToAcctInfo(data[row.index])} style={{width: '100%', lineHeight:'1em'}}>{value}\r\n}\r\n\r\n// function AfterMemoLogButtonCommands() {\r\n// const jobListContext = useContext(JobListViewContext);\r\n// const selectedElement = jobListContext.selectedElement as OiHblListItem;\r\n\r\n// return (\r\n// <>\r\n//   \r\n// window.open(`http://dotnet.freightstream.com/fsutil/customs.asp?mbn=${selectedElement?.mblNo}`)}>\r\n// \"Go\r\n// \r\n// \r\n// )\r\n// }\r\n\r\nfunction TrancationImpactButtonCommands({ userId } : {userId: string}) {\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as OiHblListItem;\r\n const {switchJournal} = useJournal();\r\n const suntekSettings = useSuntekSettings();\r\n \r\n if (!suntekSettings.general?.allowViewJournalOP && !userId.startsWith('@')) {\r\n return null;\r\n }\r\n\r\n return (\r\n switchJournal(JobNames.OIHbl, selectedElement.id)}>\r\n {constants.List_Journal}\r\n \r\n );\r\n}\r\n\r\nfunction HblListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n \r\n const selectedElement = jobListContext.selectedElement as OiHblListItem;\r\n const setSavedEntityJournal = useSetEditedId([JobNames.SlipJournal]);\r\n\r\n const { deleteHbl, edit, view, copy, viewBillings, moveToDeleteHistoryReport, setSavedEntityOim } = useSelectedHblOperations();\r\n\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const { viewReport } = useReportViewer();\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n \r\n const fmsGlobal = getFmsGlobal();\r\n\r\n function hasOpenedViewOrEditFor(id:number) {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/hbl/edit/${id}`) || jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/hbl/view/${id}`);\r\n }\r\n\r\n function doAfterRecog(){\r\n jobListContext.reloadData();\r\n setSavedEntityOim(selectedElement.oiMblId.toString(), false);\r\n setSavedEntityJournal('0', false, false, true);\r\n }\r\n\r\n const onRecogModalClose = () => {\r\n jobListContext.setRecogModalData({ isOpen: false, isSet: false });\r\n }\r\n\r\n function hasOpenedNew() {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/hbl/add`);\r\n }\r\n\r\n const onPopupClose = () => {\r\n setSelectedPopupMenuItem(null);\r\n }\r\n\r\n const onLinkClick = (link: string) => {\r\n setSelectedPopupMenuItem(null);\r\n\r\n if (!selectedElement) {\r\n return;\r\n }\r\n \r\n window.open(link);\r\n }\r\n\r\n async function onSubMenuClick(fmsSubMenu: FmsSubMenu) {\r\n setSelectedPopupMenuItem(null);\r\n\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const args = await getSelectedSubMenuArgs(fmsSubMenu, JobNames.OIHbl, selectedElement, appContext, showGlobalYesNoDialog, showGlobalOkDialog);\r\n if(args){\r\n viewReport(args, \"\", true);\r\n }\r\n }\r\n\r\n\r\n function onPopupCompClick(selectedPopupMenuItem: ActionButtonItem) {\r\n if(selectedPopupMenuItem.label === 'Release Order/Turnover'){\r\n // if(fmsGlobal.NoRelease){\r\n // showGlobalOkDialog('Contact Manager');\r\n // return false;\r\n // }\r\n }\r\n\r\n return true;\r\n }\r\n \r\n const allowedStatuses = ['', 'E', 'D'];\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OIHbl);\r\n \r\n const hasSelectedRow = !!selectedElement;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n \r\n const canBeCopied = hasSelectedRow && !hasOpenedNew() && listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n const canBeAdd = !hasOpenedNew() && listSec?.grantAdd;\r\n\r\n //const AccountingButton = jobListContext.infoAreaContent === 'custom' ? HighlightButton : PrimaryButton;\r\n\r\n const openedByF6 = jobListContext.openedByF6 &&\r\n !!jobListContext.f6Query &&\r\n jobListContext.f6Origin === '/common/joblistview/mbl/oceanImport';\r\n\r\n const openedByMaster = jobListContext.openedByF6 &&\r\n !!jobListContext.f6Query &&\r\n jobListContext.f6Origin === '/oceanImport/mbl/edit/' + jobListContext.f6Query;\r\n\r\n const newUrl = openedByF6 || openedByMaster\r\n ? `/oceanImport/hbl/add?mblRefId=${jobListContext.f6Query}`\r\n : '/oceanImport/hbl/add';\r\n\r\n return (\r\n
\r\n
\r\n  \r\n View \r\n Edit \r\n Delete \r\n Copy\r\n
\r\n
\r\n {constants.List_Billings} \r\n Delete History\r\n
\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.popupComponent && onPopupCompClick(selectedPopupMenuItem) ? (\r\n \r\n {cloneElement(selectedPopupMenuItem.popupComponent!, {onPopupClose})}\r\n \r\n ) : null}\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.subMenu ? onSubMenuClick(selectedPopupMenuItem.subMenu) : null}\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.link ? onLinkClick(selectedPopupMenuItem.link) : null}\r\n {jobListContext.recogModalData?.isOpen ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n}\r\n\r\nfunction HblListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data.map(d => ({\r\n ...d,\r\n //hblType: formatHblType(d.hblType),\r\n bizMode: formatHblType(d.bizMode),\r\n hasCLimit: d.hasCLimit === 'Y', // Backend returns Y/N instead of bool\r\n }));\r\n}\r\n\r\nfunction useHblOperations() {\r\n const history = useHistory();\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const systemSettings = useSystemSettings();\r\n const fmsGlobal = getFmsGlobal();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n\r\n function switchToMblFor(hbl:OiHblListItem|null) {\r\n if (!hbl) {\r\n return;\r\n }\r\n\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/mbl/oceanImport',\r\n //'mblNo', 'Mbl No', hbl.mblNo ?? '', 'updated', false\r\n 'id', 'Ref. #', hbl.oiMblId, 'update', false, true, null, 'refNo', hbl.refNo, false,true);\r\n openNewPage(history, `/common/joblistview/mbl/oceanImport`, NavigationType.newPage);\r\n }\r\n\r\n function switchToContainerFor(hbl:OiHblListItem|null) {\r\n if (!hbl) {\r\n return;\r\n }\r\n\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/OICN/oceanImport', \r\n //'refNo', 'Ref No', mbl.refNo ?? '', 'updated', false\r\n // 'refNo', '', mbl.refNo ?? '', 'update', false);\r\n 'oiMblId', 'Ref. #', hbl.oiMblId, 'update', false, true, null, 'refNo', hbl.refNo, false, true);\r\n openNewPage(history, `/common/joblistview/OICN/oceanImport`, NavigationType.newPage);\r\n }\r\n\r\n\r\n function switchToAmsFor(hbl:OiHblListItem|null) {\r\n if (!hbl) {\r\n return;\r\n }\r\n\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/AMSH/oceanImport', \r\n //'refNo', 'Ref No', mbl.refNo ?? '', 'updated', false\r\n // 'refNo', '', mbl.refNo ?? '', 'update', false);\r\n 'amsLinkId', 'AMS ID', hbl.amsLinkId, 'update', false, true, null,null,null, false, true);\r\n openNewPage(history, `/common/joblistview/AMSH/oceanImport`, NavigationType.newPage);\r\n }\r\n\r\n async function OblColClickFor(fieldName: string, data: any) {\r\n //fieldName: OblStat, OblDate\r\n\r\n // if (fmsGlobal.NoRelease) {\r\n // showGlobalOkDialog('Contact Manager!');\r\n // return;\r\n // }\r\n\r\n let nRet = 0;\r\n\r\n if (data.oblStat === 'N' && fieldName === 'oblStat') {\r\n switch (fmsGlobal.AcmeID3) {\r\n case 'OEC':\r\n case 'CCL':\r\n // chkOblForm\r\n break;\r\n default:\r\n const confirm = await showGlobalYesNoDialog(\r\n
\r\n

Original B/L Received ?

\r\n
\r\n ,false, 0, true);\r\n\r\n if (confirm) {\r\n nRet = 1;\r\n } else {\r\n nRet = 0;\r\n }\r\n break;\r\n }\r\n\r\n if (nRet !== 0) {\r\n let now = nowDate();\r\n const apiResult = await appContext.api.setOblCol(data.id, nRet.toString(), now);\r\n if (apiResult && apiResult.success) {\r\n data.oblStat = 'Origin';\r\n data.oblDate = now;\r\n }\r\n }\r\n }\r\n\r\n if (data.oblStat !== 'N') {\r\n if (data.expRls === true) {\r\n showGlobalOkDialog('EXPRESS RELEASE');\r\n } else {\r\n let tRet = '';\r\n if (data.oblCol === '1') tRet = ' at Origin';\r\n else if (data.oblCol === '2') tRet = ' at Dest.';\r\n if ([\"OEC\", \"CCL\"].indexOf(fmsGlobal.AcmeID3 ?? '') > -1) tRet = '';\r\n\r\n showGlobalOkDialog(`O B/L RECEIVED ON ${formatDate(data.oblDate, systemSettings.dateFormat ?? '')}${tRet}`);\r\n }\r\n }\r\n }\r\n \r\n async function RlsColClickFor(row: any, data:any) {\r\n // if (fmsGlobal.NoRelease) {\r\n // showGlobalOkDialog('Contact Manager!');\r\n // return;\r\n // }\r\n\r\n if (fmsGlobal.CashierRelease && data.rlsStat !== 'y') {\r\n jobListContext.setRowExtrasId(data.id);\r\n } else if (data.rlsStat === 'Y') {\r\n showGlobalOkDialog(`Released on ${formatDate(data.rlsDate, systemSettings.dateFormat ?? '')} by ${data.rlsBy??''}`);\r\n } else {\r\n const doRelease = await showGlobalYesNoDialog(\r\n
\r\n

Do you want to release?

\r\n
,false, 0, true);\r\n\r\n if (doRelease) {\r\n await appContext.api.releaseNow({hblId: data.id, hblNo: data.hblNo});\r\n }\r\n \r\n }\r\n }\r\n\r\n async function switchToAcctInfo(hbl:OiHblListItem|null) {\r\n if (!hbl) {\r\n return;\r\n }\r\n\r\n openNewPage(history, `/accounting/Acct/${JobNames.OIHbl}/${hbl.id}`, NavigationType.newPage);\r\n }\r\n\r\n\r\n return { switchToMblFor, switchToContainerFor, switchToAmsFor, OblColClickFor, RlsColClickFor, switchToAcctInfo};\r\n}\r\n\r\nfunction useSelectedHblOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const history = useHistory();\r\n const { switchToMblFor, switchToContainerFor, switchToAmsFor } = useHblOperations();\r\n\r\n const selectedElement = jobListContext.selectedElement as OiHblListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const channel = postal.channel('ajax');\r\n const dispatch = useAppDispatch();\r\n\r\n const setSavedEntityOim = useSetEditedId([JobNames.OIMbl]);\r\n\r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/oceanImport/hbl/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress.

);\r\n return;\r\n }\r\n\r\n const openedByF6 = jobListContext.openedByF6 &&\r\n !!jobListContext.f6Query &&\r\n jobListContext.f6Origin === '/common/joblistview/mbl/oceanImport';\r\n\r\n const openedByMaster = jobListContext.openedByF6 &&\r\n !!jobListContext.f6Query &&\r\n jobListContext.f6Origin === '/oceanImport/mbl/edit/' + jobListContext.f6Query;\r\n\r\n const newUrl = openedByF6 || openedByMaster\r\n ? `/oceanImport/hbl/add?mblRefId=${jobListContext.f6Query}`\r\n : '/oceanImport/hbl/add';\r\n\r\n openNewPage(history, newUrl, NavigationType.newPage);\r\n }\r\n\r\n async function deleteHbl() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/hbl/edit/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/hbl/view/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close HBL first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/bill/view/OIHB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/bill/edit/OIHB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/invoice/view/OIHB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/invoice/edit/OIHB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/crdb/view/OIHB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/crdb/edit/OIHB/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Bill/Invoice/CrDb first.', false, null, 'warning');\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n ,false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.OIHbl, { id:selectedElement.id, pimsLinkId: selectedElement.pimsLinkId });\r\n \r\n if (apiResult && apiResult.success) {\r\n jobListContext.reloadData();\r\n setSavedEntityOim(selectedElement.oiMblId.toString(), false);\r\n } else {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n await showGlobalOkDialog(message, false, null, 'warning');\r\n }\r\n }\r\n }\r\n\r\n async function viewBillings() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n\r\n const viewUrl = `/oceanImport/viewBillings/hbl/${id}`;\r\n openNewPage(history, viewUrl, NavigationType.newPage);\r\n }\r\n\r\n async function moveToDeleteHistoryReport() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const viewUrl = `/common/deleteHistory?jobname=${JobNames.OIHbl}&id=${id}`;\r\n \r\n openNewPage(history, viewUrl, NavigationType.newPage);\r\n }\r\n\r\n async function viewProfit(viewEdit:boolean) {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n \r\n const editUrl = `/oceanImport/hbl/edit/${id}`;\r\n const viewUrl = `/oceanImport/hbl/view/${id}`;\r\n //let url = `/oceanImport/hbl/${viewEdit ? 'edit' : 'view'}/${id}`;\r\n let editUrlProfitTab = `${editUrl}/4`;\r\n let viewUrlProfitTab = `${viewUrl}/4`;\r\n\r\n if (viewEdit && jobListContext.hasOpenedScreenStartingWithUrlWithoutMe(`/oceanImport/hbl/edit`, editUrl)) {\r\n await showGlobalOkDialog(

Edit operation is already in progress

);\r\n return;\r\n }\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewEdit ? editUrlProfitTab : viewUrlProfitTab, [viewUrl, editUrl]);\r\n }\r\n\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/oceanImport/hbl/edit/${id}`;\r\n const viewUrl = `/oceanImport/hbl/view/${id}`;\r\n\r\n // if (jobListContext.hasOpenedScreenStartingWithUrlWithoutMe('/oceanImport/hbl/edit', editUrl)) {\r\n // await showGlobalOkDialog(

Edit operation is already in progress.

);\r\n // return;\r\n // }\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/oceanImport/hbl/edit/${id}`;\r\n const viewUrl = `/oceanImport/hbl/view/${id}`;\r\n \r\n const listSec = findSecurityTask(appContext, FmsSecTask.OIHbl);\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n async function copy() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/oceanImport/hbl/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress.

);\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n openNewPage(history, `/oceanImport/hbl/add?copyId=${id}`, NavigationType.newPage);\r\n }\r\n\r\n function switchToMbl() {\r\n const selectedElement = jobListContext.selectedElement as OiHblListItem;\r\n switchToMblFor(selectedElement);\r\n }\r\n\r\n function switchToContainer() {\r\n const selectedElement = jobListContext.selectedElement as OiHblListItem;\r\n switchToContainerFor(selectedElement);\r\n }\r\n\r\n function switchToAms() {\r\n const selectedElement = jobListContext.selectedElement as OiHblListItem;\r\n switchToAmsFor(selectedElement);\r\n }\r\n\r\n function recognize(isSet: boolean) {\r\n jobListContext.setRecogModalData({ isOpen: true, isSet: isSet });\r\n }\r\n\r\n return { create, deleteHbl, edit, view, copy, \r\n switchToMbl, switchToContainer, switchToAms, recognize, \r\n viewBillings, moveToDeleteHistoryReport, viewProfit, setSavedEntityOim };\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const { create, deleteHbl, edit, view, copy, switchToMbl, switchToContainer, switchToAms, recognize, viewBillings, viewProfit } = useSelectedHblOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as OiHblListItem;\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const fmsGlobal = getFmsGlobal();\r\n\r\n function openContainerTracking() {\r\n if (selectedElement.trStatus && selectedElement.trStatus !== 'C' && selectedElement.trStatus !== 'failed' && selectedElement.trStatus !== 'Q') {\r\n window.open(`https://quicktrack2.suntekscm.com/?licid=${fmsGlobal.AcmeID}&hbl=${selectedElement.hblNo}&email=${appContext.user?.email}`);\r\n }\r\n }\r\n\r\n function openBLStatus() {\r\n if (jobListContext.rowExtrasId) {\r\n return; // Some row is already selected\r\n }\r\n\r\n jobListContext.setRowExtrasId(selectedElement.id);\r\n }\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OIHbl);\r\n \r\n async function processFileLock() {\r\n const fileLockResult = await appContext.api.opClose(JobNames.OIHbl, selectedElement.id, !selectedElement.isClosed);\r\n if (!!fileLockResult) {\r\n await showGlobalOkDialog(fileLockResult, false,null,'warning');\r\n return;\r\n }\r\n\r\n if (selectedElement.isClosed && jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/hbl/edit/${selectedElement.id}`)) {\r\n const editModelKey = `editOiHbl${selectedElement.id}-/oceanImport/hbl/edit`;\r\n const keyMatch = _.keys(fastStorage).find(x => x.startsWith(editModelKey));\r\n if (keyMatch) {\r\n fastStorage[keyMatch].fileClosed = 0;\r\n fastStorage[keyMatch].closedBy = '';\r\n fastStorage[keyMatch].closeDate = null;\r\n }\r\n }\r\n\r\n jobListContext.reloadData();\r\n }\r\n \r\n let showFileLock = (!selectedElement?.isClosed ? fmsGlobal.CanFileLock : fmsGlobal.CanFileUnlock);\r\n let showCntrTracking = (selectedElement?.trStatus && selectedElement?.trStatus !== 'C' && selectedElement?.trStatus !== 'failed' && selectedElement?.trStatus !== 'Q') ?? false;\r\n const lockCancelRecog = selectedElement?.recognized === 'R' && (selectedElement?.status === 'PC' || selectedElement?.status === 'OC');\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'View', shortcut: 'F9', separator: !listSec?.grantEdit && !listSec?.grantDel },\r\n { label: 'Edit', shortcut: 'F3', separator: !listSec?.grantDel, hidden: !listSec?.grantEdit },\r\n { label: 'Delete', shortcut: '', separator: true, hidden: !listSec?.grantDel },\r\n { label: 'Switch to Container List', shortcut: 'F4', separator: false },\r\n { label: 'Switch to AMS', shortcut: 'Shift+F4', separator: false },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: 'Switch to MBL List', shortcut: 'F6', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n { label: 'Copy', shortcut: 'Ctrl+F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'Bilings', shortcut: 'F7', separator: !listSec?.grantEdit },\r\n { label: 'Profit', shortcut: 'Ctrl+F7', separator: true, hidden: !listSec?.grantEdit },\r\n { label: 'HBL Status Update', shortcut: '', separator: false },\r\n { label: 'Container Tracking', shortcut: '', separator: false, hidden: !showCntrTracking },\r\n { label: !selectedElement?.isClosed ? 'OP Close' : 'OP Open', shortcut: '', separator: false, hidden: !showFileLock },\r\n // { label: 'Recog', shortcut: '', separator: false, disabled : selectedElement?.recognized === 'R', hidden: !fmsGlobal.CanFinalize },\r\n { label: selectedElement?.recognized !== 'R' ? 'Recog' : 'Undo Recog', shortcut: '', separator: false, disabled : lockCancelRecog, hidden: !fmsGlobal.CanFinalize },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n disabled: i?.disabled ?? false,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n deleteHbl();\r\n break;\r\n case 4:\r\n switchToContainer();\r\n break;\r\n case 5:\r\n switchToAms();\r\n break;\r\n case 6:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 7:\r\n switchToMbl();\r\n break;\r\n case 8:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 9:\r\n copy();\r\n break;\r\n case 10:\r\n viewBillings();\r\n break;\r\n case 11:\r\n viewProfit(listSec?.grantEdit ? true : false);\r\n break;\r\n case 12:\r\n openBLStatus();\r\n break;\r\n case 13:\r\n openContainerTracking();\r\n break;\r\n case 14:\r\n processFileLock();\r\n break;\r\n case 15:\r\n recognize(selectedElement?.recognized !== 'R');\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction HblListViewExtras({\r\n hideLogHistory\r\n}: any,\r\n) {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const history = useHistory();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OIHbl);\r\n\r\n const { copy, create, edit, view,switchToMbl, switchToContainer, switchToAms, viewBillings, moveToDeleteHistoryReport, viewProfit } = useSelectedHblOperations();\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n switchToMbl();\r\n } else if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"CTRL+F2\") {\r\n if(listSec?.grantAdd)\r\n copy();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F4\") {\r\n switchToContainer();\r\n } else if (unprocessedFkey === \"SHIFT+F4\") {\r\n switchToAms();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n } else if (unprocessedFkey === \"F7\") {\r\n viewBillings();\r\n } else if (unprocessedFkey === \"CTRL+F7\") {\r\n viewProfit(listSec?.grantEdit ? true : false);\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey:string) {\r\n if (['F6', 'F2', 'CTRL+F2', 'F3', 'F4', 'SHIFT+F4', 'F9', 'F11', 'F8', 'F7', 'CTRL+F7'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n const infoHeadline = `HBL #: ${(jobListContext.selectedElement as OiHblListItem|null)?.hblNo ?? ''}`;\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n hideLogHistory={hideLogHistory}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for HBL List screen\r\n *\r\n * @class HblListView\r\n * @extends {AbstractListView}\r\n */\r\nclass HblListView extends AbstractListView {\r\n getTableSettings(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): TableSettings {\r\n //return this.systemSettings?.showMilestoneInOihList ? oceanImportHblListWithMilestone : oceanImportHblList;\r\n const tsettings = oceanImportHblList;\r\n const useTrackingService = suntekSettings?.company?.trackingService ?? false;\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n let cols: XCol.XExportColumn[] = [];\r\n if (this.systemSettings?.isCanada) {\r\n cols = OiHblListItem.getExportCollection(OihListType.NormalCan, useTrackingService, useBranch);\r\n }\r\n else if (this.systemSettings?.showMilestoneInOihList) {\r\n cols = OiHblListItem.getExportCollection(OihListType.HblInfo, useTrackingService, useBranch);\r\n }\r\n else if (this.suntekSettings?.oceanAir?.useLotNumber){\r\n cols = OiHblListItem.getExportCollection(OihListType.UseLot, useTrackingService, useBranch);\r\n }\r\n else {\r\n cols = OiHblListItem.getExportCollection(OihListType.Normal, useTrackingService, useBranch);\r\n }\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type };\r\n });\r\n return tsettings;\r\n\r\n }\r\n\r\n getTableDomIdSuffix(): string {\r\n let result = ''\r\n if (this.systemSettings?.showMilestoneInOihList)\r\n result = 'milestone'\r\n else if (this.systemSettings?.isCanada)\r\n result = 'canada'\r\n return result;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'updated',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n {\r\n accessor: 'recognized',\r\n renderer: RecognizedFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n {\r\n accessor: 'shipmentType',\r\n renderer: ShipmentTypeFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n {\r\n accessor: 'moveType',\r\n renderer: MoveTypeFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n {\r\n accessor: 'bizMode', //'hblType',\r\n renderer: HblTypeFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n {\r\n accessor: 'invStat', //'inFlag',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n {\r\n accessor: 'billStat', //'biFlag',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n {\r\n accessor: 'crDbStat', //'crdbFlag',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n {\r\n accessor: 'hasCLimit',\r\n renderer: undefined,\r\n searchValueExtractor: (v:any|null|undefined) => v === true ? 'Y' : 'N',\r\n },\r\n {\r\n accessor: 'trStatus',\r\n renderer: RQFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n // {\r\n // accessor: 'amsBlNo',\r\n // renderer: CheckboxFilterRenderer, \r\n // searchValueExtractor: (v: any | null | undefined) => v\r\n // },\r\n // {\r\n // accessor: 'isfNo',\r\n // renderer: CheckboxFilterRenderer, \r\n // searchValueExtractor: (v: any | null | undefined) => v ? 'true' : 'false'\r\n // },\r\n\r\n // { accessor: 'amsDownload', \r\n // renderer: CheckboxFilterRenderer, \r\n // searchValueExtractor: (v:any|null|undefined) => v ? 'true' : 'false' \r\n // },\r\n // { accessor: 'customsClearance', \r\n // renderer: CheckboxFilterRenderer, \r\n // searchValueExtractor: (v:any|null|undefined) => v ? 'true' : 'false' },\r\n // { accessor: 'customsHold', \r\n // renderer: CheckboxFilterRenderer, searchValueExtractor: (v:any|null|undefined) => v ? 'true' : 'false' },\r\n // { accessor: 'examOn', \r\n // renderer: CheckboxFilterRenderer, searchValueExtractor: (v:any|null|undefined) => v ? 'true' : 'false' },\r\n // { accessor: 'examOff', \r\n // renderer: CheckboxFilterRenderer, searchValueExtractor: (v:any|null|undefined) => v ? 'true' : 'false' },\r\n // { accessor: 'fdaHold', \r\n // renderer: CheckboxFilterRenderer, searchValueExtractor: (v:any|null|undefined) => v ? 'true' : 'false' },\r\n // { accessor: 'fdaRelease', \r\n // renderer: CheckboxFilterRenderer, searchValueExtractor: (v:any|null|undefined) => v ? 'true' : 'false' },\r\n // { accessor: 'releaseOrderRequired', \r\n // renderer: CheckboxFilterRenderer, searchValueExtractor: (v:any|null|undefined) => v ? 'true' : 'false' },\r\n // { accessor: 'customsRelease', \r\n // renderer: CheckboxFilterRenderer, searchValueExtractor: (v:any|null|undefined) => v ? 'true' : 'false' },\r\n ];\r\n }\r\n\r\n getRowRenderers(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings, listCount: number, useDarkMode: boolean ): ListRowRenderer[] {\r\n const lType = this.systemSettings?.showMilestoneInOihList ? OihListType.HblInfo : OihListType.Normal\r\n const useTrackingService = suntekSettings?.company?.trackingService ?? false;\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n \r\n return OiHblListItem.getExportCollection(lType, useTrackingService, useBranch).map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if (x.align === XCol.XAlignType.Right) colRenderer.Cell = TextAlignRightRenderer;\r\n if (x.dataIndex === \"status\") {\r\n colRenderer.Cell = IndicatorRenderer;\r\n }\r\n else if (x.dataIndex === \"shipmentType\") colRenderer.Cell = ShipmentTypeRenderer;\r\n else if (x.dataIndex === 'recognized') {\r\n colRenderer.Cell = RecognizedRenderer;\r\n }\r\n else if(x.dataIndex === 'invStat' || x.dataIndex === 'billStat' || x.dataIndex === 'crDbStat') colRenderer.Cell = BillingsRenderer;\r\n else if (x.dataIndex === 'shipperName' || x.dataIndex === 'consigneeName' || x.dataIndex === 'notifyName' || x.dataIndex === 'brokerName')\r\n colRenderer.Cell = TextAlignLeftWithAddressTooltipRenderer\r\n else if (x.dataIndex === \"oblStat\") {\r\n colRenderer.Cell = OblColRenderer;\r\n }\r\n else if (x.dataIndex === \"oblDate\") {\r\n colRenderer.Cell = OblDateRenderer;\r\n }\r\n else if (x.dataIndex === \"rlsStat\") {\r\n colRenderer.Cell = RlsStatRenderer;\r\n }\r\n else if (x.dataIndex === \"rlsDate\") {\r\n colRenderer.Cell = RlsDateRenderer;\r\n }\r\n else if (x.dataIndex === 'lastEvent') colRenderer.Cell = TrackEventNameRenderer;\r\n else if (x.dataIndex === \"useAmsBlNo\") colRenderer.Cell = AmsRenderer;\r\n else if (x.dataIndex === 'useIsfNo') colRenderer.Cell = IsfRenderer;\r\n else if (x.dataIndex === 'chbRspCode') colRenderer.Cell = ChbRenderer;\r\n else if (x.dataIndex === 'payStat') colRenderer.Cell = PaidRenderer;\r\n else if (x.dataIndex === 'itNo') colRenderer.Cell = InbondRenderer;\r\n else if (x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if (x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if (x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n else if (x.type === XCol.XCellType.Double) {\r\n if (x.dataIndex === 'pkgs')\r\n colRenderer.Cell = (props: any) => ;\r\n else if (x.dataIndex === 'cbm')\r\n colRenderer.Cell = (props: any) => ;\r\n else\r\n colRenderer.Cell = (props: any) => ;\r\n }\r\n else if(x.dataIndex === 'trStatus'){\r\n colRenderer.Cell = (props: any) => ;\r\n colRenderer.Header = () =>
Container Tracking
;\r\n }\r\n // debugger\r\n return colRenderer;\r\n });\r\n\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n colRenderer.push({accessor: 'oblDate', changedValue: (value: any)=> { return formatDate(value['oblDate'])}});\r\n colRenderer.push({accessor: 'rlsDate', changedValue: (value: any)=> { return formatDate(value['rlsDate'])}});\r\n colRenderer.push({accessor: 'lastEvent', changedValue: (value: any)=> { return (!!value['lastEvent'] ? value['lastEvent'] + ' ' + formatDateTime(value['lastEventDate']) : '')}});\r\n //colRenderer.push({accessor: 'useAmsBlNo', changedValue: (value: any)=> { return value['useAmsBlNo'] ? 'checked' : ''}});\r\n colRenderer.push({accessor: 'useAmsBlNo', changedValue: (value: any)=> { return nullableCheckBoxValue(value['useAmsBlNo'])}});\r\n colRenderer.push({accessor: 'useIsfNo', changedValue: (value: any)=> { return nullableCheckBoxValue(value['useIsfNo'])}});\r\n colRenderer.push({accessor: 'pkgs', changedValue: (value: any)=> { return value['pkgs']}});\r\n colRenderer.push({accessor: 'cbm', changedValue: (value: any)=> { return Decimalformat(value['cbm'],3)}});\r\n colRenderer.push({accessor: 'lbs', changedValue: (value: any)=> { return Decimalformat(value['lbs'],2)}});\r\n colRenderer.push({accessor: 'kgs', changedValue: (value: any)=> { return Decimalformat(value['kgs'],2)}});\r\n colRenderer.push({accessor: 'doorMove', changedValue: (value: any)=> { return nullableCheckBoxValue(value['doorMove'])}});\r\n colRenderer.push({accessor: 'cClear', changedValue: (value: any)=> { return nullableCheckBoxValue(value['cClear'])}});\r\n colRenderer.push({accessor: 'cHold', changedValue: (value: any)=> { return nullableCheckBoxValue(value['cHold'])}}); \r\n colRenderer.push({accessor: 'trStatus', changedValue: (value: any)=> { \r\n let text = '';\r\n if(value['trType'] === 'C' || value['trType'] === 'M'){\r\n switch(value['trStatus']){\r\n case 'Q':\r\n text = 'Start to Request';\r\n break;\r\n case 'failed':\r\n text = 'Invalid or Error';\r\n break;\r\n case 'tracking_stopped':\r\n text = 'End of Tracking';\r\n break;\r\n default:\r\n text = 'Under Movement';\r\n break;\r\n }\r\n }\r\n return text;\r\n }});\r\n return colRenderer;\r\n }\r\n\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n //const apiResult = await api.getOceanImportHbl(search);\r\n const apiResult = await api.getListItems(JobNames.OIHbl, 'OiHblListItem', \r\n OiHblListItem.calculateSearchParameters(search, OiHblListItem.MapSearchFields, ['shipmentType']), \r\n 1, \r\n search.pageSize);\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return { data: formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n renderCommands(): ReactNode {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton(): ReactNode {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderAfterConfigureButton(): ReactNode {\r\n return <>;\r\n }\r\n\r\n renderExtras(hideLogHistory: boolean): ReactNode {\r\n return \r\n }\r\n\r\n public renderInsideTopRightOpMenu(): React.ReactNode {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n getViewUrlFor(row: OiHblListItem) {\r\n return row && row.id ? `/oceanImport/hbl/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'HBL List';\r\n };\r\n\r\n renderRowExtras(rowId: number | null, context: IJobListViewContext, cell: any): React.ReactNode|null {\r\n if (!rowId) {\r\n return null;\r\n }\r\n\r\n function onClose() {\r\n const storageKey = `oi-hbl-milestone-${rowId}`;\r\n fastStorage[storageKey] = null;\r\n context.setRowExtrasId(null);\r\n }\r\n\r\n function getTrackRequestTitle(trStatus: string) {\r\n return 'Tracking Request' + (!_.isEmpty(trStatus) && trStatus !== 'Q' ? ` - ${trStatus.toUpperCase().replace('_', ' ')}` : '');\r\n }\r\n\r\n function onCloseTracking49Popup() {\r\n const storageKey = `oih-trackrequest-${rowId}`;\r\n fastStorage[storageKey] = null;\r\n context.setRowExtrasId(null);\r\n context.setTrackingRequestEmailList(undefined);\r\n }\r\n\r\n function onCloseHblRlsPopup() {\r\n const storageKey = `oih-hblrls-${rowId}`;\r\n fastStorage[storageKey] = null;\r\n context.setRowExtrasId(null);\r\n }\r\n\r\n const hblElement = (context.data ?? []).find(x => x.id === rowId);\r\n\r\n if(['rlsStat', 'rlsDate'].indexOf(cell.column.dataIndex) > -1){\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n else if (context.trackingRequestEmailList === 'OpenTrackRequestViewMode')\r\n return (\r\n \r\n \r\n \r\n );\r\n else\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderAdditionalCommands() {\r\n return ;\r\n }\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n commandsAfterMemoLogBtn():React.ReactNode{\r\n //#1607\r\n // return \r\n return null;\r\n }\r\n\r\n transactionImpactBtn(userId: string): React.ReactNode {\r\n return \r\n }\r\n\r\n useLogHistory(): boolean {\r\n return true;\r\n }\r\n};\r\n\r\nexport default HblListView;\r\n","import React, {cloneElement, ReactNode, useContext, useEffect, useState} from \"react\";\r\nimport {useHistory} from \"react-router\";\r\nimport {Search} from \"../../../filtering\";\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult, ExportRowRenderer, ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport {NavigationType, openNewPage} from '../../../util/navigationHelpers';\r\nimport lockBlue from '../../../img/lock_blue.png';\r\nimport lockRed from '../../../img/lock_red.png';\r\nimport {\r\n DateRenderer,DateTimeRenderer,FloatRenderer,TextAlignLeftWithAddressTooltipRenderer,\r\n NullableCheckboxIconRenderer,TextAlignLeftRenderer,TextAlignRightRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport Select from '../../../ui/Select';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport {ActionButtonItem, borderColors, splitMenuItemsIntoSections} from '../../../ui/ActionButton';\r\nimport MoveTypeDropDown from '../../../uiControls/MoveTypeDropDown';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport {OceanExportHblPreview, SuntekSettings, SystemSettings} from \"../../../ifmsTypes\";\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport * as XCol from \"../../../framework.core/XExportColumn\";\r\nimport JobListViewContext, {IJobListViewContext, RightClickContext} from '../../common/JobListViewContext';\r\nimport ApplicationContext from \"../../../ApplicationContext\";\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport {JobNames} from \"../../../framework.core/JobNames\";\r\nimport {oceanExportHblList} from \"../tableSettings\";\r\nimport BlackInverseButton from \"../../../ui/BlackInverseButton\";\r\nimport IfmsModal from \"../../../ui/IfmsModal\";\r\nimport fastStorage from \"../../../fastStorage\";\r\nimport HblMilestonePopup from \"./HblMilestonePopup\";\r\nimport ListViewShortcutMenu from \"../../common/ListViewShortcutMenu\";\r\nimport {OeHblListItem, OehListType} from \"../../../fms.data/models/OeHblListItem\";\r\nimport {ReactComponent as ContainerTrackingIcon} from \"../../../img/container_tracking.svg\";\r\nimport ToolboxMenuItem from \"../../../uiControls/ToolboxMenuItem\";\r\nimport Menu, { IfmsMenuItem } from \"../../../ui/menu/Menu\";\r\nimport { FmsSubMenu } from \"../../../constants/fmsSubMenu\";\r\nimport { getSelectedSubMenuArgs } from '../../JobListSubMenu';\r\nimport useReportViewer from \"../../../hooks/useReportViewer\";\r\nimport loadInfoAreaInvoiceBillCrDb from \"../../common/InfoAreaInvoiceBillCrDb\";\r\nimport JobListSuntekCommand from '../../common/JobListSuntekCommand';\r\nimport { BillingsRenderer, BillInvoiceCrdbFilterRenderer, RecognizedFilterRenderer, RecognizedRenderer, ShipmentTypeFilterRenderer, ShipmentTypeRenderer, TrackEventNameRenderer } from \"../../common/commonListRenderers\";\r\nimport DeleteHistory from \"../../reports/DeleteHistory\";\r\nimport postal from 'postal';\r\nimport { getFmsGlobal } from \"../../../globals\";\r\nimport useSetEditedId from \"../../../hooks/useSetEditedId\";\r\nimport { FmsSecTask } from \"../../../fms.core/constants\";\r\nimport { findSecurityTask } from \"../../../util\";\r\nimport { useJournal } from \"../../accounting/general/journal/JournalListView\";\r\nimport useSuntekSettings from \"../../../hooks/useSuntekSettings\";\r\nimport PrimaryInverseButton from \"../../../ui/PrimaryInverseButton\";\r\nimport _ from \"lodash\";\r\nimport RecogModal from \"../../../ui/RecogModal\";\r\nimport constants from \"../../../constants\";\r\nimport { formatShipmentType } from \"../../common/utils/formatUtils\";\r\nimport { formatDateTime } from \"../../../dateUtils\";\r\nimport { Decimalformat } from \"../../common/commonExportFormat\";\r\n\r\n// function IndicatorRenderer({value, data, row}: any) {\r\n// const jobListContext = useContext(JobListViewContext);\r\n// let content:React.ReactNode | null = null;\r\n\r\n// if(!value) {\r\n// content = D;\r\n// }else{\r\n// content = {value};\r\n// }\r\n\r\n// function onIndicatorClick() {\r\n// if (jobListContext.rowExtrasId) {\r\n// return; // Some row is already selected\r\n// }\r\n\r\n// jobListContext.setRowExtrasId(data[row.index].id);\r\n// }\r\n\r\n// return (\r\n//
{content}
\r\n// );\r\n// }\r\nfunction IndicatorRenderer({ data, row }: any) {\r\n const l = data[row.index];\r\n let dataTooltip = '';\r\n const lStatus = (l as any).status as string;\r\n if (lStatus === 'PC') dataTooltip = 'Period Close';\r\n else if (lStatus === 'OC') dataTooltip = 'OP Close';\r\n\r\n // function onIndicatorClick() {\r\n // if (jobListContext.rowExtrasId) {\r\n // return; // Some row is already selected\r\n // }\r\n\r\n // jobListContext.setRowExtrasId(data[row.index].id);\r\n // }\r\n\r\n let content: React.ReactNode = <>;\r\n //if ((l as any).isClosed) {\r\n if (lStatus === 'PC')\r\n content = \"\";\r\n else if (lStatus === 'OC')\r\n content = \"\";\r\n //}\r\n\r\n return (\r\n //
{content}
\r\n
{content}
\r\n );\r\n}\r\n\r\n// function MblNoRenderer({data, row, value}: any) {\r\n// const {switchToMblFor} = useHblOperations();\r\n\r\n// return
\r\n//
switchToMblFor(data[row.index])}>\r\n// {value}\r\n//
\r\n//
;\r\n// }\r\n\r\n\r\nfunction HblTypeFilterRenderer({value, onChange}: any) {\r\n return (\r\n onChange(e.target.value)}\r\n items={[\r\n {value: 'None', label: 'None'},\r\n {value: 'S', label: 'Standard'},\r\n {value: 'C', label: 'Co-Load'},\r\n ]} \r\n />\r\n );\r\n}\r\n\r\nfunction MoveTypeFilterRenderer({value, onChange}: any) {\r\n return (\r\n onChange(moveType)}\r\n />\r\n );\r\n}\r\n\r\nfunction PaidRenderer({value, data, row}: any) {\r\n const {switchToAcctInfo} = useHblOperations();\r\n\r\n const isPaid = value !== 'x';\r\n\r\n if (!isPaid) {\r\n return
{value}
;\r\n }\r\n\r\n return switchToAcctInfo(data[row.index])} style={{width: '100%', lineHeight:'1em'}}>{value}\r\n}\r\n\r\n// function AfterMemoLogButtonCommands() {\r\n// const jobListContext = useContext(JobListViewContext);\r\n// const selectedElement = jobListContext.selectedElement as OeHblListItem;\r\n\r\n// return (\r\n// <>\r\n//   \r\n// window.open(`http://dotnet.freightstream.com/fsutil/customs.asp?mbn=${selectedElement?.mblNo}`)}>\r\n// \"Go\r\n// \r\n// \r\n// )\r\n// }\r\n\r\nfunction TrancationImpactButtonCommands({ userId } : {userId: string}) {\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as OeHblListItem;\r\n const {switchJournal} = useJournal();\r\n const suntekSettings = useSuntekSettings();\r\n \r\n if (!suntekSettings.general?.allowViewJournalOP && !userId.startsWith('@')) {\r\n return null;\r\n }\r\n\r\n return (\r\n switchJournal(JobNames.OEHbl, selectedElement.id)}>\r\n {constants.List_Journal}\r\n \r\n );\r\n}\r\n\r\nfunction HblListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n \r\n const selectedElement = jobListContext.selectedElement;\r\n const setSavedEntityJournal = useSetEditedId([JobNames.SlipJournal]);\r\n\r\n const { deleteHbl, edit, view, copy, viewBillings, moveToDeleteHistoryReport, setSavedEntityOem } =\r\n useSelectedHblOperations();\r\n\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const { viewReport } = useReportViewer();\r\n const appContext = useContext(ApplicationContext);\r\n \r\n function hasOpenedViewOrEditFor(id: number) {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/oceanExport/hbl/edit/${id}`) || jobListContext.hasOpenedScreenStartingWithUrl(`/oceanExport/hbl/view/${id}`);\r\n }\r\n\r\n function hasOpenedNew() {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/oceanExport/hbl/add`);\r\n }\r\n\r\n function doAfterRecog(){\r\n jobListContext.reloadData();\r\n setSavedEntityOem(selectedElement.oeMblId?.toString(), false);\r\n setSavedEntityJournal('0', false, false, true);\r\n }\r\n\r\n const onRecogModalClose = () => {\r\n jobListContext.setRecogModalData({ isOpen: false, isSet: false });\r\n }\r\n\r\n const onPopupClose = () => {\r\n setSelectedPopupMenuItem(null);\r\n }\r\n\r\n async function onSubMenuClick(fmsSubMenu: FmsSubMenu) {\r\n setSelectedPopupMenuItem(null);\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const args = await getSelectedSubMenuArgs(fmsSubMenu, JobNames.OEHbl, selectedElement, appContext, showGlobalYesNoDialog, showGlobalOkDialog);\r\n if(args){\r\n viewReport(args, \"\", true);\r\n }\r\n }\r\n\r\n const onLinkClick = (link: string) => {\r\n setSelectedPopupMenuItem(null);\r\n\r\n if (!selectedElement) {\r\n return;\r\n }\r\n \r\n window.open(link);\r\n }\r\n\r\n const allowedStatuses = ['', 'E', 'D'];\r\n \r\n const listSec = findSecurityTask(appContext, FmsSecTask.OEHbl);\r\n\r\n const hasSelectedRow = !!selectedElement;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n const canBeCopied = hasSelectedRow && !hasOpenedNew()&& listSec?.grantAdd;\r\n const canBeAdd = !hasOpenedNew() && listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n\r\n\r\n const openedByF6 = jobListContext.openedByF6 &&\r\n !!jobListContext.f6Query &&\r\n jobListContext.f6Origin === '/common/joblistview/oeMbl/oceanExport';\r\n\r\n const openedByMaster = jobListContext.openedByF6 &&\r\n !!jobListContext.f6Query &&\r\n jobListContext.f6Origin === '/oceanExport/mbl/edit/' + jobListContext.f6Query;\r\n\r\n const newUrl = openedByF6 || openedByMaster\r\n ? `/oceanExport/hbl/add?mblRefId=${jobListContext.f6Query}`\r\n : '/oceanExport/hbl/add';\r\n \r\n\r\n return (\r\n
\r\n
\r\n  \r\n View \r\n Edit \r\n Delete \r\n Copy\r\n
\r\n
\r\n {constants.List_Billings} \r\n Delete History\r\n
\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.popupComponent ? (\r\n \r\n {cloneElement(selectedPopupMenuItem.popupComponent!, {onPopupClose})}\r\n \r\n ) : null}\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.subMenu ? onSubMenuClick(selectedPopupMenuItem.subMenu) : null}\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.link ? onLinkClick(selectedPopupMenuItem.link) : null}\r\n {jobListContext.recogModalData?.isOpen ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n}\r\n\r\nfunction HblListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\n/*function formatData(data: Array) {\r\n return data.map(d => ({\r\n ...d,f\r\n hblType: formatHblType(d.hblType),\r\n shipmentType: formatShipmentType(d.shipmentType ?? ''),\r\n }));\r\n}*/\r\n\r\nfunction useHblOperations() {\r\n const history = useHistory();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n function switchToMblFor(hbl: OceanExportHblPreview | null) {\r\n if (!hbl) {\r\n return;\r\n }\r\n\r\n if (hbl.oeMblId) {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/oeMbl/oceanExport', \r\n 'id', 'Ref. #', hbl.oeMblId ?? 0, 'updated', false, true, null, 'refNo', hbl.refNo, false,true);\r\n }\r\n\r\n openNewPage(history, `/common/joblistview/oeMbl/oceanExport`, NavigationType.newPage);\r\n }\r\n\r\n function switchToBookingFor(hbl: OceanExportHblPreview | null) {\r\n if (!hbl) {\r\n return;\r\n }\r\n\r\n if (hbl.hblNo) {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/oeBooking/oceanExport', \r\n 'hblNo', 'HBL #', hbl.hblNo, 'updated', false, true);\r\n }\r\n else if (hbl.hBookingNo) {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/oeBooking/oceanExport', \r\n 'hBookingNo', 'Booking #', hbl.hBookingNo, 'updated', false, true);\r\n }\r\n \r\n openNewPage(history, `/common/joblistview/oeBooking/oceanExport`, NavigationType.newPage);\r\n }\r\n\r\n async function switchToAcctInfo(hbl:OeHblListItem|null) {\r\n if (!hbl) {\r\n return;\r\n }\r\n\r\n openNewPage(history, `/accounting/Acct/${JobNames.OEHbl}/${hbl.id}`, NavigationType.newPage);\r\n }\r\n return {switchToMblFor, switchToBookingFor, switchToAcctInfo};\r\n}\r\n\r\nfunction useSelectedHblOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const history = useHistory();\r\n const {switchToMblFor, switchToBookingFor} = useHblOperations();\r\n\r\n const selectedElement = jobListContext.selectedElement as OeHblListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const channel = postal.channel('ajax');\r\n \r\n const setSavedEntityOem = useSetEditedId([JobNames.OEMbl]);\r\n\r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/oceanExport/hbl/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n const openedByF6 = jobListContext.openedByF6 &&\r\n !!jobListContext.f6Query &&\r\n jobListContext.f6Origin === '/common/joblistview/oeMbl/oceanExport';\r\n\r\n const openedByMaster = jobListContext.openedByF6 &&\r\n !!jobListContext.f6Query &&\r\n jobListContext.f6Origin === '/oceanExport/mbl/edit/' + jobListContext.f6Query;\r\n\r\n const newUrl = openedByF6 || openedByMaster\r\n ? `/oceanExport/hbl/add?mblRefId=${jobListContext.f6Query}`\r\n : '/oceanExport/hbl/add';\r\n\r\n openNewPage(history, newUrl, NavigationType.newPage);\r\n\r\n }\r\n\r\n async function deleteHbl() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/oceanExport/hbl/edit/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/oceanExport/hbl/view/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close HBL first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/bill/view/OEHB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/bill/edit/OEHB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/invoice/view/OEHB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/invoice/edit/OEHB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/crdb/view/OEHB/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/crdb/edit/OEHB/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Bill/Invoice/CrDb first',false,null,'warning');\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n ,false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.OEHbl, { id:selectedElement.id, pimsLinkId: selectedElement.pimsLinkId });\r\n if (apiResult && apiResult.success) {\r\n jobListContext.reloadData();\r\n setSavedEntityOem(selectedElement.oeMblId?.toString(), false);\r\n } else {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n await showGlobalOkDialog(message, false, null,'warning');\r\n }\r\n }\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n \r\n const id = selectedElement.id;\r\n const editUrl = `/oceanExport/hbl/edit/${id}`;\r\n const viewUrl = `/oceanExport/hbl/view/${id}`;\r\n\r\n // if (jobListContext.hasOpenedScreenStartingWithUrlWithoutMe('/oceanExport/hbl/edit', editUrl)) {\r\n // await showGlobalOkDialog(

Edit operation is already in progress

);\r\n // return;\r\n // }\r\n \r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function viewBillings() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const viewUrl = `/oceanExport/viewBillings/hbl/${id}`;\r\n\r\n openNewPage(history, viewUrl, NavigationType.newPage);\r\n }\r\n \r\n async function moveToDeleteHistoryReport() {\r\n if (!selectedElement) return;\r\n\r\n const id = selectedElement.id;\r\n const viewUrl = `/common/deleteHistory?jobname=${JobNames.OEHbl}&id=${id}`;\r\n\r\n openNewPage(history, viewUrl, NavigationType.newPage);\r\n }\r\n\r\n async function viewProfit(viewEdit: boolean) {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/oceanExport/hbl/edit/${id}`;\r\n const viewUrl = `/oceanExport/hbl/$view/${id}`;\r\n \r\n let editUrlProfitTab = `${editUrl}/5`;\r\n let viewUrlProfitTab = `${viewUrl}/5`;\r\n\r\n if (viewEdit && jobListContext.hasOpenedScreenStartingWithUrlWithoutMe(`/oceanExport/hbl/edit`, editUrl)) {\r\n await showGlobalOkDialog(

Edit operation is already in progress

);\r\n return;\r\n }\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewEdit ? editUrlProfitTab : viewUrlProfitTab, [viewUrl, editUrl]);\r\n }\r\n\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/oceanExport/hbl/edit/${id}`;\r\n const viewUrl = `/oceanExport/hbl/view/${id}`;\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OEHbl);\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n async function copy() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/oceanExport/hbl/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n openNewPage(history, `/oceanExport/hbl/add?copyId=${id}`, NavigationType.newPage);\r\n }\r\n\r\n function switchToMbl() {\r\n const selectedElement = jobListContext.selectedElement as OceanExportHblPreview;\r\n switchToMblFor(selectedElement);\r\n }\r\n\r\n function switchToBooking() {\r\n const selectedElement = jobListContext.selectedElement as OceanExportHblPreview;\r\n switchToBookingFor(selectedElement);\r\n }\r\n\r\n function recognize(isSet: boolean) {\r\n jobListContext.setRecogModalData({ isOpen: true, isSet: isSet });\r\n }\r\n\r\n return {\r\n create,\r\n deleteHbl,\r\n edit,\r\n view,\r\n copy,\r\n switchToMbl,\r\n switchToBooking,\r\n recognize,\r\n viewBillings,\r\n moveToDeleteHistoryReport,\r\n viewProfit,\r\n setSavedEntityOem,\r\n };\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const { create, deleteHbl, edit, view, copy, switchToMbl, switchToBooking, recognize, viewBillings, viewProfit } = useSelectedHblOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as any;\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OEHbl);\r\n const fmsGlobal = getFmsGlobal();\r\n\r\n async function processFileLock() {\r\n const fileLockResult = await appContext.api.opClose(JobNames.OEHbl, selectedElement.id, !selectedElement.isClosed);\r\n if (!!fileLockResult) {\r\n await showGlobalOkDialog(fileLockResult,false,null,'warning');\r\n return;\r\n }\r\n\r\n if (selectedElement.isClosed && jobListContext.hasOpenedScreenStartingWithUrl(`/oceanExport/hbl/edit/${selectedElement.id}`)) {\r\n const editModelKey = `editOeHbl${selectedElement.id}-/oceanExport/hbl/edit`;\r\n const keyMatch = _.keys(fastStorage).find(x => x.startsWith(editModelKey));\r\n if (keyMatch) {\r\n fastStorage[keyMatch].fileClosed = 0;\r\n fastStorage[keyMatch].closedBy = '';\r\n fastStorage[keyMatch].closeDate = null;\r\n }\r\n }\r\n\r\n jobListContext.reloadData();\r\n }\r\n\r\n let showFileLock = (!selectedElement?.isClosed ? getFmsGlobal().CanFileLock : getFmsGlobal().CanFileUnlock);\r\n const lockCancelRecog = selectedElement?.recognized === 'R' && (selectedElement?.status === 'PC' || selectedElement?.status === 'OC');\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'View', shortcut: 'F9', separator: !listSec?.grantEdit && !listSec?.grantDel },\r\n { label: 'Edit', shortcut: 'F3', separator: !listSec?.grantDel, hidden: !listSec?.grantEdit },\r\n { label: 'Delete', shortcut: '', separator: true, hidden: !listSec?.grantDel },\r\n { label: 'Switch to Booking List', shortcut: 'F4', separator: false },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: 'Switch to MBL List', shortcut: 'F6', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n { label: 'Copy', shortcut: 'Ctrl+F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'Bilings', shortcut: 'F7', separator: !listSec?.grantEdit },\r\n { label: 'Profit', shortcut: 'Ctrl+F7', separator: true, hidden: !listSec?.grantEdit },\r\n // { label: 'View B/L Activity Status', shortcut: '', separator: false },\r\n { label: !selectedElement?.isClosed ? 'OP Close' : 'OP Open', shortcut: '', separator: false, hidden: !showFileLock },\r\n // { label: 'Recog', shortcut: '', separator: false, disabled : selectedElement?.recognized === 'R', hidden: !getFmsGlobal().CanFinalize },\r\n { label: selectedElement?.recognized !== 'R' ? 'Recog' : 'Undo Recog', shortcut: '', separator: false, disabled : lockCancelRecog, hidden: !getFmsGlobal().CanFinalize },\r\n ];\r\n \r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n disabled: i?.disabled ?? false,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n \r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n deleteHbl();\r\n break;\r\n case 4:\r\n switchToBooking();\r\n break;\r\n case 5:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 6:\r\n switchToMbl();\r\n break;\r\n case 7:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 8:\r\n copy();\r\n break;\r\n case 9:\r\n viewBillings();\r\n break;\r\n case 10:\r\n viewProfit(listSec?.grantEdit ? true : false);\r\n break;\r\n case 11:\r\n processFileLock();\r\n break;\r\n case 12:\r\n recognize(selectedElement?.recognized !== 'R');\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction HblListViewExtras({\r\n hideLogHistory\r\n}: any,\r\n) {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const history = useHistory();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OEHbl);\r\n\r\n const {copy, create, edit, view, switchToMbl, switchToBooking, viewBillings, viewProfit} = useSelectedHblOperations();\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n switchToMbl();\r\n } else if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n } else if (unprocessedFkey === \"F4\") {\r\n switchToBooking();\r\n } else if (unprocessedFkey === \"CTRL+F2\") {\r\n copy();\r\n } else if (unprocessedFkey === \"F7\") {\r\n viewBillings();\r\n } else if (unprocessedFkey === \"CTRL+F7\") {\r\n viewProfit(listSec?.grantEdit ? true : false);\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F6', 'F2', 'CTRL+F2', 'F3', 'F4', 'F9', 'F11', 'F8', 'F7', 'CTRL+F7'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n const infoHeadline = `HBL #: ${(jobListContext.selectedElement as OeHblListItem|null)?.hblNo ?? ''}`;\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n hideLogHistory={hideLogHistory}\r\n />\r\n );\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data.map(d => ({\r\n ...d,\r\n }));\r\n}\r\n\r\n/**\r\n * Concrete implementation for HBL List screen\r\n *\r\n * @class HblListView\r\n * @extends {AbstractListView}\r\n */\r\nclass HblListView extends AbstractListView {\r\n getTableSettings(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): TableSettings {\r\n const tsettings = oceanExportHblList;\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n const cols = OeHblListItem.getExportCollection(OehListType.Normal, useBranch);\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'updated',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n {\r\n accessor: 'recognized',\r\n renderer: RecognizedFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n {\r\n accessor: 'shipmentType',\r\n renderer: ShipmentTypeFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'moveType',\r\n renderer: MoveTypeFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'hblType',\r\n renderer: HblTypeFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'invStat',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'billStat',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'crDbStat',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n ];\r\n }\r\n\r\n getRowRenderers(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): ListRowRenderer[] {\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n\r\n return OeHblListItem.getExportCollection(OehListType.Normal, useBranch).map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.align === XCol.XAlignType.Right) colRenderer.Cell = TextAlignRightRenderer;\r\n if (x.dataIndex === \"status\") {\r\n colRenderer.Cell = IndicatorRenderer;\r\n }\r\n else if(x.dataIndex === \"shipmentType\") colRenderer.Cell = ShipmentTypeRenderer;\r\n else if(x.dataIndex === \"refNo\") colRenderer.Cell = TextAlignLeftRenderer;\r\n else if(x.dataIndex === \"amsBlNo\") colRenderer.Cell = TextAlignLeftRenderer;\r\n else if (x.dataIndex === 'recognized') {\r\n colRenderer.Cell = RecognizedRenderer;\r\n }\r\n else if(x.dataIndex === 'invStat' || x.dataIndex === 'billStat' || x.dataIndex === 'crDbStat') colRenderer.Cell = BillingsRenderer;\r\n else if (x.dataIndex === 'shipperName' || x.dataIndex === 'consigneeName' || x.dataIndex === 'notifyName') colRenderer.Cell = TextAlignLeftWithAddressTooltipRenderer\r\n else if(x.dataIndex ==='lastEvent') colRenderer.Cell = TrackEventNameRenderer;\r\n else if (x.dataIndex === 'payStat') colRenderer.Cell = PaidRenderer;\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n else if (x.type === XCol.XCellType.Double) {\r\n if (x.dataIndex === 'pkgs')\r\n colRenderer.Cell = (props: any) => ;\r\n else if(x.dataIndex === 'kgs' )\r\n colRenderer.Cell = (props: any) => ;\r\n else if(x.dataIndex === 'cbm' )\r\n colRenderer.Cell = (props: any) => ;\r\n else\r\n colRenderer.Cell = FloatRenderer;\r\n }\r\n \r\n // debugger\r\n return colRenderer;\r\n });\r\n\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({ accessor: 'status', changedValue: (value: any) => { return value['status'] === 'PC' ? 'Period Close' : '' } });\r\n colRenderer.push({ accessor: 'pkgs', changedValue: (value: any) => { return value['pkgs'] } });\r\n colRenderer.push({ accessor: 'cbm', changedValue: (value: any) => { return Decimalformat(value['cbm'],3) } });\r\n colRenderer.push({ accessor: 'lbs', changedValue: (value: any) => { return Decimalformat(value['lbs'],2) } });\r\n colRenderer.push({ accessor: 'kgs', changedValue: (value: any) => { return Decimalformat(value['kgs'],2) } });\r\n colRenderer.push({ accessor: 'shipmentType', changedValue: (value: any) => { return formatShipmentType(value['shipmentType']) } });\r\n colRenderer.push({ accessor: 'lastEvent', changedValue: (value: any) => { return (!!value['lastEvent'] ? value['lastEvent'] + ' ' + formatDateTime(value['lastEventDate']) : '') } });\r\n return colRenderer;\r\n }\r\n\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(\r\n JobNames.OEHbl,\r\n 'OeHblListItem',\r\n OeHblListItem.calculateSearchParameters(search, OeHblListItem.MapSearchFields, ['shipmentType', 'invStat', 'billStat', 'crDbStat']),\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n return {data: formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n renderCommands(): ReactNode {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton(): ReactNode {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderAfterConfigureButton(): ReactNode {\r\n return <>\r\n }\r\n\r\n renderExtras(hideLogHistory: boolean): ReactNode {\r\n return \r\n }\r\n\r\n public renderInsideTopRightOpMenu(): React.ReactNode {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n getViewUrlFor(row: OceanExportHblPreview) {\r\n return row && row.id ? `/oceanExport/hbl/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'HBL List';\r\n };\r\n\r\n renderRowExtras(rowId: number | null, context: IJobListViewContext): React.ReactNode|null {\r\n if (!rowId) {\r\n return null;\r\n }\r\n\r\n const storageKey = `oe-hbl-milestone-${rowId}`;\r\n\r\n function onClose() {\r\n fastStorage[storageKey] = null;\r\n context.setRowExtrasId(null);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderAdditionalCommands() {\r\n return ;\r\n }\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n commandsAfterMemoLogBtn():React.ReactNode{\r\n //#1607\r\n // return \r\n return null;\r\n }\r\n\r\n transactionImpactBtn(userId: string): React.ReactNode {\r\n return \r\n }\r\n \r\n useLogHistory(): boolean {\r\n return true;\r\n }\r\n};\r\n\r\nexport default HblListView;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class OceanQuoteListItem extends SearchModelBase {\r\n id: number = 0;\r\n quoteNo: string = '';\r\n quoteDate: string | null = null;\r\n fromQuoteDate: string | null = null;\r\n toQuoteDate: string | null = null;\r\n operator: string = '';\r\n serviceType: string = '';\r\n hblNo: string = '';\r\n hBookingNo: string = '';\r\n sName: string = '';\r\n commodity: string = '';\r\n plofRec: string = '';\r\n lPort: string = '';\r\n discharge: string = '';\r\n finalDest: string = '';\r\n plofDel: string = '';\r\n createdAt: string | null = null;\r\n agentId: number = 0;\r\n customerId: number = 0;\r\n u1ID: string = '';\r\n u2ID: string = '';\r\n u2Date: string | null = null;\r\n status: string = '';\r\n mblRefNo: string = '';\r\n validBy: string | null = null;\r\n fromValidBy: string | null = null;\r\n toValidBy: string | null = null;\r\n sManID: string = '';\r\n contactName: string = '';\r\n fromCreatedAt: string | null = null;\r\n toCreatedAt: string | null = null;\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n opType: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true, sortable: false}),\r\n XCol.Create({ col: 1, text: 'Date', width: 75, dataIndex: 'quoteDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 2, text: 'Quotation #', width: 100, dataIndex: 'quoteNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 3, text: 'Quote By', width: 80, dataIndex: 'operator'}),\r\n XCol.Create({ col: 4, text: 'Valid By', width: 75, dataIndex: 'validBy', type: XCol.XCellType.Date}),\r\n XCol.Create({ col: 5, text: 'Customer', width: 120, dataIndex: 'sName'}),\r\n XCol.Create({ col: 6, text: 'Contact', width: 120, dataIndex: 'contactName'}),\r\n XCol.Create({ col: 7, text: 'Booking #', width: 120, dataIndex: 'hBookingNo'}),\r\n // XCol.Create({ col: 8, text: 'Ref. No(MBL)', width: 100, dataIndex: 'mblRefNo'}),\r\n XCol.Create({ col: 9, text: 'Move Type', width: 80, dataIndex: 'serviceType', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 10, text: 'Commodity', width: 150, dataIndex: 'commodity'}),\r\n XCol.Create({ col: 11, text: 'Place of Receipt', width: 120, dataIndex: 'plofRec', visible: false}),\r\n XCol.Create({ col: 12, text: 'Loading Port', width: 120, dataIndex: 'lPort'}),\r\n XCol.Create({ col: 13, text: 'Discharge Port', width: 120, dataIndex: 'discharge'}),\r\n XCol.Create({ col: 14, text: 'Place of Delivery', width: 120, dataIndex: 'plofDel'}),\r\n XCol.Create({ col: 15, text: 'Final Destination', width: 120, dataIndex: 'finalDest'}),\r\n XCol.Create({ col: 16, text: 'Salesperson', width: 80, dataIndex: 'sManID'}),\r\n XCol.Create({ col: 17, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime}),\r\n XCol.Create({ col: 18, text: 'Create by', width: 80, dataIndex: 'u1ID'}),\r\n XCol.Create({ col: 19, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime}),\r\n XCol.Create({ col: 20, text: 'Update by', width: 80, dataIndex: 'u2ID'}),\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: OceanQuoteListItem.prototype.createdAt, orderByAscending: false };\r\n\r\n public static formatData(data: OceanQuoteListItem[]) {\r\n return data.map((d: OceanQuoteListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapOeSearchFields: {[key: string]: {[key: string]: string}} = {\r\n quoteDate: {from: 'fromQuoteDate', to: 'toQuoteDate'},\r\n validBy: {from: 'fromValidBy', to: 'toValidBy'},\r\n createdAt: {from: 'fromCreatedAt', to: 'toCreatedAt'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n }\r\n}\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\nimport {ApplicableTableSettings, infoAreaBicTable, TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport constants from '../../../constants';\r\nimport MoveTypeDropDown from \"../../../uiControls/MoveTypeDropDown\";\r\nimport {Search} from \"../../../filtering\";\r\nimport {NavigationType, openNewPage} from '../../../util/navigationHelpers';\r\nimport {\r\n DateRenderer,DateTimeRenderer,NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport CurrencyLabel from '../../../uiControls/CurrencyLabel';\r\nimport SmartTable from '../../../uiControls/SmartTable';\r\nimport {JobNames} from \"../../../framework.core/JobNames\";\r\nimport {oceanExportQuotationList} from \"../tableSettings\";\r\nimport {OceanQuoteListItem} from \"../../../fms.data/models/OceanQuoteListItem\";\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport {QuotationArgs} from '../../../fms.report/args';\r\nimport {DocumentType} from '../../../framework.core/DocumentType';\r\nimport useReportViewer from '../../../hooks/useReportViewer';\r\nimport { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../ui/ActionButton';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport { findSecurityTask } from '../../../util';\r\n\r\nfunction MoveTypeFilterRenderer({value, onChange}: any) {\r\n return (\r\n onChange(moveType)}\r\n />\r\n );\r\n}\r\n\r\nfunction CurrencyRenderer(value: number | null | undefined, currency: string, isLast: boolean = false) {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction AccountingEntityRenderer(onLinkToAccounting: any, {data, row, value}: any) {\r\n const entity = data[row.index];\r\n\r\n return
\r\n \r\n  \r\n
;\r\n}\r\n\r\nfunction useSelectedOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const history = useHistory();\r\n const sourceUrl = `${history.location.pathname}${history.location.search}`;\r\n const operation = sourceUrl.indexOf('oeQuotation') >= 0 ? 'oceanExport' : 'oceanImport';\r\n\r\n const selectedElement = jobListContext.selectedElement as OceanQuoteListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const { viewReport } = useReportViewer();\r\n\r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl(`/${operation}/quotation/add`)) {\r\n await showGlobalOkDialog(

New operation is already in progress.

);\r\n return;\r\n }\r\n\r\n openNewPage(history, `/${operation}/quotation/add`, NavigationType.newPage);\r\n }\r\n\r\n async function deleteQuotation() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/${operation}/quotation/edit/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/${operation}/quotation/view/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Quotation first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n ,false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.SeaQuotation, { id:selectedElement.id, pimsLinkId: 0 });\r\n if (apiResult && apiResult.success) {\r\n jobListContext.reloadData();\r\n } else {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n await showGlobalOkDialog(message, false, null, 'warning');\r\n }\r\n }\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n const id = selectedElement.id;\r\n const editUrl = `/${operation}/quotation/edit/${id}`;\r\n const viewUrl = `/${operation}/quotation/view/${id}`;\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrlWithoutMe(`/${operation}/quotation/edit`, editUrl)) {\r\n await showGlobalOkDialog(

Edit operation is already in progress.

);\r\n return;\r\n }\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/${operation}/quotation/edit/${id}`;\r\n const viewUrl = `/${operation}/quotation/view/${id}`;\r\n const listSec = findSecurityTask(appContext, (operation === 'oceanImport' ? FmsSecTask.OIQuot : FmsSecTask.OEQuot));\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n async function copy() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrl(`/${operation}/quotation/add`)) {\r\n await showGlobalOkDialog(

New operation is already in progress.

);\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n openNewPage(history, `/${operation}/quotation/add?copyId=${id}`, NavigationType.newPage);\r\n }\r\n\r\n async function print() {\r\n const title = `Quotation ${selectedElement.quoteNo}`;\r\n const args = new QuotationArgs({\r\n docType: DocumentType.Quotation,\r\n formCaption: title,\r\n subject: title,\r\n\r\n quoteID: selectedElement.id,\r\n branch: appContext.user?.branch??'',\r\n toCompanyid: `${selectedElement.agentId}, ${selectedElement.customerId}`\r\n })\r\n viewReport(args, \"\", true);\r\n }\r\n\r\n return {create, deleteQuotation, edit, view, copy, print, operation};\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const { create, deleteQuotation, edit, view, copy, operation } = useSelectedOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n // const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const listSec = findSecurityTask(appContext, (operation === 'oceanImport' ? FmsSecTask.OIQuot : FmsSecTask.OEQuot));\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'View', shortcut: 'F9', separator: !listSec?.grantEdit && !listSec?.grantDel },\r\n { label: 'Edit', shortcut: 'F3', separator: !listSec?.grantDel, hidden: !listSec?.grantEdit },\r\n { label: 'Delete', shortcut: '', separator: true, hidden: !listSec?.grantDel },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n { label: 'Copy', shortcut: 'Ctrl+F2', separator: true, hidden: !listSec?.grantAdd },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n deleteQuotation();\r\n break;\r\n case 4:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 5:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 6:\r\n copy();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction ListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const selectedElement = jobListContext.selectedElement as OceanQuoteListItem;\r\n\r\n const {deleteQuotation, edit, view, copy, print, operation} = useSelectedOperations();\r\n\r\n function hasOpenedViewOrEditFor(id: number) {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/${operation}/quotation/edit/${id}`) || jobListContext.hasOpenedScreenStartingWithUrl(`/${operation}/quotation/view/${id}`);\r\n }\r\n\r\n function hasOpenedNew() {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/${operation}/quotation/add`);\r\n }\r\n\r\n const listSec = findSecurityTask(appContext, (operation === 'oceanImport' ? FmsSecTask.OIQuot : FmsSecTask.OEQuot));\r\n \r\n const hasSelectedRow = !!selectedElement;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n const canBeCopied = hasSelectedRow && !hasOpenedNew() && listSec?.grantAdd;\r\n const canBeAdd = !hasOpenedNew() && listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n\r\n return (\r\n
\r\n
\r\n  \r\n View \r\n Edit \r\n Delete \r\n Copy\r\n
\r\n
\r\n Print Quotation\r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction ListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction ListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const history = useHistory();\r\n\r\n const {copy, create, edit, view, operation} = useSelectedOperations();\r\n const listSec = findSecurityTask(appContext, (operation === 'oceanImport' ? FmsSecTask.OIQuot : FmsSecTask.OEQuot));\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"CTRL+F2\") {\r\n if(listSec?.grantAdd)\r\n copy();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F2', 'CTRL+F2', 'F3', 'F4', 'SHIFT+F4', 'F9', 'F11', 'F8'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function onLinkToAccounting(entity: any) {\r\n if (!entity || !entity.category || !entity.number) {\r\n return;\r\n }\r\n\r\n if (entity.category === 'Bill') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/bill/oceanExport', 'billNo', 'Bill #', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/bill/oceanExport`, NavigationType.newPage);\r\n }\r\n if (entity.category === 'Invoice') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/invoice/oceanExport', 'invoiceNo', 'Invoice #', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/invoice/oceanExport`, NavigationType.newPage);\r\n }\r\n if (entity.category === 'CrDb') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/crdb/oceanExport', 'crdbNo', 'CrDb #', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/crdb/oceanExport`, NavigationType.newPage);\r\n }\r\n }\r\n\r\n async function loadInfoAreaInvoiceBillCrDb(id: string) {\r\n const apiResult = await appContext.api.getOceanImportMblInfoAreaBics(id);\r\n if (!apiResult) {\r\n return null;\r\n }\r\n\r\n const tableOptions: ApplicableTableSettings = {\r\n tableName: 'infoAreaBicTable',\r\n ...infoAreaBicTable,\r\n data: apiResult,\r\n \r\n rowRenderers: [\r\n {accessor: 'date', Cell: TextRenderer},\r\n {accessor: 'category', Cell: TextRenderer},\r\n // @ts-ignore:next-line\r\n {accessor: 'number', Cell: AccountingEntityRenderer.bind(this, onLinkToAccounting)},\r\n {accessor: 'companyName', Cell: TextAlignLeftRenderer},\r\n {accessor: 'cur', Cell: TextRenderer},\r\n // @ts-ignore:next-line\r\n {accessor: 'amount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.amount, cell.row.values.cur)},\r\n // @ts-ignore:next-line\r\n {accessor: 'paidAmount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.paidAmount, cell.row.values.cur)},\r\n // @ts-ignore:next-line\r\n {accessor: 'balance', Header: () =>
Balance
, Cell: ({cell}) => CurrencyRenderer(cell.row.values.balance, cell.row.values.cur, true)},\r\n ],\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for Quotation List screen\r\n *\r\n * @class QuotationListView\r\n * @extends {AbstractListView}\r\n */\r\nclass QuotationListView extends AbstractListView {\r\n async fetchAndFormatData(api: any, search: Search, opType: string|undefined): Promise {\r\n // const searchParams = OceanQuoteListItem.calculateSearchParameters(search, OceanQuoteListItem.MapOeSearchFields);\r\n // searchParams['opType'] = opType === 'oceanImport' ? 'I' : 'E';\r\n\r\n // if (searchParams.searchField === undefined) {\r\n // searchParams.searchField = ['opType']\r\n // } else {\r\n // searchParams.searchField.push('opType');\r\n // }\r\n\r\n const apiResult = await api.getListItems(\r\n JobNames.SeaQuotation,\r\n 'OceanQuoteListItem',\r\n OceanQuoteListItem.calculateSearchParameters(search, OceanQuoteListItem.MapOeSearchFields),\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return {data: OceanQuoteListItem.formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n {\r\n accessor: 'serviceType',\r\n renderer: MoveTypeFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n // return [\r\n // {accessor: 'status', Cell: IndicatorRenderer},\r\n // {accessor: 'validBy', Cell: DateRenderer},\r\n // {accessor: 'u2Date', Cell: DateTimeRenderer},\r\n // {accessor: 'quoteDate', Cell: DateRenderer},\r\n // {accessor: 'operator', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'quoteNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'sName', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'contactName', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'hBookingNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'serviceType', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'commodity', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'lPort', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'discharge', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'plofRec', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'finalDest', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'plofDel', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'sManID', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'u1ID', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'u2ID', Cell: TextAlignLeftRenderer},\r\n // ];\r\n return OceanQuoteListItem.getExportCollection().map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.dataIndex === \"status\") {\r\n colRenderer.Cell = () => ;\r\n colRenderer.Header = () => ;\r\n }\r\n // { accessor:'hblCount', Cell: HblRenderer, Header: () => HBL(s) },\r\n else if(x.dataIndex === 'customer') {\r\n colRenderer.Cell = TextAlignLeftRenderer;\r\n }\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'updated',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = oceanExportQuotationList;\r\n const cols = OceanQuoteListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor(row: OceanQuoteListItem) {\r\n return row && row.id ? `/oceanExport/quotation/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'Ocean Quotation List';\r\n };\r\n\r\n renderAdditionalCommands() {\r\n return null;\r\n }\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n}\r\n\r\nexport default QuotationListView;","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class AirQuoteListItem extends SearchModelBase {\r\n id: number = 0;\r\n quoteNo: string = '';\r\n quoteDate: string | null = null;\r\n fromQuoteDate: string | null = null;\r\n toQuoteDate: string | null = null;\r\n operator: string = '';\r\n hawbNo: string = '';\r\n customer: string = '';\r\n commodity: string = '';\r\n loadingPort: string = '';\r\n discharge: string = '';\r\n finalDest: string = '';\r\n createdAt: string | null = null;\r\n fromCreatedAt: string | null = null;\r\n toCreatedAt: string | null = null;\r\n agentId: number = 0;\r\n customerId: number = 0;\r\n u1ID: string = '';\r\n u2ID: string = '';\r\n u2Date: string | null = null;\r\n status: string = '';\r\n validBy: string | null = null;\r\n fromValidBy: string | null = null;\r\n toValidBy: string | null = null;\r\n plofRec: string = '';\r\n serviceType: string = '';\r\n sManID: string = '';\r\n contactName: string = '';\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n opType: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Date', width: 75, dataIndex: 'quoteDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 2, text: 'Quotation #', width: 100, dataIndex: 'quoteNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 3, text: 'Quote By', width: 80, dataIndex: 'operator'}),\r\n XCol.Create({ col: 4, text: 'Valid By', width: 75, dataIndex: 'validBy', type: XCol.XCellType.Date}),\r\n XCol.Create({ col: 5, text: 'Customer', width: 120, dataIndex: 'customer'}),\r\n XCol.Create({ col: 6, text: 'Contact', width: 120, dataIndex: 'contactName'}),\r\n XCol.Create({ col: 7, text: 'Service Type', width: 80, dataIndex: 'serviceType'}),\r\n XCol.Create({ col: 8, text: 'Commodity', width: 150, dataIndex: 'commodity'}),\r\n XCol.Create({ col: 9, text: 'Place of Receipt', width: 120, dataIndex: 'plofRec'}),\r\n XCol.Create({ col: 10, text: 'Departure Airport', width: 120, dataIndex: 'loadingPort'}),\r\n XCol.Create({ col: 11, text: 'Arrival Airport', width: 120, dataIndex: 'discharge'}),\r\n XCol.Create({ col: 12, text: 'Final Destination', width: 120, dataIndex: 'finalDest'}),\r\n XCol.Create({ col: 12, text: 'Salesperson', width: 80, dataIndex: 'sManID'}),\r\n XCol.Create({ col: 13, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime}),\r\n XCol.Create({ col: 14, text: 'Create by', width: 100, dataIndex: 'u1ID'}),\r\n XCol.Create({ col: 15, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime}),\r\n XCol.Create({ col: 16, text: 'Update by', width: 100, dataIndex: 'u2ID'}),\r\n ];\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return AirQuoteListItem.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: AirQuoteListItem.prototype.createdAt, orderByAscending: false };\r\n\r\n public static formatData(data: AirQuoteListItem[]) {\r\n return data.map((d: AirQuoteListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n quoteDate: {from: 'fromQuoteDate', to: 'toQuoteDate'},\r\n validBy: {from: 'fromValidBy', to: 'toValidBy'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n createdAt: {from: 'fromCreatedAt', to: 'toCreatedAt'},\r\n }\r\n\r\n}\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport constants from '../../../constants';\r\nimport {Search} from \"../../../filtering\";\r\nimport {NavigationType, openNewPage} from '../../../util/navigationHelpers';\r\nimport {\r\n DateRenderer,DateTimeRenderer,NullableCheckboxIconRenderer,TextAlignLeftRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport {JobNames} from \"../../../framework.core/JobNames\";\r\nimport {airExportQuotationList} from \"../tableSettings\";\r\nimport {AirQuoteListItem} from \"../../../fms.data/models/AirQuoteListItem\";\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport { QuotationArgs } from '../../../fms.report/args';\r\nimport {DocumentType} from '../../../framework.core/DocumentType';\r\nimport useReportViewer from '../../../hooks/useReportViewer';\r\nimport { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../ui/ActionButton';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport { findSecurityTask } from '../../../util';\r\n\r\n// function MoveTypeFilterRenderer({value, onChange}: any) {\r\n// return (\r\n// onChange(moveType)}\r\n// />\r\n// );\r\n// }\r\n\r\n// function CurrencyRenderer(value: number | null | undefined, currency: string, isLast: boolean = false) {\r\n// return (\r\n//
\r\n//
\r\n// \r\n//
\r\n//
\r\n// );\r\n// }\r\n\r\n// function AccountingEntityRenderer(onLinkToAccounting: any, {data, row, value}: any) {\r\n// const entity = data[row.index];\r\n\r\n// return
\r\n// \r\n//  \r\n//
;\r\n// }\r\n\r\nfunction useSelectedOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const history = useHistory();\r\n const sourceUrl = `${history.location.pathname}${history.location.search}`;\r\n const operation = sourceUrl.indexOf('aeQuotation') >= 0 ? 'airExport' : 'airImport';\r\n\r\n const selectedElement = jobListContext.selectedElement as AirQuoteListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const { viewReport } = useReportViewer();\r\n\r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl(`/${operation}/quotation/add`)) {\r\n await showGlobalOkDialog(

New operation is already in progress.

);\r\n return;\r\n }\r\n\r\n openNewPage(history, `/${operation}/quotation/add`, NavigationType.newPage);\r\n }\r\n\r\n async function deleteQuotation() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/${operation}/quotation/edit/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/${operation}/quotation/view/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Quotation first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n ,false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.AirQuotation, { id:selectedElement.id, pimsLinkId: 0 });\r\n if (apiResult && apiResult.success) {\r\n jobListContext.reloadData();\r\n } else {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n await showGlobalOkDialog(message,false,null,'warning');\r\n }\r\n }\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/${operation}/quotation/edit/${id}`;\r\n const viewUrl = `/${operation}/quotation/view/${id}`;\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrlWithoutMe(`/${operation}/quotation/edit`, editUrl)) {\r\n await showGlobalOkDialog(

Edit operation is already in progress.

);\r\n return;\r\n }\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/${operation}/quotation/edit/${id}`;\r\n const viewUrl = `/${operation}/quotation/view/${id}`;\r\n\r\n const listSec = findSecurityTask(appContext, (operation === constants.opTypes.airImport ? FmsSecTask.AIQuot : FmsSecTask.AEQuot));\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n async function copy() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrl(`/${operation}/quotation/add`)) {\r\n await showGlobalOkDialog(

New operation is already in progress.

);\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n openNewPage(history, `/${operation}/quotation/add?copyId=${id}`, NavigationType.newPage);\r\n }\r\n\r\n async function print() {\r\n const title = `Air Quotation ${selectedElement.quoteNo}`;\r\n const args = new QuotationArgs({\r\n docType: DocumentType.QuotationAir,\r\n formCaption: title,\r\n subject: title,\r\n\r\n quoteID: selectedElement.id,\r\n branch: appContext.user?.branch??'',\r\n toCompanyid: `${selectedElement.agentId}, ${selectedElement.customerId}`\r\n })\r\n viewReport(args, \"\", true);\r\n }\r\n\r\n return {create, deleteQuotation, edit, view, copy, print, operation};\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const { create, deleteQuotation, edit, view, copy, operation } = useSelectedOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as AirQuoteListItem;\r\n const appContext = useContext(ApplicationContext);\r\n // const [showGlobalOkDialog] = useGlobalOkDialog();\r\n \r\n const listSec = findSecurityTask(appContext, (operation === constants.opTypes.airImport ? FmsSecTask.AIQuot : FmsSecTask.AEQuot));\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'View', shortcut: 'F9', separator: !listSec?.grantEdit && !listSec?.grantDel },\r\n { label: 'Edit', shortcut: 'F3', separator: !listSec?.grantDel, hidden: !listSec?.grantEdit },\r\n { label: 'Delete', shortcut: '', separator: true, hidden: !listSec?.grantDel },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n { label: 'Copy', shortcut: 'Ctrl+F2', separator: true, hidden: !listSec?.grantAdd },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n deleteQuotation();\r\n break;\r\n case 4:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 5:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 6:\r\n copy();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction ListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const selectedElement = jobListContext.selectedElement as AirQuoteListItem;\r\n\r\n const {deleteQuotation, edit, view, copy, print, operation} = useSelectedOperations();\r\n\r\n function hasOpenedViewOrEditFor(id: number) {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/${operation}/quotation/edit/${id}`) || jobListContext.hasOpenedScreenStartingWithUrl(`/${operation}/quotation/view/${id}`);\r\n }\r\n\r\n function hasOpenedNew() {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/${operation}/quotation/add`);\r\n }\r\n\r\n const listSec = findSecurityTask(appContext, (operation === 'airImport' ? FmsSecTask.AIQuot : FmsSecTask.AEQuot));\r\n\r\n const hasSelectedRow = !!selectedElement;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n const canBeCopied = hasSelectedRow && !hasOpenedNew() && listSec?.grantAdd;\r\n const canBeAdd = !hasOpenedNew() && listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n\r\n return (\r\n
\r\n
\r\n  \r\n View \r\n Edit \r\n Delete \r\n Copy\r\n
\r\n
\r\n Print Quotation\r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction ListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction ListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const {copy, create, edit, view, operation} = useSelectedOperations();\r\n const listSec = findSecurityTask(appContext, (operation === 'airImport' ? FmsSecTask.AIQuot : FmsSecTask.AEQuot));\r\n\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"CTRL+F2\") {\r\n if(listSec?.grantAdd)\r\n copy();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F2', 'CTRL+F2', 'F3', 'F4', 'SHIFT+F4', 'F9', 'F11', 'F8'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for Quotation List screen\r\n *\r\n * @class QuotationListView\r\n * @extends {AbstractListView}\r\n */\r\nclass QuotationListView extends AbstractListView {\r\n async fetchAndFormatData(api: any, search: Search, opType: string|undefined): Promise {\r\n // const searchParams = AirQuoteListItem.calculateSearchParameters(search, AirQuoteListItem.MapSearchFields);\r\n // searchParams['opType'] = opType === 'airImport' ? 'I' : 'E';\r\n\r\n // if (searchParams.searchField === undefined) {\r\n // searchParams.searchField = ['opType']\r\n // } else {\r\n // searchParams.searchField.push('opType');\r\n // }\r\n\r\n const apiResult = await api.getListItems(\r\n JobNames.AirQuotation,\r\n 'AirQuoteListItem',\r\n AirQuoteListItem.calculateSearchParameters(search, AirQuoteListItem.MapSearchFields),\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return {data: AirQuoteListItem.formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n // return [\r\n // {accessor: 'status', Cell: IndicatorRenderer},\r\n // {accessor: 'validBy', Cell: DateRenderer},\r\n // {accessor: 'u2Date', Cell: DateTimeRenderer},\r\n // {accessor: 'quoteDate', Cell: DateRenderer},\r\n // {accessor: 'operator', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'quoteNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'sName', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'contactName', Cell: TextAlignLeftRenderer},\r\n // // {accessor: 'hBookingNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'serviceType', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'commodity', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'lPort', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'discharge', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'plofRec', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'finalDest', Cell: TextAlignLeftRenderer},\r\n // // {accessor: 'plofDel', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'sManID', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'u1ID', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'u2ID', Cell: TextAlignLeftRenderer},\r\n // ];\r\n return AirQuoteListItem.getExportCollection().map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.dataIndex === \"status\") {\r\n colRenderer.Cell = () => \r\n colRenderer.Header = () => ;\r\n }\r\n // { accessor:'hblCount', Cell: HblRenderer, Header: () => HBL(s) },\r\n else if(x.dataIndex === 'customer') {\r\n colRenderer.Cell = TextAlignLeftRenderer;\r\n }\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'updated',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = airExportQuotationList;\r\n const cols = AirQuoteListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor(row: AirQuoteListItem) {\r\n return row && row.id ? `/airExport/quotation/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'Air Quotation List';\r\n };\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n}\r\n\r\nexport default QuotationListView;","import React, {cloneElement, useContext, useEffect, useState} from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport MoveTypeDropDown from \"../../../uiControls/MoveTypeDropDown\";\r\nimport {Search} from \"../../../filtering\";\r\nimport {NavigationType, openNewPage} from '../../../util/navigationHelpers';\r\nimport {\r\n DateRenderer,DateTimeRenderer,TextAlignLeftWithAddressTooltipRenderer,NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,TextRenderer,\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport {ActionButtonItem, borderColors, splitMenuItemsIntoSections} from '../../../ui/ActionButton';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport {JobNames} from \"../../../framework.core/JobNames\";\r\nimport {oceanExportBookingList} from \"../tableSettings\";\r\nimport {OeBookingListItem} from \"../../../fms.data/models/OeBookingListItem\";\r\nimport IfmsModal from \"../../../ui/IfmsModal\";\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport { FmsSubMenu } from '../../../constants/fmsSubMenu';\r\nimport { getSelectedSubMenuArgs } from '../../JobListSubMenu';\r\nimport useReportViewer from '../../../hooks/useReportViewer';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport { findSecurityTask } from '../../../util';\r\nimport constants from '../../../constants';\r\n\r\nfunction MoveTypeFilterRenderer({value, onChange}: any) {\r\n return (\r\n onChange(moveType)} \r\n />\r\n );\r\n}\r\n\r\n\r\nfunction useOperations() {\r\n const history = useHistory();\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n function switchToHblFor(b:OeBookingListItem|null) {\r\n if (!b) {\r\n return;\r\n }\r\n\r\n if (b.hblNo) {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/oeHbl/oceanExport', \r\n 'hblNo', 'HBL #', b.hblNo, 'update', false, true);\r\n }\r\n else if (b.hBookingNo) {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/oeHbl/oceanExport', \r\n 'hBookingNo', 'Booking #', b.hBookingNo, 'update', false, true);\r\n }\r\n\r\n openNewPage(history, `/common/joblistview/oeHbl/oceanExport`, NavigationType.newPage);\r\n }\r\n\r\n return {switchToHblFor};\r\n}\r\n\r\nfunction useSelectedOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const history = useHistory();\r\n\r\n const selectedElement = jobListContext.selectedElement as OeBookingListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n\r\n const {switchToHblFor} = useOperations();\r\n\r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/oceanExport/booking/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n\r\n openNewPage(history, '/oceanExport/booking/add', NavigationType.newPage);\r\n }\r\n\r\n async function deleteItem() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/oceanExport/booking/edit/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/oceanExport/booking/view/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Booking first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n ,false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.OEBook, { id:selectedElement.id, pimsLinkId: 0 });\r\n if (apiResult && apiResult.success) {\r\n jobListContext.reloadData();\r\n } else {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n await showGlobalOkDialog(message, false, null, 'warning');\r\n }\r\n }\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/oceanExport/booking/edit/${id}`;\r\n const viewUrl = `/oceanExport/booking/view/${id}`;\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrlWithoutMe('/oceanExport/booking/edit', editUrl)) {\r\n await showGlobalOkDialog(

Edit operation is already in progress

);\r\n return;\r\n }\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n const id = selectedElement.id;\r\n const editUrl = `/oceanExport/booking/edit/${id}`;\r\n const viewUrl = `/oceanExport/booking/view/${id}`;\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OEBook);\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n async function copy() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/oceanExport/booking/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n const id = selectedElement.id;\r\n openNewPage(history, `/oceanExport/booking/add?copyId=${id}`, NavigationType.newPage);\r\n }\r\n\r\n function switchToHbl() {\r\n const selectedElement = jobListContext.selectedElement as OeBookingListItem;\r\n switchToHblFor(selectedElement);\r\n }\r\n\r\n return {create, deleteItem, edit, view, copy, switchToHbl};\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const { create, deleteItem, edit, view, copy, switchToHbl } = useSelectedOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as OeBookingListItem;\r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OEBook);\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'View', shortcut: 'F9', separator: !listSec?.grantEdit && !listSec?.grantDel },\r\n { label: 'Edit', shortcut: 'F3', separator: !listSec?.grantDel, hidden: !listSec?.grantEdit },\r\n { label: 'Delete', shortcut: '', separator: true, hidden: !listSec?.grantDel, disabled : !!selectedElement?.refNo },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: 'Switch to HBL List', shortcut: 'F6', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n { label: 'Copy', shortcut: 'Ctrl+F2', separator: true, hidden: !listSec?.grantAdd },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n disabled: i?.disabled ?? false,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n deleteItem();\r\n break;\r\n case 4:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 5:\r\n switchToHbl();\r\n break;\r\n case 6:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 7:\r\n copy();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction ListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n\r\n const selectedElement = jobListContext.selectedElement as OeBookingListItem;\r\n\r\n const {deleteItem, edit, view, copy} = useSelectedOperations();\r\n const { viewReport } = useReportViewer();\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n\r\n function hasOpenedViewOrEditFor(id: number) {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/oceanExport/booking/edit/${id}`) || jobListContext.hasOpenedScreenStartingWithUrl(`/oceanExport/booking/view/${id}`);\r\n }\r\n\r\n function hasOpenedNew() {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/oceanExport/booking/add`);\r\n }\r\n\r\n const onPopupClose = () => {\r\n setSelectedPopupMenuItem(null);\r\n }\r\n\r\n async function onSubMenuClick(fmsSubMenu: FmsSubMenu) {\r\n setSelectedPopupMenuItem(null);\r\n\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const args = await getSelectedSubMenuArgs(fmsSubMenu, JobNames.OEBook, selectedElement, appContext, showGlobalYesNoDialog, null);\r\n if(args){\r\n viewReport(args, \"\", true);\r\n }\r\n }\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OEBook);\r\n\r\n const hasSelectedRow = !!selectedElement;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel && !selectedElement.refNo;\r\n const canBeCopied = hasSelectedRow && !hasOpenedNew() && listSec?.grantAdd;\r\n const canBeAdd = !hasOpenedNew() && listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n\r\n return (\r\n
\r\n
\r\n  \r\n View \r\n Edit \r\n Delete \r\n Copy\r\n
\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.popupComponent ? (\r\n \r\n {cloneElement(selectedPopupMenuItem.popupComponent!, {onPopupClose})}\r\n \r\n ) : null}\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.subMenu ? onSubMenuClick(selectedPopupMenuItem.subMenu) : null}\r\n
\r\n );\r\n}\r\n\r\nfunction ListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction ListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const { create, copy, edit, view, switchToHbl } = useSelectedOperations();\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OEBook);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n);\r\n\r\nfunction doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n switchToHbl();\r\n } else if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"CTRL+F2\") {\r\n if(listSec?.grantAdd)\r\n copy();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n }\r\n setUnprocessedFkey(null);\r\n}\r\n\r\nfunction onFunctionKey(fkey:string) {\r\n if (['F6', 'F2', 'CTRL+F2', 'F3', 'F9', 'F11', 'F8'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for Booking List screen\r\n *\r\n * @class BookingListView\r\n * @extends {AbstractListView}\r\n */\r\nclass BookingListView extends AbstractListView {\r\n\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(\r\n JobNames.OEBook,\r\n 'OeBookingListItem',\r\n OeBookingListItem.calculateSearchParameters(search, OeBookingListItem.MapOeSearchFields),\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return {data: OeBookingListItem.formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n {\r\n accessor: 'moveType',\r\n renderer: MoveTypeFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n ];\r\n }\r\n\r\n /*getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanExportMbl;\r\n }*/\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n // return [\r\n // {accessor: 'status', Cell: IndicatorRenderer},\r\n // {accessor: 'bookDate', Cell: DateRenderer},\r\n // {accessor: 'portCutOff', Cell: DateRenderer},\r\n // {accessor: 'railCutOff', Cell: DateRenderer},\r\n // {accessor: 'bookEta', Cell: DateRenderer},\r\n // {accessor: 'bookEtd', Cell: DateRenderer},\r\n // {accessor: 'u2Date', Cell: DateTimeRenderer},\r\n // {accessor: 'hBookingNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'bookedBy', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'custName', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'consignee', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'moveType', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'conTypeAndQty', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'agentName', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'quoteNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'hblNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'refNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'cBookingNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'commodity', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'vessel', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'voyage', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'loadingPort', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'disCharge', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'plofRec', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'plofDel', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'truckingCompany', Cell: TextAlignLeftWithAddressTooltipRenderer},\r\n // {accessor: 'puEmptyLoc', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'puCargoLocation', Cell: TextAlignLeftWithAddressTooltipRenderer},\r\n // {accessor: 'exPref', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'bookRemark', Cell: TextAlignLeftRenderer},\r\n // ];\r\n return OeBookingListItem.getExportCollection().map(x => {\r\n const colRenderer: ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if (x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if (x.dataIndex === \"status\") {\r\n colRenderer.Cell = () => \r\n colRenderer.Header = () => ;\r\n }\r\n if (x.dataIndex === \"truckingCompanyName\" || x.dataIndex === \"puCargoLocationName\") colRenderer.Cell = TextAlignLeftWithAddressTooltipRenderer;\r\n // { accessor:'hblCount', Cell: HblRenderer, Header: () => HBL(s) },\r\n else if (x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if (x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if (x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'updated',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = oceanExportBookingList;\r\n const cols = OeBookingListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderAfterConfigureButton() {\r\n return <>\r\n }\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor(row: OeBookingListItem) {\r\n return row && row.id ? `/oceanExport/booking/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'Booking List';\r\n };\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n}\r\n\r\nexport default BookingListView;","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class OeLoadPlanListItem extends SearchModelBase {\r\n id: number = 0;\r\n containerNo: string = '';\r\n conType: string = '';\r\n refNo: string = '';\r\n bookingNo: string = '';\r\n mblNo: string = '';\r\n agentSName: string = '';\r\n vessel: string = '';\r\n etd: string | null = null;\r\n fromEtd: string | null = null;\r\n toEtd: string | null = null;\r\n cutOffDate: string | null = null;\r\n fromCutOffDate: string | null = null;\r\n toCutOffDate: string | null = null;\r\n loadingPort: string = '';\r\n lpU2Date: string | null = null;\r\n fromLPU2Date: string | null = null;\r\n toLPU2Date: string | null = null;\r\n lpU2ID: string = '';\r\n u1ID: string = '';\r\n voyage: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true, visible: true, sortable: false}),\r\n XCol.Create({ col: 1, text: 'Container #', width: 100, dataIndex: 'containerNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 2, text: 'Type', width: 60, dataIndex: 'conType'}),\r\n XCol.Create({ col: 3, text: 'Ref. #', width: 100, dataIndex: 'refNo'}),\r\n XCol.Create({ col: 4, text: 'Booking #', width: 120, dataIndex: 'bookingNo'}),\r\n XCol.Create({ col: 5, text: 'MBL #', width: 100, dataIndex: 'mblNo'}),\r\n XCol.Create({ col: 6, text: 'Agent', width: 120, dataIndex: 'agentSName'}),\r\n XCol.Create({ col: 7, text: 'Cargo Cutoff', width: 75, dataIndex: 'cutOffDate', type: XCol.XCellType.Date}),\r\n XCol.Create({ col: 8, text: 'Vessel Name', width: 120, dataIndex: 'vessel'}),\r\n XCol.Create({ col: 9, text: 'Voyage #', width: 80, dataIndex: 'voyage'}),\r\n XCol.Create({ col: 10, text: 'Loading Port', width: 80, dataIndex: 'loadingPort'}),\r\n XCol.Create({ col: 11, text: 'ETD', width: 75, dataIndex: 'etd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 12, text: 'Create by', width: 80, dataIndex: 'u1ID'}),\r\n XCol.Create({ col: 13, text: 'Update Date', width: 100, dataIndex: 'lpU2Date', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 14, text: 'Update by', width: 80, dataIndex: 'lpU2ID'}),\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: OeLoadPlanListItem.prototype.id, orderByAscending: false };\r\n\r\n public static formatData(data: OeLoadPlanListItem[]) {\r\n return data.map((d: OeLoadPlanListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n public static MapOeSearchFields: {[key: string]: {[key: string]: string}} = {\r\n etd: {from: 'fromEtd', to: 'toEtd'},\r\n lpU2Date: {from: 'fromLPU2Date', to: 'toLPU2Date'},\r\n cutOffDate: {from: 'fromCutOffDate', to: 'toCutOffDate'},\r\n }\r\n}\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport constants from '../../../constants';\r\nimport {Search} from \"../../../filtering\";\r\nimport {NavigationType, openNewPage} from '../../../util/navigationHelpers';\r\nimport {\r\n DateRenderer,DateTimeRenderer,FloatRenderer,NullableCheckboxIconRenderer,TextAlignLeftRenderer,TextRenderer,\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport {oceanExportLoadPlanList} from \"../tableSettings\";\r\nimport {JobNames} from \"../../../framework.core/JobNames\";\r\nimport {OeLoadPlanListItem} from \"../../../fms.data/models/OeLoadPlanListItem\";\r\nimport PrimaryButton from \"../../../ui/PrimaryButton\";\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../ui/ActionButton';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport { findSecurityTask } from '../../../util';\r\n\r\nfunction useSelectedOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const history = useHistory();\r\n\r\n const selectedElement = jobListContext.selectedElement as OeLoadPlanListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n\r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/loadPlan/add`)) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n\r\n openNewPage(history, `/oceanImport/loadPlan/add`, NavigationType.newPage);\r\n }\r\n\r\n async function remove() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n , false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n await appContext.api.deleteOceanImportMblById(selectedElement.id);\r\n jobListContext.reloadData();\r\n }\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/oceanExport/loadPlan/edit/${id}`;\r\n const viewUrl = `/oceanExport/loadPlan/view/${id}`;\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrlWithoutMe('/oceanExport/loadPlan/edit', editUrl)) {\r\n await showGlobalOkDialog(

Edit operation is already in progress

);\r\n return;\r\n }\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/oceanExport/loadPlan/edit/${id}`;\r\n const viewUrl = `/oceanExport/loadPlan/view/${id}`;\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OELoad);\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n async function copy() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/oceanExport/loadPlan/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n openNewPage(history, `/oceanExport/loadPlan/add?copyId=${id}`, NavigationType.newPage);\r\n }\r\n\r\n return {create, remove, edit, view, copy};\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const { edit, view } = useSelectedOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n // const selectedElement = jobListContext.selectedElement as OeLoadPlanListItem;\r\n const appContext = useContext(ApplicationContext);\r\n // const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OELoad);\r\n\r\n const items = [\r\n { label: 'View', shortcut: 'F9', separator: false },\r\n { label: 'Edit', shortcut: 'F3', separator: false, hidden: !listSec?.grantEdit },\r\n { label: 'Search', shortcut: 'F5', separator: true },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n index,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n view();\r\n break;\r\n case 1:\r\n edit();\r\n break;\r\n case 2:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction ListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const selectedElement = jobListContext.selectedElement as OeLoadPlanListItem;\r\n\r\n const { edit, view,} = useSelectedOperations();\r\n\r\n // function hasOpenedViewOrEditFor(id:number) {\r\n // return jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/loadPlan/edit/${id}`) || jobListContext.hasOpenedScreenStartingWithUrl(`/oceanImport/loadPlan/view/${id}`);\r\n // }\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OELoad);\r\n\r\n const hasSelectedRow = !!selectedElement;\r\n //const canBeDeleted = hasSelectedRow && !hasOpenedViewOrEditFor(selectedElement.id) && listSec?.grantDel;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n\r\n return (\r\n
\r\n
\r\n View \r\n Edit\r\n {/* Delete  */}\r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction ListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction ListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OELoad);\r\n\r\n const {edit, view} = useSelectedOperations();\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === \"F2\") {\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F2', 'F3', 'F9', 'F11'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n return (\r\n <>\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for Load Plan List screen\r\n *\r\n * @class LoadPlanListView\r\n * @extends {AbstractListView}\r\n */\r\nclass LoadPlanListView extends AbstractListView {\r\n\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(\r\n JobNames.OELoad,\r\n 'OeLoadPlanListItem',\r\n OeLoadPlanListItem.calculateSearchParameters(search, OeLoadPlanListItem.MapOeSearchFields),\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return {data: OeLoadPlanListItem.formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n // return [\r\n // // {accessor: 'status', Cell: IndicatorRenderer},\r\n // {accessor: 'cutOffDate', Cell: DateRenderer},\r\n // {accessor: 'etd', Cell: DateRenderer},\r\n // {accessor: 'lpU2Date', Cell: DateTimeRenderer},\r\n // {accessor: 'containerNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'conType', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'refNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'bookingNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'mblNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'agentSName', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'vessel', Cell: TextAlignLeftRenderer},\r\n // // {accessor: 'voyage', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'loadingPort', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'lpU2ID', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'u1ID', Cell: TextAlignLeftRenderer},\r\n // ];\r\n return OeLoadPlanListItem.getExportCollection().map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.dataIndex === \"status\") {\r\n colRenderer.Cell = () => ;\r\n colRenderer.Header = () => ;\r\n }\r\n if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n else if(x.type === XCol.XCellType.Double) colRenderer.Cell = FloatRenderer;\r\n\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'updated',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = oceanExportLoadPlanList;\r\n const cols = OeLoadPlanListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor(row: OeLoadPlanListItem) {\r\n return row && row.id ? `/oceanExport/loadPlan/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'Load Plan List';\r\n };\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n hasMemo(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\nexport default LoadPlanListView;","import useWindowSize from './useWindowSize';\r\n\r\nconst Large = {\r\n row12: 1842,\r\n row6: 892,\r\n row4: 575,\r\n row3: 416,\r\n breakNo: 0\r\n};\r\n\r\nconst Break1 = {\r\n row12: 1612,\r\n row6: 782,\r\n row4: 505,\r\n row3: 366,\r\n breakNo: 1\r\n};\r\n\r\nconst Break2 = {\r\n row12: 1392,\r\n row6: 692,\r\n row4: 445,\r\n row3: 326,\r\n breakNo: 2\r\n};\r\n\r\nconst Break3 = {\r\n row12: 1342,\r\n row6: 652,\r\n row4: 428,\r\n row3: 316,\r\n breakNo: 3\r\n};\r\n\r\nconst Break4 = {\r\n row12: 1262,\r\n row6: 612,\r\n row4: 401,\r\n row3: 296,\r\n breakNo: 4\r\n};\r\n\r\n/**\r\n * @deprecated useIfmsColSizes - get layout sizes in old responsive design. Should not be used any more\r\n *\r\n * @export\r\n * @return {*} \r\n */\r\nexport default function useIfmsColSizes() {\r\n const [width, height] = useWindowSize();\r\n\r\n if (width < 1360) {\r\n return {...Break4, width, height};\r\n }\r\n else if (width < 1440) {\r\n return {...Break3, width, height};\r\n }\r\n else if (width < 1680) {\r\n return {...Break2, width, height};\r\n }\r\n else if (width < 1920) {\r\n return {...Break1, width, height};\r\n } else {\r\n return {...Large, width, height};\r\n }\r\n }\r\n ","import PropTypes from 'prop-types';\r\nimport React, { useEffect, useState } from 'react';\r\n\r\nimport useIfmsColSizes from '../../hooks/useIfmsColSizes';\r\n\r\nimport {\r\n infoAreaBicHistoryTable,\r\n infoAreaBicHistoryLineItemsTable,\r\n infoAreaBicRevisionHistoryLineItemsTable,\r\n ApplicableTableSettings,\r\n} from '../../tableSettings';\r\n\r\nimport {\r\n TextRenderer,\r\n TextAlignLeftRenderer,\r\n DateTimeRenderer,\r\n DateRenderer,\r\n} from '../../uiControls/SmartTableRenderers';\r\n\r\nimport Label from '../../ui/Label';\r\nimport LabeledTextBox from '../../ui/LabeledTextBox';\r\nimport LabeledControl from '../../ui/LabeledControl';\r\n\r\nimport SmartTable from '../../uiControls/SmartTable';\r\nimport CurrencyLabel from '../../uiControls/CurrencyLabel';\r\nimport SalesCostTypeLabel from '../../uiControls/SalesCostTypeLabel';\r\nimport useTableRowSelection from '../../ui/tables/useTableRowSelection';\r\nimport Currency from '../../uiControls/Currency';\r\nimport { AcctHistHd } from '../../fms.core/AcctHistHd';\r\nimport _ from 'lodash';\r\n\r\nfunction getDetailLabel(context:string) {\r\n switch (context) {\r\n case 'bill':\r\n return 'Bill Detail';\r\n case 'invoice':\r\n return 'Invoice Detail';\r\n case 'crdb':\r\n return 'CrDb Detail';\r\n default:\r\n throw new Error('Unsupported context');\r\n }\r\n}\r\n\r\nfunction getAmountLabel(context:string) {\r\n switch (context) {\r\n case 'bill':\r\n return 'Bill Amount';\r\n case 'invoice':\r\n return 'Invoice Amount';\r\n case 'crdb':\r\n return 'CrDb Amount';\r\n default:\r\n throw new Error('Unsupported context');\r\n }\r\n}\r\n\r\nfunction getBicNoLabel(context:string) {\r\n switch (context) {\r\n case 'bill':\r\n return 'Bill #';\r\n case 'invoice':\r\n return 'Invoice #';\r\n case 'crdb':\r\n return 'CrDb #';\r\n default:\r\n throw new Error('Unsupported context');\r\n }\r\n}\r\n\r\nfunction getBicDateLabel(context:string) {\r\n switch (context) {\r\n case 'bill':\r\n return 'Bill Date';\r\n case 'invoice':\r\n return 'Invoice Date';\r\n case 'crdb':\r\n return 'CrDb Date';\r\n default:\r\n throw new Error('Unsupported context');\r\n }\r\n}\r\n\r\nfunction getBicCompanyLabel(context:string) {\r\n switch (context) {\r\n case 'bill':\r\n return 'Vendor (Cost)';\r\n case 'invoice':\r\n return 'Invoice To';\r\n case 'crdb':\r\n return 'Agent';\r\n default:\r\n throw new Error('Unsupported context');\r\n }\r\n}\r\n\r\nfunction getRevisionHistoryLabel(context:string) {\r\n switch (context) {\r\n case 'bill':\r\n return 'Bill Revision History';\r\n case 'invoice':\r\n return 'Invoice Revision History';\r\n case 'crdb':\r\n return 'CrDb Revision History';\r\n default:\r\n throw Error('Unsupported context');\r\n }\r\n}\r\n\r\n\r\nfunction CurrencyRenderer(value:any, currency:any, isLast:any) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nfunction SalesCostTypeLabelRenderer({cell}:any) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\n/**\r\n * \r\n * @param param0 historyData: AcctHistHd\r\n * @returns \r\n */\r\nfunction BicInfoAreaHistory({historyData, primaryCurrency, context}: { historyData: AcctHistHd, primaryCurrency: string, context: string}) {\r\n const { row6 } = useIfmsColSizes();\r\n const { selectTableRow } = useTableRowSelection('ifms-app-info-area', 'info-area-bic-history-table', null, onHistoryClick);\r\n const [selectedIndex, setSelectedIndex] = useState(0);\r\n\r\n useEffect(() => {\r\n setSelectedIndex(0);\r\n selectTableRow(0);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [historyData]);\r\n\r\n function onHistoryClick(index:number) {\r\n setSelectedIndex(index);\r\n }\r\n\r\n const history = (historyData as AcctHistHd)?.historyHDList || [];\r\n const revisionHistory = (historyData as AcctHistHd)?.revisionHistList || [];\r\n\r\n const historyTableOptions:ApplicableTableSettings = {\r\n customTableId: 'info-area-bic-history-table',\r\n tableName: 'infoAreaBicHistoryTable',\r\n ...infoAreaBicHistoryTable,\r\n data: history,\r\n selectable: true,\r\n \r\n width: `${row6}px`,\r\n rowRenderers: [\r\n { accessor: 'ediDate', Cell: DateTimeRenderer },\r\n { accessor: 'ediId', Cell: TextAlignLeftRenderer },\r\n { accessor: 'refNo', Cell: TextRenderer },\r\n { accessor: 'currency', Cell: TextRenderer },\r\n // @ts-ignore:next-line\r\n { accessor: 'amount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.amount, cell.row.values.currency) },\r\n { accessor: 'invoNo', Header: () => {getBicNoLabel(context)}, Cell: TextAlignLeftRenderer },\r\n { accessor: 'invoDate', Header: () => {getBicDateLabel(context)}, Cell: DateRenderer },\r\n { accessor: 'dueDate', Cell: DateRenderer },\r\n { accessor: 'custName', Header: () => {getBicCompanyLabel(context)}, Cell: TextAlignLeftRenderer },\r\n ],\r\n };\r\n\r\n const lineItemsData = history.length > 0 && selectedIndex >= 0 && selectedIndex < history.length\r\n ? (historyData as AcctHistHd).historyDetaillAllList.filter(x => x.ediHdId === history[selectedIndex].id) //history[selectedIndex]lineItems.map((l:any, i:number) => ({...l, no: i + 1}))\r\n : [];\r\n\r\n const historyLineItemsTableOptions:ApplicableTableSettings = {\r\n tableName: 'infoAreaBicHistoryLineItemsTable',\r\n ...infoAreaBicHistoryLineItemsTable,\r\n data: lineItemsData,\r\n selectable: true,\r\n \r\n width: `${row6}px`,\r\n rowRenderers: [\r\n { accessor: 'seqNo', Cell: TextRenderer },\r\n { accessor: 'chgTypeDesc', Cell: SalesCostTypeLabelRenderer },\r\n { accessor: 'code', Cell: TextAlignLeftRenderer },\r\n { accessor: 'description', Cell: TextAlignLeftRenderer },\r\n { accessor: 'currency', Cell: TextRenderer },\r\n {\r\n accessor: 'amount',\r\n Header: () =>
{primaryCurrency} Amount
,\r\n Cell: ({cell}:any) => CurrencyRenderer(cell.row.values.amount, cell.row.values.currency, true)\r\n },\r\n ],\r\n };\r\n\r\n const revisionHistoryLineItemsTableOptions:ApplicableTableSettings = {\r\n tableName: 'infoAreaBicRevisionHistoryLineItemsTable',\r\n ...infoAreaBicRevisionHistoryLineItemsTable,\r\n data: revisionHistory.map((x:any) => ({...x, action: 'PRINT'})),\r\n selectable: true,\r\n \r\n rowRenderers: [\r\n { accessor: 'action', Cell: TextRenderer },\r\n { accessor: 'u2Date', Cell: TextRenderer },\r\n { accessor: 'invoNo', Header: () => {getBicNoLabel(context)}, Cell: TextAlignLeftRenderer },\r\n ],\r\n };\r\n\r\n const labelSize = '110px';\r\n const sectionSize = '190px';\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n }\r\n />\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nBicInfoAreaHistory.defaultProps = {\r\n};\r\n\r\nBicInfoAreaHistory.propTypes = {\r\n primaryCurrency: PropTypes.string.isRequired,\r\n historyData: PropTypes.object,\r\n context: PropTypes.oneOf(['invoice', 'bill', 'crdb']).isRequired,\r\n};\r\n\r\n\r\nexport default React.memo(BicInfoAreaHistory);\r\n","import React, { cloneElement, useContext, useEffect, useState } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport ActionButton, { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../ui/ActionButton';\r\nimport * as XCol from \"../../../framework.core/XExportColumn\";\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport useSystemSettings from '../../../hooks/useSystemSettings';\r\nimport BicInfoAreaHistory from '../../common/BicInfoAreaHistory';\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport { NavigationType, openNewPage } from '../../../util/navigationHelpers';\r\nimport { billList, TableColumn, TableSettings } from '../../../tableSettings';\r\nimport constants from '../../../constants';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport lockRed from '../../../img/lock_red.png';\r\nimport {\r\n CurrencyAmountRenderer,DateRenderer,DateTimeRenderer,NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,TextAlignRightRenderer,TextRenderer,\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport JobListViewContext, { IJobListViewContext, RightClickContext } from '../../common/JobListViewContext';\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport { Search } from '../../../filtering';\r\nimport {getJobNameFromInvBillCrDbJobType,getOpTypeConstant,JobNames} from '../../../framework.core/JobNames';\r\nimport { BillListItem } from '../../../fms.data/models/BillListItem';\r\nimport IfmsModal from \"../../../ui/IfmsModal\";\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport JobListSuntekCommand from '../../common/JobListSuntekCommand';\r\nimport { BicTypeFilterRenderer, DraftFilterRenderer, PeriodRenderer, RecognizedFilterRenderer, RecognizedRenderer, StatusNotUseFileLockedRenderer, VoidFilterRenderer } from '../../common/commonListRenderers';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport fastStorage from '../../../fastStorage';\r\nimport BillInformation from '../../reports/BillInformation';\r\nimport VendorBalanceDetails from '../../reports/AccountBalance';\r\nimport { nowDate } from '../../../dateUtils';\r\nimport { SuntekSettings, SystemSettings } from '../../../ifmsTypes';\r\nimport { findSecurityTask, getSecBySecTask } from '../../../util';\r\nimport { useJournal } from '../general/journal/JournalListView';\r\nimport useSuntekSettings from '../../../hooks/useSuntekSettings';\r\nimport { FormType, SecType } from '../../../fms.enum';\r\nimport CopyInvoice from '../common/CopyInvoice';\r\nimport { getFmsGlobal } from '../../../globals';\r\nimport HistoryView from '../../reports/HistoryView';\r\nimport PrintBill from './report/PrintBill';\r\nimport { FmsSecCntr } from '../../../fms.core/constants/FmsSecCntr';\r\nimport CheckBoxUncontrolled from '../../../ui/CheckBoxUncontrolled';\r\nimport { CurrencyAmountValue, nullableCheckBoxValue } from '../../common/commonExportFormat';\r\n\r\nfunction IndicatorRenderer({ data, row }: any) {\r\n const jobListContext = useContext(JobListViewContext);\r\n const l = data[row.index];\r\n let dataTooltip = ''; \r\n const lStatus = (l as any).status as string;\r\n if (lStatus === 'PC') dataTooltip = 'Period Close';\r\n\r\n let content: React.ReactNode = <>;\r\n if (lStatus === 'PC')\r\n content = \"\";\r\n\r\n function onIndicatorClick() {\r\n if (jobListContext.rowExtrasId) {\r\n return; // Some row is already selected\r\n }\r\n\r\n jobListContext.setRowExtrasId(data[row.index].id);\r\n }\r\n\r\n return (\r\n
\r\n {content}\r\n
\r\n //
{content}
\r\n );\r\n}\r\n\r\nfunction DraftRenderer({ cell }: any) {\r\n if (cell && cell.value) {\r\n return (\r\n
\r\n V\r\n
\r\n );\r\n }\r\n\r\n return
;\r\n}\r\n\r\nfunction ConfirmedRenderer({ value, row }: any) {\r\n \r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const suntekSettings = useSuntekSettings();\r\n\r\n if(jobListContext.opType === constants.opTypes.warehousing){\r\n let secCont = appContext.securityControls ? appContext.securityControls[JobNames.WHBill] : null;\r\n if (!secCont) {\r\n secCont = [\r\n { secCntr: FmsSecCntr.WHBillConfirmed, contName: 'chkConfirmed' }\r\n ];\r\n appContext.setSecurityControls(JobNames.WHBill, secCont);\r\n }\r\n }else{\r\n let secCont = appContext.securityControls ? appContext.securityControls[JobNames.Bill] : null;\r\n if (!secCont) {\r\n secCont = [\r\n { secCntr: FmsSecCntr.BillGivCredit, contName: 'cmdNew10' },\r\n { secCntr: FmsSecCntr.BillCancelCredit, contName: 'cmdNew12' },\r\n { secCntr: FmsSecCntr.BillConfirmed, contName: 'chkConfirmed' }\r\n ];\r\n appContext.setSecurityControls(JobNames.Bill, secCont);\r\n }\r\n }\r\n\r\n\r\n async function updateConfirmed(newValue: boolean) {\r\n await appContext.api.setBillConfirmed(row.original.id, newValue);\r\n row.original.confirmed = newValue;\r\n jobListContext.updateDataRow(row.original);\r\n }\r\n\r\n function findClickedCell(element: Element): Element | null {\r\n for (let i = 0; i < 6; ++i) {\r\n if (!element) {\r\n break;\r\n }\r\n if (Array.from(element.classList).some(className => className.startsWith('row-'))) {\r\n return element;\r\n }\r\n element = element.parentNode as Element;\r\n }\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {\r\n if (!e) return false;\r\n\r\n e?.stopPropagation();\r\n\r\n const element = findClickedCell(e.currentTarget);\r\n if (!element) {\r\n await showGlobalOkDialog(

Cannot find hover element

, false, null, 'warning');\r\n return false;\r\n }\r\n\r\n const classes = element.classList;\r\n const mouseOverRowIndex = Array.from(classes).find(className => className.includes('row-'))?.match(/\\d+$/)?.[0];\r\n\r\n if (!mouseOverRowIndex || !jobListContext.data) {\r\n await showGlobalOkDialog(

Cannot find hover data

, false, null, 'warning');\r\n return false;\r\n }\r\n\r\n const rowData = jobListContext.data[parseInt(mouseOverRowIndex)];\r\n if (rowData.void > 0) {\r\n await showGlobalOkDialog(

This Bill has been voided.

);\r\n return false;\r\n } else if (rowData.paidAmount !== 0) {\r\n await showGlobalOkDialog(

This Bill has been already paid.

);\r\n return false;\r\n } else if (rowData.draft) {\r\n await showGlobalOkDialog(

This Bill is Draft.

);\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }} />\r\n
\r\n );\r\n}\r\n\r\nfunction VoidRenderer({ cell }: any) {\r\n if (cell && cell.value === 1) {\r\n return (\r\n
\r\n V\r\n
\r\n );\r\n }\r\n\r\n return
;\r\n}\r\n\r\nfunction formatData(data: Array) {\r\n return data.map((d: BillListItem) => ({\r\n ...d,\r\n status: d.draft ? '' : d.status\r\n }));\r\n}\r\n\r\nfunction useBillOperations() {\r\n const history = useHistory();\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n // function switchToHbl(jobName: JobNames, refNo:string) {\r\n // const opType = getOpTypeConstant(jobName);\r\n // jobListContext.setFilterForScreenExternally(`/common/joblistview/hbl/${opType}`, 'refNo', 'Ref No', refNo, 'updated', false);\r\n // openNewPage(history, `/common/joblistview/hbl/${opType}`, NavigationType.newPage);\r\n // }\r\n\r\n // function switchToMbl(jobName: JobNames, mblNo:string) {\r\n // const opType = getOpTypeConstant(jobName);\r\n // jobListContext.setFilterForScreenExternally(`/common/joblistview/mbl/${opType}`, 'mblNo', 'Mbl No', mblNo, 'updated', false);\r\n // openNewPage(history, `/common/joblistview/mbl/${opType}`, NavigationType.newPage);\r\n // }\r\n function switchToList(jobName: JobNames, jobId: number, refNo: string, hblNo: string) {\r\n // const blType = isMasterJob(jobName) ? 'mbl' : 'hbl';\r\n let blType = '';\r\n let columnLabel = '';\r\n let columnIdEx = null;\r\n let textEx = null;\r\n switch(jobName) {\r\n case JobNames.OIMbl:\r\n blType = 'mbl';\r\n columnLabel = 'Ref. #';\r\n columnIdEx = 'refNo';\r\n textEx = refNo;\r\n break;\r\n case JobNames.OIHbl:\r\n blType = 'hbl';\r\n columnLabel = 'HBL #';\r\n columnIdEx = 'hblNo';\r\n textEx = hblNo;\r\n break;\r\n case JobNames.OEMbl:\r\n blType = 'oeMbl';\r\n columnLabel = 'Ref. #';\r\n columnIdEx = 'refNo';\r\n textEx = refNo;\r\n break;\r\n case JobNames.OEHbl:\r\n blType = 'oeHbl';\r\n columnLabel = 'HBL #';\r\n columnIdEx = 'hblNo';\r\n textEx = hblNo;\r\n break;\r\n case JobNames.AIMbl:\r\n blType = 'aiMawb';\r\n columnLabel = 'Ref. #';\r\n columnIdEx = 'refNo';\r\n textEx = refNo;\r\n break;\r\n case JobNames.AIHbl:\r\n blType = 'aiHawb';\r\n columnLabel = 'HAWB #';\r\n columnIdEx = 'hawbNo';\r\n textEx = hblNo;\r\n break;\r\n case JobNames.AEMbl:\r\n blType = 'aeMawb';\r\n columnLabel = 'Ref. #';\r\n columnIdEx = 'refNo';\r\n textEx = refNo;\r\n break;\r\n case JobNames.AEHbl:\r\n blType = 'aeHawb';\r\n columnLabel = 'HAWB #';\r\n columnIdEx = 'hawbNo';\r\n textEx = hblNo;\r\n break;\r\n case JobNames.OtherOP:\r\n blType = 'otherShipment';\r\n columnLabel = 'Ref. #';\r\n columnIdEx = 'refNo';\r\n textEx = refNo;\r\n break;\r\n case JobNames.WHRcv:\r\n blType = 'whReceiving';\r\n columnLabel = 'Receiving ID';\r\n columnIdEx = 'receiveNo';\r\n textEx = refNo;\r\n break;\r\n case JobNames.WHShip:\r\n blType = 'whShipping';\r\n columnLabel = 'Shipping ID';\r\n columnIdEx = 'shipNo';\r\n textEx = refNo;\r\n break;\r\n }\r\n const opType = getOpTypeConstant(jobName);\r\n jobListContext.setFilterForScreenExternally(`/common/joblistview/${blType}/${opType}`, 'id', columnLabel, jobId.toString(), 'update', false, true, null, columnIdEx, textEx, false, true);\r\n openNewPage(history, `/common/joblistview/${blType}/${opType}`, NavigationType.newPage);\r\n }\r\n\r\n function switchToParentFor(bill: BillListItem) {\r\n if (!bill) {\r\n return;\r\n }\r\n\r\n // if (bill.type === JobNames.OIMbl) {\r\n // switchToMbl(bill.parentNo ?? '');\r\n // }\r\n // if (bill.type === JobNames.OIHbl) {\r\n // switchToHbl(bill.refNo ?? '');\r\n // }\r\n switchToList(getJobNameFromInvBillCrDbJobType(bill.jobType), bill.tbId, bill.refNo, bill.hblNo);\r\n\r\n }\r\n\r\n return { switchToParentFor };\r\n}\r\n\r\nfunction useSelectedBillOperations() {\r\n const fmsGlobal = getFmsGlobal();\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const history = useHistory();\r\n const { switchToParentFor } = useBillOperations();\r\n\r\n const selectedElement = jobListContext.selectedElement as BillListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (!selectedElement.jobType) {\r\n //await showGlobalOkDialog(

Operation currently not implemented for this type

);\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const viewUrl = `/accounting/bill/view/${getJobNameFromInvBillCrDbJobType(selectedElement?.jobType)}/${selectedElement?.tbId}/${id}`;\r\n const editUrl = `/accounting/bill/edit/${getJobNameFromInvBillCrDbJobType(selectedElement?.jobType)}/${selectedElement?.tbId}/${id}`;\r\n\r\n // if (jobListContext.hasOpenedScreenInAnyOperationStartingWithUrlWithoutMe(`/accounting/bill/edit`, editUrl)) {\r\n // await showGlobalOkDialog(

Edit operation is already in progress.

);\r\n // return;\r\n // }\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (!selectedElement.jobType) {\r\n //await showGlobalOkDialog(

Operation currently not implemented for this type

);\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/accounting/bill/edit/${getJobNameFromInvBillCrDbJobType(selectedElement?.jobType)}/${selectedElement?.tbId}/${id}`;\r\n const viewUrl = `/accounting/bill/view/${getJobNameFromInvBillCrDbJobType(selectedElement?.jobType)}/${selectedElement?.tbId}/${id}`;\r\n\r\n const listSec = findSecurityTask(appContext, (jobListContext.opType === constants.opTypes.warehousing ? FmsSecTask.WHBill : FmsSecTask.AcctBillList));\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n async function viewPaymentHistory() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const jobId = selectedElement.id;\r\n const jobName = JobNames.Bill;\r\n const jobType = selectedElement.jobType\r\n\r\n const viewUrl = `/accounting/acPaymentHistoryView/${jobName}/${jobId}/${getJobNameFromInvBillCrDbJobType(jobType)}`;\r\n openNewPage(history, viewUrl, NavigationType.newPage);\r\n }\r\n\r\n async function deleteItem() {\r\n if (!selectedElement) {\r\n await showGlobalOkDialog('Cannot delete!',false,null,'warning');\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/accounting/bill/edit/${getJobNameFromInvBillCrDbJobType(selectedElement.jobType)}/${selectedElement.tbId}/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/accounting/bill/view/${getJobNameFromInvBillCrDbJobType(selectedElement.jobType)}/${selectedElement.tbId}/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Bill first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n ,false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.Bill, { id: selectedElement.id, opAcctBlockAfterClosed: fmsGlobal?.OPAcctBlockAfterClosed??false });\r\n if (apiResult && apiResult.success) {\r\n jobListContext.reloadData();\r\n } else {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n await showGlobalOkDialog(message,false,null,'warning');\r\n }\r\n }\r\n }\r\n\r\n function switchToParent() {\r\n const selectedElement = jobListContext.selectedElement as BillListItem;\r\n switchToParentFor(selectedElement);\r\n }\r\n\r\n return { edit, view, switchToParent, deleteItem, viewPaymentHistory };\r\n}\r\n\r\nfunction RightClickMenu({ dismiss }: { dismiss: VoidFunction }) {\r\n const { edit, view, deleteItem, switchToParent } = useSelectedBillOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const listSec = findSecurityTask(appContext, (jobListContext.opType === constants.opTypes.warehousing ? FmsSecTask.WHBill : FmsSecTask.AcctBillList));\r\n // const isDraft = jobListContext.selectedElement.draft;\r\n\r\n const items = [\r\n { label: 'View', shortcut: 'F9', separator: !listSec?.grantEdit && !listSec?.grantDel },\r\n { label: 'Edit', shortcut: 'F3', separator: !listSec?.grantDel, hidden: !listSec?.grantEdit },\r\n { label: 'Delete', shortcut: '', separator: true, hidden: !listSec?.grantDel },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: 'Switch to BL List', shortcut: 'F6', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) => ({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item: IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n view();\r\n break;\r\n case 1:\r\n edit();\r\n break;\r\n case 2:\r\n deleteItem();\r\n break;\r\n case 3:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 4:\r\n switchToParent();\r\n break;\r\n case 5:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 6:\r\n jobListContext.reloadData();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction BillListCommands() {\r\n const history = useHistory();\r\n const jobListContext = useContext(JobListViewContext);\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const selectedElement = jobListContext.selectedElement as BillListItem;\r\n\r\n const { edit, view, deleteItem, viewPaymentHistory } = useSelectedBillOperations();\r\n \r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, (jobListContext.opType === constants.opTypes.warehousing ? FmsSecTask.WHBill : FmsSecTask.AcctBillList));\r\n const hasSecCp = getSecBySecTask(appContext, FmsSecTask.AcctCustPayment, SecType.Add);\r\n const hasSecBp = getSecBySecTask(appContext, FmsSecTask.AcctBillPayment, SecType.Add);\r\n\r\n const hasSelectedRow = !!selectedElement;\r\n\r\n const onPopupClose = () => {\r\n setSelectedPopupMenuItem(null);\r\n }\r\n\r\n async function onCustomerBillAction(item: ActionButtonItem) {\r\n let link = '';\r\n switch (item.index) {\r\n case 0:\r\n link = `/accounting/acCustomerPayment/add`;\r\n break;\r\n case 1:\r\n link = `/accounting/acBillPayment/add`;\r\n break;\r\n case 2:\r\n\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/acCustomerPayment/accounting', \r\n 'invoiceNo', 'Billings', selectedElement.billNo, 'updated', false, true, null);\r\n openNewPage(history, '/common/joblistview/acCustomerPayment/accounting', NavigationType.newPage);\r\n return;\r\n case 3:\r\n\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/acBillPayment/accounting', \r\n 'invoiceNo', 'Billings', selectedElement.billNo, 'updated', false, true, null);\r\n openNewPage(history, '/common/joblistview/acBillPayment/accounting', NavigationType.newPage);\r\n return;\r\n }\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrl(link)) {\r\n await showGlobalOkDialog(

Payment New Operation is already in progress

);\r\n return;\r\n }\r\n\r\n openNewPage(history, `${link}/${selectedElement.vendorId}`, NavigationType.newPage);\r\n }\r\n\r\n function onHistoryBtnAction(item: ActionButtonItem) {\r\n switch (item.index) {\r\n case 0:\r\n viewPaymentHistory();\r\n break;\r\n case 1:\r\n setSelectedPopupMenuItem({ label: 'View History', popupWidth: 920, popupComponent: });\r\n break;\r\n // case 2:\r\n // setSelectedPopupMenuItem({ label: 'Delete History (Bill)', popupWidth: 920, popupComponent: })\r\n // return;\r\n }\r\n }\r\n\r\n async function copyBill() {\r\n if (selectedElement.draft) {\r\n await showGlobalOkDialog(

The Draft Bill cannot be copied.

,false,null,'error');\r\n return;\r\n }\r\n setSelectedPopupMenuItem({\r\n label:'Select a target B/L to be linked',\r\n popupWidth: 450,\r\n popupComponent:\r\n \r\n });\r\n }\r\n\r\n async function vendorBalance() {\r\n if (selectedElement.vendorId <= 0 && (selectedElement.vendorName === null || selectedElement.vendorName === '')) {\r\n await showGlobalOkDialog(

You didn't enter Vendor.

,false,null,'error');\r\n return;\r\n }\r\n setSelectedPopupMenuItem({\r\n label: 'Balance',\r\n popupWidth: 780,\r\n popupComponent:\r\n \r\n });\r\n }\r\n \r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n const disablePrint = !hasSelectedRow; //&& selectedElement.draft; //<240523.dwshin Invoice/Bill/CRDB - Draft인 항목을 출력 할 때, Title에 Draft 나오도록 추가>\r\n // const selectRowDraft = hasSelectedRow && selectedElement.draft;\r\n const canBeCopied = hasSelectedRow && listSec?.grantAdd;\r\n\r\n return (\r\n
\r\n
\r\n View \r\n Edit \r\n Delete \r\n {(jobListContext.opType !== constants.opTypes.warehousing) && <>\r\n \r\n Copy\r\n \r\n }\r\n
\r\n
\r\n {jobListContext.opType === constants.opTypes.warehousing && <>\r\n setSelectedPopupMenuItem({ label: 'Print Bill', popupComponent: })}>Print \r\n {(hasSecCp || hasSecBp) &&\r\n <>\r\n \r\n Pay\r\n  \r\n \r\n }\r\n <>\r\n \r\n View History\r\n  \r\n \r\n {/* setSelectedPopupMenuItem({ label: 'Payment History', popupWidth: 1050, popupComponent: })}>Payment History  \r\n Payment History \r\n setSelectedPopupMenuItem({ label: 'View History', popupWidth: 920, popupComponent: })}>View History */}\r\n }\r\n \r\n {jobListContext.opType !== constants.opTypes.warehousing && (\r\n <>\r\n \r\n setSelectedPopupMenuItem({\r\n label: 'Print Bill',\r\n popupComponent: ,\r\n })\r\n }\r\n >\r\n Print\r\n \r\n  \r\n \r\n )}\r\n\r\n \r\n Balance\r\n \r\n
\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.popupComponent ? (\r\n \r\n {cloneElement(selectedPopupMenuItem.popupComponent!, { onPopupClose })}\r\n \r\n ) : null}\r\n
\r\n );\r\n}\r\n\r\nfunction TrancationImpactButtonCommands({ userId } : {userId: string}) {\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as BillListItem;\r\n const {switchJournal} = useJournal();\r\n const suntekSettings = useSuntekSettings();\r\n \r\n if ((!suntekSettings.general?.allowViewJournalBillings && !userId.startsWith('@')) || jobListContext.opType !== constants.opTypes.warehousing) {\r\n return null;\r\n }\r\n\r\n return (\r\n switchJournal(JobNames.Bill, selectedElement.id)}>\r\n {constants.List_Journal}\r\n \r\n );\r\n}\r\n\r\nfunction BillListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction BillListViewExtras({\r\n hideLogHistory\r\n}: any,\r\n) {\r\n useFunctionKeys({ onFunction: onFunctionKey });\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const listSec = findSecurityTask(appContext, (jobListContext.opType === constants.opTypes.warehousing ? FmsSecTask.WHBill : FmsSecTask.AcctBillList));\r\n const systemSettings = useSystemSettings();\r\n\r\n const { edit, view, switchToParent } = useSelectedBillOperations();\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n switchToParent();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F6', 'F3', 'F9', 'F11', 'F8'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * \r\n * @param param { jobName, jobId, appContext, jobListContext } \r\n * @returns \r\n */\r\n async function loadBillHistory(param: any) {\r\n //const apiResult = await appContext.api.getOceanImportBillHistory(id);\r\n const apiResult = await appContext.api.getAcctHistory(param.jobName, param.jobId, (jobListContext.selectedElement as BillListItem).jobType, false);\r\n if (!apiResult || !apiResult.success) {\r\n return null;\r\n }\r\n\r\n return \r\n }\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n hideLogHistory={hideLogHistory}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for BILL (OI) List screen\r\n *\r\n * @class BillListView\r\n * @extends {AbstractListView}\r\n */\r\nclass BillListView extends AbstractListView {\r\n getTableSettings(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): TableSettings {\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n const useVat = systemSettings.useVat ?? false;\r\n let listType: JobNames.Bill | JobNames.WHBill | JobNames.GBill = JobNames.Bill;\r\n if (opType === constants.opTypes.warehousing) {\r\n listType = JobNames.WHBill;\r\n }\r\n\r\n const tsettings = billList;\r\n const cols = BillListItem.getExportCollection(listType, useBranch, useVat);\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type };\r\n });\r\n return tsettings;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'updated',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getCustomFilterRenderers(opType?: string | undefined): ListCustomFilterRenderer[] {\r\n return [\r\n {\r\n accessor: 'statusNotUseFileLocked',\r\n renderer: StatusNotUseFileLockedRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'recognized',\r\n renderer: RecognizedFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'jobType',\r\n renderer: (props: any) => ,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n //{\r\n // accessor: 'draft',\r\n // renderer: DraftFilterRenderer,\r\n // searchValueExtractor: (v: any | null | undefined) => v === 'D' ? true : false,\r\n //},\r\n // {\r\n // accessor: 'void',\r\n // renderer: VoidFilterRenderer,\r\n // searchValueExtractor: (v: any | null | undefined) => v === 'V' ? 1 : 0,\r\n // },\r\n {\r\n accessor: 'confirmed',\r\n renderer: undefined,\r\n searchValueExtractor: (v: any | null | undefined) => v.value !== undefined ? v.value : v,\r\n },\r\n ];\r\n }\r\n\r\n getRowRenderers(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): ListRowRenderer[] {\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n const useVat = systemSettings.useVat ?? false;\r\n let listType: JobNames.Bill | JobNames.WHBill | JobNames.GBill = JobNames.Bill;\r\n if (opType === constants.opTypes.warehousing) {\r\n listType = JobNames.WHBill;\r\n }\r\n\r\n return BillListItem.getExportCollection(listType, useBranch, useVat).map(x => {\r\n const colRenderer: ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if (x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if (x.align === XCol.XAlignType.Right) colRenderer.Cell = TextAlignRightRenderer;\r\n if (x.dataIndex === \"status\") {\r\n colRenderer.Cell = IndicatorRenderer;\r\n }\r\n else if (x.dataIndex === \"draft\") {\r\n // colRenderer.Cell = DraftRenderer;\r\n colRenderer.Cell = NullableCheckboxIconRenderer;\r\n }\r\n // else if (x.dataIndex === \"void\") {\r\n // colRenderer.Cell = VoidRenderer;\r\n // }\r\n else if (x.dataIndex === \"period\") {\r\n colRenderer.Cell = PeriodRenderer;\r\n }\r\n else if (x.dataIndex === \"amount\" || x.dataIndex === \"paidAmount\" || x.dataIndex === \"balance\" || x.dataIndex === \"cAmount\" || x.dataIndex === \"dutyAmount\" ||x.dataIndex ===\"vatAmount\") {\r\n colRenderer.Cell = props => x.currency} {...props} />;\r\n } else if (x.dataIndex === 'recognized') {\r\n colRenderer.Cell = RecognizedRenderer;\r\n }\r\n else if (x.dataIndex === \"confirmed\") {\r\n colRenderer.Cell = ConfirmedRenderer;\r\n }\r\n else if (x.dataIndex === \"refNo\" || x.dataIndex === \"hblNo\") {\r\n colRenderer.Cell = TextAlignLeftRenderer;\r\n }\r\n else if (x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if (x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if (x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({ accessor: 'status', changedValue: (value: any) => { return value['status'] === 'PC' ? 'Period Close' : '' } });\r\n colRenderer.push({ accessor: 'amount', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['amount']) } });\r\n colRenderer.push({ accessor: 'paidAmount', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['paidAmount']) } });\r\n colRenderer.push({ accessor: 'balance', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['balance']) } });\r\n colRenderer.push({ accessor: 'cAmount', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['cAmount']) } });\r\n colRenderer.push({ accessor: 'dutyAmount', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['dutyAmount']) } });\r\n colRenderer.push({ accessor: 'vatAmount', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['vatAmount']) } });\r\n colRenderer.push({ accessor: 'draft', changedValue: (value: any) => { return nullableCheckBoxValue(value['draft'])} });\r\n colRenderer.push({ accessor: 'confirmed', changedValue: (value: any) => { return nullableCheckBoxValue(value['confirmed'])} });\r\n return colRenderer;\r\n }\r\n\r\n async fetchAndFormatData(api: any, search: Search, opType: string | undefined): Promise {\r\n BillListItem.calculateSearchParameters(search, BillListItem.MapSearchFields, ['void']);\r\n\r\n const searchModel = BillListItem.calculateSearchParameters(search, BillListItem.MapSearchFields, ['void']);\r\n if (opType === constants.opTypes.oceanImport) searchModel.extraWhere = JobNames.OceanImport;\r\n else if (opType === constants.opTypes.oceanExport) searchModel.extraWhere = JobNames.OceanExport;\r\n else if (opType === constants.opTypes.airImport) searchModel.extraWhere = JobNames.AirImport;\r\n else if (opType === constants.opTypes.airExport) searchModel.extraWhere = JobNames.AirExport;\r\n else if (opType === constants.opTypes.otherShipment) searchModel.extraWhere = JobNames.OtherOP;\r\n\r\n const apiResult = await api.getListItems(opType === constants.opTypes.warehousing ? JobNames.WHBill : JobNames.Bill,\r\n 'BillListItem',\r\n searchModel,\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return { data: [], totalCount: 0 };\r\n }\r\n\r\n return { data: formatData(apiResult.entities), totalCount: apiResult.totalCount };\r\n }\r\n\r\n renderCommands(): React.ReactNode {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton(): React.ReactNode {\r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n\r\n renderExtras(hideLogHistory: boolean): React.ReactNode {\r\n return (\r\n \r\n );\r\n }\r\n\r\n getViewUrlFor(row: BillListItem) {\r\n if (!row.jobType) {\r\n return ''; // Not supported\r\n }\r\n\r\n return { url: row && row.id ? `/accounting/bill/view/${getJobNameFromInvBillCrDbJobType(row.jobType)}/${row.tbId}/${row.id}` : '', \r\n needAfterScreenUrl: true, checkAllOperation: true };\r\n }\r\n\r\n getListViewTitle(opType: string | undefined) {\r\n return 'Bill List';\r\n };\r\n\r\n renderRowExtras(rowId: number | null, context: IJobListViewContext): React.ReactNode | null {\r\n if (!rowId) {\r\n return null;\r\n }\r\n\r\n const selectedBillNo = (context.data?.find(x => x.id === rowId) as BillListItem).billNo;\r\n\r\n function onPopupClose() {\r\n const storageKey = `bill-information-${rowId}`;\r\n fastStorage[storageKey] = null;\r\n context.setRowExtrasId(null);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderAdditionalCommands() {\r\n return ;\r\n }\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n \r\n useLogHistory(): boolean {\r\n return true;\r\n }\r\n\r\n transactionImpactBtn(userId: string): React.ReactNode {\r\n return \r\n }\r\n}\r\n\r\nexport default BillListView;\r\n","\r\nexport class Edi310Header {\r\n billTo : number = 0;\r\n billToName : string = '';\r\n senderID: string = '';\r\n receiverID:string = '';\r\n ftpServer :string = '';\r\n ftpID :string = '';\r\n ftpPassword :string = '';\r\n ftpOutFolder :string = '';\r\n ftpScac :string = '';\r\n ediSeqNo : number = 0;\r\n\r\n lines: Edi310Line[] = [];\r\n\r\n //cloud\r\n startDate :string = '';\r\n endDate :string = '';\r\n\r\n constructor(init?: Partial) {\r\n Object.assign(this, init);\r\n this.lines = [];\r\n }\r\n}\r\n\r\nexport class Edi310Line {\r\n id: number = 0;\r\n invoiceId: number = 0;\r\n invoiceNo: string = '';\r\n invoiceDate: string | null = null;\r\n dueDate: string | null = null;\r\n ediDate: string | null = null;\r\n amount: number = 0;\r\n selected: boolean = false;\r\n currency: string = '';\r\n}\r\n\r\nexport class EdiSharedInfo {\r\n id: number = 0;\r\n version: string = '';\r\n release: string = '';\r\n senderID: string = '';\r\n senderIdQualifier: string = '';\r\n senderName: string = '';\r\n receiverID: string = '';\r\n receiverIdQualifier: string = '';\r\n receiverName: string = '';\r\n fileName: string = '';\r\n ediType: string = '';\r\n\r\n constructor(init?: Partial) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n\r\n","import { useContext, useEffect, useState } from 'react';\r\nimport { useTypedFastStorage } from '../../hooks/useFastStorage';\r\nimport InlineInputControlRow from '../../ui/layout/InlineInputControlRow';\r\nimport SecondaryButton from \"../../ui/SecondaryButton\";\r\nimport TextBox from '../../ui/TextBox';\r\nimport IfmsDate from '../../ui/Date';\r\nimport Float from '../../ui/Float';\r\nimport { InvoiceListItem } from '../../fms.data/models/InvoiceListItem';\r\nimport { Edi310Header, EdiSharedInfo } from '../../fms.core/Edi310Header';\r\nimport { ApiResult } from '../../framework.core/data/ApiResult';\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport useGlobalOkDialog from '../../hooks/useGlobalOkDialog';\r\nimport numeral from 'numeral';\r\nimport moment from 'moment';\r\nimport { appendLine } from '../../util';\r\nimport constants from '../../constants';\r\n\r\ninterface Edi310StorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\ninterface Edi310Params {\r\n selectedElement: InvoiceListItem,\r\n onPopupClose?: () => void,\r\n};\r\n\r\ninterface Edi310LoadedParams {\r\n edi310: Edi310Header,\r\n setEdi310: (x: Partial) => void,\r\n selectedElement: InvoiceListItem,\r\n onPopupClose?: () => void,\r\n clickEDI: () => void,\r\n run: boolean\r\n};\r\n\r\nfunction getStorageKeys(): Edi310StorageKeys {\r\n return { modelStorage: 'common-edi-310' }\r\n}\r\n\r\nfunction Edi310Impl(params: Edi310Params) {\r\n const { modelStorage } = getStorageKeys();\r\n const { selectedElement } = params;\r\n const [edi310, setEdi310, removeFromStorage] = useTypedFastStorage(modelStorage, null);\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [run, setRun] = useState(false);\r\n const appContext = useContext(ApplicationContext);\r\n\r\n useEffect(() => {\r\n initialize();\r\n return () => removeFromStorage()\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n async function loadExisting(): Promise {\r\n const apiResult: ApiResult = await appContext.api.getEDI310(selectedElement.id);\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

{apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

);\r\n return;\r\n }\r\n return apiResult.result;\r\n }\r\n\r\n async function initialize() {\r\n const data = await loadExisting();\r\n\r\n if (data) {\r\n setEdi310({ ...data });\r\n }\r\n }\r\n\r\n if (edi310 === null) {\r\n return null;\r\n }\r\n\r\n async function clickEDI() {\r\n setRun(true);\r\n if (edi310?.ftpID === '' && edi310.ftpPassword === '' && edi310.ftpOutFolder === '' && edi310.ftpScac === '') {\r\n await showGlobalOkDialog(

EDI Gateway is not setting.

);\r\n return;\r\n }\r\n\r\n var errMsg = await faCheckData();\r\n\r\n if (errMsg !== '') {\r\n await showGlobalOkDialog(

Please check following information. (Specify the missing entries.)
\r\n {errMsg}\r\n

);\r\n return;\r\n }\r\n\r\n var invoHdIds = edi310?.lines[0].invoiceId.toString();\r\n var receiverId = '';\r\n var receiverIdq = '';\r\n var senderId = '';\r\n var senderIdq = '';\r\n\r\n if (edi310 && edi310.receiverID !== '' && edi310.receiverID.indexOf(':') >= 0) {\r\n receiverId = edi310.receiverID.substring(4);\r\n receiverIdq = edi310.receiverID.substring(0, 2);\r\n }\r\n else {\r\n receiverId = edi310?.receiverID ?? '';\r\n receiverIdq = 'ZZ';\r\n }\r\n\r\n if (edi310 && edi310?.senderID !== '' && edi310?.senderID.indexOf(':') >= 0) {\r\n senderId = edi310.senderID.substring(4);\r\n senderIdq = edi310.senderID.substring(0, 2);\r\n }\r\n else {\r\n senderId = edi310?.senderID ?? '';\r\n senderIdq = 'ZZ';\r\n }\r\n\r\n const ediInfo = new EdiSharedInfo({\r\n receiverID: receiverId,\r\n receiverIdQualifier: receiverIdq,\r\n senderID: senderId,\r\n senderIdQualifier: senderIdq,\r\n fileName: `EDI${moment().format('yyyyMMdd')}${numeral(edi310?.ediSeqNo).format('D8')}.TXT`\r\n });\r\n\r\n const apiResult = await appContext.api.make310(ediInfo, selectedElement.jobType,\r\n invoHdIds, 'c:\\\\temp', edi310?.ftpScac, edi310?.ediSeqNo);\r\n //const apiResult = await appContext.api.make310(jobtype:selectedElement.jobType, invoHdIds : invoHdIds,tempDir : '',ediInfo : ediInfo,ftpScac: edi310?.ftpScac, ediSeqNo : edi310?.ediSeqNo);\r\n if (apiResult && apiResult.success) {\r\n await showGlobalOkDialog(

Success !!!

);\r\n setRun(false);\r\n return;\r\n }\r\n else {\r\n var msg = apiResult?.result?.length !== 0 ? apiResult.result : 'Failed !!!';\r\n setRun(false);\r\n await showGlobalOkDialog(

{msg}

);\r\n }\r\n }\r\n\r\n async function faCheckData() {\r\n let errMsg = '';\r\n\r\n if (edi310?.receiverID === '')\r\n errMsg = '* You must input Receiver';\r\n if (edi310?.senderID === '')\r\n errMsg = appendLine(errMsg, '* You must input Sender');\r\n return errMsg;\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction Edi310InitializedImpl({\r\n edi310,\r\n setEdi310,\r\n selectedElement,\r\n onPopupClose,\r\n clickEDI,\r\n run\r\n}: Edi310LoadedParams) {\r\n\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n ~\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n SEND TO EDI\r\n \r\n \r\n CANCEL\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nconst Edi310 = ({\r\n onPopupClose,\r\n selectedElement\r\n}: { onPopupClose?: () => void, selectedElement: InvoiceListItem }) => {\r\n return (\r\n \r\n );\r\n};\r\nexport default Edi310;\r\n","import React, { useContext, useEffect, useState } from 'react';\r\nimport { useTypedFastStorage } from '../../hooks/useFastStorage';\r\nimport InlineInputControlRow from '../../ui/layout/InlineInputControlRow';\r\nimport SecondaryButton from \"../../ui/SecondaryButton\";\r\nimport TextBox from '../../ui/TextBox';\r\nimport IfmsDate from '../../ui/Date';\r\nimport { ApplicableTableSettings } from '../../tableSettings';\r\nimport { edi310BatchTable } from './tableSettings';\r\nimport SmartTable from '../../uiControls/SmartTable';\r\nimport { Edi310Header, EdiSharedInfo } from '../../fms.core/Edi310Header';\r\nimport { InvoiceListItem } from '../../fms.data/models/InvoiceListItem';\r\nimport useGlobalOkDialog from '../../hooks/useGlobalOkDialog';\r\nimport moment from 'moment';\r\nimport numeral from 'numeral';\r\nimport { appendLine } from '../../util';\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport _ from 'lodash';\r\nimport CheckBox from '../../ui/CheckBox';\r\nimport { DateRenderer, FloatRenderer, TextAlignLeftRenderer } from '../../uiControls/SmartTableRenderers';\r\nimport { ApiResult } from '../../framework.core/data/ApiResult';\r\nimport { addDays, now } from '../../dateUtils';\r\nimport PrimaryButton from '../../ui/PrimaryButton';\r\nimport constants from '../../constants';\r\n\r\ninterface Edi310BatchStorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\ninterface Edi310BatchParams {\r\n selectedElement: InvoiceListItem,\r\n onPopupClose?: () => void,\r\n};\r\n\r\ninterface Edi310BatchLoadedParams {\r\n edi310Batch: Edi310Header,\r\n setEdi310Batch: (x: Partial) => void,\r\n selectedElement: InvoiceListItem,\r\n onPopupClose?: () => void,\r\n clickEDI: () => void,\r\n searchEDI: () => void,\r\n run: boolean\r\n};\r\n\r\nfunction getStorageKeys(): Edi310BatchStorageKeys {\r\n return { modelStorage: 'common-edi-310-batch' }\r\n}\r\n\r\nfunction Edi310BatchImpl(params: Edi310BatchParams) {\r\n const { modelStorage } = getStorageKeys();\r\n const { selectedElement } = params;\r\n const [edi310Batch, setEdi310Batch, removeFromStorage] = useTypedFastStorage(modelStorage, null);\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [run, setRun] = useState(false);\r\n const appContext = useContext(ApplicationContext);\r\n\r\n useEffect(() => {\r\n initialize();\r\n return () => removeFromStorage()\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n async function loadExisting(): Promise {\r\n var endDate = now();\r\n var startDate = addDays(endDate, -7).toString();\r\n const apiResult: ApiResult = await appContext.api.getEDI310Batch(selectedElement.id, startDate, endDate.toString());\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

{apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

);\r\n return;\r\n }\r\n\r\n return apiResult.result;\r\n }\r\n\r\n async function initialize() {\r\n const data = await loadExisting();\r\n if (data) {\r\n setEdi310Batch({ ...data });\r\n }\r\n\r\n var endDate = now().toString();\r\n var startDate = addDays(endDate, -7).toString();\r\n setEdi310Batch({ startDate: startDate, endDate: endDate })\r\n }\r\n\r\n if (!edi310Batch) {\r\n return null;\r\n }\r\n\r\n async function searchEDI() {\r\n const apiResult: ApiResult = await appContext.api.getEDI310Batch(selectedElement.id, edi310Batch?.startDate, edi310Batch?.endDate);\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

{apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

);\r\n return;\r\n }\r\n\r\n if (apiResult.result) {\r\n setEdi310Batch({ ...apiResult.result });\r\n }\r\n }\r\n async function clickEDI() {\r\n setRun(true);\r\n if (edi310Batch?.ftpID === '' && edi310Batch.ftpPassword === '' && edi310Batch.ftpOutFolder === '' && edi310Batch.ftpScac === '') {\r\n await showGlobalOkDialog(

EDI Gateway is not setting.

);\r\n return;\r\n }\r\n\r\n var errMsg = await faCheckData();\r\n\r\n if (errMsg !== '') {\r\n await showGlobalOkDialog(

Please check following information. (Specify the missing entries.)
\r\n {errMsg}\r\n

);\r\n return;\r\n }\r\n\r\n var invoHdIds = '';\r\n edi310Batch?.lines.forEach(x => {\r\n if(x.selected)\r\n invoHdIds = invoHdIds.length === 0 ? x.invoiceId.toString() : (invoHdIds + ',' + x.invoiceId);\r\n });\r\n\r\n var receiverId = '';\r\n var receiverIdq = '';\r\n var senderId = '';\r\n var senderIdq = '';\r\n\r\n if (edi310Batch && edi310Batch.receiverID !== '' && edi310Batch.receiverID.indexOf(':') >= 0) {\r\n receiverId = edi310Batch.receiverID.substring(4);\r\n receiverIdq = edi310Batch.receiverID.substring(0, 2);\r\n }\r\n else {\r\n receiverId = edi310Batch?.receiverID ?? '';\r\n receiverIdq = 'ZZ';\r\n }\r\n\r\n if (edi310Batch && edi310Batch?.senderID !== '' && edi310Batch?.senderID.indexOf(':') >= 0) {\r\n senderId = edi310Batch.senderID.substring(4);\r\n senderIdq = edi310Batch.senderID.substring(0, 2);\r\n }\r\n else {\r\n senderId = edi310Batch?.senderID ?? '';\r\n senderIdq = 'ZZ';\r\n }\r\n\r\n const ediInfo = new EdiSharedInfo({\r\n receiverID: receiverId,\r\n receiverIdQualifier: receiverIdq,\r\n senderID: senderId,\r\n senderIdQualifier: senderIdq,\r\n fileName: `EDI${moment().format('yyyyMMdd')}${numeral(edi310Batch?.ediSeqNo).format('D8')}.TXT`\r\n });\r\n\r\n const apiResult = await appContext.api.make310(ediInfo, selectedElement.jobType,\r\n invoHdIds, 'c:\\\\temp', edi310Batch?.ftpScac, edi310Batch?.ediSeqNo);\r\n //const apiResult = await appContext.api.make310(jobtype:selectedElement.jobType, invoHdIds : invoHdIds,tempDir : '',ediInfo : ediInfo,ftpScac: edi310?.ftpScac, ediSeqNo : edi310?.ediSeqNo);\r\n if (apiResult && apiResult.success) {\r\n await showGlobalOkDialog(

Success !!!

);\r\n setRun(false);\r\n return;\r\n }\r\n else {\r\n var msg = apiResult?.result?.length !== 0 ? apiResult.result : 'Failed !!!';\r\n await showGlobalOkDialog(

{msg}

);\r\n setRun(false);\r\n }\r\n }\r\n\r\n async function faCheckData() {\r\n let errMsg = '';\r\n\r\n if (edi310Batch?.receiverID === '')\r\n errMsg = '* You must input Receiver';\r\n if (edi310Batch?.senderID === '')\r\n errMsg = appendLine(errMsg, '* You must input Sender');\r\n if(edi310Batch?.lines.filter(x => x.selected).length === 0)\r\n errMsg= appendLine(errMsg, '* You must select Invoice');\r\n return errMsg;\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction SelectRenderer({ data, row }: any) {\r\n const toggleSelection = data[row.index].toggleSelection;\r\n const isView = data[row.index].isView;\r\n\r\n return (\r\n
\r\n toggleSelection(row.index)} disabled={isView} />\r\n
\r\n );\r\n}\r\n\r\nfunction Edi310BatchInitializedImpl({\r\n edi310Batch,\r\n setEdi310Batch,\r\n selectedElement,\r\n onPopupClose,\r\n clickEDI,\r\n searchEDI,\r\n run\r\n}: Edi310BatchLoadedParams) {\r\n const [selectedIndex, setSelectedIndex] = useState(0)\r\n\r\n function toggleSelection(i: number) {\r\n const _list = _.cloneDeep(edi310Batch.lines);\r\n _list[i].selected = !_list[i].selected;\r\n\r\n setEdi310Batch({ lines: _list })\r\n }\r\n\r\n const tableOptions: ApplicableTableSettings = {\r\n ...edi310BatchTable,\r\n selectable: true,\r\n rowProps: (row: any) => ({ onClick: () => setSelectedIndex(row.index) }),\r\n selectedRowIndex: selectedIndex,\r\n tableName: 'ediBatchTable',\r\n customTableId: 'ediBatchTable',\r\n data: edi310Batch.lines.map((x, i) => ({ ...x, i, toggleSelection })),\r\n rowRenderers: [\r\n { accessor: 'selected', Cell: SelectRenderer },\r\n { accessor: 'invoiceNo', Cell: TextAlignLeftRenderer },\r\n { accessor: 'invoiceDate', Cell: DateRenderer },\r\n { accessor: 'dueDate', Cell: DateRenderer },\r\n { accessor: 'ediDate', Cell: DateRenderer },\r\n { accessor: 'amount', Cell: FloatRenderer },\r\n ],\r\n };\r\n\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n { setEdi310Batch({ startDate: e ?? '' }) }} />\r\n
\r\n\r\n
\r\n ~\r\n
\r\n\r\n
\r\n { setEdi310Batch({ endDate: e ?? '' }) }}/>\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Search\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n SEND TO EDI\r\n \r\n \r\n CANCEL\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nconst Edi310Batch = ({\r\n onPopupClose,\r\n selectedElement\r\n}: { onPopupClose?: () => void, selectedElement: InvoiceListItem }) => {\r\n return (\r\n \r\n );\r\n};\r\nexport default Edi310Batch;\r\n","import React, { cloneElement, useContext, useEffect, useState } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport ActionButton, { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../ui/ActionButton';\r\nimport * as XCol from \"../../../framework.core/XExportColumn\";\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport useSystemSettings from '../../../hooks/useSystemSettings';\r\nimport BicInfoAreaHistory from '../../common/BicInfoAreaHistory';\r\nimport lockRed from '../../../img/lock_red.png';\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport { NavigationType, openNewPage } from '../../../util/navigationHelpers';\r\nimport { invoiceList, TableColumn, TableSettings } from '../../../tableSettings';\r\nimport constants from '../../../constants';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport {\r\n CurrencyAmountRenderer, DateRenderer, DateTimeRenderer, NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer, TextAlignRightRenderer, TextRenderer,\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport AbstractListView, {\r\n DataFetchResult, ExportRowRenderer, ListCustomFilterRenderer, ListOrderBy, ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport { Search } from '../../../filtering';\r\nimport {\r\n getJobNameFromInvBillCrDbJobType,\r\n getOpTypeConstant,\r\n JobNames\r\n} from '../../../framework.core/JobNames';\r\nimport { InvoiceListItem } from '../../../fms.data/models/InvoiceListItem';\r\nimport IfmsModal from \"../../../ui/IfmsModal\";\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport JobListSuntekCommand from '../../common/JobListSuntekCommand';\r\nimport { BicTypeFilterRenderer, DraftFilterRenderer, PeriodRenderer, RecognizedFilterRenderer, RecognizedRenderer, StatusNotUseFileLockedRenderer, VoidFilterRenderer } from '../../common/commonListRenderers';\r\nimport Edi310 from '../../reports/Edi310';\r\nimport Edi310Batch from '../../reports/Edi310Batch';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport CustomerBalanceDetails from '../../reports/AccountBalance';\r\nimport { nowDate } from '../../../dateUtils';\r\nimport { SuntekSettings, SystemSettings } from '../../../ifmsTypes';\r\nimport { findSecurityTask, getSecBySecTask } from '../../../util';\r\nimport CopyInvoice from '../common/CopyInvoice';\r\nimport { getFmsGlobal } from '../../../globals';\r\nimport BatchPrint from '../../reports/BatchPrint';\r\nimport { DocumentType } from \"../../../framework.core/DocumentType\";\r\nimport { FormType, SecType } from '../../../fms.enum';\r\nimport HistoryView from '../../reports/HistoryView';\r\nimport useReportViewer from '../../../hooks/useReportViewer';\r\nimport { getSelectedSubMenuArgs } from '../../JobListSubMenu';\r\nimport { FmsSubMenu } from '../../../constants/fmsSubMenu';\r\nimport { useJournal } from '../general/journal/JournalListView';\r\nimport useSuntekSettings from '../../../hooks/useSuntekSettings';\r\nimport CheckBoxUncontrolled from '../../../ui/CheckBoxUncontrolled';\r\nimport { FmsSecCntr } from '../../../fms.core/constants/FmsSecCntr';\r\nimport { CurrencyAmountValue, nullableCheckBoxValue } from '../../common/commonExportFormat';\r\n\r\nfunction IndicatorRenderer({ data, row }: any) {\r\n const l = data[row.index];\r\n let dataTooltip = '';\r\n const lStatus = (l as any).status as string;\r\n if (lStatus === 'PC') dataTooltip = 'Period Close';\r\n\r\n // function onIndicatorClick() {\r\n // if (jobListContext.rowExtrasId) {\r\n // return; // Some row is already selected\r\n // }\r\n\r\n // jobListContext.setRowExtrasId(data[row.index].id);\r\n // }\r\n\r\n let content: React.ReactNode = <>;\r\n if (lStatus === 'PC')\r\n content = \"\";\r\n\r\n\r\n return (\r\n //
{content}
\r\n
{content}
\r\n );\r\n}\r\n\r\nfunction DraftRenderer({ cell }: any) {\r\n if (cell && cell.value) {\r\n return (\r\n
\r\n V\r\n
\r\n );\r\n }\r\n\r\n return
;\r\n}\r\n\r\nfunction VoidRenderer({ cell }: any) {\r\n if (cell && cell.value === 1) {\r\n return (\r\n
\r\n V\r\n
\r\n );\r\n }\r\n\r\n return
;\r\n}\r\n\r\n\r\nfunction ConfirmedRenderer({ value, row }: any) {\r\n \r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const suntekSettings = useSuntekSettings();\r\n\r\n if(jobListContext.opType === constants.opTypes.warehousing){\r\n let secCont = appContext.securityControls ? appContext.securityControls[JobNames.WHInvoice] : null;\r\n if (!secCont) {\r\n secCont = [\r\n { secCntr: FmsSecCntr.InvGivCredit, contName: 'cmdNew10' },\r\n { secCntr: FmsSecCntr.InvCancelCredit, contName: 'cmdNew12' },\r\n { secCntr: FmsSecCntr.WHInvConfirmed, contName: 'chkConfirmed' }\r\n ];\r\n appContext.setSecurityControls(JobNames.WHInvoice, secCont);\r\n }\r\n }else{\r\n let secCont = appContext.securityControls ? appContext.securityControls[JobNames.Invoice] : null;\r\n if (!secCont) {\r\n secCont = [\r\n { secCntr: FmsSecCntr.InvGivCredit, contName: 'cmdNew10' },\r\n { secCntr: FmsSecCntr.InvCancelCredit, contName: 'cmdNew12' },\r\n { secCntr: FmsSecCntr.InvConfirmed, contName: 'chkConfirmed' }\r\n ];\r\n appContext.setSecurityControls(JobNames.Invoice, secCont);\r\n }\r\n }\r\n\r\n\r\n async function updateConfirmed(newValue: boolean) {\r\n await appContext.api.setInvoiceConfirmed(row.original.id, newValue);\r\n row.original.confirmed = newValue;\r\n jobListContext.updateDataRow(row.original);\r\n\r\n }\r\n\r\n function findClickedCell(element: Element): Element | null {\r\n for (let i = 0; i < 6; ++i) {\r\n if (!element) {\r\n break;\r\n }\r\n if (Array.from(element.classList).some(className => className.startsWith('row-'))) {\r\n return element;\r\n }\r\n element = element.parentNode as Element;\r\n }\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {\r\n if (!e) return false;\r\n\r\n e?.stopPropagation();\r\n\r\n const element = findClickedCell(e.currentTarget);\r\n if (!element) {\r\n await showGlobalOkDialog(

Cannot find hover element

, false, null, 'warning');\r\n return false;\r\n }\r\n\r\n const classes = element.classList;\r\n const mouseOverRowIndex = Array.from(classes).find(className => className.includes('row-'))?.match(/\\d+$/)?.[0];\r\n\r\n if (!mouseOverRowIndex || !jobListContext.data) {\r\n await showGlobalOkDialog(

Cannot find hover data

, false, null, 'warning');\r\n return false;\r\n }\r\n\r\n const rowData = jobListContext.data[parseInt(mouseOverRowIndex)];\r\n if (rowData.void > 0) {\r\n await showGlobalOkDialog(

This Invoice has been voided.

);\r\n return false;\r\n } else if (rowData.paidAmount !== 0) {\r\n await showGlobalOkDialog(

This Invoice has been already paid.

);\r\n return false;\r\n } else if (rowData.draft) {\r\n await showGlobalOkDialog(

This Invoice is Draft.

);\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }} />\r\n
\r\n );\r\n}\r\n\r\n\r\nfunction formatData(data: Array) {\r\n return data.map((d: InvoiceListItem) => ({\r\n ...d,\r\n status: d.draft ? '' : d.status\r\n }));\r\n}\r\n\r\nfunction useInvoiceOperations() {\r\n const history = useHistory();\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n function switchToList(jobName: JobNames, jobId: number, refNo: string, hblNo: string) {\r\n // const blType = isMasterJob(jobName) ? 'mbl' : 'hbl';\r\n let blType = '';\r\n let columnLabel = '';\r\n let columnIdEx = null;\r\n let textEx = null;\r\n switch(jobName) {\r\n case JobNames.OIMbl:\r\n blType = 'mbl';\r\n columnLabel = 'Ref. #';\r\n columnIdEx = 'refNo';\r\n textEx = refNo;\r\n break;\r\n case JobNames.OIHbl:\r\n blType = 'hbl';\r\n columnLabel = 'HBL #';\r\n columnIdEx = 'hblNo';\r\n textEx = hblNo;\r\n break;\r\n case JobNames.OEMbl:\r\n blType = 'oeMbl';\r\n columnLabel = 'Ref. #';\r\n columnIdEx = 'refNo';\r\n textEx = refNo;\r\n break;\r\n case JobNames.OEHbl:\r\n blType = 'oeHbl';\r\n columnLabel = 'HBL #';\r\n columnIdEx = 'hblNo';\r\n textEx = hblNo;\r\n break;\r\n case JobNames.AIMbl:\r\n blType = 'aiMawb';\r\n columnLabel = 'Ref. #';\r\n columnIdEx = 'refNo';\r\n textEx = refNo;\r\n break;\r\n case JobNames.AIHbl:\r\n blType = 'aiHawb';\r\n columnLabel = 'HAWB #';\r\n columnIdEx = 'hawbNo';\r\n textEx = hblNo;\r\n break;\r\n case JobNames.AEMbl:\r\n blType = 'aeMawb';\r\n columnLabel = 'Ref. #';\r\n columnIdEx = 'refNo';\r\n textEx = refNo;\r\n break;\r\n case JobNames.AEHbl:\r\n blType = 'aeHawb';\r\n columnLabel = 'HAWB #';\r\n columnIdEx = 'hawbNo';\r\n textEx = hblNo;\r\n break;\r\n case JobNames.OtherOP:\r\n blType = 'otherShipment';\r\n columnLabel = 'Ref. #';\r\n columnIdEx = 'refNo';\r\n textEx = refNo;\r\n break;\r\n case JobNames.WHRcv:\r\n blType = 'whReceiving';\r\n columnLabel = 'Receiving ID';\r\n columnIdEx = 'receiveNo';\r\n textEx = refNo;\r\n break;\r\n case JobNames.WHShip:\r\n blType = 'whShipping';\r\n columnLabel = 'Shipping ID';\r\n columnIdEx = 'shipNo';\r\n textEx = refNo;\r\n break;\r\n }\r\n const opType = getOpTypeConstant(jobName);\r\n jobListContext.setFilterForScreenExternally(`/common/joblistview/${blType}/${opType}`, 'id', columnLabel, jobId.toString(), 'update', false, true, null, columnIdEx, textEx, false, true);\r\n openNewPage(history, `/common/joblistview/${blType}/${opType}`, NavigationType.newPage);\r\n }\r\n\r\n function switchToParentFor(invoice: InvoiceListItem) {\r\n if (!invoice) {\r\n return;\r\n }\r\n if(invoice.jobType === '') return;\r\n\r\n // if (invoice.type === JobNames.OIMbl) {\r\n // switchToMbl(invoice.parentNo ?? '');\r\n // }\r\n // if (invoice.type === JobNames.OIHbl) {\r\n // switchToHbl(invoice.refNo ?? '');\r\n // }\r\n switchToList(getJobNameFromInvBillCrDbJobType(invoice.jobType), invoice.tbId, invoice.referenceNo, invoice.hblNo);\r\n }\r\n\r\n return { switchToParentFor };\r\n}\r\n\r\nfunction useSelectedInvoiceOperations() {\r\n const fmsGlobal = getFmsGlobal();\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const history = useHistory();\r\n const { switchToParentFor } = useInvoiceOperations();\r\n\r\n const selectedElement = jobListContext.selectedElement as InvoiceListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n\r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/accounting/periodInvoice/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress.

);\r\n return;\r\n }\r\n openNewPage(history, '/accounting/periodInvoice/add', NavigationType.newPage);\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (!selectedElement.jobType && selectedElement.period !== \"P\") {\r\n //await showGlobalOkDialog(

Operation currently not implemented for this type

);\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n\r\n let viewUrl = `/accounting/invoice/view/${getJobNameFromInvBillCrDbJobType(selectedElement.jobType)}/${selectedElement.tbId}/${id}`;\r\n if (!selectedElement.jobType && selectedElement.period === \"P\") viewUrl = `/accounting/periodInvoice/view/${id}`;\r\n let editUrl = `/accounting/invoice/edit/${getJobNameFromInvBillCrDbJobType(selectedElement.jobType)}/${selectedElement.tbId}/${id}`;\r\n if (!selectedElement.jobType && selectedElement.period === \"P\") editUrl = `/accounting/periodInvoice/edit/${id}`;\r\n \r\n // Edit 창은 하나만 열리도록 수정\r\n // if (jobListContext.hasOpenedScreenInAnyOperationStartingWithUrlWithoutMe(editUrl.substring(0, editUrl.indexOf('/edit')+5), editUrl)) {\r\n // await showGlobalOkDialog(

Edit operation is already in progress.

);\r\n // return;\r\n // }\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (!selectedElement.jobType && selectedElement.period !== \"P\") {\r\n //await showGlobalOkDialog(

Operation currently not implemented for this type

);\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n\r\n let viewUrl = `/accounting/invoice/view/${getJobNameFromInvBillCrDbJobType(selectedElement.jobType)}/${selectedElement.tbId}/${id}`;\r\n if (!selectedElement.jobType && selectedElement.period === \"P\") viewUrl = `/accounting/periodInvoice/view/${id}`;\r\n let editUrl = `/accounting/invoice/edit/${getJobNameFromInvBillCrDbJobType(selectedElement.jobType)}/${selectedElement.tbId}/${id}`;\r\n if (!selectedElement.jobType && selectedElement.period === \"P\") editUrl = `/accounting/periodInvoice/edit/${id}`;\r\n\r\n const listSec = findSecurityTask(appContext, (jobListContext.opType === constants.opTypes.warehousing ? FmsSecTask.WHInvoice : FmsSecTask.AcctInvoiceList));\r\n const urls = [viewUrl];\r\n if(listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n function switchToParent() {\r\n const selectedElement = jobListContext.selectedElement as InvoiceListItem;\r\n switchToParentFor(selectedElement);\r\n }\r\n\r\n async function deleteItem() {\r\n if (!selectedElement) {\r\n await showGlobalOkDialog('Cannot delete!',false,null,'warning');\r\n return;\r\n }\r\n\r\n if (!selectedElement.jobType && selectedElement.period === \"P\") {\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/accounting/periodInvoice/edit/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/accounting/periodInvoice/view/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Invoice first', false, null, \"warning\");\r\n return;\r\n }\r\n }\r\n else {\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/accounting/invoice/edit/${getJobNameFromInvBillCrDbJobType(selectedElement.jobType)}/${selectedElement.tbId}/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/accounting/invoice/view/${getJobNameFromInvBillCrDbJobType(selectedElement.jobType)}/${selectedElement.tbId}/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Invoice first', false, null, \"warning\");\r\n return;\r\n }\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n ,false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.Invoice, { id: selectedElement.id, opAcctBlockAfterClosed: fmsGlobal?.OPAcctBlockAfterClosed??false });\r\n if (apiResult && apiResult.success) {\r\n jobListContext.reloadData();\r\n } else {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n await showGlobalOkDialog(message, false,null,'warning');\r\n }\r\n }\r\n }\r\n\r\n async function viewPaymentHistory() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const jobId = selectedElement.id;\r\n const jobName = JobNames.Invoice;\r\n const jobType = selectedElement.jobType\r\n\r\n const viewUrl = `/accounting/acPaymentHistoryView/${jobName}/${jobId}/${getJobNameFromInvBillCrDbJobType(jobType)}`;\r\n openNewPage(history, viewUrl, NavigationType.newPage);\r\n }\r\n\r\n return { create, edit, view, switchToParent, deleteItem, viewPaymentHistory };\r\n}\r\n\r\nfunction RightClickMenu({ dismiss }: { dismiss: VoidFunction }) {\r\n const { create, edit, view, deleteItem, switchToParent } = useSelectedInvoiceOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n \r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, (jobListContext.opType === constants.opTypes.warehousing ? FmsSecTask.WHInvoice : FmsSecTask.AcctInvoiceList));\r\n // const isDraft = jobListContext.selectedElement.draft;\r\n\r\n const items = [ \r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd || jobListContext.opType !== 'warehousing'},\r\n { label: 'View', shortcut: 'F9', separator: !listSec?.grantEdit && !listSec?.grantDel },\r\n { label: 'Edit', shortcut: 'F3', separator: !listSec?.grantDel, hidden: !listSec?.grantEdit },\r\n { label: 'Delete', shortcut: '', separator: true, hidden: !listSec?.grantDel },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: jobListContext.opType === constants.opTypes.warehousing ? 'Switch to W/H List' : 'Switch to BL List', shortcut: 'F6', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) => ({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item: IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create(); \r\n break;\r\n case 1: \r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n deleteItem();\r\n break;\r\n case 4:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 5:\r\n switchToParent();\r\n break;\r\n case 6:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction TrancationImpactButtonCommands({ userId } : {userId: string}) {\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as InvoiceListItem;\r\n const {switchJournal} = useJournal();\r\n const suntekSettings = useSuntekSettings();\r\n \r\n if ((!suntekSettings.general?.allowViewJournalBillings && !userId.startsWith('@')) || jobListContext.opType !== constants.opTypes.warehousing) {\r\n return null;\r\n }\r\n\r\n return (\r\n switchJournal(JobNames.Invoice, selectedElement.id)}>\r\n {constants.List_Journal}\r\n \r\n );\r\n}\r\n\r\nfunction InvoiceListCommands() {\r\n const history = useHistory();\r\n const jobListContext = useContext(JobListViewContext);\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n\r\n const selectedElement = jobListContext.selectedElement as InvoiceListItem;\r\n\r\n const { edit, view, deleteItem, viewPaymentHistory } = useSelectedInvoiceOperations();\r\n\r\n const hasSelectedRow = !!selectedElement;\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const { viewReport } = useReportViewer();\r\n\r\n const listSec = findSecurityTask(appContext, (jobListContext.opType === constants.opTypes.warehousing ? FmsSecTask.WHInvoice : FmsSecTask.AcctInvoiceList));\r\n const hasSecCp = getSecBySecTask(appContext, FmsSecTask.AcctCustPayment, SecType.Add);\r\n const hasSecBp = getSecBySecTask(appContext, FmsSecTask.AcctBillPayment, SecType.Add);\r\n\r\n const onPopupClose = () => {\r\n setSelectedPopupMenuItem(null);\r\n }\r\n\r\n async function print() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n let puInvoice: boolean = false;\r\n\r\n if (appContext.suntekSettings?.company?.companyId === \"AECL002209\") {\r\n const doConfirm = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Print?

\r\n

Do you want to print P/U Invoice?

\r\n
\r\n ,false, 0, true);\r\n if (doConfirm) {\r\n puInvoice = true;\r\n }\r\n }\r\n\r\n if (!puInvoice && appContext.suntekSettings?.company?.country === \"MEXICO\" && appContext.suntekSettings?.company?.companyId === \"PEOP002103\") {\r\n // Batch Invoice\r\n setSelectedPopupMenuItem({ label: 'Invoice Batch Print', popupComponent: });\r\n } else {\r\n const args = await getSelectedSubMenuArgs(puInvoice ? FmsSubMenu.PuInvoice : FmsSubMenu.Invoice, JobNames.Invoice, selectedElement, appContext, null, null);\r\n if (args) {\r\n viewReport(args, \"\", true);\r\n }\r\n }\r\n }\r\n\r\n async function onCustomerBillAction(item: ActionButtonItem) {\r\n let link = '';\r\n switch (item.index) {\r\n case 0:\r\n link = `/accounting/acCustomerPayment/add`;\r\n break;\r\n case 1:\r\n link = `/accounting/acBillPayment/add`;\r\n break;\r\n case 2:\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/acCustomerPayment/accounting',\r\n 'invoiceNo', 'Billings', selectedElement.invoiceNo, 'updated', false, true, null);\r\n openNewPage(history, '/common/joblistview/acCustomerPayment/accounting', NavigationType.newPage);\r\n return;\r\n case 3:\r\n\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/acBillPayment/accounting',\r\n 'invoiceNo', 'Billings', selectedElement.checkNo, 'updated', false, true, null);\r\n openNewPage(history, '/common/joblistview/acBillPayment/accounting', NavigationType.newPage);\r\n return;\r\n }\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrl(link)) {\r\n await showGlobalOkDialog(

Payment New Operation is already in progress.

);\r\n return;\r\n }\r\n\r\n openNewPage(history, `${link}/${selectedElement.invoiceTo}`, NavigationType.newPage);\r\n }\r\n\r\n function onHistoryBtnAction(item: ActionButtonItem) {\r\n switch (item.index) {\r\n case 0:\r\n viewPaymentHistory();\r\n break;\r\n case 1:\r\n setSelectedPopupMenuItem({ label: 'View History', popupWidth: 1200, popupComponent: });\r\n break;\r\n // case 2:\r\n // setSelectedPopupMenuItem({ label: 'Delete History (Invoice)', popupWidth: 920, popupComponent: })\r\n // return;\r\n }\r\n }\r\n\r\n async function onPrintAction(item: ActionButtonItem){\r\n if(item.index === 0) print();\r\n else setSelectedPopupMenuItem({ label: 'Invoice Batch Print', popupComponent: });\r\n }\r\n\r\n async function copyInvoice() {\r\n if (selectedElement.draft) {\r\n await showGlobalOkDialog(

The Draft Invoice cannot be copied.

,false,null,'warning');\r\n return;\r\n }\r\n setSelectedPopupMenuItem({\r\n label:'Select a target B/L to be linked',\r\n popupWidth: 450,\r\n popupComponent:\r\n \r\n });\r\n }\r\n\r\n async function customerBalance() {\r\n if (selectedElement.invoiceTo <= 0) {\r\n await showGlobalOkDialog(

You didn't enter Invoice To.

,false,null,'warning');\r\n return;\r\n }\r\n setSelectedPopupMenuItem({\r\n label: 'Balance',\r\n popupWidth: 780,\r\n popupComponent:\r\n \r\n });\r\n }\r\n\r\n const canBeAdd = listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n const canBeCopied = hasSelectedRow && listSec?.grantAdd;\r\n //const disablePrint = hasSelectedRow && selectedElement.draft;\r\n\r\n return (\r\n
\r\n
\r\n {/* */}\r\n {/* {(jobListContext.opType === constants.opTypes.warehousing) &&\r\n <> \r\n } */}\r\n View \r\n Edit \r\n Delete \r\n {(jobListContext.opType !== constants.opTypes.warehousing) &&\r\n <>\r\n \r\n Copy\r\n \r\n \r\n }\r\n
\r\n
\r\n\r\n {jobListContext.opType === constants.opTypes.warehousing\r\n && <>\r\n \r\n Print\r\n  \r\n\r\n {(hasSecCp || hasSecBp) &&\r\n <>\r\n \r\n Pay\r\n  \r\n \r\n }\r\n <>\r\n \r\n View History\r\n  \r\n \r\n {/* setSelectedPopupMenuItem({ label: 'Payment History', popupWidth: 1050, popupComponent: })}>Payment History  \r\n Payment History \r\n setSelectedPopupMenuItem({ label: 'View History', popupWidth: 1200, popupComponent: })}>View History */}\r\n \r\n }\r\n \r\n { appContext.suntekSettings?.edi?.enableEDI310 && jobListContext.opType !== constants.opTypes.warehousing &&\r\n <>\r\n , popupWidth: 760 },\r\n { label: 'EDI 310 Batch', separator: false, popupComponent: , popupWidth: 760 },\r\n ]}\r\n onItemSelected={(event) => {\r\n if (!hasSelectedRow) {\r\n return;\r\n }\r\n\r\n if (!['OIH','AIH'].includes(selectedElement.jobType)) {\r\n showGlobalOkDialog(`It is not available for the selected operation type (${selectedElement.jobType}).`,false,null,'warning');\r\n return;\r\n }\r\n\r\n setSelectedPopupMenuItem(event);\r\n }}\r\n >\r\n EDI\r\n  \r\n \r\n }\r\n {jobListContext.opType !== constants.opTypes.warehousing && (\r\n <>\r\n \r\n Print\r\n  \r\n \r\n )}\r\n \r\n Balance\r\n \r\n
\r\n\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.popupComponent ? (\r\n \r\n {cloneElement(selectedPopupMenuItem.popupComponent!, { onPopupClose })}\r\n \r\n ) : null}\r\n
\r\n );\r\n}\r\n\r\n\r\nfunction InvoiceListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\n\r\nfunction InvoiceListViewExtras({\r\n hideLogHistory\r\n}: any,\r\n) {\r\n useFunctionKeys({ onFunction: onFunctionKey });\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const listSec = findSecurityTask(appContext, (jobListContext.opType === constants.opTypes.warehousing ? FmsSecTask.WHInvoice : FmsSecTask.AcctInvoiceList));\r\n const systemSettings = useSystemSettings();\r\n\r\n const { create, edit, view, switchToParent } = useSelectedInvoiceOperations();\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n switchToParent();\r\n }else if (unprocessedFkey === \"F2\" && jobListContext.opType === 'warehousing') {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F6', 'F2', 'F3', 'F9', 'F11', 'F8'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * \r\n * @param param { jobName, jobId, appContext, jobListContext } \r\n * @returns \r\n */\r\n async function loadInvoiceHistory(param: any) {\r\n //const apiResult = await appContext.api.getOceanImportInvoiceHistory(id);\r\n const apiResult = await appContext.api.getAcctHistory(param.jobName, param.jobId, (jobListContext.selectedElement as InvoiceListItem).jobType, false);\r\n if (!apiResult || !apiResult.success) {\r\n return null;\r\n }\r\n\r\n return \r\n }\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n hideLogHistory={hideLogHistory}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for INVOICE (OI) List screen\r\n *\r\n * @class InvoiceListView\r\n * @extends {AbstractListView}\r\n */\r\nclass InvoiceListView extends AbstractListView {\r\n getTableSettings(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): TableSettings {\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n const useVat = systemSettings.useVat ?? false;\r\n let listType: JobNames.Invoice | JobNames.WHInvoice | JobNames.GInvo = JobNames.Invoice;\r\n if (opType === constants.opTypes.warehousing) {\r\n listType = JobNames.WHInvoice;\r\n }\r\n\r\n const tsettings = invoiceList;\r\n const cols = InvoiceListItem.getExportCollection(listType, useBranch, useVat);\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type };\r\n });\r\n return tsettings;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'u2Date',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getCustomFilterRenderers(opType?: string | undefined): ListCustomFilterRenderer[] {\r\n return [\r\n {\r\n accessor: 'statusNotUseFileLocked',\r\n renderer: StatusNotUseFileLockedRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'recognized',\r\n renderer: RecognizedFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'jobType',\r\n renderer: (props: any) => ,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n //{\r\n // accessor: 'draft',\r\n // renderer: DraftFilterRenderer,\r\n // searchValueExtractor: (v: any | null | undefined) => v === 'D' ? true : false,\r\n //},\r\n // {\r\n // accessor: 'void',\r\n // renderer: VoidFilterRenderer,\r\n // searchValueExtractor: (v: any | null | undefined) => v === 'V' ? 1 : 0,\r\n // },\r\n {\r\n accessor: 'confirmed',\r\n renderer: undefined,\r\n searchValueExtractor: (v: any | null | undefined) => v.value !== undefined ? v.value : v,\r\n },\r\n ];\r\n }\r\n\r\n getRowRenderers(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): ListRowRenderer[] {\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n const useVat = systemSettings.useVat ?? false;\r\n let listType: JobNames.Invoice | JobNames.WHInvoice | JobNames.GInvo = JobNames.Invoice;\r\n if (opType === constants.opTypes.warehousing) {\r\n listType = JobNames.WHInvoice;\r\n }\r\n\r\n return InvoiceListItem.getExportCollection(listType, useBranch, useVat).map(x => {\r\n const colRenderer: ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if (x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if (x.align === XCol.XAlignType.Right) colRenderer.Cell = TextAlignRightRenderer;\r\n if (x.dataIndex === \"status\") {\r\n colRenderer.Cell = IndicatorRenderer;\r\n }\r\n else if (x.dataIndex === \"draft\") {\r\n // colRenderer.Cell = DraftRenderer;\r\n colRenderer.Cell = NullableCheckboxIconRenderer;\r\n }\r\n else if (x.dataIndex === 'recognized') {\r\n colRenderer.Cell = RecognizedRenderer;\r\n }\r\n // else if (x.dataIndex === \"void\") {\r\n // colRenderer.Cell = VoidRenderer;\r\n // }\r\n else if (x.dataIndex === \"period\") {\r\n colRenderer.Cell = PeriodRenderer;\r\n }\r\n else if (x.dataIndex === \"confirmed\") {\r\n colRenderer.Cell = ConfirmedRenderer;\r\n }\r\n else if (x.dataIndex === \"amount\" || x.dataIndex === \"paidAmount\" || x.dataIndex === \"balance\" || x.dataIndex === \"cAmount\" || x.dataIndex === \"dutyAmount\"|| x.dataIndex === \"vatAmount\") {\r\n colRenderer.Cell = props => x.currency} {...props} />;\r\n }\r\n else if (x.dataIndex === \"referenceNo\" || x.dataIndex === \"hblNo\") {\r\n colRenderer.Cell = TextAlignLeftRenderer;\r\n }\r\n else if (x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if (x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if (x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({ accessor: 'status', changedValue: (value: any) => { return value['status'] === 'PC' ? 'Period Close' : '' } });\r\n colRenderer.push({ accessor: 'amount', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['amount']) } });\r\n colRenderer.push({ accessor: 'paidAmount', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['paidAmount']) } });\r\n colRenderer.push({ accessor: 'balance', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['balance']) } });\r\n colRenderer.push({ accessor: 'cAmount', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['cAmount']) } });\r\n colRenderer.push({ accessor: 'dutyAmount', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['dutyAmount']) } });\r\n colRenderer.push({ accessor: 'vatAmount', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['vatAmount']) } });\r\n colRenderer.push({ accessor: 'draft', changedValue: (value: any) => { return nullableCheckBoxValue(value['draft'])}});\r\n colRenderer.push({ accessor: 'confirmed', changedValue: (value: any) => { return nullableCheckBoxValue(value['confirmed'])}});\r\n return colRenderer;\r\n }\r\n\r\n /**\r\n * \r\n * @param api \r\n * @param search \r\n * @param opType\r\n * @returns \r\n */\r\n async fetchAndFormatData(api: any, search: Search, opType: string | undefined): Promise {\r\n const searchModel = InvoiceListItem.calculateSearchParameters(search, InvoiceListItem.MapSearchFields, ['void']);\r\n if (opType === constants.opTypes.oceanImport) searchModel.extraWhere = JobNames.OceanImport;\r\n else if (opType === constants.opTypes.oceanExport) searchModel.extraWhere = JobNames.OceanExport;\r\n else if (opType === constants.opTypes.airImport) searchModel.extraWhere = JobNames.AirImport;\r\n else if (opType === constants.opTypes.airExport) searchModel.extraWhere = JobNames.AirExport;\r\n else if (opType === constants.opTypes.otherShipment) searchModel.extraWhere = JobNames.OtherOP;\r\n\r\n const apiResult = await api.getListItems(opType === constants.opTypes.warehousing ? JobNames.WHInvoice : JobNames.Invoice,\r\n 'InvoiceListItem',\r\n searchModel,\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return { data: [], totalCount: 0 };\r\n }\r\n\r\n return { data: formatData(apiResult.entities), totalCount: apiResult.totalCount };\r\n\r\n }\r\n\r\n renderCommands(): React.ReactNode {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton(): React.ReactNode {\r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n\r\n renderExtras(hideLogHistory: boolean): React.ReactNode {\r\n return (\r\n \r\n );\r\n }\r\n\r\n getViewUrlFor(row: InvoiceListItem) {\r\n if (!row.jobType && row.period !== \"P\") {\r\n return ''; // Not supported\r\n }\r\n\r\n if (!row.jobType && row.period === \"P\")\r\n return { url: row && row.id ? `/accounting/periodInvoice/view/${row.id}` : '', needAfterScreenUrl: true };\r\n else\r\n return { url: row && row.id ? `/accounting/invoice/view/${getJobNameFromInvBillCrDbJobType(row.jobType)}/${row.tbId}/${row.id}` : '', \r\n needAfterScreenUrl: true, checkAllOperation: true };\r\n }\r\n\r\n getListViewTitle(opType: string | undefined) {\r\n return 'Invoice List';\r\n };\r\n\r\n renderAdditionalCommands() {\r\n return ;\r\n }\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n useLogHistory(): boolean {\r\n return true;\r\n }\r\n\r\n transactionImpactBtn(userId: string): React.ReactNode {\r\n return \r\n }\r\n}\r\n\r\nexport default InvoiceListView;\r\n","import React, { cloneElement, useContext, useEffect, useState } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport ActionButton, { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../ui/ActionButton';\r\n\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport useSystemSettings from '../../../hooks/useSystemSettings';\r\nimport BicInfoAreaHistory from '../../common/BicInfoAreaHistory';\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport * as XCol from \"../../../framework.core/XExportColumn\";\r\nimport { NavigationType, openNewPage } from '../../../util/navigationHelpers';\r\nimport { crdbList, TableColumn, TableSettings } from '../../../tableSettings';\r\nimport constants from '../../../constants';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport lockRed from '../../../img/lock_red.png';\r\nimport {\r\n CurrencyAmountRenderer,\r\n DateRenderer,\r\n DateTimeRenderer,\r\n NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,\r\n TextAlignRightRenderer,\r\n TextRenderer,\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport CheckBoxUncontrolled from '../../../ui/CheckBoxUncontrolled';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport AbstractListView, { DataFetchResult, ExportRowRenderer, ListCustomFilterRenderer, ListOrderBy, ListRowRenderer } from \"../../common/AbstractListView\";\r\nimport { Search } from '../../../filtering';\r\nimport { getJobNameFromInvBillCrDbJobType, getOpTypeConstant, JobNames } from '../../../framework.core/JobNames';\r\nimport { CrDbListItem } from '../../../fms.data/models/CrDbListItem';\r\nimport IfmsModal from \"../../../ui/IfmsModal\";\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport JobListSuntekCommand from '../../common/JobListSuntekCommand';\r\nimport { BicTypeFilterRenderer, DraftFilterRenderer, PeriodRenderer, RecognizedFilterRenderer, RecognizedRenderer, StatusNotUseFileLockedRenderer, VoidFilterRenderer } from '../../common/commonListRenderers';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport AgentBalanceDetails from '../../reports/AccountBalance';\r\nimport { nowDate } from '../../../dateUtils';\r\nimport { SuntekSettings, SystemSettings } from '../../../ifmsTypes';\r\nimport { findSecurityTask, getSecBySecTask } from '../../../util';\r\nimport useSuntekSettings from '../../../hooks/useSuntekSettings';\r\nimport { getFmsGlobal } from '../../../globals';\r\nimport BatchPrint from '../../reports/BatchPrint';\r\nimport { FormType, SecType } from '../../../fms.enum';\r\nimport HistoryView from '../../reports/HistoryView';\r\nimport { DocumentType } from \"../../../framework.core/DocumentType\";\r\nimport { CRDBArgs } from '../../../fms.report/args';\r\nimport useReportViewer from '../../../hooks/useReportViewer';\r\nimport { useJournal } from '../general/journal/JournalListView';\r\nimport { FmsSecCntr } from '../../../fms.core/constants/FmsSecCntr';\r\nimport { CurrencyAmountValue, nullableCheckBoxValue } from '../../common/commonExportFormat';\r\n\r\nfunction IndicatorRenderer({ data, row }: any) {\r\n const l = data[row.index];\r\n let dataTooltip = '';\r\n const lStatus = (l as any).status as string;\r\n if (lStatus === 'PC') dataTooltip = 'Period Close';\r\n\r\n // function onIndicatorClick() {\r\n // if (jobListContext.rowExtrasId) {\r\n // return; // Some row is already selected\r\n // }\r\n\r\n // jobListContext.setRowExtrasId(data[row.index].id);\r\n // }\r\n\r\n let content: React.ReactNode = <>;\r\n if (lStatus === 'PC')\r\n content = \"\";\r\n\r\n\r\n return (\r\n //
{content}
\r\n
{content}
\r\n );\r\n}\r\n\r\nfunction DraftRenderer({ cell }: any) {\r\n if (cell && cell.value) {\r\n return (\r\n
\r\n V\r\n
\r\n );\r\n }\r\n\r\n return
;\r\n}\r\n\r\nfunction VoidRenderer({ cell }: any) {\r\n if (cell && cell.value === true) {\r\n return (\r\n
\r\n V\r\n
\r\n );\r\n }\r\n\r\n return
;\r\n}\r\n\r\nfunction ConfirmedRenderer({ value, row }: any) {\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const suntekSettings = useSuntekSettings();\r\n\r\n if(jobListContext.opType === constants.opTypes.warehousing){\r\n let secCont = appContext.securityControls ? appContext.securityControls[JobNames.WHCrDb] : null;\r\n if (!secCont) {\r\n secCont = [\r\n { secCntr: FmsSecCntr.WHCrDbConfirmed, contName: 'chkSettled' }\r\n ];\r\n appContext.setSecurityControls(JobNames.WHCrDb, secCont);\r\n }\r\n }else{\r\n let secCont = appContext.securityControls ? appContext.securityControls[JobNames.CrDb] : null;\r\n if (!secCont) {\r\n secCont = [\r\n { secCntr: FmsSecCntr.CrDbConfirmed, contName: 'chkSettled' }\r\n ];\r\n appContext.setSecurityControls(JobNames.CrDb, secCont);\r\n }\r\n }\r\n\r\n\r\n async function updateConfirmed(newValue: boolean) {\r\n await appContext.api.setCrdbConfirmed(row.original.id, newValue);\r\n row.original.settled = newValue;\r\n jobListContext.updateDataRow(row.original);\r\n }\r\n\r\n function findClickedCell(element: Element): Element | null {\r\n for (let i = 0; i < 6; ++i) {\r\n if (!element) {\r\n break;\r\n }\r\n if (Array.from(element.classList).some(className => className.startsWith('row-'))) {\r\n return element;\r\n }\r\n element = element.parentNode as Element;\r\n }\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {\r\n if (!e) return false;\r\n\r\n e?.stopPropagation();\r\n\r\n const element = findClickedCell(e.currentTarget);\r\n if (!element) {\r\n await showGlobalOkDialog(

Cannot find hover element

, false, null, 'warning');\r\n return false;\r\n }\r\n\r\n const classes = element.classList;\r\n const mouseOverRowIndex = Array.from(classes).find(className => className.includes('row-'))?.match(/\\d+$/)?.[0];\r\n\r\n if (!mouseOverRowIndex || !jobListContext.data) {\r\n await showGlobalOkDialog(

Cannot find hover data

, false, null, 'warning');\r\n return false;\r\n }\r\n\r\n const rowData = jobListContext.data[parseInt(mouseOverRowIndex)];\r\n if (rowData.void > 0) {\r\n await showGlobalOkDialog(

This CrDb has been voided.

);\r\n return false;\r\n } else if (rowData.paidAmt !== 0) {\r\n await showGlobalOkDialog(

This CrDb has been already paid.

);\r\n return false;\r\n } else if (rowData.draft) {\r\n await showGlobalOkDialog(

This CrDb is Draft.

);\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }} />\r\n
\r\n );\r\n}\r\n\r\nfunction formatData(data: Array) {\r\n return data.map((d: CrDbListItem) => ({\r\n ...d,\r\n status: d.draft ? '' : d.status\r\n }));\r\n}\r\n\r\nfunction useCrdbOperations() {\r\n const history = useHistory();\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n //New operation is already in progress.

);\r\n return;\r\n }\r\n\r\n openNewPage(history, '/accounting/periodCrdb/add', NavigationType.newPage);\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (!selectedElement.jobType && selectedElement.period !== \"P\") {\r\n // await showGlobalOkDialog(

Operation currently not implemented for this type

);\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n\r\n let editUrl = `/accounting/crdb/edit/${getJobNameFromInvBillCrDbJobType(selectedElement.jobType)}/${selectedElement.tbId}/${id}`;\r\n if (!selectedElement.jobType && selectedElement.period === \"P\") editUrl = `/accounting/periodCrdb/edit/${id}`;\r\n let viewUrl = `/accounting/crdb/view/${getJobNameFromInvBillCrDbJobType(selectedElement.jobType)}/${selectedElement.tbId}/${id}`;\r\n if (!selectedElement?.jobType && selectedElement.period === \"P\") viewUrl = `/accounting/periodCrdb/view/${id}`;\r\n\r\n // // Edit 창은 하나만 열리도록 수정\r\n // if (jobListContext.hasOpenedScreenInAnyOperationStartingWithUrlWithoutMe(editUrl.substring(0, editUrl.indexOf('/edit')+5), editUrl)) {\r\n // await showGlobalOkDialog(

Edit operation is already in progress.

);\r\n // return;\r\n // }\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (!selectedElement.jobType && selectedElement.period !== \"P\") {\r\n //await showGlobalOkDialog(

Operation currently not implemented for this type

);\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n\r\n let editUrl = `/accounting/crdb/edit/${getJobNameFromInvBillCrDbJobType(selectedElement.jobType)}/${selectedElement.tbId}/${id}`;\r\n if (!selectedElement.jobType && selectedElement.period === \"P\") editUrl = `/accounting/periodCrdb/edit/${id}`;\r\n \r\n let viewUrl = `/accounting/crdb/view/${getJobNameFromInvBillCrDbJobType(selectedElement.jobType)}/${selectedElement.tbId}/${id}`;\r\n if (!selectedElement.jobType && selectedElement.period === \"P\") viewUrl = `/accounting/periodCrdb/view/${id}`;\r\n \r\n const isWarehouingList = jobListContext.opType === constants.opTypes.warehousing;\r\n const listSec = findSecurityTask(appContext, (isWarehouingList ? FmsSecTask.WHCrDb : FmsSecTask.AcctCrDbList));\r\n const urls = [viewUrl];\r\n if(listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n function switchToParent() {\r\n const selectedElement = jobListContext.selectedElement as CrDbListItem;\r\n switchToParentFor(selectedElement);\r\n }\r\n\r\n async function deleteItem() {\r\n if (!selectedElement) {\r\n await showGlobalOkDialog('Cannot delete!',false,null,'warning');\r\n return;\r\n }\r\n\r\n if (!selectedElement.jobType && selectedElement.period === \"P\") {\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/accounting/periodCrdb/edit/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/accounting/periodCrdb/view/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Cr/Db first', false, null, \"warning\");\r\n return;\r\n }\r\n }\r\n else {\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/accounting/crdb/edit/${getJobNameFromInvBillCrDbJobType(selectedElement.jobType)}/${selectedElement.tbId}/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/accounting/crdb/view/${getJobNameFromInvBillCrDbJobType(selectedElement.jobType)}/${selectedElement.tbId}/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Cr/Db first', false, null, \"warning\");\r\n return;\r\n }\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n ,false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.CrDb, { id: selectedElement.id, opAcctBlockAfterClosed: fmsGlobal?.OPAcctBlockAfterClosed??false });\r\n if (apiResult && apiResult.success) {\r\n jobListContext.reloadData();\r\n } else {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n await showGlobalOkDialog(message,false,null,'warning');\r\n }\r\n }\r\n }\r\n\r\n async function viewPaymentHistory() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const jobId = selectedElement.id;\r\n const jobName = JobNames.CrDb;\r\n const jobType = selectedElement.jobType\r\n\r\n const viewUrl = `/accounting/acPaymentHistoryView/${jobName}/${jobId}/${getJobNameFromInvBillCrDbJobType(jobType)}`;\r\n openNewPage(history, viewUrl, NavigationType.newPage);\r\n }\r\n\r\n return { create, edit, view, switchToParent, deleteItem, viewPaymentHistory };\r\n}\r\n\r\nfunction RightClickMenu({ dismiss }: { dismiss: VoidFunction }) {\r\n const { create, edit, view, deleteItem, switchToParent } = useSelectedCrdbOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const isWarehouingList = jobListContext.opType === constants.opTypes.warehousing;\r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, (isWarehouingList ? FmsSecTask.WHCrDb : FmsSecTask.AcctCrDbList));\r\n // const isDraft = jobListContext.selectedElement.draft;\r\n\r\n const items = [ \r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd || !isWarehouingList},\r\n { label: 'View', shortcut: 'F9', separator: !listSec?.grantEdit && !listSec?.grantDel },\r\n { label: 'Edit', shortcut: 'F3', separator: !listSec?.grantDel, hidden: !listSec?.grantEdit },\r\n { label: 'Delete', shortcut: '', separator: true, hidden: !listSec?.grantDel },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: isWarehouingList ? 'Switch to W/H List' : 'Switch to BL List', shortcut: 'F6', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n ];\r\n const menuItems: ActionButtonItem[] = items.map((i, index) => ({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item: IfmsMenuItem) {\r\n if (!isWarehouingList)\r\n switch (item.index) {\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n deleteItem();\r\n break;\r\n case 4:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 5:\r\n switchToParent();\r\n break;\r\n case 6:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 7:\r\n jobListContext.reloadData();\r\n break;\r\n default:\r\n break;\r\n }\r\n //warehousing\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n deleteItem();\r\n break;\r\n case 4:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 5:\r\n switchToParent();\r\n break;\r\n case 6:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 7:\r\n jobListContext.reloadData();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction TrancationImpactButtonCommands({ userId } : {userId: string}) {\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as CrDbListItem;\r\n const {switchJournal} = useJournal();\r\n const suntekSettings = useSuntekSettings();\r\n \r\n if ((!suntekSettings.general?.allowViewJournalBillings && !userId.startsWith('@')) || jobListContext.opType !== constants.opTypes.warehousing) {\r\n return null;\r\n }\r\n\r\n return (\r\n switchJournal(JobNames.CrDb, selectedElement.id)}>\r\n {constants.List_Journal}\r\n \r\n );\r\n}\r\n\r\nfunction CrdbListCommands() {\r\n const history = useHistory();\r\n const { viewReport } = useReportViewer();\r\n const jobListContext = useContext(JobListViewContext);\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const selectedElement = jobListContext.selectedElement as CrDbListItem;\r\n\r\n const { edit, view, deleteItem, viewPaymentHistory } = useSelectedCrdbOperations();\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, (jobListContext.opType === constants.opTypes.warehousing ? FmsSecTask.WHCrDb :FmsSecTask.AcctCrDbList));\r\n const hasSecCp = getSecBySecTask(appContext, FmsSecTask.AcctCustPayment, SecType.Add);\r\n const hasSecBp = getSecBySecTask(appContext, FmsSecTask.AcctBillPayment, SecType.Add);\r\n\r\n const hasSelectedRow = !!selectedElement;\r\n\r\n //const { viewReport } = useReportViewer();\r\n\r\n const onPopupClose = () => {\r\n setSelectedPopupMenuItem(null);\r\n }\r\n\r\n async function print() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const title = `Cr/Db Note [CrDb #: ${selectedElement?.crDbNo}][Ref. #: ${selectedElement.refNo}]`;\r\n const args = new CRDBArgs({\r\n docType: DocumentType.CRDB,\r\n formCaption: title,\r\n subject: title,\r\n\r\n tbId: selectedElement?.id.toString() ?? '',\r\n tbName: \"T_CRDBHD\",\r\n toCompanyid: selectedElement?.agent\r\n });\r\n viewReport(args, \"\", true);\r\n }\r\n\r\n async function onCustomerBillAction(item: ActionButtonItem) {\r\n let link = '';\r\n switch (item.index) {\r\n case 0:\r\n link = `/accounting/acCustomerPayment/add`;\r\n break;\r\n case 1:\r\n link = `/accounting/acBillPayment/add`;\r\n break;\r\n case 2:\r\n\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/acCustomerPayment/accounting', \r\n 'invoiceNo', 'Billings', selectedElement.crDbNo, 'updated', false, true, null);\r\n openNewPage(history, '/common/joblistview/acCustomerPayment/accounting', NavigationType.newPage);\r\n return;\r\n case 3:\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/acBillPayment/accounting', \r\n 'invoiceNo', 'Billings', selectedElement.crDbNo, 'updated', false, true, null);\r\n openNewPage(history, '/common/joblistview/acBillPayment/accounting', NavigationType.newPage);\r\n return;\r\n }\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrl(link)) {\r\n await showGlobalOkDialog(

Payment New Operation is already in progress

);\r\n return;\r\n }\r\n\r\n openNewPage(history, `${link}/${selectedElement.agentId}`, NavigationType.newPage);\r\n }\r\n\r\n \r\n function onHistoryBtnAction(item: ActionButtonItem) {\r\n switch (item.index) {\r\n case 0:\r\n viewPaymentHistory();\r\n break;\r\n case 1:\r\n setSelectedPopupMenuItem({ label: 'View History', popupWidth: 1200, popupComponent: })\r\n break;\r\n // case 2:\r\n // setSelectedPopupMenuItem({ label: 'Delete History (CrDb)', popupWidth: 920, popupComponent: })\r\n // return;\r\n }\r\n }\r\n\r\n async function agentBalance() {\r\n if (selectedElement.agentId <= 0) {\r\n await showGlobalOkDialog(

You didn't enter Agent.

,false,null,'warning');\r\n return;\r\n }\r\n setSelectedPopupMenuItem({\r\n label: 'Balance',\r\n popupWidth: 780,\r\n popupComponent:\r\n \r\n })\r\n }\r\n\r\n function hasOpenedViewOrEditFor(id: number) {\r\n if (!selectedElement.jobType && selectedElement.period === \"P\") \r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/accounting/periodCrdb/edit/${id}`) || jobListContext.hasOpenedScreenStartingWithUrl(`/accounting/periodCrdb/view/${id}`);\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/accounting/crdb/edit/${getJobNameFromInvBillCrDbJobType(selectedElement.jobType)}/${selectedElement.tbId}/${id}`) || jobListContext.hasOpenedScreenStartingWithUrl(`/accounting/crdb/view/${getJobNameFromInvBillCrDbJobType(selectedElement.jobType)}/${selectedElement.tbId}/${id}`); \r\n }\r\n\r\n const canBeAdd = listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n const disablePrint = !hasSelectedRow;//&& selectedElement.draft; //<240523.dwshin Invoice/Bill/CRDB - Draft인 항목을 출력 할 때, Title에 Draft 나오도록 추가>\r\n\r\n return (\r\n
\r\n
\r\n {/* */}\r\n {/* {(jobListContext.opType === constants.opTypes.warehousing) &&\r\n <>  \r\n } */}\r\n View \r\n Edit \r\n Delete\r\n
\r\n
\r\n {jobListContext.opType === constants.opTypes.warehousing && <>\r\n Print \r\n setSelectedPopupMenuItem({ label: 'CrDb Batch Print', popupComponent: })}\r\n >\r\n Batch Print\r\n  \r\n {(hasSecCp || hasSecBp) &&\r\n <>\r\n \r\n Pay\r\n  \r\n \r\n }\r\n <>\r\n \r\n View History\r\n  \r\n \r\n {/* setSelectedPopupMenuItem({ label: 'Payment History', popupWidth: 1050, popupComponent: })}>Payment History  \r\n Payment History \r\n setSelectedPopupMenuItem({ label: 'View History', popupWidth: 1200, popupComponent: })}>View History */}\r\n }\r\n\r\n {jobListContext.opType !== constants.opTypes.warehousing && (\r\n <>\r\n \r\n Print\r\n  \r\n \r\n )}\r\n \r\n Balance\r\n \r\n
\r\n\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.popupComponent ? (\r\n \r\n {cloneElement(selectedPopupMenuItem.popupComponent!, { onPopupClose })}\r\n \r\n ) : null}\r\n
\r\n );\r\n}\r\n\r\nfunction CrdbListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction CrdbListViewExtras({\r\n hideLogHistory\r\n}: any,\r\n) {\r\n useFunctionKeys({ onFunction: onFunctionKey });\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n const systemSettings = useSystemSettings();\r\n const appContext = useContext(ApplicationContext);\r\n const isWarehouingList = jobListContext.opType === constants.opTypes.warehousing;\r\n const listSec = findSecurityTask(appContext, (isWarehouingList ? FmsSecTask.WHCrDb : FmsSecTask.AcctCrDbList));\r\n\r\n const { edit, view, switchToParent, create } = useSelectedCrdbOperations();\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n switchToParent();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F6', 'F3', 'F9', 'F11', 'F8', 'F2'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n async function loadCrdbHistory(param: any) {\r\n //const apiResult = await appContext.api.getOceanImportCrdbHistory(id);\r\n const apiResult = await appContext.api.getAcctHistory(param.jobName, param.jobId, (jobListContext.selectedElement as CrDbListItem).jobType, false);\r\n if (!apiResult || !apiResult.success) {\r\n return null;\r\n }\r\n\r\n return \r\n }\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n hideLogHistory={hideLogHistory}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for CRDB (OI) List screen\r\n *\r\n * @class CrdbListView\r\n * @extends {AbstractListView}\r\n */\r\nclass CrdbListView extends AbstractListView {\r\n getTableSettings(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): TableSettings {\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n let listType: JobNames.CrDb | JobNames.WHCrDb = JobNames.CrDb;\r\n if (opType === constants.opTypes.warehousing) {\r\n listType = JobNames.WHCrDb;\r\n }\r\n\r\n const tsettings = crdbList;\r\n const cols = CrDbListItem.getExportCollection(listType, useBranch);\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type };\r\n });\r\n return tsettings;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'u2Date',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getCustomFilterRenderers(opType?: string | undefined): ListCustomFilterRenderer[] {\r\n return [\r\n {\r\n accessor: 'statusNotUseFileLocked',\r\n renderer: StatusNotUseFileLockedRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'recognized',\r\n renderer: RecognizedFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'jobType',\r\n renderer: (props: any) => ,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n //{\r\n // accessor: 'draft',\r\n // renderer: DraftFilterRenderer,\r\n // searchValueExtractor: (v: any | null | undefined) => v === 'D' ? true : false,\r\n //},\r\n // {\r\n // accessor: 'void',\r\n // renderer: VoidFilterRenderer,\r\n // searchValueExtractor: (v: any | null | undefined) => v === 'V' ? true : false,\r\n // },\r\n {\r\n accessor: 'settled',\r\n renderer: undefined,\r\n searchValueExtractor: (v: any | null | undefined) => v.value !== undefined ? v.value : v,\r\n },\r\n ];\r\n }\r\n\r\n getRowRenderers(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): ListRowRenderer[] {\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n let listType: JobNames.CrDb | JobNames.WHCrDb = JobNames.CrDb;\r\n if (opType === constants.opTypes.warehousing) {\r\n listType = JobNames.WHCrDb;\r\n }\r\n\r\n return CrDbListItem.getExportCollection(listType, useBranch).map(x => {\r\n const colRenderer: ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if (x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if (x.align === XCol.XAlignType.Right) colRenderer.Cell = TextAlignRightRenderer;\r\n if (x.dataIndex === \"status\") {\r\n colRenderer.Cell = IndicatorRenderer;\r\n }\r\n else if (x.dataIndex === \"draft\") {\r\n // colRenderer.Cell = DraftRenderer;\r\n colRenderer.Cell = NullableCheckboxIconRenderer;\r\n }\r\n else if (x.dataIndex === 'recognized') {\r\n colRenderer.Cell = RecognizedRenderer;\r\n }\r\n // else if (x.dataIndex === \"void\") {\r\n // colRenderer.Cell = VoidRenderer;\r\n // }\r\n else if (x.dataIndex === \"period\") {\r\n colRenderer.Cell = PeriodRenderer;\r\n }\r\n else if (x.dataIndex === \"amount\" || x.dataIndex === \"paidAmt\" || x.dataIndex === \"balance\" || x.dataIndex === \"total\" || x.dataIndex === \"dutyAmount\"|| x.dataIndex === \"creditTotal\"|| x.dataIndex === \"debitTotal\") {\r\n colRenderer.Cell = props => x.currency} {...props} />;\r\n }\r\n else if (x.dataIndex === \"settled\") {\r\n colRenderer.Cell = ConfirmedRenderer;\r\n }\r\n else if (x.dataIndex === \"refNo\" || x.dataIndex === \"hblNo\") {\r\n colRenderer.Cell = TextAlignLeftRenderer;\r\n }\r\n else if (x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if (x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if (x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n\r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({ accessor: 'status', changedValue: (value: any) => { return value['status'] === 'PC' ? 'Period Close' : '' } });\r\n colRenderer.push({ accessor: 'draft', changedValue: (value: any) => { return nullableCheckBoxValue(value['draft'])}});\r\n colRenderer.push({ accessor: 'settled', changedValue: (value: any) => { return nullableCheckBoxValue(value['settled'])} });\r\n colRenderer.push({ accessor: 'amount', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['amount']) } });\r\n colRenderer.push({ accessor: 'paidAmt', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['paidAmt']) } });\r\n colRenderer.push({ accessor: 'balance', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['balance']) } });\r\n colRenderer.push({ accessor: 'total', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['total']) } });\r\n colRenderer.push({ accessor: 'dutyAmount', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['dutyAmount']) } });\r\n colRenderer.push({ accessor: 'creditTotal', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['creditTotal']) } });\r\n colRenderer.push({ accessor: 'debitTotal', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['debitTotal']) } });\r\n return colRenderer;\r\n }\r\n\r\n async fetchAndFormatData(api: any, search: Search, opType: string | undefined): Promise {\r\n const searchModel = CrDbListItem.calculateSearchParameters(search, CrDbListItem.MapSearchFields);\r\n if (opType === constants.opTypes.oceanImport) searchModel.extraWhere = JobNames.OceanImport;\r\n else if (opType === constants.opTypes.oceanExport) searchModel.extraWhere = JobNames.OceanExport;\r\n else if (opType === constants.opTypes.airImport) searchModel.extraWhere = JobNames.AirImport;\r\n else if (opType === constants.opTypes.airExport) searchModel.extraWhere = JobNames.AirExport;\r\n else if (opType === constants.opTypes.otherShipment) searchModel.extraWhere = JobNames.OtherOP;\r\n\r\n const apiResult = await api.getListItems(opType === constants.opTypes.warehousing ? JobNames.WHCrDb : JobNames.CrDb, 'CrDbListItem',\r\n searchModel,\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return { data: [], totalCount: 0 };\r\n }\r\n\r\n return { data: formatData(apiResult.entities), totalCount: apiResult.totalCount };\r\n }\r\n\r\n renderCommands(): React.ReactNode {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton(): React.ReactNode {\r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n\r\n renderExtras(hideLogHistory: boolean): React.ReactNode {\r\n return (\r\n \r\n );\r\n }\r\n\r\n getViewUrlFor(row: CrDbListItem) {\r\n if (!row.jobType && row.period !== \"P\") {\r\n return ''; // Not supported\r\n }\r\n if (!row.jobType && row.period === \"P\")\r\n return { url: row && row.id ? `/accounting/periodCrdb/view/${row.id}` : '', needAfterScreenUrl: true };\r\n else\r\n return { url: row && row.id ? `/accounting/crdb/view/${getJobNameFromInvBillCrDbJobType(row.jobType)}/${row.tbId}/${row.id}` : '', \r\n needAfterScreenUrl: true, checkAllOperation: true };\r\n }\r\n\r\n getListViewTitle(opType: string | undefined) {\r\n return 'CrDb List';\r\n };\r\n\r\n renderAdditionalCommands() {\r\n return ;\r\n }\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n \r\n useLogHistory(): boolean {\r\n return true;\r\n }\r\n\r\n transactionImpactBtn(userId: string): React.ReactNode {\r\n return \r\n }\r\n}\r\n\r\nexport default CrdbListView;\r\n","import {cloneElement, useContext, useEffect, useState} from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport {ActionButtonItem, borderColors, splitMenuItemsIntoSections} from '../../../ui/ActionButton';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport constants from '../../../constants';\r\nimport {NavigationType, openNewPage} from '../../../util/navigationHelpers';\r\nimport {Search} from \"../../../filtering\";\r\nimport {commonCompaniesCompanyList, TableColumn, TableSettings} from '../../../tableSettings';\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\n\r\nimport {\r\n DateRenderer,DateTimeRenderer,FloatRenderer,IndicatorRenderer,NullableCheckboxIconRenderer,\r\n NullableCheckboxRedIconRenderer,TextAlignLeftRenderer,TextAlignRightRenderer,TextRenderer,\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport {CompanyListPreview} from '../../../ifmsTypes';\r\nimport {JobNames} from '../../../framework.core/JobNames';\r\nimport IfmsModal from \"../../../ui/IfmsModal\";\r\nimport ListViewShortcutMenu from '../ListViewShortcutMenu';\r\nimport { CodeCompanyListItem } from '../../../fms.data/models/CodeCompanyListItem';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport { getFmsGlobal } from '../../../globals';\r\nimport { appendLine, findSecurityTask } from '../../../util';\r\nimport { FmsSubMenu } from '../../../constants/fmsSubMenu';\r\nimport { getSelectedSubMenuArgs } from '../../JobListSubMenu';\r\nimport useReportViewer from '../../../hooks/useReportViewer';\r\nimport { TaxIdTypeFilterRenderer } from '../commonListRenderers';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport CustomerBalance from '../../reports/AccountBalance';\r\nimport { nowDate } from '../../../dateUtils';\r\nimport { Decimalformat, nullableCheckBoxValue ,TaxIdType} from '../commonExportFormat';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu,{ IfmsMenuItem } from '../../../ui/menu/Menu';\r\n\r\n\r\n// function getTaxIdType(t: string) {\r\n// switch (t) {\r\n// case 'E': return 'EIN - IRS Number';\r\n// case 'C': return 'CBP - CBP Assigned Number';\r\n// case 'S': return 'SSN - Social Security Number';\r\n// case 'O': return 'OC - Organization Code';\r\n// case 'U': return 'USCI - United Social Credit Identifier';\r\n// case 'R': return 'EORI - Economic Operator Reg. ID';\r\n// }\r\n// return '';\r\n// }\r\n\r\nfunction TaxIdTypeRenderer({cell}:any) {\r\n let value = '';\r\n\r\n if (cell.value === 'E') {\r\n value = 'EIN - IRS Number';\r\n } else if (cell.value === 'C') {\r\n value = 'CBP - CBP Assigned Number';\r\n } else if (cell.value === 'S') {\r\n value = 'SSN - Social Security Number';\r\n } else if (cell.value === 'O') {\r\n value = 'OC - Organization Code';\r\n } else if (cell.value === 'U') {\r\n value = 'USCI - United Social Credit Identifier';\r\n } else if (cell.value === 'R') {\r\n value = 'EORI - Economic Operator Reg. ID';\r\n }\r\n\r\n return (\r\n
{value}
\r\n );\r\n}\r\n\r\n// function formatElement(data:any) {\r\n// return {\r\n// ...data,\r\n// idType: getTaxIdType(data.idType),\r\n// };\r\n// }\r\n\r\nfunction formatData(data:Array) {\r\n // return data.map(d => formatElement(d));\r\n return data.map(d => ({\r\n ...d,\r\n }));\r\n}\r\n\r\nfunction useSelectedCompanyOperations() {\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const history = useHistory();\r\n\r\n const selectedElement = jobListContext.selectedElement as CompanyListPreview;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n \r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/common/companies/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n\r\n openNewPage(history, '/common/companies/add', NavigationType.newPage);\r\n }\r\n\r\n async function deleteCompany() {\r\n let errorMsg = '';\r\n\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/common/companies/edit/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/common/companies/view/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Customer first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n const fmsGlobal = getFmsGlobal();\r\n\r\n let canDelete = await appContext.api.getCheckCompanyIsUsed({ id: selectedElement.id });\r\n if (canDelete?.result?.item1)\r\n errorMsg = appendLine(errorMsg, 'Could not check you can delete or not');\r\n if (canDelete?.result?.item2 || canDelete?.result?.item3)\r\n errorMsg = appendLine(errorMsg, 'This company is already used and cannot be deleted');\r\n\r\n if (errorMsg) {\r\n await showGlobalOkDialog(errorMsg);\r\n return false;\r\n }\r\n\r\n if (fmsGlobal.CanUseHybrid) {\r\n canDelete = await appContext.api.getCheckCompanyIsUsedIl3(selectedElement.id, fmsGlobal.FmsMOption?.serversOption?.il3LicID)\r\n if (canDelete?.result)\r\n errorMsg = appendLine(errorMsg, 'This company is already used and cannot be deleted');\r\n }\r\n\r\n if (errorMsg) {\r\n await showGlobalOkDialog(errorMsg);\r\n return false;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n , false, 0, true, 'warning');\r\n if (doDelete) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.Company, { id: selectedElement.id, canUseHybrid: fmsGlobal.CanUseHybrid, pimsID: fmsGlobal.PimsID, il3LicID: fmsGlobal.FmsMOption?.serversOption?.il3LicID });\r\n if (apiResult && apiResult.success) {\r\n jobListContext.reloadData();\r\n } else {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n await showGlobalOkDialog(message);\r\n }\r\n }\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n const id = selectedElement.id;\r\n const editUrl = `/common/companies/edit/${id}`;\r\n const viewUrl = `/common/companies/view/${id}`;\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrlWithoutMe('/common/companies/edit', editUrl)) {\r\n await showGlobalOkDialog(

Edit operation is already in progress

);\r\n return;\r\n }\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/common/companies/edit/${id}`;\r\n const viewUrl = `/common/companies/view/${id}`;\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeCompany);\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n async function copy() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n \r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/common/companies/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n \r\n const id = selectedElement.id;\r\n openNewPage(history, `/common/companies/add?copyId=${id}`, NavigationType.newPage);\r\n }\r\n\r\n return { create, deleteCompany, edit, view, copy };\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const { create,deleteCompany, edit, view, copy } = useSelectedCompanyOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const selectedElement = jobListContext.selectedElement as CodeCompanyListItem;\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeCompany);\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'View', shortcut: 'F9', separator: !listSec?.grantEdit },\r\n { label: 'Edit', shortcut: 'F3', separator: !listSec?.grantDel, hidden: !listSec?.grantEdit },\r\n { label: 'Delete', shortcut: '', separator: true, hidden: !listSec?.grantDel, },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n { label: 'Copy', shortcut: 'Ctrl+F2', separator: true, hidden: !listSec?.grantAdd },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n deleteCompany();\r\n break;\r\n case 4:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 5:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 6:\r\n copy();\r\n break;\r\n case 7: \r\n jobListContext.reloadData();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n \r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction CompanyListCommands() {\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const { viewReport, viewEmptyReport } = useReportViewer();\r\n const appContext = useContext(ApplicationContext);\r\n\r\n function hasOpenedViewOrEditFor(id:number) {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/common/companies/edit/${id}`) || jobListContext.hasOpenedScreenStartingWithUrl(`/common/companies/view/${id}`);\r\n }\r\n\r\n function hasOpenedNew() {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/common/companies/add`);\r\n }\r\n\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n\r\n const selectedElement = jobListContext.selectedElement as CompanyListPreview;\r\n\r\n const { edit, view, deleteCompany, copy } = useSelectedCompanyOperations();\r\n \r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeCompany);\r\n\r\n const hasSelectedRow = !!selectedElement;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n const canBeCopied = hasSelectedRow && !hasOpenedNew() && listSec?.grantAdd;\r\n const canBeAdd = !hasOpenedNew() && listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n\r\n const onPopupClose = () => {\r\n setSelectedPopupMenuItem(null);\r\n }\r\n\r\n async function onSubMenuClick(fmsSubMenu: FmsSubMenu) {\r\n setSelectedPopupMenuItem(null);\r\n\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n switch(fmsSubMenu){\r\n case FmsSubMenu.SendEmail:\r\n case FmsSubMenu.SendFax:\r\n viewEmptyReport(fmsSubMenu === FmsSubMenu.SendFax, selectedElement.id.toString());\r\n break;\r\n }\r\n\r\n const args = await getSelectedSubMenuArgs(fmsSubMenu, JobNames.Company, selectedElement, appContext, showGlobalYesNoDialog, null);\r\n if(args){\r\n viewReport(args, \"\", true);\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n  \r\n View \r\n Edit \r\n Delete \r\n Copy\r\n
\r\n
\r\n {\r\n setSelectedPopupMenuItem({\r\n popupLabel: 'Balance',\r\n popupWidth: 780,\r\n label: 'Balance',\r\n popupComponent:\r\n setSelectedPopupMenuItem(null)}\r\n //toDate={invoice.postDate || ''}\r\n toDate={nowDate()}\r\n comId={selectedElement.id}\r\n comType={'C'}\r\n branch={''}\r\n subCode={''}\r\n customerName={selectedElement.shortName ?? ''} />\r\n }\r\n )\r\n }}>\r\n Bal\r\n \r\n
\r\n {/*
\r\n setSelectedPopupMenuItem(event)}\r\n items={[\r\n { label: 'Agent Statement', separator: false, popupComponent: },\r\n { label: 'Customer Statement', separator: false, popupComponent: },\r\n { label: 'PrePickup Order', separator: true, popupComponent: },\r\n { label: 'Print Customer Profile', separator: true, newCol: true, subMenu: FmsSubMenu.CompanyProfile },\r\n\r\n { label: 'Email', separator: false, subMenu: FmsSubMenu.SendEmail },\r\n { label: 'Fax', separator: true, subMenu: FmsSubMenu.SendFax },\r\n\r\n { label: 'Importer/Bond Query', separator: false, popupComponent: , popupWidth: 550 },\r\n { label: 'Last Transaction', separator: false, popupComponent: },\r\n { label: 'Memo List (Customer)', separator: false, popupComponent: },\r\n ]}\r\n >\r\n More Menu\r\n \r\n
*/}\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.popupComponent ? (\r\n \r\n {cloneElement(selectedPopupMenuItem.popupComponent!, { onPopupClose })}\r\n \r\n ) : null}\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.subMenu ? onSubMenuClick(selectedPopupMenuItem.subMenu) : null}\r\n
\r\n );\r\n}\r\n\r\nfunction CompanyListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction CompanyListViewExtras({\r\n hideLogHistory\r\n}: any,\r\n){\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeCompany);\r\n\r\n const { create, edit, view, copy } = useSelectedCompanyOperations();\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"CTRL+F2\") {\r\n if(listSec?.grantAdd)\r\n copy();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey:string) {\r\n if (['F2', 'F3', 'CTRL+F2', 'F9', 'F11', 'F8'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n hideLogHistory={hideLogHistory}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for Company List screen\r\n *\r\n * @class CompanyListView\r\n * @extends {AbstractListView}\r\n */\r\n class CompanyListView extends AbstractListView {\r\n\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n //const apiResult = await api.getCommonCompanies(search);\r\n const apiResult = await api.getListItems(JobNames.Company,\r\n 'CodeCompanyListItem',\r\n CodeCompanyListItem.calculateSearchParameters(search, CodeCompanyListItem.MapSearchFields),\r\n 1,\r\n search.pageSize);\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return { data: formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n {\r\n accessor: 'idType',\r\n renderer: TaxIdTypeFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.codeCompanyCompany;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n return CodeCompanyListItem.getExportCollection().map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.align === XCol.XAlignType.Right) colRenderer.Cell = TextAlignRightRenderer;\r\n if (x.dataIndex === \"status\") colRenderer.Cell = IndicatorRenderer;\r\n if (x.dataIndex === \"idType\") colRenderer.Cell = TaxIdTypeRenderer;\r\n if(x.dataIndex === \"inactive\") colRenderer.Cell = NullableCheckboxRedIconRenderer;\r\n else if (x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if (x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if (x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n else if (x.type === XCol.XCellType.Double) {\r\n if (x.dataIndex === 'terms')\r\n colRenderer.Cell = (props: any) => ;\r\n else\r\n colRenderer.Cell = FloatRenderer;\r\n }\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({ accessor: 'status', changedValue: (value: any) => { return value['status'] === 'PC' ? 'Period Close' : '' } });\r\n colRenderer.push({ accessor: 'inactive', changedValue: (value: any) => { return nullableCheckBoxValue(value['inactive']) } });\r\n colRenderer.push({ accessor: 'idType', changedValue: (value: any) => { return TaxIdType(value['idType']) } });\r\n colRenderer.push({ accessor: 'terms', changedValue: (value: any) => { return Decimalformat(value['terms'], 0) } });\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'updated',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = commonCompaniesCompanyList;\r\n const cols = CodeCompanyListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderAfterConfigureButton() {\r\n return null;\r\n }\r\n renderExtras(hideLogHistory: boolean) {\r\n return \r\n }\r\n\r\n getViewUrlFor(row: CompanyListPreview) {\r\n return row && row.id ? `/common/companies/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'Customer List';\r\n };\r\n\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n \r\n\r\n useLogHistory(): boolean {\r\n return true;\r\n }\r\n};\r\n\r\nexport default CompanyListView;","/**\r\n * save-sqlinfo - will be obsolete\r\n */\r\nexport const DefaultContainerMilestoneStatus = [\r\n { editable: true, name: 'Booking', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Container Dispatched', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'In Gate', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Load on Vessel', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Vessel Departure', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: false, name: 'Carrier Release', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: false, name: 'Customs Release', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Vessel Arrival', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Unload from Vessel', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: false, name: 'Devanning Inst. to CFS', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Rail Departure', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Rail Arrival', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Available for Delivery', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Out Gate', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Deliver to Customer', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: false, name: 'Return Empty Container', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n];\r\n","import PropTypes from 'prop-types';\r\nimport React, { useEffect, useState } from 'react';\r\n\r\nimport { ApplicableTableSettings, mblStatus } from '../../../../tableSettings';\r\n\r\nimport IfmsDate from '../../../../ui/Date';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport CheckBox from '../../../../ui/CheckBox';\r\nimport { Time } from '../../../../ui/DateTime';\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\nimport OceanUnPortLookupField from '../../../../uiControls/lookup/OceanUnPortLookupField';\r\n\r\nimport { DefaultContainerMilestoneStatus } from './implementationConstants';\r\nimport { TableStorage } from '../../../../hooks/useTableStorage';\r\nimport { now, getTime, formatDateTime, formatDate } from '../../../../dateUtils';\r\nimport { PimsCntrEvent } from '../../../../fms.core/PimsCntrEvent';\r\nimport { GenMain } from '../../../../fms.core/GenMain';\r\n\r\nfunction SelectRenderer({data, row}:any) {\r\n if (//[save-sqlinfo]!row.original.editable\r\n !row.original.selectable) {\r\n return
;\r\n }\r\n\r\n const toggleRow = data[0].toggleRow;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n const selected = selectedIndeces.findIndex((x:any) => x === row.index) >= 0 || !!data[row.index].date;\r\n \r\n return
toggleRow(row.index, select)} />
;\r\n}\r\n\r\nfunction StatusNameRenderer({ cell }:any) {\r\n return
{cell.value}
;\r\n}\r\n\r\nfunction DateRenderer({data, row}:any) {\r\n if (//[save-sqlinfo]!row.original.editable\r\n !row.original.selectable) {\r\n return
;\r\n }\r\n\r\n const onRowChange = data[0].onRowChange;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n let selected = selectedIndeces.findIndex((x:any) => x === row.index) >= 0 || !!data[row.index].date;\r\n\r\n function onChange(date: string|null) {\r\n if (!date) {\r\n onRowChange(row.index, {\r\n date: null,\r\n time: null,\r\n datetime: null,\r\n }, selected);\r\n } else {\r\n const tIndex = date.indexOf('T');\r\n const datetime = tIndex >= 0 ? `${date.substring(0, tIndex)}T${row.original.time}` : row.original.datetime;\r\n\r\n onRowChange(row.index, {\r\n date: date,\r\n datetime,\r\n }, selected);\r\n }\r\n }\r\n\r\n return
;\r\n}\r\n\r\nfunction TimeRenderer({data, row}:any) {\r\n if (//[save-sqlinfo]!row.original.editable\r\n !row.original.selectable) {\r\n return
;\r\n }\r\n\r\n const onRowChange = data[0].onRowChange;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n const selected = selectedIndeces.findIndex((x:any) => x === row.index) >= 0 || !!data[row.index].date;\r\n\r\n function onChange(changedTime: string|null) {\r\n if (!row.original.date) {\r\n return;\r\n }\r\n\r\n const timeToApply = changedTime ?? '00:00';\r\n\r\n const tIndex = row.original.date.indexOf('T');\r\n const datetime = tIndex >= 0 ? `${row.original.date.substring(0, tIndex)}T${timeToApply}` : row.original.datetime;\r\n\r\n\r\n onRowChange(row.index, {\r\n time: timeToApply,\r\n datetime,\r\n }, selected);\r\n }\r\n\r\n return
;\r\n}\r\n\r\nfunction LocationRenderer({data, row}:any) {\r\n if (//[save-sqlinfo]!row.original.editable\r\n !row.original.selectable) {\r\n return ;\r\n }\r\n\r\n const onRowChange = data[0].onRowChange;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n const selected = selectedIndeces.findIndex((x:any) => x === row.index) >= 0 || !!data[row.index].date;\r\n\r\n return selected\r\n ?
\r\n onRowChange(row.index, { location: { ...row.original.location, unCodeWithPortName }})}\r\n // onSelect={location => onRowChange(row.index, {location})}\r\n initialValue={row.original.locName ?? ''}\r\n onTextChange={locName => onRowChange(row.index, { locName }, selected)}\r\n onSelect={location => onRowChange(row.index, { locName: location.portName }, selected)}\r\n //save-sqlinfo>\r\n //searchBy =\"unWithPortName\"\r\n searchBy=\"portName\"\r\n />\r\n
\r\n :
\r\n {/* [save-sqlinfo]{row.original.location ? row.original.location.unCodeWithPortName : ''} */}\r\n {row.original.locName ?? ''}\r\n
;\r\n}\r\n\r\nfunction LastEventTimeRenderer({row, data}:any) {\r\n // x.statusName === row.original.statusName).lastEventDateTime : '';\r\n\r\n // const timestamp = row.original.selectable ? row.original.lastEventDateTime : defaultStatusTimestamp;\r\n //save-sqlinfo>\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction MblMilestoneContainerStatus({\r\n //[save-sqlinfo]defaultStatus,\r\n selectedIndex,\r\n status,\r\n applyToAll,\r\n tableStorage,\r\n onChange,\r\n isView,\r\n mbl,\r\n}:{\r\n selectedIndex: number, // selected container index\r\n //[save-sqlinfo]defaultStatus: Array|null, //[save-sqlinfo]Array|null,\r\n status: Array|null, //[save-sqlinfo]Array|null,\r\n onChange: (rowIndex: number, status: Array, select: boolean) => void, //[save-sqlinfo](rowIndex: number, status: Array) => void,\r\n applyToAll: (status: Array) => void, //[save-sqlinfo](status: Array) => void,\r\n tableStorage: TableStorage,\r\n isView: boolean,\r\n mbl:GenMain\r\n}) {\r\n // const selectable = !!status;\r\n\r\n const [selectedIndeces, setSelectedIndeces] = useState>([]);\r\n\r\n useEffect(() => {\r\n setSelectedIndeces([]);\r\n }, [selectedIndex]);\r\n\r\n /**\r\n * pt211230 - add comment\r\n * if rowIndex resides in selectedIndices state, then remove it, \r\n * otherwise add rowIndex into selectedIndices and update row data\r\n * @param rowIndex \r\n */\r\n function toggleRow(rowIndex: any, select: boolean) {\r\n const index = selectedIndeces.findIndex(x => x === rowIndex);\r\n if (index >= 0) {\r\n const indeces = [...selectedIndeces];\r\n indeces.splice(index, 1);\r\n setSelectedIndeces(indeces);\r\n onRowChange(rowIndex, {\r\n date: null,\r\n time: null,\r\n datetime: null,\r\n locName: '',\r\n }, select);\r\n } else {\r\n setSelectedIndeces([...selectedIndeces, rowIndex]);\r\n\r\n var currentTime = now();\r\n let tempLocName = '';\r\n const time = getTime(currentTime);\r\n\r\n switch (rowIndex) {\r\n case 0: case 1: case 2: case 3: case 4:\r\n tempLocName = mbl.loadingPort;\r\n break;\r\n case 7: case 8: case 9: case 10: \r\n tempLocName = mbl.discharge;\r\n break;\r\n case 5: case 6: case 11: case 12: case 13: case 14: case 15:\r\n tempLocName = mbl.finalDest;\r\n break;\r\n default:\r\n tempLocName = '';\r\n break;\r\n }\r\n\r\n onRowChange(rowIndex, {\r\n date: formatDate(currentTime), //currentTime,\r\n time,\r\n //dateTime: formatDateTime(currentTime),\r\n datetime: currentTime,\r\n locName: tempLocName\r\n }, select);\r\n }\r\n }\r\n\r\n /**\r\n * pt211230 - add comment\r\n * Apply change to mbl.milestone.eventListItems[rowIndex]\r\n * @param rowIndex index of PimsCntrEvent[]\r\n * @param change {Partial}\r\n */\r\n function onRowChange(rowIndex: number, change: any, select: boolean) {\r\n if (!status) {\r\n return;\r\n }\r\n\r\n //\r\n\r\n onChange(selectedIndex, [status[rowIndex]], select); // Update corresponding OmContainer\r\n }\r\n\r\n // function doApplyToAll(//[same-sqlinfo]s:Array|null\r\n // s:Array|null) {\r\n // if (s) {\r\n // applyToAll(s);\r\n // }\r\n // }\r\n\r\n const statusData = !!status ? status : DefaultContainerMilestoneStatus;\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n tableName: 'mblStatus',\r\n ...mblStatus,\r\n data: statusData.map((x:any, i:number) => ({...x, i, onRowChange, toggleRow, \r\n // selectable: [\r\n // OceanMblStatusMap.get(OceanEventName.CarrierRelease)?.label, \r\n // OceanMblStatusMap.get(OceanEventName.CustomsRelease)?.label, \r\n // OceanMblStatusMap.get(OceanEventName.DevanInstToCfs)?.label, \r\n // OceanMblStatusMap.get(OceanEventName.ReturnEmptyContainer)?.label\r\n // ].indexOf(x.name) < 0,\r\n //name: x.statusName,\r\n selectable: true,\r\n selectedIndeces, //[save-sqlinfo]defaultStatus \r\n })),\r\n rowRenderers: [\r\n //\r\n ],\r\n customStorage: tableStorage,\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nMblMilestoneContainerStatus.propTypes = {\r\n selectedIndex: PropTypes.number,\r\n status: PropTypes.array,\r\n applyToAll: PropTypes.func,\r\n onChange: PropTypes.func,\r\n tableStorage: PropTypes.object,\r\n defaultStatus: PropTypes.any,\r\n};\r\n\r\nexport default React.memo(MblMilestoneContainerStatus);\r\n","import _ from 'lodash';\r\nimport React from 'react';\r\n\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport Date from '../../../../ui/Date';\r\nimport CheckBox from '../../../../ui/CheckBox';\r\n\r\nimport { ApplicableTableSettings, mblSelectContainer } from '../../../../tableSettings';\r\n\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\n\r\nimport useTableStorage from '../../../../hooks/useTableStorage';\r\n\r\nimport MblMilestoneContainerStatus from './MblMilestoneContainerStatus';\r\nimport { GenMain } from '../../../../fms.core/GenMain';\r\nimport { OceanMblStatusMap } from '../../../../fms.core/MblStatusViewModel';\r\nimport { GenContainer } from '../../../../fms.core/GenContainer';\r\nimport { PimsCntrEvent } from '../../../../fms.core/PimsCntrEvent';\r\nimport InlineInputControlRow from '../../../../ui/layout/InlineInputControlRow';\r\nimport BlueTitleRow from '../../../../ui/BlueTitleRow';\r\nimport { TextAlignLeftRenderer } from '../../../../uiControls/SmartTableRenderers';\r\nimport { getOriginalValue } from '../../../../fms.core/data/TrackingModule';\r\nimport { useHistory } from 'react-router';\r\n\r\n// function MilestoneStatusRow({left, middle, right}:{left:React.ReactNode|string|null|undefined, middle:React.ReactNode|string|null|undefined, right:React.ReactNode|string|null|undefined}) {\r\n// return (\r\n// <>\r\n// \r\n// {/*
{left}
*/}\r\n//
{middle}
\r\n//
{right}
\r\n//
\r\n//
\r\n// \r\n// );\r\n// }\r\n\r\nfunction SelectRenderer({data, row}:any) {\r\n const toggleSelection = data[0].toggleSelection;\r\n const selectedIndex = data[0].selectedIndex;\r\n const isView = data[0].isView;\r\n\r\n return
toggleSelection(row.index)} disabled={isView} />
;\r\n}\r\n\r\nexport type MblMilestoneHandle = {\r\n executeApplyToAll: VoidFunction,\r\n};\r\n\r\ntype MblMilestoneProps = {\r\n mbl: GenMain|GenMain, //[save-sqlinfo]:OceanImportMbl,\r\n onChange: (x:Partial) => void, //[save-sqlinfo]:(x:Partial) => void,\r\n containerInfo: GenContainer[], //ContainerInfo,\r\n onContainerInfoChange: (x:GenContainer[]) => void, //(x:Partial) => void,\r\n isView: boolean,\r\n user: string,\r\n};\r\n\r\nconst MblMilestoneImpl: React.ForwardRefRenderFunction =({\r\n mbl,\r\n onChange,\r\n containerInfo,\r\n onContainerInfoChange,\r\n isView,\r\n user\r\n}, ref) => {\r\n React.useImperativeHandle(ref, () => ({\r\n executeApplyToAll: () => {\r\n const status = selectedIndex >= 0 && selectedIndex < containerInfo.length ? mbl.milestone?.eventItemList?.filter(v => v.cntrNo === containerInfo[selectedIndex].containerNo)??null : null;\r\n if (status && status.filter(x => x.datetime !== null ).length > 0) {\r\n applyContainerStatusToAll(status);\r\n }\r\n },\r\n }));\r\n\r\n const tableStorage = useTableStorage();\r\n\r\n const selectedIndex = mbl.milestoneContainerSelectedIndex ?? 0;\r\n function setSelectedIndex(milestoneContainerSelectedIndex:number) {\r\n onChange({ milestoneContainerSelectedIndex });\r\n }\r\n\r\n function toggleSelection(index:number) {\r\n setSelectedIndex(selectedIndex === index ? -1 : index);\r\n }\r\n\r\n /**\r\n * Update GenContainer's props at rowIndex by status\r\n * @param rowIndex index of container list\r\n * @param status \r\n */\r\n function onContainerStatusChange(cntrIndex:number, //[save-sqlinfo]status:Array\r\n status: Array, select: boolean) {\r\n\r\n const update = _.cloneDeep(containerInfo);\r\n // {\r\n const omCntr = update[cntrIndex];\r\n\r\n const msitem = OceanMblStatusMap.get(s.seq);\r\n\r\n if (msitem?.cntrDate) {\r\n const cntrDateToSet = !select ? getOriginalValue(mbl.genContainerList[cntrIndex], msitem.cntrDate) : s.datetime;\r\n if (omCntr) _.set(omCntr, msitem.cntrDate, cntrDateToSet);\r\n }\r\n \r\n if (msitem?.cntrLoc) {\r\n const locToSet = !select ? getOriginalValue(mbl.genContainerList[cntrIndex],msitem.cntrLoc) : s.locName;\r\n if (omCntr) _.set(omCntr, msitem.cntrLoc, locToSet);\r\n }\r\n });\r\n //save-sqlinfo>\r\n onContainerInfoChange(update);\r\n }\r\n\r\n function applyContainerStatusToAll(//[save-sqlinfo]status:Array\r\n status:Array) {\r\n const update = _.cloneDeep(containerInfo);\r\n\r\n // collect valid events\r\n // const statusUpdate = //[save-sqlinfo]status.filter((s:MilestoneContainerInfoStatus) => s.date && s.time);\r\n // status.filter(s => s.datetime);\r\n\r\n const statusUpdateWithIndices = status.map((status, index) => ({status, index})).filter(s => s.status.datetime);\r\n\r\n const changeProps = update[selectedIndex].changedProps.map(x => x.propertyName);\r\n\r\n const updatedProps = _.keys(update[selectedIndex]).filter(x => (\r\n x.endsWith('Date') ||\r\n x.endsWith('Loc') ||\r\n x.endsWith('ord') ||\r\n x.endsWith('atd') ||\r\n x.endsWith('carrierRls') ||\r\n x.endsWith('customRls') ||\r\n x.endsWith('ata') ||\r\n x.endsWith('rAtd') ||\r\n x.endsWith('rAta') ||\r\n x.endsWith('emptyReturn')\r\n ) && !!(update[selectedIndex] as any)[x] && (changeProps.includes(x)));\r\n\r\n update.forEach((x, i) => {\r\n if (i === selectedIndex) {\r\n return;\r\n }\r\n\r\n updatedProps.forEach(u => {\r\n (x as any)[u] = (update[selectedIndex] as any)[u];\r\n });\r\n\r\n if (mbl.milestone && mbl.milestone.eventItemList) {\r\n\r\n const itemList = mbl.milestone.eventItemList.filter(v => v.cntrNo === x.containerNo);\r\n\r\n statusUpdateWithIndices.forEach(si => {\r\n if (itemList.length > si.index) {\r\n itemList[si.index].check = si.status.check;\r\n itemList[si.index].date = si.status.date;\r\n itemList[si.index].datetime = si.status.datetime;\r\n itemList[si.index].time = si.status.time;\r\n itemList[si.index].locName = si.status.locName;\r\n }\r\n })\r\n }\r\n })\r\n\r\n onContainerInfoChange(update);\r\n setSelectedIndex(-1);\r\n }\r\n \r\n const tableOptions:ApplicableTableSettings = {\r\n tableName: 'ot-mblSelectContainer',\r\n ...mblSelectContainer,\r\n height: '135px',\r\n data: mbl.milestone?.cntrItemList?.map((x, i) => ({...x, i, toggleSelection, selectedIndex, isView})) || [],\r\n rowRenderers: [\r\n { accessor: 'select', Cell: SelectRenderer },\r\n { accessor: 'cntrNo', Cell: TextAlignLeftRenderer },\r\n { accessor: 'cntrType', Cell: TextAlignLeftRenderer },\r\n ],\r\n customStorage: tableStorage,\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n Select Container (must select before update)} />\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n Container Status} />\r\n
\r\n\r\n = 0 && selectedIndex < containerInfo.lineItems.length ? containerInfo.lineItems[selectedIndex].milestone.status : null}\r\n status={selectedIndex >= 0 && selectedIndex < containerInfo.length ? mbl.milestone?.eventItemList?.filter(v => v.cntrNo === containerInfo[selectedIndex].containerNo)??null : null}\r\n applyToAll={applyContainerStatusToAll}\r\n onChange={onContainerStatusChange}\r\n tableStorage={tableStorage}\r\n //[save-sqlinfo]defaultStatus={containerInfo.lineItems.length > 0 ? containerInfo.lineItems[0].milestone.status : null}\r\n //defaultStatus={containerInfo.length > 0 ? mbl.milestone?.eventItemList?.filter(v => v.cntrNo === containerInfo[0].containerNo || (v.pimsCntrId > 0 && v.pimsCntrId === containerInfo[0].pimsLinkId))??null : null}\r\n mbl={mbl}\r\n />\r\n
\r\n );\r\n};\r\n\r\nconst MblMilestone = React.forwardRef(MblMilestoneImpl);\r\n\r\nexport default React.memo(MblMilestone);\r\n","import { MblStatusViewModel, OceanMblStatusMap, OiContainerEvents } from \"../../../../fms.core/MblStatusViewModel\";\r\nimport { GenMain } from \"../../../../fms.core/GenMain\";\r\nimport { PimsContainer } from \"../../../../fms.core/pims/PimsContainer\";\r\nimport { PimsCntrEvent } from \"../../../../fms.core/PimsCntrEvent\";\r\nimport { CargoEventLog } from '../../../../fms.core/CargoEventLog';\r\nimport { now } from '../../../../dateUtils';\r\nimport { getFmsGlobal } from '../../../../globals';\r\nimport _ from \"lodash\";\r\nimport moment from \"moment\";\r\n\r\nexport function formatLclFcl(f:string|null|undefined) {\r\n if (f === 'L') {\r\n return 'Consol';\r\n } else if (f === 'F') {\r\n return 'FCL';\r\n } else if (f === 'O') {\r\n return 'LCL';\r\n }\r\n\r\n return '';\r\n}\r\n\r\n//[save-sqlinfo]\r\nexport const mblStatusName = {\r\n rcvAnFromCarr: 'rcvAnFromCarr',\r\n sendAnToCust: 'sendAnToCust',\r\n eblDate: 'eblDate',\r\n rcvCrDb: 'rcvCrDb',\r\n rlsDate: 'rlsDate',\r\n customsHold: 'customsHold',\r\n customRls: 'customRls',\r\n cfsDate: 'cfsDate',\r\n arrngTruck: 'arrngTruck',\r\n sendPuDelInst: 'sendPuDelInst',\r\n sendPod: 'sendPod',\r\n emptyRtnDate: 'emptyRtnDate'\r\n}\r\n\r\n/**\r\n * [save-sqlinfo]\r\n * Do remaining initialization after read Entity\r\n * @param mbl \r\n */\r\n export function prepareOtherOpForView(mbl:GenMain) {\r\n // Init milestone\r\n if(!mbl.milestone) {\r\n mbl.milestone = new MblStatusViewModel();\r\n }\r\n if(mbl.milestone.eventItemList.length > 0) {\r\n _.remove(mbl.milestone.eventItemList);\r\n }\r\n\r\n if(mbl.milestone.cntrItemList == null) mbl.milestone.cntrItemList = [];\r\n if(mbl.milestone.eventItemList == null) mbl.milestone.eventItemList = [];\r\n\r\n if (!mbl.milestone.cntrItemList || mbl.milestone.cntrItemList.length === 0) {\r\n AddPimsCntrEvent(mbl, new PimsContainer({ bookingId: 0, cntrNo: mbl.mblNo }))\r\n }\r\n else {\r\n mbl.milestone.cntrItemList.forEach(x => {\r\n AddPimsCntrEvent(mbl, x)\r\n })\r\n }\r\n }\r\n\r\nfunction AddPimsCntrEvent(mbl:GenMain, pimsContainer:PimsContainer){\r\n OiContainerEvents.forEach((enumEvent) => {\r\n // let seqNo = 0;\r\n const smitem = OceanMblStatusMap.get(enumEvent);\r\n if(!smitem) return;\r\n mbl.milestone?.eventItemList?.push(new PimsCntrEvent({\r\n pimsCntrId: pimsContainer.id,\r\n cntrNo: pimsContainer.cntrNo,\r\n pickupNo: pimsContainer.pickupNo,\r\n name: smitem.label,\r\n lastDate: _.get(pimsContainer, smitem.pimsCntrDate??''),\r\n locName: _.get(pimsContainer, smitem.pimsCntrLoc??''),\r\n seq: enumEvent, //seqNo++,\r\n isVisible: true\r\n }));\r\n });\r\n}\r\n\r\nexport function AddEventToNotice(dicEvent: { key: string, value: string }[], evtCode: string, pimsCntrId: string): void {\r\n // if (dicEvent.hasOwnProperty(evtCode)) {\r\n // if (dicEvent[evtCode] === null || dicEvent[evtCode] === \"\") {\r\n // dicEvent[evtCode] = pimsCntrId.toString();\r\n // } else {\r\n // if (!dicEvent[evtCode].includes(pimsCntrId.toString())) {\r\n // dicEvent[evtCode] += `,${pimsCntrId}`;\r\n // }\r\n // }\r\n // } else {\r\n // dicEvent[evtCode] = pimsCntrId.toString();\r\n // }\r\n if (!dicEvent.some(x => x.key === evtCode)) {\r\n dicEvent.push({ key: evtCode, value: pimsCntrId });\r\n }\r\n else {\r\n const findIndex = dicEvent.findIndex(x => x.key === evtCode);\r\n dicEvent[findIndex].value += `,${pimsCntrId}`;\r\n }\r\n}\r\n\r\nexport function CreateCargoEventLog(mblNo: string, evtName: string, kvp: { key: string, value: string }, cntrDataWithSeq: { loc: string, cntrNo: string, seq: number }[], userId: string) {\r\n const keyArr: string[] = kvp.key.split('|');\r\n //const eventAt = _.isEmpty(keyArr[1]) ? null : formatDateTime(keyArr[1]);\r\n const eventAt = _.isEmpty(keyArr[1]) ? null : moment(keyArr[1]).format(CargoEventLog.DateTimeFormat);\r\n const eventLogs: CargoEventLog[] = [];\r\n\r\n const uniqueCntrSet = new Set(cntrDataWithSeq.map(item => item.cntrNo));\r\n const uniqueCntrArray = Array.from(uniqueCntrSet);\r\n uniqueCntrArray.forEach(cntrNo => {\r\n const result: CargoEventLog = new CargoEventLog(evtName, eventAt ?? '')\r\n result.suntekID = getFmsGlobal().AcmeID ?? '';\r\n result.mblNo = mblNo;\r\n result.cntrNo = cntrNo;\r\n result.srcEventType = 'ifms';\r\n result.locName = cntrDataWithSeq.find(x => x.cntrNo === cntrNo)?.loc ?? '';\r\n //API > TrackingLogMblEvents에서 수행함\r\n //result.utcTime = nowUtc(); \r\n result.timezone =Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n result.locTime = now() ;\r\n result.u1Id = userId;\r\n\r\n eventLogs.push(result);\r\n })\r\n return eventLogs;\r\n}\r\n\r\nexport function FindIndexOfKeyStartsWith(dicEvent: { key: string, value: string }[], startWith: string): number {\r\n let index: number = -1;\r\n const vStart: string[] = startWith.split(',').map(str => str.trim()).filter(str => str !== '');\r\n\r\n for (let i = 0; i < dicEvent.length; i++) {\r\n const item = dicEvent[i];\r\n for (const v of vStart) {\r\n if (item.key.startsWith(v)) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n if (index !== -1) {\r\n break;\r\n }\r\n }\r\n \r\n return index;\r\n}","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport Skeleton, { SkeletonTheme } from \"react-loading-skeleton\";\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport { ApiResult, InsertResultsWithData } from '../../../framework.core/data/ApiResult';\r\nimport { JobNames } from '../../../framework.core/JobNames';\r\nimport MblMilestoneView, { MblMilestoneHandle } from './implementation/MblMilestone';\r\nimport { useTypedFastStorage } from '../../../hooks/useFastStorage';\r\nimport { AddEventToNotice, CreateCargoEventLog, FindIndexOfKeyStartsWith, prepareOtherOpForView } from './implementation/mblUtils';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport { SQLInfo } from '../../../framework.core/data/SQLInfo';\r\nimport { historyUpdate } from '../../../fms.data/modules/FmsModFunc';\r\nimport { TrackableEntity } from '../../../fms.core/data/ChangeTrackable';\r\nimport { getSQLInfoList } from '../../../fms.core/data/TrackingModule';\r\nimport { MblStatusViewModel, OceanMblStatusMap, OiContainerEvents } from '../../../fms.core/MblStatusViewModel';\r\nimport SecondaryButton from '../../../ui/SecondaryButton';\r\nimport useSetEditedId from '../../../hooks/useSetEditedId';\r\nimport { CargoEventName } from '../../../framework.core/CargoEventName';\r\nimport { CargoEventLog } from '../../../fms.core/CargoEventLog';\r\nimport constants from '../../../constants';\r\nimport { GenMain } from '../../../fms.core/GenMain';\r\nimport { GenContainer } from '../../../fms.core/GenContainer';\r\nimport useDirtyCheck from '../../../hooks/useDirtyCheck2';\r\nimport { formatDateTime } from '../../../dateUtils';\r\n\r\nconst eventMappings = [\r\n { prefix: \"0|\", name: CargoEventName.FmsBooking, seq: 9, mappingKey:'0' },\r\n { prefix: \"1|\", name: CargoEventName.EmptyOut, seq: 11, mappingKey:'1' },\r\n { prefix: \"250\", name: CargoEventName.FullIn, seq: 13, mappingKey:'250' },\r\n { prefix: \"3|\", name: CargoEventName.VesselLoaded, seq: 15, mappingKey:'15' },\r\n { prefix: \"260,470\", name: CargoEventName.VesselDeparted, seq: 16, mappingKey:'260' },\r\n { prefix: \"5|\", name: CargoEventName.CarrierRls, seq: 17, mappingKey:'5' },\r\n { prefix: \"6|\", name: CargoEventName.CustomsRls, seq: 18, mappingKey:'6' },\r\n { prefix: \"270,460\", name: CargoEventName.VesselArrived, seq: 19, mappingKey:'270' },\r\n { prefix: \"275\", name: CargoEventName.VesselDischarged, seq: 20, mappingKey:'275' },\r\n { prefix: \"9|\", name: CargoEventName.FmsDlvrToCfs, seq: 5, mappingKey:'9' },\r\n { prefix: \"290\", name: CargoEventName.RailDeparted, seq: 21, mappingKey:'290' },\r\n { prefix: \"295\", name: CargoEventName.RailArrived, seq: 22, mappingKey:'295' },\r\n { prefix: \"12|\", name: CargoEventName.PickAvail, seq: 23, mappingKey:'12' },\r\n { prefix: \"13|\", name: CargoEventName.FullOut, seq: 24, mappingKey:'13' },\r\n { prefix: \"14|\", name: CargoEventName.Delivered, seq: 25, mappingKey:'14' },\r\n { prefix: \"15|\", name: CargoEventName.EmptyIn, seq: 26, mappingKey:'15' },\r\n];\r\n\r\nfunction getStorageKey(id: number) {\r\n return `ot-mbl-bl-status-${id}`;\r\n}\r\n\r\nfunction MblMilestoneImpl({\r\n mblId,\r\n storageKey,\r\n onClose,\r\n isView,\r\n}: {\r\n mblId: number,\r\n storageKey: string,\r\n onClose: VoidFunction,\r\n isView: boolean\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const setSavedEntity = useSetEditedId([JobNames.OIContainer]);\r\n\r\n const [initialized, setInitialized] = useState(false);\r\n \r\n const [mbl, setMbl, removeMbl, mblRef] = useTypedFastStorage(storageKey, null);\r\n const [/*blStatus*/, /*setBlStatus*/, removeBlStatus, /*blStatusRef*/] = useTypedFastStorage(getStorageKey(mblId), null);\r\n const {setCleanState} = useDirtyCheck(\r\n storageKey,\r\n ['updated', 'updatedBy']);\r\n \r\n useEffect(() => {\r\n initialize();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function doClose() {\r\n cleanup();\r\n onClose();\r\n }\r\n\r\n function cleanup() {\r\n removeMbl();\r\n removeBlStatus();\r\n }\r\n\r\n async function initialize() {\r\n const apiResult:ApiResult = await appContext.api.getJobDetail(JobNames.OtherOP, { id: mblId});\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog('Cannot load data');\r\n doClose();\r\n return;\r\n }\r\n const loadedMbl = new GenMain(apiResult.result);\r\n\r\n const blApiResult: ApiResult = await appContext.api.getMblStatusViewModel(JobNames.OtherOP, mblId);\r\n loadedMbl.milestone = new MblStatusViewModel(blApiResult?.result||null);\r\n prepareOtherOpForView(loadedMbl);\r\n\r\n loadedMbl.milestoneContainerSelectedIndex = loadedMbl.genContainerList && loadedMbl.genContainerList.length > 0\r\n ? 0\r\n : -1;\r\n\r\n const loadedModelObj = new GenMain(_.cloneDeep(loadedMbl));\r\n setCleanState(loadedModelObj);\r\n setMbl(loadedModelObj);\r\n if(mblRef.current !== null) {\r\n mblRef.current.trackable = true;\r\n }\r\n\r\n setInitialized(true);\r\n }\r\n\r\n async function save() {\r\n if (!mbl || !mblRef.current) {\r\n throw new Error('Invalid operation');\r\n }\r\n\r\n if(!mblRef.current.isDirty) {\r\n //await showGlobalOkDialog(

Nothing to save!!!

);\r\n doClose();\r\n return;\r\n }\r\n\r\n const si:SQLInfo[] = [];\r\n\r\n let hiSqlInfo = historyUpdate(\"T_GENMAIN\", mblRef.current?.id??0, appContext.user?.id??'', 'Update B/L Info');\r\n if (hiSqlInfo) {\r\n si.push(hiSqlInfo);\r\n }\r\n\r\n const blStatusInfoList = getSQLInfoList(mbl as TrackableEntity);\r\n blStatusInfoList.push(...si);\r\n\r\n const apiResult:ApiResult = await appContext.api.saveMblStatusViewModel(blStatusInfoList);\r\n \r\n if (apiResult && apiResult.success) {\r\n await UpdateLogMblMilestone(blStatusInfoList, mbl); //[t49-webhook] LogMblMilestone. 이 기능은 TrackingService를 사용하지 않더라도 적용한다.\r\n await showGlobalOkDialog(

The data has been saved

);\r\n setSavedEntity(mblRef.current.id.toString(), false);\r\n } else {\r\n await showGlobalOkDialog(
\r\n

Cannot save

\r\n

{apiResult?.message}

\r\n
);\r\n }\r\n\r\n doClose();\r\n }\r\n\r\n async function UpdateLogMblMilestone(blStatusInfoList: SQLInfo[], mbl:GenMain) {\r\n const cntrDataWithSeq: {\r\n loc: string,\r\n cntrNo: string,\r\n seq: number,\r\n }[] = []\r\n\r\n const dicEvent = CollectMblEvents(blStatusInfoList, cntrDataWithSeq);\r\n if (dicEvent.length > 0) {\r\n const cmile: CargoEventLog[] = [];\r\n const lastEvents: CargoEventLog[] = [];\r\n\r\n for (const mapping of eventMappings) {\r\n const dindex = FindIndexOfKeyStartsWith(dicEvent, mapping.prefix);\r\n if (dindex >= 0) {\r\n const cargoEventLog = CreateCargoEventLog(mbl.mblNo, mapping.name, dicEvent[dindex], cntrDataWithSeq.filter(x => x.seq === mapping.seq), appContext.user?.id ?? '');\r\n cmile.push(...cargoEventLog);\r\n }\r\n }\r\n\r\n const uniqueCmileSet = new Set(cmile.map(item => item.cntrNo));\r\n Array.from(uniqueCmileSet).forEach(x => {\r\n const tempData = cmile.filter(c => c.cntrNo === x).sort((a, b) => new Date(a.utcTime ?? '').getTime() - new Date(b.utcTime ?? '').getTime());\r\n lastEvents.push(tempData[tempData.length - 1]);\r\n });\r\n\r\n if (lastEvents.length > 0) {\r\n const apiResult = await appContext.api.trackingLogMblEvents(JobNames.OtherOP, mblId, lastEvents);;\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

{apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function CollectMblEvents(blStatusInfoList: SQLInfo[], cntrDataWithSeq: { loc: string, cntrNo: string, seq: number }[]) {\r\n const changeData: { pimsCntrId: number, seqNum: number, dateTime: string }[] = [];\r\n const dicEvent: { key: string, value: string }[] = [];\r\n\r\n const changeContainerData = blStatusInfoList.filter(x => x.tableName === 'T_GENCONTAINER');\r\n\r\n OiContainerEvents.forEach((enumEvent) => {\r\n changeContainerData.forEach(x => {\r\n const findData = x.fields.find(x => x.propertyName.endsWith(OceanMblStatusMap.get(enumEvent)?.cntrDate ?? ''));\r\n if (findData) {\r\n // const pimsCntrId = mbl?.genContainerList.find(y => y.id === x.key?.value)?.pimsLinkId ?? 0;\r\n changeData.push({ pimsCntrId: 0, seqNum: enumEvent, dateTime: formatDateTime(findData.value) });\r\n\r\n const containerNo = mbl?.genContainerList.find(y => y.id === x.key?.value)?.containerNo ?? ''; //GetLocNameFromEvent\r\n const cntr = mbl?.genContainerList.find(x => x.containerNo === containerNo);\r\n const cntrLoc = OceanMblStatusMap.get(enumEvent)?.cntrLoc ?? '';\r\n\r\n cntrDataWithSeq.push({ loc: Object.getOwnPropertyDescriptor(cntr, cntrLoc)?.value, seq: enumEvent, cntrNo: containerNo })\r\n }\r\n })\r\n });\r\n changeData.forEach(x => {\r\n const seqNum = x.seqNum;\r\n const mappingKey = eventMappings.find(x => x.seq === seqNum)?.mappingKey;\r\n if (mappingKey)\r\n AddEventToNotice(dicEvent, `${mappingKey}|${x.dateTime}`, String(x.pimsCntrId));\r\n });\r\n\r\n return dicEvent;\r\n }\r\n\r\n return (\r\n
\r\n {!initialized &&\r\n
\r\n \r\n \r\n \r\n
\r\n }\r\n\r\n {!!mbl &&\r\n \r\n }\r\n
\r\n );\r\n}\r\n\r\nfunction MblMilestoneInitializedImpl({\r\n mbl,\r\n setMbl,\r\n isView,\r\n save,\r\n close\r\n}: {\r\n mbl: GenMain,\r\n setMbl: (x:Partial) => void,\r\n isView: boolean,\r\n save: () => Promise,\r\n close: VoidFunction\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const milestoneRef = useRef(null);\r\n\r\n const containerInfo:GenContainer[] = mbl.genContainerList ?? [];\r\n\r\n function changeContainerInfo(ci:GenContainer[]) {\r\n setMbl({ genContainerList: ci });\r\n }\r\n\r\n async function applyToAll() {\r\n if (milestoneRef.current) {\r\n milestoneRef.current.executeApplyToAll();\r\n await save();\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n
\r\n \r\n Apply to All Container\r\n \r\n \r\n Update\r\n \r\n \r\n Cancel\r\n \r\n
\r\n \r\n );\r\n}\r\n\r\nconst MblMilestonePopup = ({\r\n mblId,\r\n storageKey,\r\n onClose,\r\n isView\r\n}:{\r\n mblId: number,\r\n storageKey: string,\r\n onClose: VoidFunction,\r\n isView: boolean,\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nMblMilestonePopup.defaultProps = {\r\n};\r\n\r\nMblMilestonePopup.propTypes = {\r\n mblId: PropTypes.number.isRequired,\r\n storageKey: PropTypes.string.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n isView: PropTypes.bool.isRequired\r\n};\r\n\r\nexport default React.memo(MblMilestonePopup);\r\n\r\n\r\n","\r\nimport React, {cloneElement, useContext, useEffect, useState} from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport lockBlue from '../../../img/lock_blue.png';\r\nimport lockRed from '../../../img/lock_red.png';\r\nimport constants from '../../../constants';\r\nimport Select from \"../../../ui/Select\";\r\nimport {Search} from \"../../../filtering\";\r\nimport {NavigationType, openNewPage} from '../../../util/navigationHelpers';\r\nimport {\r\n DateRenderer,DateTimeRenderer,FloatRenderer,NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,TextAlignRightRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport JobListViewContext, { IJobListViewContext, RightClickContext } from '../../common/JobListViewContext';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport {ActionButtonItem, borderColors, splitMenuItemsIntoSections} from '../../../ui/ActionButton';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport {JobNames} from \"../../../framework.core/JobNames\";\r\nimport {OtherOperationListItem} from \"../../../fms.data/models/OtherOperationListItem\";\r\nimport {otherShipmentList} from \"../tableSettings\";\r\nimport IfmsModal from \"../../../ui/IfmsModal\";\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport JobListSuntekCommand from '../../common/JobListSuntekCommand';\r\nimport { BillingsRenderer, BillInvoiceCrdbFilterRenderer, LastEventRenderer, RecognizedFilterRenderer, RecognizedRenderer, RQFilterRenderer, ShipmentTypeRenderer } from '../../common/commonListRenderers';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport { FmsSubMenu } from '../../../constants/fmsSubMenu';\r\nimport { getSelectedSubMenuArgs } from '../../JobListSubMenu';\r\nimport useReportViewer from '../../../hooks/useReportViewer';\r\nimport postal from 'postal';\r\nimport loadInfoAreaInvoiceBillCrDb from '../../common/InfoAreaInvoiceBillCrDb';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport { getFmsGlobal } from '../../../globals';\r\nimport { SuntekSettings, SystemSettings } from '../../../ifmsTypes';\r\nimport { findSecurityTask } from '../../../util';\r\nimport { useJournal } from '../../accounting/general/journal/JournalListView';\r\nimport useSuntekSettings from '../../../hooks/useSuntekSettings';\r\nimport PrimaryInverseButton from '../../../ui/PrimaryInverseButton';\r\nimport _ from 'lodash';\r\nimport fastStorage from '../../../fastStorage';\r\nimport RecogModal from '../../../ui/RecogModal';\r\nimport useSetEditedId from '../../../hooks/useSetEditedId';\r\nimport { RequestType } from '../../../fms.core/TrackRequest';\r\nimport { ApiResult } from '../../../framework.core/data/ApiResult';\r\nimport TrackingRequest from '../../reports/TrackingRequest';\r\nimport EmailOptionPopup from '../../reports/EmailOption';\r\nimport MblMilestonePopup from './MblMilestonePopup';\r\nimport { Decimalformat } from '../../common/commonExportFormat';\r\nimport cntrBlack from '../../../img/container_tracking-black.svg';\r\nimport cntrWhite from '../../../img/container_tracking-white.svg';\r\n\r\nlet vcResult = '';\r\n\r\nfunction ShipmentTypeFilterRenderer({value, onChange}:any) {\r\n useEffect(() => {\r\n if (value !== unFormatShipmentType(value)) {\r\n onChange(unFormatShipmentType(value))\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n return (\r\n onChange(e.target.value)}\r\n items={[\r\n { label: 'D - Direct Shipment', value: 'D' },\r\n { label: 'ID - InDirect Shipment', value: 'I' }\r\n ]} \r\n />\r\n );\r\n}\r\n\r\nfunction formatShipmentType(s:string|null|undefined) {\r\n if (!s) {\r\n return s;\r\n }\r\n\r\n if (s === 'I') {\r\n return 'ID';\r\n }\r\n if (s === 'D') {\r\n return 'D';\r\n }\r\n\r\n return s;\r\n}\r\n\r\nfunction unFormatShipmentType(s:string|null|undefined) {\r\n if (!s) {\r\n return '';\r\n }\r\n\r\n if (s === 'ID') {\r\n return 'I';\r\n }\r\n if (s === 'D') {\r\n return 'D';\r\n }\r\n\r\n return '';\r\n}\r\n\r\n// function CurrencyRenderer(value: number | null | undefined, currency: string, isLast: boolean = false) {\r\n// return (\r\n//
\r\n//
\r\n// \r\n//
\r\n//
\r\n// );\r\n// }\r\n\r\nfunction IndicatorRenderer({ data, row }: any) {\r\n //const jobListContext = useContext(JobListViewContext);\r\n const l = data[row.index];\r\n let dataTooltip = '';\r\n const lStatus = (l as any).status as string;\r\n if (lStatus === 'PC') dataTooltip = 'Period Close';\r\n else if (lStatus === 'OC') dataTooltip = 'OP Close';\r\n\r\n // function onIndicatorClick() {\r\n // if (jobListContext.rowExtrasId) {\r\n // return; // Some row is already selected\r\n // }\r\n\r\n // jobListContext.setRowExtrasId(data[row.index].id);\r\n // }\r\n\r\n let content: React.ReactNode = <>;\r\n //if ((l as any).isClosed) {\r\n if (lStatus === 'PC')\r\n content = \"\";\r\n else if (lStatus === 'OC')\r\n content = \"\";\r\n //}\r\n return (\r\n //
{content}
\r\n
{content}
\r\n );\r\n}\r\n\r\nfunction PaidRenderer({value, data, row}: any) {\r\n const {switchToAcctInfo} = useSelectedOperations();\r\n\r\n const isPaid = value !== 'x';\r\n\r\n if (!isPaid) {\r\n return
{value}
;\r\n }\r\n\r\n return switchToAcctInfo(data[row.index])} style={{width: '100%', lineHeight:'1em'}}>{value}\r\n}\r\n/*\r\nfunction AccountingEntityRenderer(onLinkToAccounting: any, {data, row, value}: any) {\r\n const entity = data[row.index];\r\n\r\n return
\r\n \r\n  \r\n
;\r\n}\r\n*/\r\n\r\nfunction useSelectedOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const history = useHistory();\r\n\r\n const selectedElement = jobListContext.selectedElement as OtherOperationListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const channel = postal.channel('ajax');\r\n\r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/otherShipment/otherShipment/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress.

);\r\n return;\r\n }\r\n\r\n openNewPage(history, '/otherShipment/otherShipment/add', NavigationType.newPage);\r\n }\r\n\r\n async function deleteItem() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/otherShipment/otherShipment/edit/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/otherShipment/otherShipment/view/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close B/L first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/bill/view/OTOP/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/bill/edit/OTOP/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/invoice/view/OTOP/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/invoice/edit/OTOP/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/crdb/view/OTOP/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/crdb/edit/OTOP/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Bill/Invoice/CrDb first.');\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n ,false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.OtherOP, { id:selectedElement.id, pimsLinkId: 0 });\r\n if (apiResult && apiResult.success) {\r\n jobListContext.reloadData();\r\n } else {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n await showGlobalOkDialog(message,false,null,'warning');\r\n }\r\n }\r\n }\r\n\r\n async function viewBillings() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n\r\n const viewUrl = `/otherShipment/viewBillings/${id}`;\r\n openNewPage(history, viewUrl, NavigationType.newPage);\r\n }\r\n\r\n async function moveToDeleteHistoryReport() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const viewUrl = `/common/deleteHistory?jobname=${JobNames.OtherOP}&id=${id}`;\r\n \r\n openNewPage(history, viewUrl, NavigationType.newPage);\r\n }\r\n\r\n async function viewProfit(viewEdit:boolean) {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n \r\n const editUrl = `/otherShipment/otherShipment/edit/${id}`;\r\n const viewUrl = `/otherShipment/otherShipment/view/${id}`;\r\n //let url = `/otherShipment/otherShipment/${viewEdit ? 'edit' : 'view'}/${id}`;\r\n\r\n let editUrlProfitTab = `${editUrl}/2`;\r\n let viewUrlProfitTab = `${viewUrl}/2`;\r\n\r\n if (viewEdit && jobListContext.hasOpenedScreenStartingWithUrlWithoutMe(`/otherShipment/otherShipment/edit`, editUrl)) {\r\n await showGlobalOkDialog(

Edit operation is already in progress

);\r\n return;\r\n }\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewEdit ? editUrlProfitTab : viewUrlProfitTab, [viewUrl, editUrl]);\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/otherShipment/otherShipment/edit/${id}`;\r\n const viewUrl = `/otherShipment/otherShipment/view/${id}`;\r\n\r\n // if (jobListContext.hasOpenedScreenStartingWithUrlWithoutMe('/otherShipment/otherShipment/edit', editUrl)) {\r\n // await showGlobalOkDialog(

Edit operation is already in progress.

);\r\n // return;\r\n // }\r\n \r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/otherShipment/otherShipment/edit/${id}`;\r\n const viewUrl = `/otherShipment/otherShipment/view/${id}`;\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OtherOP);\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n async function copy() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/otherShipment/otherShipment/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress.

);\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n openNewPage(history, `/otherShipment/otherShipment/add?copyId=${id}`, NavigationType.newPage);\r\n }\r\n\r\n function recognize(isSet: boolean) {\r\n jobListContext.setRecogModalData({ isOpen: true, isSet: isSet });\r\n }\r\n\r\n async function switchToAcctInfo(ot:OtherOperationListItem|null) {\r\n if (!ot) {\r\n return;\r\n }\r\n \r\n openNewPage(history, `/accounting/Acct/${JobNames.OtherOP}/${ot.id}`, NavigationType.newPage);\r\n }\r\n\r\n return {create, deleteItem, edit, view, copy, recognize, viewBillings, moveToDeleteHistoryReport, switchToAcctInfo, viewProfit};\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const { create, deleteItem, edit, view, copy, recognize, viewBillings, viewProfit } = useSelectedOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as OtherOperationListItem;\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OtherOP);\r\n const fmsGlobal = getFmsGlobal();\r\n\r\n async function processFileLock() {\r\n const fileLockResult = await appContext.api.opClose(JobNames.OtherOP, selectedElement.id, !selectedElement.isClosed);\r\n if (!!fileLockResult) {\r\n await showGlobalOkDialog(fileLockResult);\r\n return;\r\n }\r\n\r\n if (selectedElement.isClosed && jobListContext.hasOpenedScreenStartingWithUrl(`/otherShipment/otherShipment/edit/${selectedElement.id}`)) {\r\n const editModelKey = `editOtherShipment${selectedElement.id}-/otherShipment/otherShipment/edit`;\r\n const keyMatch = _.keys(fastStorage).find(x => x.startsWith(editModelKey));\r\n if (keyMatch) {\r\n fastStorage[keyMatch].fileClosed = 0;\r\n fastStorage[keyMatch].isClosed = false;\r\n fastStorage[keyMatch].closedBy = '';\r\n fastStorage[keyMatch].closeDate = null;\r\n }\r\n }\r\n\r\n jobListContext.reloadData();\r\n }\r\n\r\n function openContainerStatus() {\r\n if (jobListContext.rowExtrasId) {\r\n return; // Some row is already selected\r\n }\r\n\r\n jobListContext.setRowExtrasId(selectedElement.id);\r\n }\r\n\r\n function openContainerTracking() {\r\n if (selectedElement.trStatus && selectedElement.trStatus !== 'C' && selectedElement.trStatus !== 'failed' && selectedElement.trStatus !== 'Q') {\r\n window.open(`https://quicktrack2.suntekscm.com/?licid=${fmsGlobal.AcmeID}&search=${selectedElement.mblNo}&email=${appContext.user?.email}`);\r\n }\r\n }\r\n\r\n async function TrackRequestFunc() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (_.isEmpty(selectedElement.container)) {\r\n await showGlobalOkDialog(

Empty container number.

);\r\n return;\r\n }\r\n\r\n const plusIndex = selectedElement.container.indexOf('+');\r\n let containerCount: number = 1;\r\n\r\n if (plusIndex !== -1) containerCount = Number(selectedElement.container.substring(plusIndex + 1).trim()) + 1\r\n\r\n\r\n await CheckAndDoTrackRequest(selectedElement.id, selectedElement.trType, selectedElement.trStatus, selectedElement.mblNo, containerCount)\r\n }\r\n\r\n async function CheckAndDoTrackRequest(jobId: number, trType: string, trStatus: string, mblNo: string, cntrCount: number = 1) {\r\n let result: string = '';\r\n if (!await CheckTrStatus(jobId, trType, trStatus, cntrCount)) return result;\r\n \r\n const apiResult = await IsShippingLineSupported(mblNo?.substring(0, 4), RequestType.bl)\r\n if (!apiResult.success)\r\n return result;\r\n\r\n vcResult = apiResult.result;\r\n\r\n const errMsg = await CheckTrackRequestAllowed(cntrCount)\r\n if(!_.isEmpty(errMsg)){\r\n if (!errMsg.endsWith('?')){\r\n await showGlobalOkDialog(

{errMsg}

);\r\n return result;\r\n }\r\n else{\r\n const doClose = await showGlobalYesNoDialog(\r\n
\r\n

{errMsg}

\r\n
\r\n ,false, 0, true);\r\n \r\n if (!doClose) {\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n jobListContext.setRowExtrasId(jobId);\r\n jobListContext.setTrackingRequestEmailList('OpenEmailOptionPopup');\r\n }\r\n\r\n async function CheckTrackRequestAllowed(countToSend: number) {\r\n let result = '';\r\n\r\n const perMonth = appContext.suntekSettings?.company?.containersPerMonth ?? 0;\r\n if (perMonth > 0) {\r\n const apiResult = await appContext.api.checkThisMonthRequests();\r\n if (perMonth - apiResult < countToSend) {\r\n result = `Credit for containers per month is limited.\r\nThis request will cause additional fee.\r\nDo you want to request this tracking?`;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n async function IsShippingLineSupported(vcScac: string, reqType: string) {\r\n let apiResult: ApiResult = { success: false, result: '', message: '' };\r\n\r\n if (_.isEmpty(vcScac)) {\r\n await showGlobalOkDialog(

Vessel carrier was not given. Please retry with valid Master B/L number.

);\r\n return apiResult;\r\n }\r\n\r\n apiResult = await appContext.api.trackingCheckShippingLine(vcScac);\r\n\r\n if(!apiResult || !apiResult.success){\r\n await showGlobalOkDialog(

{apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

);\r\n return apiResult;\r\n }\r\n else {\r\n switch (apiResult.result) {\r\n case 'X':\r\n await showGlobalOkDialog(

Tracking Service does not support Vessel carrier {`[${vcScac}]`}.

);\r\n apiResult.success = false;\r\n break;\r\n case RequestType.bl:\r\n if (reqType !== RequestType.bl) {\r\n await showGlobalOkDialog(

Vessel carrier {`[${vcScac}] support only Master B/L tracking.`}\r\nPlease retry from Master B/L list.

);\r\n apiResult.success = false;\r\n }\r\n break;\r\n }\r\n }\r\n return apiResult;\r\n }\r\n\r\n async function CheckTrStatus(jobId: number, trType: string, trStatus: string, cntrCount: number = 1) {\r\n if (!_.isEmpty(trType)) {\r\n if(trType === 'C'){\r\n const apiResult = await appContext.api.getTrackRequestedContainerCountPerMbl(jobId);\r\n if(apiResult >= cntrCount){\r\n await showGlobalOkDialog(

All containers are already requested at {'['}Container List{']'}.

);\r\n return false;\r\n }\r\n else {\r\n await showGlobalOkDialog(

Part of containers are requested at [Container List].\r\nYou can request tracking service for the remaining containers\r\n

);\r\n }\r\n }\r\n else if (trType === 'M' && !(trStatus === \"failed\" || trStatus === \"C\")) {\r\n await showGlobalOkDialog(

Tracking service was already requested at [Master B/L List].

);\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n\r\n let showFileLock = (!selectedElement?.isClosed ? getFmsGlobal().CanFileLock : getFmsGlobal().CanFileUnlock);\r\n let showCntrTracking = (selectedElement?.trStatus && selectedElement?.trStatus !== 'C' && selectedElement?.trStatus !== 'failed' && selectedElement?.trStatus !== 'Q') ?? false;\r\n const lockCancelRecog = selectedElement?.recognized === 'R' && (selectedElement?.status === 'PC' || selectedElement?.status === 'OC');\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'View', shortcut: 'F9', separator: !listSec?.grantEdit && !listSec?.grantDel },\r\n { label: 'Edit', shortcut: 'F3', separator: !listSec?.grantDel, hidden: !listSec?.grantEdit },\r\n { label: 'Delete', shortcut: '', separator: true, hidden: !listSec?.grantDel },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n { label: 'Copy', shortcut: 'Ctrl+F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'Bilings', shortcut: 'F7', separator: !listSec?.grantEdit },\r\n { label: 'Profit', shortcut: 'Ctrl+F7', separator: true, hidden: !listSec?.grantEdit },\r\n { label: 'Container Status Update', shortcut: '', separator: false },\r\n { label: 'Container Tracking', shortcut: '', separator: false, hidden: !showCntrTracking },\r\n { label: 'Request Tracking Service', shortcut: '', separator: false, hidden: !appContext.suntekSettings?.company?.trackingService },\r\n { label: !selectedElement?.isClosed ? 'OP Close' : 'OP Open', shortcut: '', separator: false, hidden: !showFileLock },\r\n // { label: 'Recog', shortcut: '', separator: false, disabled : selectedElement?.recognized === 'R', hidden: !getFmsGlobal().CanFinalize },\r\n { label: selectedElement?.recognized !== 'R' ? 'Recog' : 'Undo Recog', shortcut: '', separator: false, disabled : lockCancelRecog, hidden: !getFmsGlobal().CanFinalize },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n disabled: i?.disabled ?? false,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n deleteItem();\r\n break;\r\n case 4:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 5:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 6:\r\n copy();\r\n break;\r\n case 7:\r\n viewBillings();\r\n break;\r\n case 8:\r\n viewProfit(listSec?.grantEdit ? true : false);\r\n break;\r\n case 9:\r\n openContainerStatus();\r\n break;\r\n case 10:\r\n openContainerTracking();\r\n break;\r\n case 11:\r\n TrackRequestFunc();\r\n break;\r\n case 12:\r\n processFileLock();\r\n break;\r\n case 13:\r\n recognize(selectedElement?.recognized !== 'R');\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction TrancationImpactButtonCommands({ userId } : {userId: string}) {\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as OtherOperationListItem;\r\n const {switchJournal} = useJournal();\r\n const suntekSettings = useSuntekSettings();\r\n \r\n if (!suntekSettings.general?.allowViewJournalOP && !userId.startsWith('@')) {\r\n return null;\r\n }\r\n\r\n return (\r\n switchJournal(JobNames.OtherOP, selectedElement.id)}>\r\n {constants.List_Journal}\r\n \r\n );\r\n}\r\n\r\nfunction ListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n \r\n const selectedElement = jobListContext.selectedElement as OtherOperationListItem;\r\n\r\n const {deleteItem, edit, view, copy, viewBillings, moveToDeleteHistoryReport} = useSelectedOperations();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const appContext = useContext(ApplicationContext);\r\n const { viewReport } = useReportViewer();\r\n const setSavedEntityJournal = useSetEditedId([JobNames.SlipJournal]);\r\n\r\n function hasOpenedViewOrEditFor(id: number) {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/otherShipment/otherShipment/edit/${id}`) || jobListContext.hasOpenedScreenStartingWithUrl(`/otherShipment/otherShipment/view/${id}`);\r\n }\r\n\r\n function doAfterRecog() {\r\n jobListContext.reloadData();\r\n setSavedEntityJournal(selectedElement.id.toString(), false);\r\n }\r\n\r\n const onRecogModalClose = () => {\r\n jobListContext.setRecogModalData({ isOpen: false, isSet: false });\r\n }\r\n\r\n function hasOpenedNew() {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/otherShipment/otherShipment/add`);\r\n }\r\n\r\n const onPopupClose = () => {\r\n setSelectedPopupMenuItem(null);\r\n }\r\n\r\n async function onSubMenuClick(fmsSubMenu: FmsSubMenu) {\r\n setSelectedPopupMenuItem(null);\r\n\r\n if (!selectedElement) {\r\n return;\r\n }\r\n \r\n const args = await getSelectedSubMenuArgs(fmsSubMenu, JobNames.OtherOP, selectedElement, appContext, showGlobalYesNoDialog, showGlobalOkDialog);\r\n if(args){\r\n viewReport(args, \"\", true);\r\n }\r\n }\r\n\r\n const allowedStatuses = ['', 'E', 'D'];\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OtherOP);\r\n\r\n const hasSelectedRow = !!selectedElement;\r\n // const canBeDeleted = hasSelectedRow && !hasOpenedViewOrEditFor(selectedElement.id) && selectedElement.canBeDeleted\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n const canBeCopied = hasSelectedRow && !hasOpenedNew() && listSec?.grantAdd;\r\n const canBeAdd = !hasOpenedNew() && listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n\r\n return (\r\n
\r\n
\r\n  \r\n View \r\n Edit \r\n Delete \r\n Copy\r\n
\r\n
\r\n {constants.List_Billings} \r\n Delete History\r\n
\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.popupComponent ? (\r\n \r\n {cloneElement(selectedPopupMenuItem.popupComponent!, {onPopupClose})}\r\n \r\n ) : null}\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.subMenu ? onSubMenuClick(selectedPopupMenuItem.subMenu) : null}\r\n {jobListContext.recogModalData?.isOpen ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n}\r\n\r\nfunction ListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction ListViewExtras({\r\n hideLogHistory\r\n}: any,\r\n) {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const history = useHistory();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.OtherOP);\r\n\r\n const {copy, create, edit, view, viewBillings, viewProfit} = useSelectedOperations();\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n\r\n } else if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"CTRL+F2\") {\r\n if(listSec?.grantAdd)\r\n copy();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');\r\n } else if (unprocessedFkey === \"F7\") {\r\n viewBillings();\r\n }else if (unprocessedFkey === \"CTRL+F7\") {\r\n viewProfit(listSec?.grantEdit ? true : false);\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F6', 'F2', 'CTRL+F2', 'F3', 'F9', 'F11', 'F8', 'F7', 'CTRL+F7'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n/*\r\n function onLinkToAccounting(entity: any) {\r\n if (!entity || !entity.category || !entity.number) {\r\n return;\r\n }\r\n\r\n if (entity.category === 'Bill') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/bill/otherShipment', 'billNo', 'Bill No', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/bill/otherShipment`, NavigationType.newPage);\r\n }\r\n if (entity.category === 'Invoice') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/invoice/otherShipment', 'invoiceNo', 'Invoice No', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/invoice/otherShipment`, NavigationType.newPage);\r\n }\r\n if (entity.category === 'CrDb') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/crdb/otherShipment', 'crdbNo', 'CrDb No', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/crdb/otherShipment`, NavigationType.newPage);\r\n }\r\n }\r\n*/\r\n\r\n // async function loadInfoAreaInvoiceBillCrDb(id: string) {\r\n // const apiResult = await appContext.api.getOceanImportMblInfoAreaBics(id);\r\n // if (!apiResult) {\r\n // return null;\r\n // }\r\n\r\n // const tableOptions: ApplicableTableSettings = {\r\n // tableName: 'infoAreaBicTable',\r\n // ...infoAreaBicTable,\r\n // data: apiResult,\r\n // \r\n // rowRenderers: [\r\n // {accessor: 'date', Cell: TextRenderer},\r\n // {accessor: 'category', Cell: TextRenderer},\r\n // // @ts-ignore:next-line\r\n // {accessor: 'number', Cell: AccountingEntityRenderer.bind(this, onLinkToAccounting)},\r\n // {accessor: 'companyName', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'cur', Cell: TextRenderer},\r\n // // @ts-ignore:next-line\r\n // {accessor: 'amount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.amount, cell.row.values.cur)},\r\n // // @ts-ignore:next-line\r\n // {accessor: 'paidAmount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.paidAmount, cell.row.values.cur)},\r\n // // @ts-ignore:next-line\r\n // {accessor: 'balance', Header: () =>
Balance
, Cell: ({cell}) => CurrencyRenderer(cell.row.values.balance, cell.row.values.cur, true)},\r\n // ],\r\n // };\r\n\r\n // return (\r\n //
\r\n // \r\n //
\r\n // );\r\n // }\r\n \r\n const infoHeadline = `Ref #: ${(jobListContext.selectedElement as OtherOperationListItem|null)?.refNo ?? ''}`;\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n hideLogHistory={hideLogHistory}\r\n />\r\n );\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data.map(d => ({\r\n ...d,\r\n shipmentType: formatShipmentType(d.shipmentType ?? ''),\r\n }));\r\n}\r\n\r\n/**\r\n * Concrete implementation for Other Shipment List screen\r\n *\r\n * @class ListView\r\n * @extends {AbstractListView}\r\n */\r\nclass ListView extends AbstractListView {\r\n\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(\r\n JobNames.OtherOP,\r\n 'OtherOperationListItem',\r\n OtherOperationListItem.calculateSearchParameters(search, OtherOperationListItem.MapSearchFields, ['shipmentType', 'invStat', 'billStat', 'crDbStat']),\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return {data: formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n {\r\n accessor: 'recognized',\r\n renderer: RecognizedFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n {\r\n accessor: 'shipmentType',\r\n renderer: ShipmentTypeFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'invStat',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'billStat',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'crDbStat',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'trStatus',\r\n renderer: RQFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings, listCount: number, useDarkMode: boolean): ListRowRenderer[] {\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n return OtherOperationListItem.getExportCollection(useBranch).map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.align === XCol.XAlignType.Right) colRenderer.Cell = TextAlignRightRenderer;\r\n if (x.dataIndex === \"status\") {\r\n colRenderer.Cell = IndicatorRenderer;\r\n }\r\n else if (x.dataIndex === 'pStatus') colRenderer.Cell = PaidRenderer;\r\n else if(x.dataIndex === \"shipmentType\") colRenderer.Cell = ShipmentTypeRenderer;\r\n else if (x.dataIndex === 'recognized') {\r\n colRenderer.Cell = RecognizedRenderer;\r\n }\r\n else if(x.dataIndex === 'invStat' || x.dataIndex === 'billStat' || x.dataIndex === 'crDbStat') colRenderer.Cell = BillingsRenderer;\r\n else if(x.dataIndex === \"refNo\") colRenderer.Cell = TextAlignLeftRenderer;\r\n else if(x.dataIndex === 'trStatus'){\r\n colRenderer.Cell = (props: any) => ;\r\n colRenderer.Header = () =>
Container Tracking
;\r\n }\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n else if (x.type === XCol.XCellType.Double) {\r\n if (x.dataIndex === 'pkgs')\r\n colRenderer.Cell = (props: any) => ;\r\n else\r\n colRenderer.Cell = (props: any) => ;\r\n }\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({ accessor: 'status', changedValue: (value: any) => { return value['status'] === 'PC' ? 'Period Close' : '' } });\r\n colRenderer.push({ accessor: 'pkgs', changedValue: (value: any) => { return value['pkgs'] } });\r\n colRenderer.push({ accessor: 'lbs', changedValue: (value: any) => { return Decimalformat(value['lbs'],2) } });\r\n colRenderer.push({ accessor: 'kgs', changedValue: (value: any) => { return Decimalformat(value['kgs'],2) } });\r\n colRenderer.push({ accessor: 'shipmentType', changedValue: (value: any) => { return formatShipmentType(value['shipmentType']) } });\r\n colRenderer.push({accessor: 'trStatus', changedValue: (value: any)=> { \r\n let text = '';\r\n if(value['trType'] === 'C' || value['trType'] === 'M'){\r\n switch(value['trStatus']){\r\n case 'Q':\r\n text = 'Start to Request';\r\n break;\r\n case 'failed':\r\n text = 'Invalid or Error';\r\n break;\r\n case 'tracking_stopped':\r\n text = 'End of Tracking';\r\n break;\r\n default:\r\n text = 'Under Movement';\r\n break;\r\n }\r\n }\r\n return text;\r\n }});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'u2Date',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n renderRowExtras(rowId: number | null, context: IJobListViewContext, cell: any): React.ReactNode | null {\r\n if (!rowId) return null;\r\n\r\n function onCloseMilestonePopup() {\r\n const storageKey = `ot-mbl-milestone-${rowId}`;\r\n fastStorage[storageKey] = null;\r\n context.setRowExtrasId(null);\r\n }\r\n\r\n function onCloseTracking49Popup() {\r\n const storageKey = `ot-container-trackrequest-${rowId}`;\r\n fastStorage[storageKey] = null;\r\n context.setRowExtrasId(null);\r\n context.setTrackingRequestEmailList(undefined);\r\n vcResult = '';\r\n }\r\n\r\n function onCloseEmailOptionPopup(emailList: string | undefined) {\r\n const storageKey = `emailoption-${rowId}`;\r\n fastStorage[storageKey] = null;\r\n if (_.isUndefined(emailList)) {\r\n context.setRowExtrasId(null);\r\n context.setTrackingRequestEmailList(undefined);\r\n }\r\n else\r\n context.setTrackingRequestEmailList(emailList);\r\n }\r\n\r\n function getTrackRequestTitle(trStatus: string) {\r\n return 'Tracking Request' + (!_.isEmpty(trStatus) && trStatus !== 'Q' ? ` - ${trStatus.toUpperCase().replace('_', ' ')}` : '');\r\n }\r\n\r\n function getEmailOptionTitle() {\r\n return `[Container #${cell.row.original.container}] Tracking Request: Choose email notice recipients`;\r\n }\r\n \r\n if (!_.isUndefined(context.trackingRequestEmailList)) {\r\n if (context.trackingRequestEmailList === 'OpenEmailOptionPopup')\r\n return (\r\n onCloseEmailOptionPopup(undefined)} draggable isOpen title={getEmailOptionTitle()} width=\"790px\">\r\n \r\n \r\n );\r\n else {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n else\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n getTableSettings(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): TableSettings {\r\n const tsettings = otherShipmentList;\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n const cols = OtherOperationListItem.getExportCollection(useBranch);\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderExtras(hideLogHistory: boolean) {\r\n return \r\n }\r\n\r\n getViewUrlFor(row: OtherOperationListItem) {\r\n return row && row.id ? `/otherShipment/otherShipment/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'Other Shipment List';\r\n };\r\n\r\n renderAdditionalCommands() {\r\n return ;\r\n }\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n transactionImpactBtn(userId: string): React.ReactNode {\r\n return \r\n }\r\n \r\n useLogHistory(): boolean {\r\n return true;\r\n }\r\n}\r\n\r\nexport default ListView;\r\n","import React, {cloneElement, useContext, useEffect, useState} from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\nimport {ApplicableTableSettings, infoAreaBicTable, TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport constants from '../../../constants';\r\nimport {Search} from \"../../../filtering\";\r\nimport {NavigationType, openNewPage} from '../../../util/navigationHelpers';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport {\r\n DateRenderer,DateTimeRenderer,FloatRenderer,\r\n NullableCheckboxIconRenderer,TextAlignLeftRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport {ActionButtonItem, borderColors, splitMenuItemsIntoSections} from '../../../ui/ActionButton';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport CurrencyLabel from '../../../uiControls/CurrencyLabel';\r\nimport SmartTable from '../../../uiControls/SmartTable';\r\nimport {JobNames} from \"../../../framework.core/JobNames\";\r\nimport {OeMblListItem} from \"../../../fms.data/models/OeMblListItem\";\r\nimport {receiptList} from \"../tableSettings\";\r\nimport {WhReciptsListItem} from \"../../../fms.data/models/WhReciptsListItem\";\r\nimport IfmsModal from \"../../../ui/IfmsModal\";\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport { FmsSubMenu } from '../../../constants/fmsSubMenu';\r\nimport { getSelectedSubMenuArgs } from '../../JobListSubMenu';\r\nimport useReportViewer from '../../../hooks/useReportViewer';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport { SuntekSettings, SystemSettings } from '../../../ifmsTypes';\r\nimport { findSecurityTask } from '../../../util';\r\n\r\nfunction CurrencyRenderer(value: number | null | undefined, currency: string, isLast: boolean = false) {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction AccountingEntityRenderer(onLinkToAccounting: any, {data, row, value}: any) {\r\n const entity = data[row.index];\r\n\r\n return
\r\n \r\n  \r\n
;\r\n}\r\n\r\nfunction useSelectedOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const history = useHistory();\r\n\r\n const selectedElement = jobListContext.selectedElement as OeMblListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n\r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/warehousing/receipt/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n\r\n openNewPage(history, '/warehousing/receipt/add', NavigationType.newPage);\r\n }\r\n\r\n async function deleteItem() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/receipt/edit/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/receipt/view/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Receipt first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n , false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.WHRcpt, { id:selectedElement.id, pimsLinkId: 0 });\r\n if (apiResult && apiResult.success) {\r\n jobListContext.reloadData();\r\n } else {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n await showGlobalOkDialog(message);\r\n }\r\n }\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/warehousing/receipt/edit/${id}`;\r\n const viewUrl = `/warehousing/receipt/view/${id}`;\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrlWithoutMe('/warehousing/receipt/edit', editUrl)) {\r\n await showGlobalOkDialog(

Edit operation is already in progress

);\r\n return;\r\n }\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/warehousing/receipt/edit/${id}`;\r\n const viewUrl = `/warehousing/receipt/view/${id}`;\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHRcpt);\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n async function copy() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/warehousing/receipt/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n openNewPage(history, `/warehousing/receipt/add?copyId=${id}`, NavigationType.newPage);\r\n }\r\n\r\n return {create, deleteItem: deleteItem, edit, view, copy};\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const { create, edit, view, copy } = useSelectedOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n // const selectedElement = jobListContext.selectedElement as OtherOperationListItem;\r\n // const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHRcpt);\r\n \r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'View', shortcut: 'F9', separator: !listSec?.grantEdit },\r\n { label: 'Edit', shortcut: 'F3', separator: true, hidden: !listSec?.grantEdit },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n { label: 'Refresh', shortcut: 'F11', separator: true },\r\n { label: 'Copy', shortcut: 'Ctrl+F2', separator: true, hidden: !listSec?.grantAdd },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 4:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 5:\r\n jobListContext.reloadData();\r\n break;\r\n case 6:\r\n copy();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction ListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n\r\n const selectedElement = jobListContext.selectedElement as OeMblListItem;\r\n\r\n const {deleteItem, edit, view, copy} = useSelectedOperations();\r\n\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const { viewReport } = useReportViewer();\r\n const appContext = useContext(ApplicationContext);\r\n \r\n function hasOpenedViewOrEditFor(id: number) {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/receipt/edit/${id}`) || jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/receipt/view/${id}`);\r\n }\r\n\r\n function hasOpenedNew() {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/receipt/add`);\r\n }\r\n\r\n const onPopupClose = () => {\r\n setSelectedPopupMenuItem(null);\r\n }\r\n\r\n async function onSubMenuClick(fmsSubMenu: FmsSubMenu) {\r\n setSelectedPopupMenuItem(null);\r\n\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const args = await getSelectedSubMenuArgs(fmsSubMenu, JobNames.WHRcpt, selectedElement, appContext, showGlobalYesNoDialog, null);\r\n if(args){\r\n viewReport(args, \"\", true);\r\n }\r\n }\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHRcpt);\r\n\r\n const hasSelectedRow = !!selectedElement;\r\n // const canBeDeleted = hasSelectedRow && !hasOpenedViewOrEditFor(selectedElement.id) && selectedElement.canBeDeleted\r\n // const canBeDeleted = hasSelectedRow && !hasOpenedViewOrEditFor(selectedElement.id) &&\r\n // selectedElement.invStat === 'E' && selectedElement.billStat === 'E' && selectedElement.crDbStat === 'E' &&\r\n // (selectedElement.hblCount === '0' || selectedElement.hblCount === 'X')\r\n // && listSec?.grantDel;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n const canBeCopied = hasSelectedRow && !hasOpenedNew() && listSec?.grantAdd;\r\n const canBeAdd = listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n\r\n return (\r\n
\r\n
\r\n  \r\n View \r\n Edit \r\n Delete \r\n Copy\r\n
\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.popupComponent ? (\r\n \r\n {cloneElement(selectedPopupMenuItem.popupComponent!, {onPopupClose})}\r\n \r\n ) : null}\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.subMenu ? onSubMenuClick(selectedPopupMenuItem.subMenu) : null}\r\n
\r\n );\r\n}\r\n\r\nfunction ListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction ListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const history = useHistory();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHRcpt);\r\n \r\n const {create, edit, view, copy} = useSelectedOperations();\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n\r\n } else if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"CTRL+F2\") {\r\n if(listSec?.grantAdd)\r\n copy();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F6', 'F2', 'F3', 'F9', 'F11', 'F8','CTRL+F2'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function onLinkToAccounting(entity: any) {\r\n if (!entity || !entity.category || !entity.number) {\r\n return;\r\n }\r\n\r\n if (entity.category === 'Bill') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/bill/warehousing', 'billNo', 'Bill #', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/bill/warehousing`, NavigationType.newPage);\r\n }\r\n if (entity.category === 'Invoice') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/invoice/warehousing', 'invoiceNo', 'Invoice #', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/invoice/warehousing`, NavigationType.newPage);\r\n }\r\n if (entity.category === 'CrDb') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/crdb/warehousing', 'crdbNo', 'CrDb #', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/crdb/warehousing`, NavigationType.newPage);\r\n }\r\n }\r\n\r\n async function loadInfoAreaInvoiceBillCrDb(id: string) {\r\n const apiResult = await appContext.api.getOceanImportMblInfoAreaBics(id);\r\n if (!apiResult) {\r\n return null;\r\n }\r\n\r\n const tableOptions: ApplicableTableSettings = {\r\n tableName: 'infoAreaBicTable',\r\n ...infoAreaBicTable,\r\n data: apiResult,\r\n \r\n rowRenderers: [\r\n {accessor: 'date', Cell: TextRenderer},\r\n {accessor: 'category', Cell: TextRenderer},\r\n // @ts-ignore:next-line\r\n {accessor: 'number', Cell: AccountingEntityRenderer.bind(this, onLinkToAccounting)},\r\n {accessor: 'companyName', Cell: TextAlignLeftRenderer},\r\n {accessor: 'cur', Cell: TextRenderer},\r\n // @ts-ignore:next-line\r\n {accessor: 'amount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.amount, cell.row.values.cur)},\r\n // @ts-ignore:next-line\r\n {accessor: 'paidAmount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.paidAmount, cell.row.values.cur)},\r\n // @ts-ignore:next-line\r\n {accessor: 'balance', Header: () =>
Balance
, Cell: ({cell}) => CurrencyRenderer(cell.row.values.balance, cell.row.values.cur, true)},\r\n ],\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for Other Shipment List screen\r\n *\r\n * @class ListView\r\n * @extends {AbstractListView}\r\n */\r\nclass ListView extends AbstractListView {\r\n\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(\r\n JobNames.WHRcpt,\r\n 'WhReciptsListItem',\r\n WhReciptsListItem.calculateSearchParameters(search, WhReciptsListItem.MapSearchFields),\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return {data: WhReciptsListItem.formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): ListRowRenderer[] {\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n return WhReciptsListItem.getExportCollection(useBranch).map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.dataIndex === \"status\") {\r\n colRenderer.Cell = () => \r\n colRenderer.Header = () => ;\r\n }\r\n if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n else if(x.type === XCol.XCellType.Double) colRenderer.Cell = FloatRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'u2Date',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): TableSettings {\r\n const tsettings = receiptList;\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n const cols = WhReciptsListItem.getExportCollection(useBranch);\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor(row: OeMblListItem) {\r\n return row && row.id ? `/warehousing/receipt/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'Freight Receipt List';\r\n };\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n}\r\n\r\nexport default ListView;","import React, {cloneElement, useContext, useEffect, useState} from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\nimport {ApplicableTableSettings, infoAreaBicTable, TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport constants from '../../../constants';\r\nimport {Search} from \"../../../filtering\";\r\nimport {NavigationType, openNewPage} from '../../../util/navigationHelpers';\r\nimport {\r\n DateRenderer,DateTimeRenderer,NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport {ActionButtonItem, borderColors, splitMenuItemsIntoSections} from '../../../ui/ActionButton';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport CurrencyLabel from '../../../uiControls/CurrencyLabel';\r\nimport SmartTable from '../../../uiControls/SmartTable';\r\nimport {JobNames} from \"../../../framework.core/JobNames\";\r\nimport {receivingList} from \"../tableSettings\";\r\nimport {WhRcvListItem} from \"../../../fms.data/models/WhRcvListItem\";\r\nimport IfmsModal from \"../../../ui/IfmsModal\";\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport { FmsSubMenu } from '../../../constants/fmsSubMenu';\r\nimport { getSelectedSubMenuArgs } from '../../JobListSubMenu';\r\nimport useReportViewer from '../../../hooks/useReportViewer';\r\nimport { BillInvoiceCrdbFilterRenderer, VoidFilterRenderer } from '../../common/commonListRenderers';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport lockBlue from '../../../img/lock_blue.png';\r\nimport lockRed from '../../../img/lock_red.png';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport { getFmsGlobal } from '../../../globals';\r\nimport { findSecurityTask } from '../../../util';\r\nimport { useJournal } from '../../accounting/general/journal/JournalListView';\r\nimport useSuntekSettings from '../../../hooks/useSuntekSettings';\r\nimport PrimaryInverseButton from '../../../ui/PrimaryInverseButton';\r\nimport _ from 'lodash';\r\nimport fastStorage from '../../../fastStorage';\r\nimport { paidValue } from '../../common/commonExportFormat';\r\n\r\nfunction IndicatorRenderer({ data, row }: any) {\r\n const l = data[row.index];\r\n let dataTooltip = '';\r\n const lStatus = (l as any).status as string;\r\n if (lStatus === 'PC') dataTooltip = 'Period Close';\r\n else if (lStatus === 'OC') dataTooltip = 'OP Close';\r\n\r\n let content: React.ReactNode = <>;\r\n //if ((l as any).isClosed) {\r\n if (lStatus === 'PC')\r\n content = \"\";\r\n else if (lStatus === 'OC')\r\n content = \"\";\r\n //}\r\n\r\n return (\r\n //
{content}
\r\n
{content}
\r\n );\r\n}\r\n\r\nfunction VoidRenderer({cell}:any) {\r\n if (cell && cell.value === 1) {\r\n return (\r\n
\r\n V\r\n
\r\n );\r\n }\r\n return
;\r\n}\r\n\r\nfunction CurrencyRenderer(value: number | null | undefined, currency: string, isLast: boolean = false) {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction AccountingEntityRenderer(onLinkToAccounting: any, {data, row, value}: any) {\r\n const entity = data[row.index];\r\n\r\n return
\r\n \r\n  \r\n
;\r\n}\r\n\r\nfunction PaidRenderer({value, data, row}: any) {\r\n const {switchToAcctInfo} = useSelectedOperations();\r\n\r\n const isPaid = value !== 'x';\r\n\r\n if (!isPaid) {\r\n return
{value}
;\r\n }\r\n\r\n return switchToAcctInfo(data[row.index])} style={{width: '100%', lineHeight:'1em'}}>{value}\r\n}\r\n\r\nfunction useSelectedOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const history = useHistory();\r\n const appContext = useContext(ApplicationContext);\r\n const selectedElement = jobListContext.selectedElement as WhRcvListItem;\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n\r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/warehousing/receiving/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n openNewPage(history, '/warehousing/receiving/add', NavigationType.newPage);\r\n }\r\n\r\n async function deleteReceiving() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/receiving/edit/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/receiving/view/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Receiving first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n if (selectedElement.rcvStatus !== 'Pre Receiving') {\r\n await showGlobalOkDialog('Can delete the Pre Receiving', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/bill/view/WHRCV/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/bill/edit/WHRCV/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/invoice/view/WHRCV/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/invoice/edit/WHRCV/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/crdb/view/WHRCV/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/crdb/edit/WHRCV/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Bill/Invoice/CrDb first');\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n , false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.WHRcv, { id:selectedElement.id, pimsLinkId: 0 });\r\n if (apiResult && apiResult.success) {\r\n jobListContext.reloadData();\r\n } else {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n await showGlobalOkDialog(message, false, null,'warning');\r\n }\r\n }\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n const id = selectedElement.id;\r\n const editUrl = `/warehousing/receiving/edit/${id}`;\r\n const viewUrl = `/warehousing/receiving/view/${id}`;\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrlWithoutMe('/warehousing/receiving/edit', editUrl)) {\r\n await showGlobalOkDialog(

Edit operation is already in progress

);\r\n return;\r\n }\r\n\r\n\r\n if(selectedElement.isVoid){\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, [editUrl, viewUrl]);\r\n }\r\n else\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/warehousing/receiving/edit/${id}`;\r\n const viewUrl = `/warehousing/receiving/view/${id}`;\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHRcv);\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n async function switchToAcctInfo(rcv:WhRcvListItem|null) {\r\n if (!rcv) {\r\n return;\r\n }\r\n \r\n openNewPage(history, `/accounting/Acct/${JobNames.WHRcv}/${rcv.id}`, NavigationType.newPage);\r\n }\r\n return {create,deleteReceiving, edit, view, switchToAcctInfo};\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const { create,deleteReceiving, edit, view } = useSelectedOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const selectedElement = jobListContext.selectedElement as WhRcvListItem;\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHRcv);\r\n\r\n async function processFileLock() {\r\n if(selectedElement.rcvStatus !== 'Received'){\r\n await showGlobalOkDialog('Cannot op close before receipt confirm');\r\n return;\r\n }\r\n if(selectedElement.receiveDate === null){\r\n await showGlobalOkDialog('Invalid InDate');\r\n return;\r\n }\r\n const fileLockResult = await appContext.api.opClose(JobNames.WHRcv, selectedElement.id, !selectedElement.isClosed);\r\n if (!!fileLockResult) {\r\n await showGlobalOkDialog(fileLockResult);\r\n return;\r\n }\r\n \r\n if (selectedElement.isClosed && jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/receiving/edit/${selectedElement.id}`)) {\r\n const editModelKey = `editReceiving${selectedElement.id}-/warehousing/receiving/edit`;\r\n const keyMatch = _.keys(fastStorage).find(x => x.startsWith(editModelKey));\r\n if (keyMatch) {\r\n fastStorage[keyMatch].fileClosed = 0;\r\n fastStorage[keyMatch].isClosed = false;\r\n fastStorage[keyMatch].closedBy = '';\r\n fastStorage[keyMatch].closeDate = null;\r\n }\r\n }\r\n\r\n jobListContext.reloadData();\r\n }\r\n let showFileLock = (!selectedElement?.isClosed ? getFmsGlobal().CanFileLock : getFmsGlobal().CanFileUnlock);\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'View', shortcut: 'F9', separator: !listSec?.grantEdit },\r\n { label: 'Edit', shortcut: 'F3', separator: !listSec?.grantDel, hidden: !listSec?.grantEdit },\r\n { label: 'Delete', shortcut: '', separator: true, hidden: !listSec?.grantDel, },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n { label: selectedElement?.isClosed ? 'OP Open' : 'OP Close', shortcut: '', separator: false, hidden: !showFileLock },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n deleteReceiving();\r\n break;\r\n case 4:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 5:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 6:\r\n processFileLock();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction TrancationImpactButtonCommands({ userId } : {userId: string}) {\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as WhRcvListItem;\r\n const {switchJournal} = useJournal();\r\n const suntekSettings = useSuntekSettings();\r\n \r\n if (!suntekSettings.general?.allowViewJournalOP && !userId.startsWith('@')) {\r\n return null;\r\n }\r\n\r\n return (\r\n switchJournal(JobNames.WHRcv, selectedElement.id)}>\r\n {constants.List_Journal}\r\n \r\n );\r\n}\r\n\r\nfunction ListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n\r\n const selectedElement = jobListContext.selectedElement as WhRcvListItem;\r\n\r\n const { deleteReceiving, edit, view } = useSelectedOperations();\r\n\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const { viewReport } = useReportViewer();\r\n const appContext = useContext(ApplicationContext);\r\n\r\n function hasOpenedViewOrEditFor(id:number) {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/receiving/edit/${id}`) || jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/receiving/view/${id}`);\r\n }\r\n\r\n const onPopupClose = () => {\r\n setSelectedPopupMenuItem(null);\r\n }\r\n\r\n async function onSubMenuClick(fmsSubMenu: FmsSubMenu) {\r\n setSelectedPopupMenuItem(null);\r\n\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const args = await getSelectedSubMenuArgs(fmsSubMenu, JobNames.WHRcv, selectedElement, appContext, showGlobalYesNoDialog, null);\r\n if(args){\r\n viewReport(args, \"\", true);\r\n }\r\n }\r\n\r\n const hasSelectedRow = !!selectedElement;\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHRcv);\r\n const canBeAdd = listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n\r\n return (\r\n
\r\n
\r\n  \r\n View \r\n Edit \r\n Delete\r\n
\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.popupComponent ? (\r\n \r\n {cloneElement(selectedPopupMenuItem.popupComponent!, {onPopupClose})}\r\n \r\n ) : null}\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.subMenu ? onSubMenuClick(selectedPopupMenuItem.subMenu) : null}\r\n
\r\n );\r\n}\r\n\r\nfunction ListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction ListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const history = useHistory();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHRcv);\r\n\r\n const {create, edit, view} = useSelectedOperations();\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n\r\n } else if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F7\") {\r\n jobListContext.setInfoAreaContent('custom');\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F6', 'F2', 'F3', 'F9', 'F7', 'F8'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function onLinkToAccounting(entity: any) {\r\n if (!entity || !entity.category || !entity.number) {\r\n return;\r\n }\r\n\r\n if (entity.category === 'Bill') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/bill/otherShipment', 'billNo', 'Bill #', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/bill/otherShipment`, NavigationType.newPage);\r\n }\r\n if (entity.category === 'Invoice') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/invoice/otherShipment', 'invoiceNo', 'Invoice #', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/invoice/otherShipment`, NavigationType.newPage);\r\n }\r\n if (entity.category === 'CrDb') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/crdb/otherShipment', 'crdbNo', 'CrDb #', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/crdb/otherShipment`, NavigationType.newPage);\r\n }\r\n }\r\n\r\n async function loadInfoAreaInvoiceBillCrDb(id: string) {\r\n const apiResult = await appContext.api.getOceanImportMblInfoAreaBics(id);\r\n if (!apiResult) {\r\n return null;\r\n }\r\n\r\n const tableOptions: ApplicableTableSettings = {\r\n tableName: 'infoAreaBicTable',\r\n ...infoAreaBicTable,\r\n data: apiResult,\r\n \r\n rowRenderers: [\r\n {accessor: 'date', Cell: TextRenderer},\r\n {accessor: 'category', Cell: TextRenderer},\r\n // @ts-ignore:next-line\r\n {accessor: 'number', Cell: AccountingEntityRenderer.bind(this, onLinkToAccounting)},\r\n {accessor: 'companyName', Cell: TextAlignLeftRenderer},\r\n {accessor: 'cur', Cell: TextRenderer},\r\n // @ts-ignore:next-line\r\n {accessor: 'amount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.amount, cell.row.values.cur)},\r\n // @ts-ignore:next-line\r\n {accessor: 'paidAmount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.paidAmount, cell.row.values.cur)},\r\n // @ts-ignore:next-line\r\n {accessor: 'balance', Header: () =>
Balance
, Cell: ({cell}) => CurrencyRenderer(cell.row.values.balance, cell.row.values.cur, true)},\r\n ],\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for Other Shipment List screen\r\n *\r\n * @class ListView\r\n * @extends {AbstractListView}\r\n */\r\nclass ListView extends AbstractListView {\r\n\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(\r\n JobNames.WHRcv,\r\n 'WhRcvListItem',\r\n WhRcvListItem.calculateSearchParameters(search, WhRcvListItem.MapSearchFields, ['isVoid']),\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return {data: WhRcvListItem.formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n {\r\n accessor: 'billStat',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'crDbStat',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'invStat',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'isVoid',\r\n renderer: VoidFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v === 'V' ? 1 : 0,\r\n },\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n return WhRcvListItem.getExportCollection().map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if (x.dataIndex === \"status\") {\r\n colRenderer.Cell = IndicatorRenderer;\r\n }\r\n else if (x.dataIndex === 'p') colRenderer.Cell = PaidRenderer;\r\n // else if (x.dataIndex === 'isVoid') colRenderer.Cell = VoidRenderer;\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n colRenderer.push({accessor: 'p', changedValue: (value: any)=> { return value['p']}});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'u2Date',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = receivingList;\r\n const cols = WhRcvListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor(row: WhRcvListItem) {\r\n return row && row.id ? `/warehousing/receiving/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'Receiving List';\r\n };\r\n \r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n transactionImpactBtn(userId: string): React.ReactNode {\r\n return \r\n }\r\n}\r\n\r\nexport default ListView;\r\n","import React, {cloneElement, useContext, useEffect, useState} from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\nimport {ApplicableTableSettings, infoAreaBicTable, TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport constants from '../../../constants';\r\nimport {Search} from \"../../../filtering\";\r\nimport {NavigationType, openNewPage} from '../../../util/navigationHelpers';\r\nimport {\r\n DateRenderer,DateTimeRenderer,FloatRenderer,NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport {ActionButtonItem, borderColors, splitMenuItemsIntoSections} from '../../../ui/ActionButton';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport SmartTable from '../../../uiControls/SmartTable';\r\nimport {JobNames} from \"../../../framework.core/JobNames\";\r\nimport {shippingList} from \"../tableSettings\";\r\nimport {WhShipListItem} from \"../../../fms.data/models/WhShipListItem\";\r\nimport IfmsModal from \"../../../ui/IfmsModal\";\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport { FmsSubMenu } from '../../../constants/fmsSubMenu';\r\nimport { getSelectedSubMenuArgs } from '../../JobListSubMenu';\r\nimport useReportViewer from '../../../hooks/useReportViewer';\r\nimport lockBlue from '../../../img/lock_blue.png';\r\nimport lockRed from '../../../img/lock_red.png';\r\nimport { BillInvoiceCrdbFilterRenderer, VoidFilterRenderer } from '../../common/commonListRenderers';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport { getFmsGlobal } from '../../../globals';\r\nimport { findSecurityTask } from '../../../util';\r\nimport { useJournal } from '../../accounting/general/journal/JournalListView';\r\nimport useSuntekSettings from '../../../hooks/useSuntekSettings';\r\nimport PrimaryInverseButton from '../../../ui/PrimaryInverseButton';\r\nimport fastStorage from '../../../fastStorage';\r\nimport _ from 'lodash';\r\nimport { paidValue } from '../../common/commonExportFormat';\r\n\r\nfunction IndicatorRenderer({ data, row }: any) {\r\n const l = data[row.index];\r\n let dataTooltip = '';\r\n const lStatus = (l as any).status as string;\r\n if (lStatus === 'PC') dataTooltip = 'Period Close';\r\n else if (lStatus === 'OC') dataTooltip = 'OP Close';\r\n\r\n let content: React.ReactNode = <>;\r\n //if ((l as any).isClosed) {\r\n if (lStatus === 'PC')\r\n content = \"\";\r\n else if (lStatus === 'OC')\r\n content = \"\";\r\n //}\r\n\r\n return (\r\n //
{content}
\r\n
{content}
\r\n );\r\n}\r\n\r\nfunction VoidRenderer({cell}:any) {\r\n if (cell && cell.value === 1) {\r\n return (\r\n
\r\n V\r\n
\r\n );\r\n }\r\n \r\n return
;\r\n}\r\n\r\nfunction AccountingEntityRenderer(onLinkToAccounting: any, {data, row, value}: any) {\r\n const entity = data[row.index];\r\n\r\n return
\r\n \r\n  \r\n
;\r\n}\r\n\r\nfunction PaidRenderer({value, data, row}: any) {\r\n const {switchToAcctInfo} = useSelectedOperations();\r\n\r\n const isPaid = value !== 'x';\r\n\r\n if (!isPaid) {\r\n return
{value}
;\r\n }\r\n\r\n return switchToAcctInfo(data[row.index])} style={{width: '100%', lineHeight:'1em'}}>{value}\r\n}\r\n\r\nfunction useSelectedOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const history = useHistory();\r\n\r\n const selectedElement = jobListContext.selectedElement as WhShipListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n\r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/warehousing/shipping/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n openNewPage(history, '/warehousing/shipping/add', NavigationType.newPage);\r\n }\r\n\r\n async function deleteShipping() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/shipping/edit/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/shipping/view/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Shipping first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n if (selectedElement.shipStatus !== 'Pre Shipping') {\r\n await showGlobalOkDialog('Can delete the Pre Shipping', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/bill/view/WHSHP/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/bill/edit/WHSHP/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/invoice/view/WHSHP/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/invoice/edit/WHSHP/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/crdb/view/WHSHP/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl(`/accounting/crdb/edit/WHSHP/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Bill/Invoice/CrDb first');\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n , false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.WHShip, { id:selectedElement.id, pimsLinkId: 0 });\r\n if (apiResult && apiResult.success) {\r\n jobListContext.reloadData();\r\n } else {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n await showGlobalOkDialog(message, false, null,'warning');\r\n }\r\n }\r\n }\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/warehousing/shipping/edit/${id}`;\r\n const viewUrl = `/warehousing/shipping/view/${id}`;\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrlWithoutMe('/warehousing/shipping/edit', editUrl)) {\r\n await showGlobalOkDialog(

Edit operation is already in progress

);\r\n return;\r\n }\r\n\r\n if(selectedElement.isVoid){\r\n //const viewUrl = `/warehousing/shipping/view/${id}`;\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, [editUrl, viewUrl]);\r\n //}else if(selectedElement.isClosed){\r\n // await showGlobalOkDialog(

File Locked. You can only edit Remark information fields

);\r\n // openNewPage(history, `/warehousing/shipping/edit/${id}`, NavigationType.newPage);\r\n }else{\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/warehousing/shipping/edit/${id}`;\r\n const viewUrl = `/warehousing/shipping/view/${id}`;\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHShip);\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n async function switchToAcctInfo(shp:WhShipListItem|null) {\r\n if (!shp) {\r\n return;\r\n }\r\n \r\n openNewPage(history, `/accounting/Acct/${JobNames.WHShip}/${shp.id}`, NavigationType.newPage);\r\n }\r\n\r\n return {deleteShipping, create, edit, view, switchToAcctInfo};\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const { create, deleteShipping, edit, view } = useSelectedOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const selectedElement = jobListContext.selectedElement as WhShipListItem;\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHShip);\r\n\r\n async function processFileLock() {\r\n if(selectedElement.shipStatus !== 'Shipped'){\r\n await showGlobalOkDialog('Cannot op close before receipt confirm');\r\n return;\r\n }\r\n if(selectedElement.shipDate === null){\r\n await showGlobalOkDialog('Invalid OutDate');\r\n return;\r\n }\r\n const fileLockResult = await appContext.api.opClose(JobNames.WHShip, selectedElement.id, !selectedElement.isClosed);\r\n if (!!fileLockResult) {\r\n await showGlobalOkDialog(fileLockResult);\r\n return;\r\n }\r\n\r\n if (selectedElement.isClosed && jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/shipping/edit/${selectedElement.id}`)) {\r\n const editModelKey = `editShipping${selectedElement.id}-/warehousing/shipping/edit`;\r\n const keyMatch = _.keys(fastStorage).find(x => x.startsWith(editModelKey));\r\n if (keyMatch) {\r\n fastStorage[keyMatch].fileClosed = 0;\r\n fastStorage[keyMatch].isClosed = false;\r\n fastStorage[keyMatch].closedBy = '';\r\n fastStorage[keyMatch].closeDate = null;\r\n }\r\n }\r\n \r\n jobListContext.reloadData();\r\n }\r\n let showFileLock = (!selectedElement?.isClosed ? getFmsGlobal().CanFileLock : getFmsGlobal().CanFileUnlock);\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'View', shortcut: 'F9', separator: !listSec?.grantEdit },\r\n { label: 'Edit', shortcut: 'F3', separator: !listSec?.grantDel, hidden: !listSec?.grantEdit },\r\n { label: 'Delete', shortcut: '', separator: true, hidden: !listSec?.grantDel },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n // { label: !selectedElement?.isClosed ? 'File Lock' : 'Cancel File Lock', shortcut: '', separator: false },\r\n { label: selectedElement?.isClosed ? 'OP Open' : 'OP Close', shortcut: '', separator: false, hidden: !showFileLock },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n \r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n deleteShipping();\r\n break;\r\n case 4:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 5:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 6:\r\n processFileLock();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction TrancationImpactButtonCommands({ userId } : {userId: string}) {\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as WhShipListItem;\r\n const {switchJournal} = useJournal();\r\n const suntekSettings = useSuntekSettings();\r\n \r\n if (!suntekSettings.general?.allowViewJournalOP && !userId.startsWith('@')) {\r\n return null;\r\n }\r\n\r\n return (\r\n switchJournal(JobNames.WHShip, selectedElement.id)}>\r\n {constants.List_Journal}\r\n \r\n );\r\n}\r\n\r\nfunction ListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n\r\n const selectedElement = jobListContext.selectedElement as WhShipListItem;\r\n\r\n const { deleteShipping, edit, view } = useSelectedOperations();\r\n\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const { viewReport } = useReportViewer();\r\n const appContext = useContext(ApplicationContext);\r\n\r\n function hasOpenedViewOrEditFor(id:number) {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/shipping/edit/${id}`) || jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/shipping/view/${id}`);\r\n }\r\n const onPopupClose = () => {\r\n setSelectedPopupMenuItem(null);\r\n }\r\n\r\n async function onSubMenuClick(fmsSubMenu: FmsSubMenu) {\r\n setSelectedPopupMenuItem(null);\r\n\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const args = await getSelectedSubMenuArgs(fmsSubMenu, JobNames.WHShip, selectedElement, appContext, showGlobalYesNoDialog, null);\r\n if(args){\r\n viewReport(args, \"\", true);\r\n }\r\n }\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHShip);\r\n\r\n const hasSelectedRow = !!selectedElement;\r\n const canBeAdd = listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n\r\n\r\n return (\r\n
\r\n
\r\n  \r\n View \r\n Edit \r\n Delete\r\n
\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.popupComponent ? (\r\n \r\n {cloneElement(selectedPopupMenuItem.popupComponent!, {onPopupClose})}\r\n \r\n ) : null}\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.subMenu ? onSubMenuClick(selectedPopupMenuItem.subMenu) : null}\r\n
\r\n );\r\n}\r\n\r\nfunction ListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction ListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const history = useHistory();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHShip);\r\n\r\n const {create, edit, view} = useSelectedOperations();\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n\r\n } else if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F6', 'F2', 'F3', 'F9','F8'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function onLinkToAccounting(entity: any) {\r\n if (!entity || !entity.category || !entity.number) {\r\n return;\r\n }\r\n\r\n if (entity.category === 'Bill') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/bill/otherShipment', 'billNo', 'Bill #', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/bill/otherShipment`, NavigationType.newPage);\r\n }\r\n if (entity.category === 'Invoice') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/invoice/otherShipment', 'invoiceNo', 'Invoice #', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/invoice/otherShipment`, NavigationType.newPage);\r\n }\r\n if (entity.category === 'CrDb') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/crdb/otherShipment', 'crdbNo', 'CrDb #', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/crdb/otherShipment`, NavigationType.newPage);\r\n }\r\n }\r\n\r\n async function loadInfoAreaInvoiceBillCrDb(id: string) {\r\n const apiResult = await appContext.api.getOceanImportMblInfoAreaBics(id);\r\n if (!apiResult) {\r\n return null;\r\n }\r\n\r\n const tableOptions: ApplicableTableSettings = {\r\n tableName: 'infoAreaBicTable',\r\n ...infoAreaBicTable,\r\n data: apiResult,\r\n \r\n rowRenderers: [\r\n {accessor: 'date', Cell: TextRenderer},\r\n {accessor: 'category', Cell: TextRenderer},\r\n // @ts-ignore:next-line\r\n {accessor: 'number', Cell: AccountingEntityRenderer.bind(this, onLinkToAccounting)},\r\n {accessor: 'companyName', Cell: TextAlignLeftRenderer},\r\n {accessor: 'cur', Cell: TextRenderer},\r\n // @ts-ignore:next-line\r\n {accessor: 'amount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.amount, cell.row.values.cur)},\r\n // @ts-ignore:next-line\r\n {accessor: 'paidAmount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.paidAmount, cell.row.values.cur)},\r\n // @ts-ignore:next-line\r\n {accessor: 'balance', Header: () =>
Balance
, Cell: ({cell}) => CurrencyRenderer(cell.row.values.balance, cell.row.values.cur, true)},\r\n ],\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for Warehouse Shipment List screen\r\n *\r\n * @class ListView\r\n * @extends {AbstractListView}\r\n */\r\nclass ListView extends AbstractListView {\r\n\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(\r\n JobNames.WHShip,\r\n 'WhShipListItem',\r\n WhShipListItem.calculateSearchParameters(search, WhShipListItem.MapSearchFields, ['isVoid']),\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return {data: WhShipListItem.formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n {\r\n accessor: 'billStat',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'crDbStat',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'invStat',\r\n renderer: BillInvoiceCrdbFilterRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n // {\r\n // accessor: 'isVoid',\r\n // renderer: VoidFilterRenderer,\r\n // searchValueExtractor: (v:any|null|undefined) => v === 'V' ? 1 : 0,\r\n // },\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n // return [\r\n // {accessor: 'sstatus', Cell: IndicatorRenderer},\r\n // {accessor: 'invStat', Cell: TextRenderer},\r\n // {accessor: 'billStat', Cell: TextRenderer},\r\n // {accessor: 'isVoid', Cell: NullableCheckboxIconRenderer},\r\n // {accessor: 'shipNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'centerNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'branch', Cell: TextRenderer},\r\n // {accessor: 'p', Cell: TextRenderer},\r\n // {accessor: 'remark', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'palletRemark', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'trucker', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'shipToNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'poNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'totalQty', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'orderDate', Cell: DateTimeRenderer},\r\n // {accessor: 'shipDate', Cell: DateTimeRenderer},\r\n // {accessor: 'u2Date', Cell: DateTimeRenderer},\r\n // {accessor: 'u2ID', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'u1ID', Cell: TextAlignLeftRenderer},\r\n // ];\r\n return WhShipListItem.getExportCollection().map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if (x.dataIndex === \"status\") {\r\n colRenderer.Cell = IndicatorRenderer;\r\n }\r\n // else if (x.dataIndex === 'isVoid') colRenderer.Cell = VoidRenderer;\r\n else if (x.dataIndex === 'p') colRenderer.Cell = PaidRenderer;\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n else if (x.type === XCol.XCellType.Double) {\r\n if (x.dataIndex === 'totalQty')\r\n colRenderer.Cell = (props: any) => ;\r\n else\r\n colRenderer.Cell = (props: any) => ;\r\n }\r\n\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n colRenderer.push({accessor: 'p', changedValue: (value: any)=> { return value['p']}});\r\n colRenderer.push({accessor: 'totalQty', changedValue: (value: any)=> { return value['totalQty']}});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'u2Date',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = shippingList;\r\n const cols = WhShipListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor(row: WhShipListItem) {\r\n return row && row.id ? `/warehousing/shipping/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'Shipping List';\r\n };\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n transactionImpactBtn(userId: string): React.ReactNode {\r\n return \r\n }\r\n}\r\n\r\nexport default ListView;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class WhInvenSumListItem extends SearchModelBase {\r\n centerNo: string = '';\r\n itemNo: string = '';\r\n itemDesc: string = '';\r\n upcCode: string = '';\r\n onHandQty: number|null = null;\r\n allQty: number|null = null;\r\n availQty: number|null = null;\r\n boxUnit: string = '';\r\n innerPcs: number|null = null;\r\n onHandPcs: number|null = null;\r\n allPcs: number|null = null;\r\n availPcs: number|null = null;\r\n id: number = 0;\r\n fromOnHandQty: number|null = null;\r\n toOnHandQty: number|null = null;\r\n fromAllQty: number|null = null;\r\n toAllQty: number|null = null;\r\n fromAvailQty: number|null = null;\r\n toAvailQty: number|null = null;\r\n fromInnerPcs: number|null = null;\r\n toInnerPcs: number|null = null;\r\n fromOnHandPcs: number|null = null;\r\n toOnHandPcs: number|null = null;\r\n fromAllPcs: number|null = null;\r\n toAllPcs: number|null = null;\r\n fromAvailPcs: number|null = null;\r\n toAvailPcs: number|null = null;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Customer', width: 100, dataIndex: 'centerNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 2, text: 'Prod Code/SKU', width: 120, dataIndex: 'itemNo'}),\r\n XCol.Create({ col: 3, text: 'Description', width: 150, dataIndex: 'itemDesc'}),\r\n XCol.Create({ col: 4, text: 'UPC/EAN', width: 80, dataIndex: 'upcCode'}),\r\n XCol.Create({ col: 5, text: 'On Hand Qty', width: 120, dataIndex: 'onHandQty', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 6, text: 'Allocated Qty', width: 120, dataIndex: 'allQty', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 7, text: 'Available Qty', width: 120, dataIndex: 'availQty', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 8, text: 'Unit', width: 60, dataIndex: 'boxUnit'}),\r\n XCol.Create({ col: 9, text: 'Inner Pack', width: 80, dataIndex: 'innerPcs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 10, text: 'On Hand Pcs', width: 120, dataIndex: 'onHandPcs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 11, text: 'Allocated Pcs', width: 120, dataIndex: 'allPcs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 12, text: 'Available Pcs', width: 120, dataIndex: 'availPcs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: WhInvenSumListItem.prototype.itemNo, orderByAscending: true };\r\n\r\n public static formatData(data: WhInvenSumListItem[]) {\r\n return data.map((d: WhInvenSumListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n onHandQty: {from: 'fromOnHandQty', to: 'toOnHandQty'},\r\n allQty: {from: 'fromAllQty', to: 'toAllQty'},\r\n availQty: {from: 'fromAvailQty', to: 'toAvailQty'},\r\n innerPcs: {from: 'fromInnerPcs', to: 'toInnerPcs'},\r\n onHandPcs: {from: 'fromOnHandPcs', to: 'toOnHandPcs'},\r\n allPcs: {from: 'fromAllPcs', to: 'toAllPcs'},\r\n availPcs: {from: 'fromAvailPcs', to: 'toAvailPcs'},\r\n }\r\n}\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport { TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,\r\n ExportRowRenderer,\r\n ListCustomFilterRenderer,\r\n ListOrderBy,\r\n ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport constants from '../../../constants';\r\nimport {Search} from \"../../../filtering\";\r\n\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\n\r\nimport {\r\n DateRenderer,\r\n DateTimeRenderer,\r\n FloatRenderer,\r\n NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,\r\n TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport JobListViewContext from '../../common/JobListViewContext';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport {JobNames} from \"../../../framework.core/JobNames\";\r\nimport {inventoryList} from \"../tableSettings\";\r\nimport {WhInvenSumListItem} from \"../../../fms.data/models/WhInvenSumListItem\";\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\n\r\nfunction ListCommands() {\r\n return <>;\r\n}\r\n\r\nfunction ListToolbar() {\r\n return (\r\n <>\r\n \r\n );\r\n}\r\n\r\nfunction ListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n\r\n } else if (unprocessedFkey === \"F2\") {\r\n } else if (unprocessedFkey === \"F3\") {\r\n } else if (unprocessedFkey === \"F9\") {\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F7\") {\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F6', 'F2', 'F3', 'F9', 'F11', 'F7'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for Other Shipment List screen\r\n *\r\n * @class ListView\r\n * @extends {AbstractListView}\r\n */\r\nclass ListView extends AbstractListView {\r\n\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(\r\n JobNames.WHInvenSummary,\r\n 'WhInvenSumListItem',\r\n WhInvenSumListItem.calculateSearchParameters(search, WhInvenSumListItem.MapSearchFields),\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return {data: WhInvenSumListItem.formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n // return [\r\n // {accessor: 'centerNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'itemNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'itemDesc', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'upcCode', Cell: TextRenderer},\r\n // {accessor: 'onHandQty', Cell: FloatRenderer},\r\n // {accessor: 'allQty', Cell: FloatRenderer},\r\n // {accessor: 'availQty', Cell: FloatRenderer},\r\n // {accessor: 'boxUnit', Cell: FloatRenderer},\r\n // {accessor: 'innerPcs', Cell: FloatRenderer},\r\n // {accessor: 'onHandPcs', Cell: FloatRenderer},\r\n // {accessor: 'allPcs', Cell: FloatRenderer},\r\n // {accessor: 'availPcs', Cell: FloatRenderer},\r\n // ];\r\n return WhInvenSumListItem.getExportCollection().map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.dataIndex === \"status\") {\r\n colRenderer.Cell = () => \r\n colRenderer.Header = () => ;\r\n }\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n else if(x.type === XCol.XCellType.Double) {\r\n colRenderer.Cell = (props: any) => ;\r\n }\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n colRenderer.push({ accessor: 'onHandQty', changedValue: (value: any) => { return value['onHandQty'] } });\r\n colRenderer.push({ accessor: 'allQty', changedValue: (value: any) => { return value['allQty'] } });\r\n colRenderer.push({ accessor: 'availQty', changedValue: (value: any) => { return value['availQty'] } });\r\n colRenderer.push({ accessor: 'innerPcs', changedValue: (value: any) => { return value['innerPcs'] } });\r\n colRenderer.push({ accessor: 'onHandPcs', changedValue: (value: any) => { return value['onHandPcs'] } });\r\n colRenderer.push({ accessor: 'allPcs', changedValue: (value: any) => { return value['allPcs'] } });\r\n colRenderer.push({ accessor: 'availPcs', changedValue: (value: any) => { return value['availPcs'] } });\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'u2Date',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = inventoryList;\r\n const cols = WhInvenSumListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor(row: WhInvenSumListItem) {\r\n return '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'Inventory List';\r\n };\r\n\r\n hasMemo(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\nexport default ListView;","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class WhInvenDetailListItem extends SearchModelBase {\r\n postDate: string | null = null;\r\n centerNo: string = '';\r\n refNo: string = '';\r\n trucker: string = '';\r\n fromTo: string = '';\r\n itemNo: string = '';\r\n location: string = '';\r\n poNo: string = '';\r\n qty: number|null = null;\r\n box: number|null = null;\r\n itemDesc: string = '';\r\n lbs: number|null = null;\r\n cft: number|null = null;\r\n status: string = '';\r\n remark: string = '';\r\n id: number = 0;\r\n fromPostDate: string | null = null;\r\n toPostDate: string | null = null;\r\n fromQty: number|null = null;\r\n toQty: number|null = null;\r\n fromBox: number|null = null;\r\n toBox: number|null = null;\r\n fromLbs: number|null = null;\r\n toLbs: number|null = null;\r\n fromCft: number|null = null;\r\n toCft: number|null = null;\r\n boxUnit: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n // XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'stat', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, hiddenInColumnSetup: true}),\r\n // XCol.Create({ col: 1, text: 'Date', width: 75, dataIndex: 'postDate', type: XCol.XCellType.Date}),\r\n // XCol.Create({ col: 2, text: 'Customer', width: 120, dataIndex: 'centerNo'}),\r\n // XCol.Create({ col: 3, text: 'Reference No', width: 100, dataIndex: 'refNo'}),\r\n // XCol.Create({ col: 4, text: 'Trucker', width: 120, dataIndex: 'trucker'}),\r\n // XCol.Create({ col: 5, text: 'Ship From/To', width: 120, dataIndex: 'fromTo'}),\r\n // XCol.Create({ col: 6, text: 'Prod Code/SKU', width: 120, dataIndex: 'itemNo'}),\r\n // XCol.Create({ col: 7, text: 'Location', width: 80, dataIndex: 'location'}),\r\n // XCol.Create({ col: 8, text: 'P.O No', width: 80, dataIndex: 'poNo'}),\r\n // XCol.Create({ col: 9, text: 'Pack Qty', width: 80, dataIndex: 'qty', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0'}),\r\n // XCol.Create({ col: 10, text: 'Qty', width: 50, dataIndex: 'box', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00'}),\r\n // XCol.Create({ col: 11, text: 'Unit', width: 60, dataIndex: 'boxUnit'}),\r\n // XCol.Create({ col: 12, text: 'Item Description', width: 150, dataIndex: 'itemDesc'}),\r\n // XCol.Create({ col: 13, text: 'LBS', width: 80, dataIndex: 'lbs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0'}),\r\n // XCol.Create({ col: 14, text: 'CFT', width: 80, dataIndex: 'cft', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00'}),\r\n // XCol.Create({ col: 15, text: 'Status', width: 80, dataIndex: 'status'}),\r\n // XCol.Create({ col: 16, text: 'Remark', width: 200, dataIndex: 'remark'})\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'stat', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Date', width: 75, dataIndex: 'postDate', type: XCol.XCellType.Date}),\r\n XCol.Create({ col: 2, text: 'Customer (WH)', width: 120, dataIndex: 'centerNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 3, text: 'Reference #', width: 100, dataIndex: 'refNo'}),\r\n XCol.Create({ col: 4, text: 'Trucker', width: 120, dataIndex: 'trucker'}),\r\n XCol.Create({ col: 5, text: 'Ship From/To', width: 120, dataIndex: 'fromTo'}),\r\n XCol.Create({ col: 6, text: 'Prod Code/SKU', width: 120, dataIndex: 'itemNo'}),\r\n XCol.Create({ col: 7, text: 'Location', width: 80, dataIndex: 'location'}),\r\n XCol.Create({ col: 8, text: 'P.O #', width: 80, dataIndex: 'poNo'}),\r\n XCol.Create({ col: 9, text: 'Qty', width: 80, dataIndex: 'qty', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 10, text: 'Box', width: 80, dataIndex: 'box', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 11, text: 'Unit', width: 60, dataIndex: 'boxUnit'}),\r\n XCol.Create({ col: 12, text: 'Item Description', width: 150, dataIndex: 'itemDesc'}),\r\n XCol.Create({ col: 13, text: 'LBS', width: 80, dataIndex: 'lbs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 14, text: 'CFT', width: 80, dataIndex: 'cft', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 15, text: 'Status', width: 80, dataIndex: 'status'}),\r\n XCol.Create({ col: 16, text: 'Remark', width: 200, dataIndex: 'remark'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: WhInvenDetailListItem.prototype.postDate, orderByAscending: false };\r\n\r\n public static formatData(data: WhInvenDetailListItem[]) {\r\n return data.map((d: WhInvenDetailListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n postDate: {from: 'fromPostDate', to: 'toPostDate'},\r\n qty: {from: 'fromQty', to: 'toQty'},\r\n box: {from: 'fromBox', to: 'toBox'},\r\n lbs: {from: 'fromLbs', to: 'toLbs'},\r\n cft: {from: 'fromCft', to: 'toCft'},\r\n }\r\n}\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,\r\n ExportRowRenderer,\r\n ListCustomFilterRenderer,\r\n ListOrderBy,\r\n ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport constants from '../../../constants';\r\nimport {Search} from \"../../../filtering\";\r\n\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\n\r\nimport {\r\n DateRenderer,\r\n DateTimeRenderer, FloatRenderer,\r\n NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,\r\n TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport JobListViewContext from '../../common/JobListViewContext';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport {JobNames} from \"../../../framework.core/JobNames\";\r\nimport {WhInvenDetailListItem} from \"../../../fms.data/models/WhInvenDetailListItem\";\r\nimport {inOutList} from \"../tableSettings\";\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport Select from '../../../ui/Select';\r\n\r\nfunction StatusFilterRenderer({value, onChange}:any) {\r\n return (\r\n onChange(e.target.value)}\r\n items={[\r\n { value: 'Received', label: 'Received'},\r\n { value: 'Pre Receiving', label: 'Pre Receiving'},\r\n { value: 'Receiving', label: 'Receiving'},\r\n { value: 'Shipped', label: 'Shipped'},\r\n { value: 'Pre Shipping', label: 'Pre Shipping'},\r\n { value: 'Shipping', label: 'Shipping'},\r\n ]}\r\n />\r\n );\r\n}\r\n\r\nfunction ListCommands() {\r\n return <>;\r\n}\r\n\r\nfunction ListToolbar() {\r\n return (\r\n <>\r\n \r\n );\r\n}\r\n\r\nfunction ListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n\r\n } else if (unprocessedFkey === \"F2\") {\r\n } else if (unprocessedFkey === \"F3\") {\r\n } else if (unprocessedFkey === \"F9\") {\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F7\") {\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F6', 'F2', 'F3', 'F9', 'F11', 'F7'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for Other Shipment List screen\r\n *\r\n * @class ListView\r\n * @extends {AbstractListView}\r\n */\r\nclass ListView extends AbstractListView {\r\n\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(\r\n JobNames.WHInvenDetail,\r\n 'WhInvenDetailListItem',\r\n WhInvenDetailListItem.calculateSearchParameters(search, WhInvenDetailListItem.MapSearchFields),\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return {data: WhInvenDetailListItem.formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n {\r\n accessor: 'status',\r\n renderer: StatusFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n // return [\r\n // {accessor: 'postDate', Cell: DateTimeRenderer},\r\n // {accessor: 'centerNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'refNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'fromTo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'itemNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'itemDesc', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'location', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'poNo', Cell: TextAlignLeftRenderer},\r\n // {accessor: 'qty', Cell: FloatRenderer},\r\n // {accessor: 'box', Cell: FloatRenderer},\r\n // {accessor: 'lbs', Cell: FloatRenderer},\r\n // {accessor: 'cft', Cell: FloatRenderer},\r\n // {accessor: 'status', Cell: TextRenderer},\r\n // {accessor: 'remark', Cell: TextAlignLeftRenderer},\r\n // ];\r\n return WhInvenDetailListItem.getExportCollection().map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.dataIndex === \"stat\") {\r\n colRenderer.Cell = () => \r\n colRenderer.Header = () => ;\r\n }\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n else if(x.type === XCol.XCellType.Double) {\r\n if (x.dataIndex === 'qty' || x.dataIndex === 'box')\r\n colRenderer.Cell = (props: any) => ;\r\n else\r\n colRenderer.Cell = (props: any) => ;\r\n }\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n colRenderer.push({ accessor: 'qty', changedValue: (value: any) => { return value['qty'] } });\r\n colRenderer.push({ accessor: 'box', changedValue: (value: any) => { return value['box'] } });\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'u2Date',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = inOutList;\r\n const cols = WhInvenDetailListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor(row: WhInvenDetailListItem) {\r\n return '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'In/Out Activity List';\r\n };\r\n\r\n hasMemo(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\nexport default ListView;\r\n","import React, {cloneElement, useContext, useEffect, useState} from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\nimport { TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport constants from '../../../constants';\r\nimport {Search} from \"../../../filtering\";\r\nimport {NavigationType, openNewPage} from '../../../util/navigationHelpers';\r\nimport {\r\n CurrencyAmountRenderer,DateRenderer,DateTimeRenderer,NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,TextAlignRightRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome';\r\nimport {faFileAlt, faPencilAlt, faPlus, faTrashAlt} from '@fortawesome/free-solid-svg-icons';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport { DocumentType } from \"../../../framework.core/DocumentType\";\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport ActionButton, {ActionButtonItem, borderColors, splitMenuItemsIntoSections} from '../../../ui/ActionButton';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport InfoAreaDrawer from '../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport {JobNames, getJobNameFromInvBillCrDbJobType} from \"../../../framework.core/JobNames\";\r\nimport {storageInvoiceList} from \"../tableSettings\";\r\nimport {InvoiceListItem} from \"../../../fms.data/models/InvoiceListItem\";\r\nimport IfmsModal from \"../../../ui/IfmsModal\";\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport JobListSuntekCommand from '../../common/JobListSuntekCommand';\r\nimport { StatusNotUseFileLockedRenderer, VoidFilterRenderer } from '../../common/commonListRenderers';\r\nimport lockBlue from '../../../img/lock_blue.png';\r\nimport lockRed from '../../../img/lock_red.png';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport { FmsSubMenu } from '../../../constants/fmsSubMenu';\r\nimport { getSelectedSubMenuArgs } from '../../JobListSubMenu';\r\nimport BatchPrint from '../../reports/BatchPrint';\r\nimport useReportViewer from '../../../hooks/useReportViewer';\r\nimport BicInfoAreaHistory from '../../common/BicInfoAreaHistory';\r\nimport useSystemSettings from '../../../hooks/useSystemSettings';\r\nimport CustomerBalanceDetails from '../../reports/AccountBalance';\r\nimport { nowDate } from '../../../dateUtils';\r\nimport { SuntekSettings, SystemSettings } from '../../../ifmsTypes';\r\nimport { useJournal } from '../../accounting/general/journal/JournalListView';\r\nimport useSuntekSettings from '../../../hooks/useSuntekSettings';\r\nimport { FormType, SecType } from '../../../fms.enum';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport { findSecurityTask, getSecBySecTask } from '../../../util';\r\nimport { getFmsGlobal } from '../../../globals';\r\nimport HistoryView from '../../reports/HistoryView';\r\nimport CheckBoxUncontrolled from '../../../ui/CheckBoxUncontrolled';\r\nimport { FmsSecCntr } from '../../../fms.core/constants/FmsSecCntr';\r\nimport { CurrencyAmountValue, nullableCheckBoxValue } from '../../common/commonExportFormat';\r\n\r\nfunction IndicatorRenderer({ data, row }: any) {\r\n const l = data[row.index];\r\n let dataTooltip = '';\r\n const lStatus = (l as any).status as string;\r\n if (lStatus === 'PC') dataTooltip = 'Period Close';\r\n else if (lStatus === 'OC') dataTooltip = 'OP Close';\r\n\r\n let content: React.ReactNode = <>;\r\n if (lStatus === 'PC')\r\n content = \"\";\r\n else if (lStatus === 'OC')\r\n content = \"\";\r\n //}\r\n\r\n return (\r\n //
{content}
\r\n
{content}
\r\n );\r\n}\r\n\r\n\r\nfunction VoidRenderer({cell}:any) {\r\n if (cell && cell.value === 1) {\r\n return (\r\n
\r\n V\r\n
\r\n );\r\n }\r\n return
;\r\n}\r\n\r\nfunction ConfirmedRenderer({ value, row }: any) {\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n\r\n let secCont = appContext.securityControls ? appContext.securityControls[JobNames.WHStorageInv] : null;\r\n if (!secCont) {\r\n secCont = [\r\n { secCntr: FmsSecCntr.STInvConfirmed, contName: 'chkConfirmed' }\r\n\r\n ];\r\n\r\n appContext.setSecurityControls(JobNames.WHStorageInv, secCont);\r\n }\r\n \r\n\r\n async function updateConfirmed(newValue: boolean) {\r\n await appContext.api.setInvoiceConfirmed(row.original.id, newValue);\r\n row.original.confirmed = newValue;\r\n jobListContext.updateDataRow(row.original);\r\n }\r\n\r\n function findClickedCell(element: Element): Element | null {\r\n for (let i = 0; i < 6; ++i) {\r\n if (!element) {\r\n break;\r\n }\r\n if (Array.from(element.classList).some(className => className.startsWith('row-'))) {\r\n return element;\r\n }\r\n element = element.parentNode as Element;\r\n }\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {\r\n if (!e) return false;\r\n\r\n e?.stopPropagation();\r\n\r\n const element = findClickedCell(e.currentTarget);\r\n if (!element) {\r\n await showGlobalOkDialog(

Cannot find hover element

, false, null, 'warning');\r\n return false;\r\n }\r\n\r\n const classes = element.classList;\r\n const mouseOverRowIndex = Array.from(classes).find(className => className.includes('row-'))?.match(/\\d+$/)?.[0];\r\n\r\n if (!mouseOverRowIndex || !jobListContext.data) {\r\n await showGlobalOkDialog(

Cannot find hover data

, false, null, 'warning');\r\n return false;\r\n }\r\n\r\n const rowData = jobListContext.data[parseInt(mouseOverRowIndex)];\r\n if (rowData.void > 0) {\r\n await showGlobalOkDialog(

This Invoice has been voided.

);\r\n return false;\r\n } else if (rowData.paidAmount !== 0) {\r\n await showGlobalOkDialog(

This Invoice has been already paid.

);\r\n return false;\r\n } else if (rowData.draft) {\r\n await showGlobalOkDialog(

This Invoice is Draft.

);\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }} />\r\n
\r\n );\r\n}\r\n\r\n\r\nfunction useSelectedOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const history = useHistory();\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const fmsGlobal = getFmsGlobal();\r\n\r\n const selectedElement = jobListContext.selectedElement as InvoiceListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n async function create() {\r\n if (jobListContext.hasOpenedScreenInAnyOperationStartingWithUrl('/warehousing/storageInvoice/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n\r\n openNewPage(history, '/warehousing/storageInvoice/add', NavigationType.newPage);\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n const id = selectedElement.id;\r\n const editUrl = `/warehousing/storageInvoice/edit/${id}`;\r\n const viewUrl = `/warehousing/storageInvoice/view/${id}`;\r\n\r\n // if (jobListContext.hasOpenedScreenInAnyOperationStartingWithUrlWithoutMe(`/warehousing/storageInvoice/edit`, editUrl)) {\r\n // await showGlobalOkDialog(

Edit operation is already in progress

);\r\n // return;\r\n // }\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/warehousing/storageInvoice/edit/${id}`;\r\n const viewUrl = `/warehousing/storageInvoice/view/${id}`;\r\n \r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHStorageInv);\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n async function deleteItem() {\r\n if (!selectedElement) {\r\n await showGlobalOkDialog('Cannot delete!',false,null,'warning');\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/storageInvoice/edit/${selectedElement.id}`) ||\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/storageInvoice/view/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Invoice first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n ,false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.Invoice, { id: selectedElement.id, opAcctBlockAfterClosed: fmsGlobal?.OPAcctBlockAfterClosed??false });\r\n if (apiResult && apiResult.success) {\r\n jobListContext.reloadData();\r\n } else {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n await showGlobalOkDialog(message, false,null,'warning');\r\n }\r\n }\r\n }\r\n return {create, edit, view, deleteItem};\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const { create, edit, view, deleteItem } = useSelectedOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHStorageInv);\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'View', shortcut: 'F9', separator: !listSec?.grantEdit },\r\n { label: 'Edit', shortcut: 'F3', separator: true, hidden: !listSec?.grantEdit },\r\n { label: 'Delete', shortcut: '', separator: true, hidden: !listSec?.grantDel },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n // { label: 'Refresh', shortcut: 'F11', separator: true },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n deleteItem();\r\n break;\r\n case 4:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 5:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n // case 6:\r\n // jobListContext.reloadData();\r\n // break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction TrancationImpactButtonCommands({ userId } : {userId: string}) {\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as InvoiceListItem;\r\n const {switchJournal} = useJournal();\r\n const suntekSettings = useSuntekSettings();\r\n \r\n if (!suntekSettings.general?.allowViewJournalBillings && !userId.startsWith('@')) {\r\n return null;\r\n }\r\n\r\n return (\r\n switchJournal(JobNames.WHStorageInv, selectedElement.id)}>\r\n {constants.List_Journal}\r\n \r\n );\r\n}\r\n\r\nfunction ListCommands() {\r\n const history = useHistory();\r\n const jobListContext = useContext(JobListViewContext);\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n const appContext = useContext(ApplicationContext);\r\n \r\n const hasSecCp = getSecBySecTask(appContext, FmsSecTask.AcctCustPayment, SecType.Add);\r\n const hasSecBp = getSecBySecTask(appContext, FmsSecTask.AcctBillPayment, SecType.Add);\r\n\r\n const selectedElement = jobListContext.selectedElement as InvoiceListItem;\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const { viewReport } = useReportViewer();\r\n\r\n const {edit, view, deleteItem } = useSelectedOperations();\r\n\r\n function hasOpenedNew() {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/storageInvoice/add`);\r\n }\r\n\r\n async function viewPaymentHistory() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const jobId = selectedElement.id;\r\n const jobName = JobNames.Invoice;\r\n const jobType = selectedElement.jobType\r\n\r\n const viewUrl = `/accounting/acPaymentHistoryView/${jobName}/${jobId}/${getJobNameFromInvBillCrDbJobType(jobType)}`;\r\n openNewPage(history, viewUrl, NavigationType.newPage);\r\n }\r\n\r\n async function print() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n let puInvoice: boolean = false;\r\n\r\n if (appContext.suntekSettings?.company?.companyId === \"AECL002209\") {\r\n const doConfirm = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Print?

\r\n

Do you want to print P/U Invoice?

\r\n
\r\n ,false, 0, true);\r\n if (doConfirm) {\r\n puInvoice = true;\r\n }\r\n }\r\n\r\n if (!puInvoice && appContext.suntekSettings?.company?.country === \"MEXICO\" && appContext.suntekSettings?.company?.companyId === \"PEOP002103\") {\r\n // Batch Invoice\r\n setSelectedPopupMenuItem({ label: 'Invoice Batch Print', popupComponent: });\r\n } else {\r\n const args = await getSelectedSubMenuArgs(puInvoice ? FmsSubMenu.PuInvoice : FmsSubMenu.Invoice, JobNames.Invoice, selectedElement, appContext, null, null);\r\n if (args) {\r\n viewReport(args, \"\", true);\r\n }\r\n }\r\n }\r\n\r\n async function onCustomerBillAction(item: ActionButtonItem) {\r\n //const link = item.index === 0 ? '/accounting/acCustomerPayment/add' : '/accounting/acBillPayment/add';\r\n let link = '';\r\n\r\n switch (item.index) {\r\n case 0:\r\n link = '/accounting/acCustomerPayment/add';\r\n break;\r\n case 1:\r\n link = '/accounting/acBillPayment/add';\r\n break;\r\n }\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrl(link)) {\r\n await showGlobalOkDialog(

Payment New Operation is already in progress

);\r\n return;\r\n }\r\n\r\n openNewPage(history, `${link}/${selectedElement.invoiceTo}`, NavigationType.newPage);\r\n }\r\n\r\n function onHistoryBtnAction(item: ActionButtonItem) {\r\n switch (item.index) {\r\n case 0:\r\n viewPaymentHistory();\r\n break;\r\n case 1:\r\n setSelectedPopupMenuItem({ label: 'View History', popupWidth: 1200, popupComponent: });\r\n break;\r\n }\r\n }\r\n \r\n const onPopupClose = () => {\r\n setSelectedPopupMenuItem(null);\r\n }\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHStorageInv);\r\n const hasSelectedRow = !!selectedElement;\r\n const disablePrint = hasSelectedRow && selectedElement.draft;\r\n\r\n const canBeAdd = !hasOpenedNew() && listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n const canBeDel = hasSelectedRow && listSec?.grantDel;\r\n\r\n return (\r\n
\r\n
\r\n  \r\n View \r\n Edit \r\n Delete \r\n
\r\n
\r\n Print \r\n setSelectedPopupMenuItem({ label: 'Invoice Batch Print', popupComponent: })}\r\n >\r\n Batch Print\r\n  \r\n {(hasSecCp || hasSecBp) &&\r\n <>\r\n \r\n Pay\r\n  \r\n \r\n }\r\n <>\r\n \r\n View History\r\n  \r\n \r\n {/* Payment History \r\n setSelectedPopupMenuItem({ label: 'View History', popupWidth: 1200, popupComponent: })}>View History  */}\r\n setSelectedPopupMenuItem({\r\n label: 'Balance',\r\n popupWidth: 780,\r\n popupComponent:\r\n \r\n })}>\r\n Balance\r\n  \r\n
\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.popupComponent ? (\r\n \r\n {cloneElement(selectedPopupMenuItem.popupComponent!, {onPopupClose})}\r\n \r\n ) : null}\r\n
\r\n );\r\n}\r\n\r\nfunction ListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction ListViewExtras({\r\n hideLogHistory\r\n}: any,\r\n) {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n //const history = useHistory();\r\n const systemSettings = useSystemSettings();\r\n const {create, edit, view} = useSelectedOperations();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHStorageInv);\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n\r\n } else if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n // } else if (unprocessedFkey === \"F11\") {\r\n // jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F6', 'F2', 'F3', 'F9', 'F11', 'F8'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n \r\n async function loadInvoiceHistory(param: any) {\r\n //const apiResult = await appContext.api.getOceanImportInvoiceHistory(id);\r\n const apiResult = await appContext.api.getAcctHistory(param.jobName, param.jobId, (jobListContext.selectedElement as InvoiceListItem).jobType, false);\r\n if (!apiResult || !apiResult.success) {\r\n return null;\r\n }\r\n\r\n return \r\n }\r\n\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n hideLogHistory={hideLogHistory}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for Other Shipment List screen\r\n *\r\n * @class ListView\r\n * @extends {AbstractListView}\r\n */\r\nclass ListView extends AbstractListView {\r\n\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(\r\n JobNames.WHStorageInv,\r\n 'InvoiceListItem',\r\n InvoiceListItem.calculateSearchParameters(search, InvoiceListItem.MapSearchFields, ['void']),\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return {data: InvoiceListItem.formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n {\r\n accessor: 'statusNotUseFileLocked',\r\n renderer: StatusNotUseFileLockedRenderer,\r\n searchValueExtractor: (v: any | null | undefined) => v,\r\n },\r\n {\r\n accessor: 'void',\r\n renderer: VoidFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v === 'V' ? 1 : 0,\r\n },\r\n {\r\n accessor: 'confirmed',\r\n renderer: undefined,\r\n searchValueExtractor: (v: any | null | undefined) => v.value !== undefined ? v.value : v,\r\n },\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): ListRowRenderer[] {\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n const useVat = systemSettings.useVat ?? false;\r\n\r\n return InvoiceListItem.getExportCollection(JobNames.WHStorageInv, useBranch, useVat).map(x => {\r\n const colRenderer: ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if (x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if (x.align === XCol.XAlignType.Right) colRenderer.Cell = TextAlignRightRenderer;\r\n if (x.dataIndex === \"status\") {\r\n colRenderer.Cell = IndicatorRenderer;\r\n }\r\n else if (x.dataIndex === \"void\") {\r\n colRenderer.Cell = VoidRenderer;\r\n }\r\n else if (x.dataIndex === \"confirmed\") {\r\n colRenderer.Cell = ConfirmedRenderer;\r\n } \r\n else if (x.dataIndex === \"amount\" || x.dataIndex === \"paidAmount\" || x.dataIndex === \"balance\" || x.dataIndex === \"vatAmount\") {\r\n colRenderer.Cell = props => x.currency} {...props} />;\r\n }\r\n else if (x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if (x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if (x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n return colRenderer;\r\n });\r\n }\r\n\r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({ accessor: 'status', changedValue: (value: any) => { return value['status'] === 'PC' ? 'Period Close' : '' } });\r\n colRenderer.push({ accessor: 'amount', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['amount']) } });\r\n colRenderer.push({ accessor: 'paidAmount', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['paidAmount']) } });\r\n colRenderer.push({ accessor: 'balance', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['balance']) } });\r\n colRenderer.push({ accessor: 'vatAmount', changedValue: (value: any) => { return CurrencyAmountValue(value['currency'], value['vatAmount']) } });\r\n colRenderer.push({ accessor: 'void', changedValue: (value: any) => { return value['void'] === 1 ? 'checked' : ''} });\r\n colRenderer.push({ accessor: 'confirmed', changedValue: (value: any) => { return nullableCheckBoxValue(value['confirmed']) } });\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'u2Date',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(opType:string, systemSettings:SystemSettings, suntekSettings:SuntekSettings): TableSettings {\r\n const useBranch = systemSettings?.enableBranch ?? false;\r\n const useVat = systemSettings.useVat ?? false;\r\n const tsettings = storageInvoiceList;\r\n const cols = InvoiceListItem.getExportCollection(JobNames.WHStorageInv, useBranch, useVat);\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderExtras(hideLogHistory: boolean) {\r\n return \r\n }\r\n\r\n getViewUrlFor(row: InvoiceListItem) {\r\n return row && row.id ? `/warehousing/storageInvoice/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'Storage Invoice List';\r\n };\r\n \r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n renderAdditionalCommands() {\r\n return ;\r\n }\r\n \r\n useLogHistory(): boolean {\r\n return true;\r\n }\r\n \r\n transactionImpactBtn(userId: string): React.ReactNode {\r\n return \r\n }\r\n}\r\n\r\nexport default ListView;\r\n","/**\r\n * Revision History\r\n * Data Model for WH Company List\r\n * \r\n * 02/25/2022 hykim Create\r\n */\r\nimport {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class WhCustListItem extends SearchModelBase {\r\n type: string = '';\r\n companyId: string = '';\r\n name: string = '';\r\n address: string = '';\r\n city: string = '';\r\n state: string = '';\r\n zip: string = '';\r\n phone: string = '';\r\n fax: string = '';\r\n id: number = 0;\r\n void: boolean = false;\r\n attention: string = '';\r\n billGroup: string = '';\r\n boxRate: number = 0;\r\n fromBoxRate: number|null = null;\r\n toBoxRate: number|null = null;\r\n pcsRate: number = 0;\r\n fromPcsRate: number|null = null;\r\n toPcsRate: number|null = null;\r\n cftRate: number = 0;\r\n fromCftRate: number|null = null;\r\n toCftRate: number|null = null;\r\n boxCharge: number = 0;\r\n fromBoxCharge: number|null = null;\r\n toBoxCharge: number|null = null;\r\n labelCharge: number = 0;\r\n fromLabelCharge: number|null = null;\r\n toLabelCharge: number|null = null;\r\n docCharge: number = 0;\r\n fromDocCharge: number|null = null;\r\n toDocCharge: number|null = null;\r\n u1Date: string | null = null;\r\n formU1Date: string | null = null;\r\n toU1Date: string | null = null;\r\n u2Date: string | null = null;\r\n formU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n u2Id: string = '';\r\n u1Id: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Inactive', width: 60, dataIndex: 'void', type: XCol.XCellType.StrBool, align: XCol.XAlignType.Center, hiddenInColumnSetup: true, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 2, text: 'Type', width: 60, dataIndex: 'type'}),\r\n XCol.Create({ col: 3, text: 'Customer ID', width: 80, dataIndex: 'companyId', defaultColumnFocus : true}),\r\n XCol.Create({ col: 4, text: 'Customer Name', width: 200, dataIndex: 'name'}),\r\n XCol.Create({ col: 5, text: 'Phone', width: 80, dataIndex: 'phone'}),\r\n XCol.Create({ col: 6, text: 'Fax', width: 80, dataIndex: 'fax'}),\r\n XCol.Create({ col: 7, text: 'Attention', width: 100, dataIndex: 'attention'}),\r\n XCol.Create({ col: 8, text: 'Bill Group', width: 60, dataIndex: 'billGroup'}),\r\n XCol.Create({ col: 9, text: 'Box Rate', width: 80, dataIndex: 'boxRate', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 10, text: 'Pcs Rate', width: 80, dataIndex: 'pcsRate', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 11, text: 'CFT Rate', width: 80, dataIndex: 'cftRate', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 12, text: 'Box Charge', width: 80, dataIndex: 'boxCharge', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 13, text: 'Label Charge', width: 80, dataIndex: 'labelCharge', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 14, text: 'Doc Charge', width: 80, dataIndex: 'docCharge', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 15, text: 'Create Date', width: 100, dataIndex: 'u1Date', type: XCol.XCellType.DateTime}),\r\n XCol.Create({ col: 16, text: 'Create by', width: 80, dataIndex: 'u1Id'}),\r\n XCol.Create({ col: 17, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime}),\r\n XCol.Create({ col: 18, text: 'Update by', width: 80, dataIndex: 'u2Id'}),\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n //public static OrderBy = { orderBy: WhCustListItem.prototype.u2Date, orderByAscending: false };\r\n\r\n public static formatData(data: WhCustListItem[]) {\r\n return data.map((d: WhCustListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n boxRate: {from: 'fromBoxRate', to: 'toBoxRate'},\r\n pcsRate: {from: 'fromPcsRate', to: 'toPcsRate'},\r\n cftRate: {from: 'fromCftRate', to: 'toCftRate'},\r\n boxCharge: {from: 'fromBoxCharge', to: 'toBoxCharge'},\r\n labelCharge: {from: 'fromLabelCharge', to: 'toLabelCharge'},\r\n docCharge: {from: 'fromDocCharge', to: 'toDocCharge'},\r\n u1Date: {from: 'fromU1Date', to: 'toU1Date'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n }\r\n}\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport {Search} from \"../../../filtering\";\r\nimport {NavigationType, openNewPage} from '../../../util/navigationHelpers';\r\nimport {\r\n DateRenderer,DateTimeRenderer,FloatRenderer,NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport {JobNames} from \"../../../framework.core/JobNames\";\r\nimport {companyList} from \"../tableSettings\";\r\nimport {WhCustListItem} from \"../../../fms.data/models/WhCustListItem\";\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport { CTypeFilterRenderer, InactiveFilterRenderer } from '../../common/commonListRenderers';\r\nimport { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../ui/ActionButton';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport { findSecurityTask } from '../../../util';\r\nimport { CustomerTypeValue, nullableCheckBoxValue } from '../../common/commonExportFormat';\r\n\r\nfunction VoidRenderer({cell}:any) {\r\n if (cell && cell.value === true) {\r\n return (\r\n
\r\n V\r\n
\r\n );\r\n }\r\n return
;\r\n}\r\n\r\nfunction TypeRenderer({cell}:any) {\r\n if(cell && cell.value === 'C'){\r\n return (\r\n
\r\n {cell.value}\r\n
\r\n );\r\n }\r\n else if(cell && cell.value === 'ST'){\r\n return (\r\n
\r\n {'ST'}\r\n
\r\n );\r\n }\r\n else if(cell && cell.value === 'SF'){\r\n return (\r\n
\r\n {'SF'}\r\n
\r\n );\r\n }\r\n else if(cell && cell.value === 'SFST'){\r\n return (\r\n
\r\n {'SF+'}\r\n
\r\n );\r\n }\r\n else\r\n return (\r\n
\r\n {'C+'}\r\n
\r\n );\r\n}\r\n\r\n\r\nfunction useSelectedOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const history = useHistory();\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const selectedElement = jobListContext.selectedElement as WhCustListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/warehousing/company/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n openNewPage(history, '/warehousing/company/add', NavigationType.newPage);\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/warehousing/company/edit/${id}`;\r\n const viewUrl = `/warehousing/company/view/${id}`;\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrlWithoutMe('/warehousing/company/edit', editUrl)) {\r\n await showGlobalOkDialog(

Edit operation is already in progress

);\r\n return;\r\n }\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n const id = selectedElement.id;\r\n const editUrl = `/warehousing/company/edit/${id}`;\r\n const viewUrl = `/warehousing/company/view/${id}`;\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHCustomer);\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n return { create, edit, view };\r\n}\r\n\r\nfunction RightClickMenu({ dismiss }: { dismiss: VoidFunction }) {\r\n const { edit, view, create} = useSelectedOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n \r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHCustomer);\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'View', shortcut: 'F9', separator: false },\r\n { label: 'Edit', shortcut: 'F3', separator: false, hidden: !listSec?.grantEdit },\r\n { label: 'Search', shortcut: 'F5', separator: false, newCol: true }\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) => ({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item: IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 4:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n case 5:\r\n jobListContext.reloadData();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction ListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const selectedElement = jobListContext.selectedElement as WhCustListItem;\r\n\r\n const {edit, view,} = useSelectedOperations();\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHCustomer);\r\n\r\n const hasSelectedRow = !!selectedElement;\r\n const canBeAdd = listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n\r\n return (\r\n
\r\n
\r\n  \r\n View \r\n Edit\r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction ListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction ListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHCustomer);\r\n const {create, edit, view} = useSelectedOperations();\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n\r\n } else if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent('custom');\r\n }\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F6', 'F2', 'F3', 'F9', 'F11', 'F8'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n return (\r\n <>\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for Other Shipment List screen\r\n *\r\n * @class ListView\r\n * @extends {AbstractListView}\r\n */\r\nclass ListView extends AbstractListView {\r\n getTableSettings(): TableSettings {\r\n const tsettings = companyList;\r\n const cols = WhCustListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n {\r\n accessor: 'void',\r\n renderer: InactiveFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v === 'V' ? true : false,\r\n },\r\n {\r\n accessor: 'type',\r\n renderer: CTypeFilterRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v ,\r\n },\r\n ]\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n return WhCustListItem.getExportCollection().map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n if(x.dataIndex === \"companyId\") colRenderer.Cell = TextAlignLeftRenderer;\r\n if(x.dataIndex === \"type\") colRenderer.Cell = TypeRenderer;\r\n else if(x.dataIndex === \"status\") {\r\n colRenderer.Cell = () => \r\n colRenderer.Header = () => ;\r\n }\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n else if(x.type === XCol.XCellType.Double) colRenderer.Cell = (props: any) => ;\r\n if (x.dataIndex === 'void') {\r\n colRenderer.Cell = VoidRenderer;\r\n colRenderer.Header = () => Inactive;\r\n }\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n colRenderer.push({accessor: 'type', changedValue: (value: any)=> { return CustomerTypeValue(value['type'])}});\r\n colRenderer.push({accessor: 'type', changedValue: (value: any)=> { return nullableCheckBoxValue(value['void'])}});\r\nreturn colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'u2Date',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(\r\n JobNames.WHCustomer,\r\n 'WhCustListItem',\r\n WhCustListItem.calculateSearchParameters(search, WhCustListItem.MapSearchFields,['u2Date']),\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return {data: WhCustListItem.formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor(row: WhCustListItem) {\r\n return row && row.id ? `/warehousing/company/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'Customer List';\r\n };\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n \r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n hasMemo(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\nexport default ListView;","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class WhItemsListItem extends SearchModelBase {\r\n customer: string = '';\r\n prodCode: string = '';\r\n itemDesc: string = '';\r\n upc: string = '';\r\n boxUnit: string = '';\r\n innerPac: number|null = null;\r\n defaultLoc: string = '';\r\n lbs: number|null = null;\r\n length: number|null = null;\r\n width: number|null = null;\r\n height: number|null = null;\r\n cft: number|null = null;\r\n id: number = 0;\r\n fromInnerPac: number|null = null;\r\n toInnerPac: number|null = null;\r\n fromLBS: number|null = null;\r\n toLBS: number|null = null;\r\n fromLength: number|null = null;\r\n toLength: number|null = null;\r\n fromWidth: number|null = null;\r\n toWidth: number|null = null;\r\n fromHeight: number|null = null;\r\n toHeight: number|null = null;\r\n fromCFT: number|null = null;\r\n toCFT: number|null = null;\r\n u2Date: string | null = null;\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n u2ID: string = '';\r\n u1Date: string | null = null;\r\n fromU1Date: string | null = null;\r\n toU1Date: string | null = null;\r\n u1ID: string = '';\r\n isUsed: number = 0;\r\n \r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 0, text: 'Company ID', width: 80, dataIndex: 'customer'}),\r\n XCol.Create({ col: 1, text: 'Prod Code/SKU', width: 120, dataIndex: 'prodCode', defaultColumnFocus : true}),\r\n XCol.Create({ col: 2, text: 'Description', width: 150, dataIndex: 'itemDesc'}),\r\n XCol.Create({ col: 3, text: 'UPC/EAN', width: 80, dataIndex: 'upc'}),\r\n XCol.Create({ col: 4, text: 'Unit', width: 60, dataIndex: 'boxUnit'}),\r\n XCol.Create({ col: 5, text: 'Inner Pack', width: 80, dataIndex: 'innerPac', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 6, text: 'Default Location', width: 80, dataIndex: 'defaultLoc'}),\r\n XCol.Create({ col: 7, text: 'LBS', width: 80, dataIndex: 'lbs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 8, text: 'Length', width: 80, dataIndex: 'length', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 9, text: 'Width', width: 80, dataIndex: 'width', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 10, text: 'Height', width: 80, dataIndex: 'height', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 11, text: 'CFT', width: 80, dataIndex: 'cft', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 12, text: 'Create Date', width: 100, dataIndex: 'u1Date', type: XCol.XCellType.DateTime, formatString: '#,##0.00'}),\r\n XCol.Create({ col: 14, text: 'Create by', width: 80, dataIndex: 'u1ID'}),\r\n XCol.Create({ col: 12, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, formatString: '#,##0.00'}),\r\n XCol.Create({ col: 13, text: 'Update by', width: 80, dataIndex: 'u2ID'}),\r\n ];\r\n\r\n \r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return WhItemsListItem.ExportCollection\r\n };\r\n\t\r\n public static OrderBy = { orderBy: WhItemsListItem.prototype.prodCode, orderByAscending: true };\r\n\r\n public static formatData(data: WhItemsListItem[]) {\r\n return data.map((d: WhItemsListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n innerPac: {from: 'fromInnerPac', to: 'toInnerPac'},\r\n lbs: {from: 'fromLBS', to: 'toLBS'},\r\n length: {from: 'fromLength', to: 'toLength'},\r\n width: {from: 'fromWidth', to: 'toWidth'},\r\n height: {from: 'fromHeight', to: 'toHeight'},\r\n cft: {from: 'fromCFT', to: 'toCFT'},\r\n u1Date: {from: 'fromU1Date', to: 'toU1Date'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n }\r\n}\r\n","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\nimport _ from 'lodash';\r\nimport { WItem } from './WItem';\r\n\r\nexport class WItemEDI extends TrackableEntity {\r\n id: number = 0;\r\n //forCloud\r\n custType: string = '';\r\n //custName: string = '';\r\n //filePath: string | null = null;\r\n fileName: string | null = null;\r\n fileCount: number = 0;\r\n\r\n scanItem: Array = [];\r\n locResult: Array = [];\r\n itemResult: Array = [];\r\n container: Array = [];\r\n \r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('id', 'custType','custName','filePath','fileName','fileCount','scanItem','locResult','itemResult');\r\n if(this.id === 0) this.id = this.GetNextId();\r\n if(this.container.length > 0) {\r\n // for(let i = 0; i < this.container.length; i++) {\r\n // this.container.splice(i, 1, new WReceiveItem(this.container[i]));\r\n // }\r\n this.container = this.container.map(d => new WItem(d));\r\n } else {\r\n this.container = [];\r\n }\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n const dicFieldMap:IDictionary = {};\r\n _.keys(WItemEDI.dicFieldMappings).forEach(m=>{\r\n dicFieldMap[m] = WItemEDI.dicFieldMappings[m];\r\n });\r\n _.keys(WItem.dicFieldMappings).forEach(m=>{\r\n dicFieldMap[`container.${m}`] = WItem.dicFieldMappings[m];\r\n });\r\n return dicFieldMap;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_ID', table: 'T_WITEM' }),\r\n 'custType': new DBMappingInfo({ field: 'F_CENTER_NO', table: 'T_WITEM' }),\r\n };\r\n setChildTrackable(value: boolean): void {\r\n if(this.container.length > 0) {\r\n this.container.forEach(c => c.trackable = value);\r\n }\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, {useContext, useEffect, useState} from 'react';\r\n\r\nimport Select, {SelectItem} from '../ui/Select';\r\nimport ApplicationContext from \"../ApplicationContext\";\r\nimport {EdiWebCenterParams} from \"../fms.core/constants\";\r\n\r\ninterface IWarehouseCustomer {\r\n centerNo: string;\r\n}\r\n\r\nfunction EdiWebCenterDropDown({\r\n value,\r\n onChange = () => {\r\n },\r\n disabled = false,\r\n selectId,\r\n }: {\r\n value: string | null | undefined,\r\n disabled?: boolean,\r\n onChange?: (x: IWarehouseCustomer | null) => void,\r\n selectId?: string,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const [data, setData] = useState>([]);\r\n\r\n async function fetchData(api: any) {\r\n const data = await api.loadCodeData([new EdiWebCenterParams()]);\r\n if (data && data.length > 0) {\r\n setData(data[0].items);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n fetchData(appContext.api);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function handleChange(e: React.ChangeEvent) {\r\n if (!e.target.value) {\r\n onChange(null);\r\n return;\r\n }\r\n\r\n onChange(data?.find(d => d.centerNo === e.target.value) || null);\r\n }\r\n\r\n const displayData: Array = [\r\n ...data.map(x => ({value: x.centerNo ?? '', label: x.centerNo ?? ''}))\r\n ];\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nEdiWebCenterDropDown.defaultProps = {\r\n onChange: () => {\r\n },\r\n disabled: false,\r\n dark: false,\r\n isConfirmed: false\r\n};\r\n\r\nEdiWebCenterDropDown.propTypes = {\r\n value: PropTypes.object,\r\n onChange: PropTypes.func.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n selectId: PropTypes.string,\r\n isConfirmed: PropTypes.bool,\r\n};\r\n\r\nexport default React.memo(EdiWebCenterDropDown);\r\n","import React, { useContext, useEffect } from 'react';\r\nimport InlineInputControlRow from '../../ui/layout/InlineInputControlRow';\r\nimport SecondaryButton from \"../../ui/SecondaryButton\";\r\nimport TextBox from '../../ui/TextBox';\r\nimport Float from '../../ui/Float';\r\nimport { WItemEDI } from '../../fms.core/WItemEDI';\r\nimport { useTypedFastStorage } from '../../hooks/useFastStorage';\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport { SQLField, SQLInfo, SQLType } from '../../framework.core/data/SQLInfo';\r\nimport _ from 'lodash';\r\nimport useGlobalOkDialog from '../../hooks/useGlobalOkDialog';\r\nimport { readExcel } from '../../excel';\r\nimport GreenButtonInputExcel from '../../ui/GreenButtonInputExcel';\r\nimport { SQLIndex } from '../../fms.core/constants';\r\nimport { ApiResult, InsertResultsWithData } from '../../framework.core/data/ApiResult';\r\nimport { JobNames } from '../../framework.core/JobNames';\r\nimport EdiWebCenterDropDown from '../../uiControls/EdiWebCenterDropDown';\r\nimport JobListViewContext from '../common/JobListViewContext';\r\ninterface ItemUploadParams {\r\n onPopupClose: () => void,\r\n isPhysicalInven: boolean\r\n};\r\n\r\ninterface ItemUploadLoadedParams {\r\n onPopupClose: (doRefresh: boolean) => void,\r\n onSave: () => void,\r\n isPhysicalInven: boolean,\r\n wItemEDI: WItemEDI,\r\n onChange: (x: Partial) => void,\r\n};\r\n\r\nfunction ItemUploadImpl(params: ItemUploadParams) {\r\n const modelStorage = 'item-upload';\r\n const [itemStorage, setItemStorage, removeItemStorage, ] = useTypedFastStorage(modelStorage, null);\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const userID = appContext.user ? appContext.user.id ?? '' : '';\r\n const newItemModel = new WItemEDI();\r\n\r\n useEffect(() => {\r\n initialize();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n async function initialize() {\r\n const newModel = _.cloneDeep(newItemModel);\r\n setItemStorage(_.cloneDeep(newModel));\r\n }\r\n\r\n async function uploadDataCheck() {\r\n const apiLocResult = await appContext.api.getLookupItems(SQLIndex.WareLocation, '', '');\r\n setItemStorage({ locResult: apiLocResult?.entities || [] });\r\n\r\n const apiItemResult = await appContext.api.getLookupItems(SQLIndex.WareRcvItems, '', itemStorage?.custType);\r\n setItemStorage({ itemResult: apiItemResult?.entities || [] });\r\n }\r\n\r\n function doClose(doRefresh: boolean = false) {\r\n removeItemStorage();\r\n params.onPopupClose();\r\n if (doRefresh === true) jobListContext.reloadData();\r\n }\r\n\r\n async function doSave() {\r\n if (itemStorage?.fileCount === 0) return;\r\n await uploadDataCheck();\r\n\r\n let sqlInfoList: SQLInfo[] = [];\r\n //A : ItemNo, B: UpcCode,C: Description,\tD: PcsPerBox,\tE: LOC\r\n itemStorage?.scanItem.forEach(function (value) {\r\n if (value.A.length === 0 || Number.isNaN(Number(value.D))) return;\r\n\r\n if (itemStorage?.itemResult.findIndex(v => v.itemNo === value.A) !== -1) return;\r\n\r\n if (value.E !== '' && itemStorage?.locResult.findIndex(v => v.location === value.E + '') === -1) return;\r\n\r\n if (value.B.length > 30 || value.C.length > 50) return;\r\n\r\n sqlInfoList.push(new SQLInfo({\r\n tableName: \"T_WITEM\",\r\n type: SQLType.Insert,\r\n fields: [\r\n new SQLField({ fieldName: \"F_CENTER_NO\", propertyName: \"centerNo\", value: itemStorage?.custType }),\r\n new SQLField({ fieldName: \"F_ITEMNO\", propertyName: \"itemNo\", value: value.A }),\r\n new SQLField({ fieldName: \"F_ITEMDESCRIPTION\", propertyName: \"itemDescription\", value: value.C }),\r\n new SQLField({ fieldName: \"F_PCSPERBOX\", propertyName: \"pcsPerBox\", value: value.D }),\r\n new SQLField({ fieldName: \"F_DLOCATION\", propertyName: \"dLocation\", value: value.E }),\r\n new SQLField({ fieldName: \"F_UPCCODE\", propertyName: \"upcCode\", value: value.B }),\r\n new SQLField({ fieldName: \"U1ID\", propertyName: \"u1ID\", value: userID }),\r\n new SQLField({ fieldName: \"U1Date\", propertyName: \"u1Date\", value: \"GetDate()\" }),\r\n new SQLField({ fieldName: \"U2ID\", propertyName: \"u2ID\", value: userID }),\r\n new SQLField({ fieldName: \"U2Date\", propertyName: \"u2Date\", value: \"GetDate()\" }),\r\n ]\r\n }));\r\n });\r\n\r\n const apiResult: ApiResult = await appContext.api.saveUpload(JobNames.WHItem,\r\n sqlInfoList);\r\n\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

Save failed

, false);\r\n }\r\n else {\r\n await showGlobalOkDialog(

The data has been saved

);\r\n }\r\n\r\n doClose(true);\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction ItemUploadInitializedImpl({\r\n onPopupClose,\r\n isPhysicalInven,\r\n wItemEDI,\r\n onChange,\r\n onSave,\r\n}: ItemUploadLoadedParams) {\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const handleUploadFile = async (e: any) => {\r\n if (e.target === null || e.target === undefined)\r\n return;\r\n\r\n if (e.target.files.length === 0) {\r\n if (wItemEDI.fileName !== null)\r\n return;\r\n }\r\n else if (e.target.files.length !== 1) {\r\n showGlobalOkDialog(

*파일은 하나만 선택하세요*

, false);\r\n return;\r\n }\r\n\r\n if (isPhysicalInven) {\r\n showGlobalOkDialog(

*옳지 않은 양식입니다.*

, false);\r\n return;\r\n }\r\n else {\r\n const data = await e.target.files[0].arrayBuffer();\r\n\r\n const excelData = readExcel(data);\r\n\r\n //onChange({ scanItem: excelData, fileCount: excelData.length , fileName : e.target.files[0].name, filePath : e.target.files[0].mozFullPath});\r\n onChange({ scanItem: excelData, fileCount: excelData.length, fileName: e.target.files[0].name });\r\n }\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n onChange({\r\n custType: cust?.centerNo ?? '',\r\n //custName: cust?.centerNo ?? ''\r\n })}\r\n disabled={isPhysicalInven}\r\n isConfirmed={isPhysicalInven}\r\n />\r\n \r\n\r\n {/* \r\n \r\n */}\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n ) => { handleUploadFile(e) }}>\r\n Browse\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n {/*
\r\n \r\n
*/}\r\n
\r\n
\r\n \r\n
\r\n \r\n SAVE\r\n \r\n \r\n CANCEL\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nconst ItemUpload = ({\r\n onPopupClose,\r\n isPhysicalInven,\r\n}: {\r\n onPopupClose: () => void\r\n isPhysicalInven: boolean,\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\nexport default ItemUpload;\r\n","import React, {cloneElement, useContext, useEffect, useState} from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\nimport {TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,\r\n ExportRowRenderer,\r\n ListCustomFilterRenderer,\r\n ListOrderBy,\r\n ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport constants from '../../../constants';\r\nimport {Search} from \"../../../filtering\";\r\nimport {NavigationType, openNewPage} from '../../../util/navigationHelpers';\r\nimport {\r\n DateRenderer,DateTimeRenderer,FloatRenderer,NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport {JobNames} from \"../../../framework.core/JobNames\";\r\nimport {itemList} from \"../tableSettings\";\r\nimport {WhItemsListItem} from \"../../../fms.data/models/WhItemsListItem\";\r\nimport ListViewShortcutMenu from '../../common/ListViewShortcutMenu';\r\nimport { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../ui/ActionButton';\r\nimport IfmsModal from '../../../ui/IfmsModal';\r\nimport ItemUpload from '../../reports/ItemUpload';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport { findSecurityTask } from '../../../util';\r\n\r\n/*\r\nfunction CurrencyRenderer(value: number | null | undefined, currency: string, isLast: boolean = false) {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction AccountingEntityRenderer(onLinkToAccounting: any, {data, row, value}: any) {\r\n const entity = data[row.index];\r\n\r\n return
\r\n \r\n  \r\n
;\r\n}\r\n*/\r\n\r\nfunction useSelectedOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const history = useHistory();\r\n\r\n const selectedElement = jobListContext.selectedElement as WhItemsListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n\r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/warehousing/item/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n\r\n openNewPage(history, '/warehousing/item/add', NavigationType.newPage);\r\n }\r\n\r\n async function deleteItem() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/item/edit/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/item/view/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Item first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n , false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.WHItem, { id:selectedElement.id, pimsLinkId: 0 });\r\n if (apiResult && apiResult.success) {\r\n jobListContext.reloadData();\r\n } else {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n await showGlobalOkDialog(message);\r\n }\r\n }\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/warehousing/item/edit/${id}`;\r\n const viewUrl = `/warehousing/item/view/${id}`;\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrlWithoutMe('/warehousing/item/edit', editUrl)) {\r\n await showGlobalOkDialog(

Edit operation is already in progress

);\r\n return;\r\n }\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/warehousing/item/edit/${id}`;\r\n const viewUrl = `/warehousing/item/view/${id}`;\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHCustomer);\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n async function copy() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/warehousing/item/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n openNewPage(history, `/warehousing/item/add?copyId=${id}`, NavigationType.newPage);\r\n }\r\n\r\n return {create, deleteItem: deleteItem, edit, view, copy};\r\n}\r\n\r\nfunction RightClickMenu({ dismiss }: { dismiss: VoidFunction }) {\r\n const { edit, view, create, deleteItem} = useSelectedOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as WhItemsListItem;\r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHCustomer);\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'View', shortcut: 'F9', separator: false },\r\n { label: 'Edit', shortcut: 'F3', separator: false, hidden: !listSec?.grantEdit },\r\n { label: 'Delete', shortcut: '', separator: true, hidden: !listSec?.grantDel },\r\n { label: 'Search', shortcut: 'F5', separator: false , newCol: true } ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) => ({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item: IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n deleteItem();\r\n break;\r\n case 4:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction ListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n\r\n const selectedElement = jobListContext.selectedElement as WhItemsListItem;\r\n\r\n const {edit, view, deleteItem} = useSelectedOperations();\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHItem);\r\n\r\n const hasSelectedRow = !!selectedElement;\r\n\r\n function hasOpenedViewOrEditFor(id:number) {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/item/edit/${id}`) || jobListContext.hasOpenedScreenStartingWithUrl(`/warehousing/item/view/${id}`);\r\n }\r\n const canBeAdd = listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n const onPopupClose = () => {\r\n setSelectedPopupMenuItem(null);\r\n }\r\n\r\n return (\r\n
\r\n
\r\n  \r\n View \r\n Edit \r\n Delete\r\n
\r\n
\r\n setSelectedPopupMenuItem({ label: 'Item Upload by EDI', popupWidth: 420, popupComponent: })}>Item Upload \r\n setSelectedPopupMenuItem({ label: 'WeSC Receiving by EDI', popupWidth: 420, popupComponent: })}>Physical Inventory\r\n
\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.popupComponent ? (\r\n \r\n {cloneElement(selectedPopupMenuItem.popupComponent!, { onPopupClose })}\r\n \r\n ) : null}\r\n
\r\n );\r\n}\r\n\r\nfunction ListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction ListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHCustomer);\r\n\r\n const {create, edit, view} = useSelectedOperations();\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n\r\n } else if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F7\") {\r\n jobListContext.setInfoAreaContent('custom');\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F6', 'F2', 'F3', 'F9', 'F11', 'F7'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /*\r\n function onLinkToAccounting(entity: any) {\r\n if (!entity || !entity.category || !entity.number) {\r\n return;\r\n }\r\n\r\n if (entity.category === 'Bill') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/bill/otherShipment', 'billNo', 'Bill No', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/bill/otherShipment`, NavigationType.newPage);\r\n }\r\n if (entity.category === 'Invoice') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/invoice/otherShipment', 'invoiceNo', 'Invoice No', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/invoice/otherShipment`, NavigationType.newPage);\r\n }\r\n if (entity.category === 'CrDb') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/crdb/otherShipment', 'crdbNo', 'CrDb No', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/crdb/otherShipment`, NavigationType.newPage);\r\n }\r\n }\r\n\r\n async function loadInfoAreaInvoiceBillCrDb(id: string) {\r\n const apiResult = await appContext.api.getOceanImportMblInfoAreaBics(id);\r\n if (!apiResult) {\r\n return null;\r\n }\r\n\r\n const tableOptions: ApplicableTableSettings = {\r\n tableName: 'infoAreaBicTable',\r\n ...infoAreaBicTable,\r\n data: apiResult,\r\n \r\n rowRenderers: [\r\n {accessor: 'date', Cell: TextRenderer},\r\n {accessor: 'category', Cell: TextRenderer},\r\n // @ts-ignore:next-line\r\n {accessor: 'number', Cell: AccountingEntityRenderer.bind(this, onLinkToAccounting)},\r\n {accessor: 'companyName', Cell: TextAlignLeftRenderer},\r\n {accessor: 'cur', Cell: TextRenderer},\r\n // @ts-ignore:next-line\r\n {accessor: 'amount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.amount, cell.row.values.cur)},\r\n // @ts-ignore:next-line\r\n {accessor: 'paidAmount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.paidAmount, cell.row.values.cur)},\r\n // @ts-ignore:next-line\r\n {accessor: 'balance', Header: () =>
Balance
, Cell: ({cell}) => CurrencyRenderer(cell.row.values.balance, cell.row.values.cur, true)},\r\n ],\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n*/\r\n\r\n return (\r\n <>\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for Other Shipment List screen\r\n *\r\n * @class ListView\r\n * @extends {AbstractListView}\r\n */\r\nclass ListView extends AbstractListView {\r\n\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(\r\n JobNames.WHItem,\r\n 'WhItemsListItem',\r\n WhItemsListItem.calculateSearchParameters(search, WhItemsListItem.MapSearchFields),\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return {data: WhItemsListItem.formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n return WhItemsListItem.getExportCollection().map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.dataIndex === \"status\") {\r\n colRenderer.Cell = () => \r\n colRenderer.Header = () => ;\r\n }\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n else if(x.type === XCol.XCellType.Double) {\r\n if (x.dataIndex === 'innerPac')\r\n colRenderer.Cell = (props: any) => ;\r\n else\r\n colRenderer.Cell = (props: any) => ;\r\n }\r\n\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}}); \r\n colRenderer.push({ accessor: 'innerPac', changedValue: (value: any) => { return value['innerPac'] } });\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'u2Date',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = itemList;\r\n const cols = WhItemsListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n \r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n \r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor(row: WhItemsListItem) {\r\n return row && row.id ? `/warehousing/item/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'Item List';\r\n };\r\n\r\n hasMemo(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\nexport default ListView;","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class WhLocationListItem extends SearchModelBase {\r\n location: string = '';\r\n zone: string = '';\r\n row: string = '';\r\n level: string = '';\r\n storage: boolean|null = null;\r\n id: number = 0;\r\n u2Date: string | null = null;\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n u2ID: string = '';\r\n u1Date: string | null = null;\r\n fromU1Date: string | null = null;\r\n toU1Date: string | null = null;\r\n u1ID: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Location', width: 150, dataIndex: 'location', defaultColumnFocus : true}),\r\n XCol.Create({ col: 2, text: 'Zone', width: 80, dataIndex: 'zone'}),\r\n XCol.Create({ col: 3, text: 'Row', width: 80, dataIndex: 'row'}),\r\n XCol.Create({ col: 4, text: 'Level', width: 80, dataIndex: 'level'}),\r\n XCol.Create({ col: 5, text: 'Occupied', width: 80, dataIndex: 'storage', type: XCol.XCellType.Bool, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 6, text: 'Create Date', width: 100, dataIndex: 'u1Date', type: XCol.XCellType.DateTime }),\r\n XCol.Create({ col: 7, text: 'Create by', width: 80, dataIndex: 'u1ID'}),\r\n XCol.Create({ col: 8, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime }),\r\n XCol.Create({ col: 9, text: 'Update by', width: 80, dataIndex: 'u2ID'}),\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return WhLocationListItem.ExportCollection\r\n };\r\n\t\r\n public static OrderBy = { orderBy: WhLocationListItem.prototype.location, orderByAscending: false };\r\n\r\n public static formatData(data: WhLocationListItem[]) {\r\n return data.map((d: WhLocationListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n u1Date: {from: 'fromU1Date', to: 'toU1Date'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n }\r\n}\r\n","import React, {useContext, useEffect, useState} from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\nimport { infoAreaBicTable, TableColumn, TableSettings} from \"../../../tableSettings\";\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,ListOrderBy,ListRowRenderer\r\n} from \"../../common/AbstractListView\";\r\nimport constants from '../../../constants';\r\nimport {Search} from \"../../../filtering\";\r\nimport {NavigationType, openNewPage} from '../../../util/navigationHelpers';\r\nimport {\r\n DateRenderer,DateTimeRenderer,NullableCheckboxIconRenderer,\r\n TextAlignLeftRenderer,TextRenderer\r\n} from '../../../uiControls/SmartTableRenderers';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport UniqueLinkButton from '../../../uiControls/UniqueLinkButton';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport JobListViewContext, { RightClickContext } from '../../common/JobListViewContext';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport PrimaryButton from '../../../ui/PrimaryButton';\r\nimport {JobNames} from \"../../../framework.core/JobNames\";\r\nimport {locationList} from \"../tableSettings\";\r\nimport { WhLocationListItem } from '../../../fms.data/models/WhLocationListItem';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport Menu, { IfmsMenuItem } from '../../../ui/menu/Menu';\r\nimport { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../ui/ActionButton';\r\nimport ToolboxMenuItem from '../../../uiControls/ToolboxMenuItem';\r\nimport { findSecurityTask } from '../../../util';\r\nimport { nullableCheckBoxValue } from '../../common/commonExportFormat';\r\n\r\nfunction useSelectedOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const history = useHistory();\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const selectedElement = jobListContext.selectedElement as WhLocationListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/warehousing/loc/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n\r\n openNewPage(history, '/warehousing/loc/add', NavigationType.newPage);\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/warehousing/loc/edit/${id}`;\r\n const viewUrl = `/warehousing/loc/view/${id}`;\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrlWithoutMe('/warehousing/loc/edit', editUrl)) {\r\n await showGlobalOkDialog(

Edit operation is already in progress

);\r\n return;\r\n }\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n\r\n const editUrl = `/warehousing/loc/edit/${id}`;\r\n const viewUrl = `/warehousing/loc/view/${id}`;\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHCustomer);\r\n const urls = [viewUrl];\r\n if (listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n return {create, edit, view};\r\n}\r\n\r\nfunction RightClickMenu({ dismiss }: { dismiss: VoidFunction }) {\r\n const { edit, view, create} = useSelectedOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHCustomer);\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'View', shortcut: 'F9', separator: false },\r\n { label: 'Edit', shortcut: 'F3', separator: false, hidden: !listSec?.grantEdit },\r\n { label: 'Search', shortcut: 'F5', separator: false , newCol: true } ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) => ({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item: IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit();\r\n break;\r\n case 3:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 5:\r\n jobListContext.reloadData();\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction ListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as WhLocationListItem;\r\n\r\n const { edit, view} = useSelectedOperations();\r\n\r\n const appContext = useContext(ApplicationContext);\r\n \r\n const hasSelectedRow = !!selectedElement;\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHLoc);\r\n const canBeAdd = listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n\r\n return (\r\n
\r\n
\r\n  \r\n View \r\n Edit\r\n {}\r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction ListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.WHCustomer);\r\n\r\n const {create, edit, view} = useSelectedOperations();\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n\r\n } else if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F7\") {\r\n jobListContext.setInfoAreaContent('custom');\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F6', 'F2', 'F3', 'F9', 'F11', 'F7'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n return (\r\n
\r\n
\r\n );\r\n}\r\n/**\r\n * Concrete implementation for Other Shipment List screen\r\n *\r\n * @class ListView\r\n * @extends {AbstractListView}\r\n */\r\nclass ListView extends AbstractListView {\r\n\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(\r\n JobNames.WHLoc,\r\n 'WhLocationListItem',\r\n WhLocationListItem.calculateSearchParameters(search, WhLocationListItem.MapSearchFields),\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return {data: WhLocationListItem.formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n return WhLocationListItem.getExportCollection().map(x => {\r\n const colRenderer:ListRowRenderer = { accessor: x.dataIndex, Cell: TextAlignLeftRenderer };\r\n if(x.align === XCol.XAlignType.Center) colRenderer.Cell = TextRenderer;\r\n else if(x.type === XCol.XCellType.Bool || x.type === XCol.XCellType.StrBool) colRenderer.Cell = NullableCheckboxIconRenderer;\r\n else if(x.type === XCol.XCellType.Date) colRenderer.Cell = DateRenderer;\r\n else if(x.type === XCol.XCellType.DateTime) colRenderer.Cell = DateTimeRenderer;\r\n\r\n return colRenderer;\r\n });\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n colRenderer.push({accessor: 'storage', changedValue: (value: any)=> { return nullableCheckBoxValue(value['storage'])}});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'location',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = locationList;\r\n const cols = WhLocationListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n <>\r\n );\r\n }\r\n\r\n renderExtras() {\r\n return \r\n }\r\n \r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n \r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n getViewUrlFor(row: WhLocationListItem) {\r\n return row && row.id ? `/warehousing/loc/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'Location List';\r\n };\r\n \r\n hasMemo(): boolean {\r\n return false;\r\n }\r\n}\r\n\r\nexport default ListView;","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CustomerPaymentListItem extends SearchModelBase {\r\n postDate: string | null = null;\r\n fromPostDate: string | null = null;\r\n toPostDate: string | null = null;\r\n customer: string = '';\r\n billTo: number = 0;\r\n receivedFrom: string = '';\r\n payment: string = '';\r\n checkNo: string = '';\r\n invoiceNo: string = '';\r\n bank: string = '';\r\n currency: string = '';\r\n amount: number|null = null;\r\n fromAmount: number|null = null;\r\n toAmount: number|null = null;\r\n depositDate: string | null = null;\r\n fromDepositDate: string | null = null;\r\n toDepositDate: string | null = null;\r\n isDraft: boolean|null = null;\r\n chkPrint: string = '';\r\n voidDate: string | null = null;\r\n fromVoidDate: string | null = null;\r\n toVoidDate: string | null = null;\r\n remark: string = '';\r\n u1ID: string = '';\r\n id: number = 0;\r\n u1Date: string | null = null;\r\n u2ID: string = '';\r\n u2Date: string | null = null;\r\n status: string = '';\r\n fromU1Date: string | null = null;\r\n toU1Date: string | null = null;\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n customerId: number = 0;\r\n firstCustomer: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Draft', width: 40, dataIndex: 'isDraft', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 2, text: 'Block', width: 40, dataIndex: 'block', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 3, text: 'Date', width: 75, dataIndex: 'postDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 4, text: 'Customer', width: 150, dataIndex: 'customer', defaultColumnFocus : true}),\r\n XCol.Create({ col: 5, text: 'Received From', width: 150, dataIndex: 'receivedFrom'}),\r\n XCol.Create({ col: 6, text: 'Type', width: 40, dataIndex: 'payment', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 7, text: 'Check #', width: 100, dataIndex: 'checkNo'}),\r\n XCol.Create({ col: 8, text: 'Bank', width: 120, dataIndex: 'bank'}),\r\n XCol.Create({ col: 9, text: 'CUR', width: 40, dataIndex: 'currency'}),\r\n XCol.Create({ col: 10, text: 'Amount', width: 100, dataIndex: 'amount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 11, text: 'Deposit Date', width: 75, dataIndex: 'depositDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 12, text: 'Batch #', width: 60, dataIndex: 'chkPrint'}),\r\n XCol.Create({ col: 13, text: 'Void', width: 40, dataIndex: 'void', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n // XCol.Create({ col: 14, text: 'Void Date', width: 75, dataIndex: 'voidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 15, text: 'Billings', width: 100, dataIndex: 'invoiceNo'}),\r\n XCol.Create({ col: 16, text: 'Remark', width: 150, dataIndex: 'remark'}),\r\n XCol.Create({ col: 17, text: 'Create Date', width: 100, dataIndex: 'u1Date', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 18, text: 'Create by', width: 100, dataIndex: 'u1ID'}),\r\n XCol.Create({ col: 19, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 20, text: 'Update by', width: 100, dataIndex: 'u2ID'}),\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CustomerPaymentListItem.prototype.postDate, orderByAscending: false };\r\n\r\n public static formatData(data: CustomerPaymentListItem[]) {\r\n return data.map((d: CustomerPaymentListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields:{[key: string]: {[key: string]: string}} = {\r\n postDate: {from: 'fromPostDate', to: 'toPostDate'},\r\n depositDate: {from: 'fromDepositDate', to: 'toDepositDate'},\r\n voidDate: {from: 'fromVoidDate', to: 'toVoidDate'},\r\n u1Date: {from: 'fromU1Date', to: 'toU1Date'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n amount: {from: 'fromAmount', to: 'toAmount'},\r\n }\r\n}\r\n","import React, {MutableRefObject, useContext, useEffect, useState, useRef} from 'react';\r\nimport {useTypedFastStorage} from '../../hooks/useFastStorage';\r\nimport SecondaryButton from \"../../ui/SecondaryButton\";\r\nimport {ApplicableTableSettings} from \"../../tableSettings\";\r\nimport SmartTable, { SmartTableHandle } from \"../../uiControls/SmartTable\";\r\n// import {historyViewPaymentMainDetailTable, historyViewPaymentBillingDetailTable, historyViewPaymentRevisionTable} from \"./tableSettings\";\r\nimport InlineInputControlRow from '../../ui/layout/InlineInputControlRow';\r\nimport TextBox from '../../ui/TextBox';\r\nimport IfmsDate from '../../ui/Date';\r\nimport Float from '../../ui/Float';\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport useGlobalOkDialog from '../../hooks/useGlobalOkDialog';\r\nimport { ApiResult } from '../../framework.core/data/ApiResult';\r\nimport { DateRenderer, DateTimeRenderer, FloatRenderer, NullableCheckboxIconRenderer, NumberedIndicatorRenderer, TextAlignLeftRenderer, TextRenderer } from '../../uiControls/SmartTableRenderers';\r\nimport useTableNavigation from '../../ui/tables/useTableNavigation';\r\nimport { PaymentHistViewModel } from '../../fms.core/PaymentHistViewModel';\r\nimport { FmsSubMenu } from '../../constants/fmsSubMenu';\r\nimport { historyViewPaymentDetailsTable, historyViewPaymentMainTable } from './tableSettings';\r\nimport RadioButton from '../../ui/RadioButton';\r\n\r\ninterface HistoryViewPaymentStorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\ninterface HistoryViewPaymentParams {\r\n onPopupClose?: () => void,\r\n jobId: number,\r\n jobType: string,\r\n};\r\n\r\ninterface HistoryViewPaymentLoadedParams {\r\n historyViewPayment: PaymentHistViewModel,\r\n historyViewPaymentRef: MutableRefObject,\r\n setHistoryViewPayment: (x: Partial) => void,\r\n jobType: string,\r\n onPopupClose?: () => void,\r\n};\r\n\r\nfunction getHistoryViewPaymentStorageKeys(): HistoryViewPaymentStorageKeys {\r\n return {modelStorage: 'common-history-payment-view'}\r\n}\r\n\r\nfunction HistoryViewPaymentImpl(params: HistoryViewPaymentParams) {\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const {modelStorage} = getHistoryViewPaymentStorageKeys();\r\n const {jobId, jobType, onPopupClose} = params;\r\n\r\n const [inStorage, setInStorage, removeFromStorage, storageRef] = useTypedFastStorage(modelStorage, null);\r\n\r\n useEffect(() => {\r\n initialize();\r\n return () => removeFromStorage()\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [jobId]\r\n );\r\n\r\n async function loadExisting(): Promise {\r\n const apiResult:ApiResult = await appContext.api.getPaymentHistory(jobId, jobType);\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(apiResult?.message || 'Cannot load data');\r\n if (onPopupClose) {\r\n onPopupClose();\r\n }\r\n }\r\n\r\n return apiResult.result;\r\n }\r\n\r\n async function initialize() {\r\n const data = await loadExisting();\r\n if (data) {\r\n setInStorage({...data});\r\n }\r\n }\r\n\r\n if (!inStorage) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction HistoryViewPaymentInitializedImpl({\r\n historyViewPayment,\r\n historyViewPaymentRef,\r\n setHistoryViewPayment,\r\n jobType,\r\n onPopupClose,\r\n}: HistoryViewPaymentLoadedParams) {\r\n const [selectedRow, setSelectedRow] = useState(historyViewPayment.detailList.length-1);\r\n const selectPaymentHist = historyViewPayment.histDetailList.filter(x => x.hdId === historyViewPayment.detailList[selectedRow].id);\r\n\r\n historyViewPayment.tempHistDetail = [];\r\n historyViewPayment.histDetailList.forEach(x=> {\r\n if (x.id === selectPaymentHist[0]?.id) {\r\n historyViewPayment.tempHistDetail.push(x);\r\n }\r\n });\r\n\r\n useTableNavigation('historyViewPaymentMainTable', setSelectedRow, setSelectedRow, [], false, true);\r\n\r\n const masterTableRef = useRef(null);\r\n\r\n function onMasterTableInitialized() {\r\n if (masterTableRef.current && jobType === FmsSubMenu.MPHistory) {\r\n masterTableRef.current.showColumn('custName', false, false);\r\n setTimeout(() => {\r\n if (masterTableRef.current) {\r\n masterTableRef.current.showColumn('draft', false, false);\r\n masterTableRef.current.resizeColumn('block', 40, false);\r\n }\r\n }, 20);\r\n }\r\n\r\n const focusElement = document.getElementById(`historyViewPaymentMainTable-row-${selectedRow}`) as HTMLInputElement ;\r\n if(focusElement){\r\n focusElement.scrollIntoView({behavior: 'smooth', block: 'end'});\r\n }\r\n }\r\n\r\n function getCustomerLabel(): string {\r\n if (jobType === FmsSubMenu.CPHistory) {\r\n return 'Customer';\r\n }\r\n if (jobType === FmsSubMenu.BPHistory) {\r\n return 'Vendor';\r\n }\r\n if (jobType === FmsSubMenu.MPHistory) {\r\n return 'Vendor';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n function getTotalLabel(): string {\r\n if (jobType === FmsSubMenu.CPHistory) {\r\n return 'Deposit Total';\r\n }\r\n if (jobType === FmsSubMenu.BPHistory) {\r\n return 'Payment Total';\r\n }\r\n if (jobType === FmsSubMenu.MPHistory) {\r\n return 'Payment Total';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n function getAmountLabel(): string {\r\n if (jobType === FmsSubMenu.CPHistory) {\r\n return 'Received Total';\r\n }\r\n if (jobType === FmsSubMenu.BPHistory) {\r\n return 'Paid Total';\r\n }\r\n if (jobType === FmsSubMenu.MPHistory) {\r\n return 'Paid Total';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n function getEntityLabel(): string {\r\n if (jobType === FmsSubMenu.CPHistory) {\r\n return 'Bank Entity';\r\n }\r\n if (jobType === FmsSubMenu.BPHistory) {\r\n return 'Bank Entity';\r\n }\r\n if (jobType === FmsSubMenu.MPHistory) {\r\n return 'Credit Card';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n function getReceivedFromLabel(): string {\r\n if (jobType === FmsSubMenu.CPHistory) {\r\n return 'Received From';\r\n }\r\n if (jobType === FmsSubMenu.BPHistory) {\r\n return 'Pay To';\r\n }\r\n if (jobType === FmsSubMenu.MPHistory) {\r\n return ''; // Not visible\r\n }\r\n\r\n return '';\r\n }\r\n\r\n function getRefNoLabel(): string {\r\n if (jobType === FmsSubMenu.CPHistory || jobType === FmsSubMenu.BPHistory) {\r\n if (historyViewPayment.checkNo) {\r\n return 'Check #';\r\n } else {\r\n return 'EFT Ref #';\r\n }\r\n }\r\n\r\n return 'Check #';\r\n }\r\n\r\n const mainTableOptions: ApplicableTableSettings = {\r\n ...historyViewPaymentMainTable,\r\n selectable: true,\r\n rowProps: (row: any) => ({onClick: () => setSelectedRow(row.index)}),\r\n selectedRowIndex: selectedRow,\r\n customTableId: 'historyViewPaymentMainTable',\r\n tableName: 'historyViewPaymentMainTable',\r\n data: historyViewPayment.detailList,\r\n rowRenderers: [\r\n { accessor: 'indicator', Cell: NumberedIndicatorRenderer },\r\n { accessor: 'historyDate', Cell: DateTimeRenderer },\r\n { accessor: 'historyUser', Cell: TextAlignLeftRenderer },\r\n { accessor: 'historyAction', Cell: TextRenderer },\r\n { accessor: 'cardBank', Cell: TextAlignLeftRenderer, Header: () => {getEntityLabel()} },\r\n { accessor: 'postDate', Cell: DateRenderer },\r\n { accessor: 'checkNo', Cell: TextAlignLeftRenderer, Header: () => {getRefNoLabel()} },\r\n { accessor: 'currency', Cell: TextRenderer },\r\n { accessor: 'exRate', Cell: (props: any) => },\r\n { accessor: 'block', Cell: NullableCheckboxIconRenderer },\r\n { accessor: 'draft', Cell: NullableCheckboxIconRenderer },\r\n { accessor: 'custName', Cell: TextAlignLeftRenderer, Header: () => {getReceivedFromLabel()} },\r\n { accessor: 'remark', Cell: TextAlignLeftRenderer },\r\n { accessor: 'totalAmount', Cell: FloatRenderer, Header: () => {getTotalLabel()} },\r\n ],\r\n };\r\n\r\n const paymentDetailTableOptions: ApplicableTableSettings = {\r\n ...historyViewPaymentDetailsTable,\r\n selectable: true,\r\n tableName: 'historyViewPaymentDetailsTable',\r\n // data: selectedRow >= 0 ? historyViewPayment.histDetailList.filter(x => x.hdId === historyViewPayment.detailList[selectedRow].id) : [],\r\n data: selectedRow >= 0 ? historyViewPayment.tempHistDetail : [],\r\n rowRenderers: [\r\n { accessor: 'indicator', Cell: NumberedIndicatorRenderer },\r\n {accessor: 'status', Cell: TextAlignLeftRenderer },\r\n {accessor: 'customer', Cell: TextAlignLeftRenderer, Header: () => {getCustomerLabel()} },\r\n {accessor: 'invoiceDate', Cell: DateRenderer },\r\n {accessor: 'invoiceNo', Cell: TextAlignLeftRenderer },\r\n {accessor: 'accountCode', Cell: TextRenderer },\r\n {accessor: 'description', Cell:TextAlignLeftRenderer },\r\n {accessor: 'amount', Cell: FloatRenderer, Header: () => {getAmountLabel()} },\r\n ],\r\n rowProps: (row:any) => {\r\n if (historyViewPayment.tempHistDetail[row.index].status === \"Original\") {\r\n return {\r\n style: {\r\n color: 'red'\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n {jobType !== FmsSubMenu.MPHistory\r\n ?\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n :\r\n \r\n }\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n {jobType === FmsSubMenu.MPHistory &&\r\n
\r\n \r\n \r\n \r\n
\r\n }\r\n
\r\n\r\n \r\n\r\n
\r\n {/*
*/}\r\n
\r\n Payment Detail\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n CLOSE\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nconst HistoryViewPayment = ({\r\n onPopupClose,\r\n jobId,\r\n jobType,\r\n}: { onPopupClose?: () => void, jobId: number, jobType: string }) => {\r\n /**\r\n * Implementation note:\r\n * key is important in this case in order to force full List view rerender for different parameters.\r\n */\r\n\r\n return (\r\n \r\n );\r\n};\r\nexport default HistoryViewPayment;\r\n","import React, {cloneElement, useContext, useEffect, useState} from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\nimport {ApplicableTableSettings, infoAreaBicTable, TableColumn, TableSettings} from \"../../../../tableSettings\";\r\nimport lockRed from '../../../../img/lock_red.png';\r\nimport AbstractListView, {\r\n DataFetchResult,ExportRowRenderer,ListCustomFilterRenderer,\r\n ListOrderBy,ListRowRenderer\r\n} from \"../../../common/AbstractListView\";\r\nimport constants from '../../../../constants';\r\nimport {Search} from \"../../../../filtering\";\r\nimport {NavigationType, openNewPage} from '../../../../util/navigationHelpers';\r\nimport {\r\n CurrencyAmountRenderer,DateRenderer,DateTimeRenderer,\r\n NullableCheckboxIconRenderer,TextAlignLeftRenderer,TextRenderer\r\n} from '../../../../uiControls/SmartTableRenderers';\r\nimport useGlobalYesNoDialog from '../../../../hooks/useGlobalYesNoDialog';\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport JobListViewContext, { RightClickContext } from '../../../common/JobListViewContext';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\nimport { ActionButtonItem, borderColors, splitMenuItemsIntoSections } from '../../../../ui/ActionButton';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\nimport useReportViewer from '../../../../hooks/useReportViewer';\r\nimport PrimaryButton from '../../../../ui/PrimaryButton';\r\nimport InfoAreaDrawer from '../../../../uiControls/infoArea/InfoAreaDrawer';\r\nimport CurrencyLabel from '../../../../uiControls/CurrencyLabel';\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\nimport {JobNames} from \"../../../../framework.core/JobNames\";\r\nimport { DocumentType } from \"../../../../framework.core/DocumentType\";\r\nimport {customerPaymentList} from \"../../tableSettings\";\r\nimport UniqueLinkButton from \"../../../../uiControls/UniqueLinkButton\";\r\nimport {faPlus} from \"@fortawesome/free-solid-svg-icons/faPlus\";\r\nimport {CustomerPaymentListItem} from \"../../../../fms.data/models/CustomerPaymentListItem\";\r\nimport ListViewShortcutMenu from '../../../common/ListViewShortcutMenu';\r\nimport ToolboxMenuItem from '../../../../uiControls/ToolboxMenuItem';\r\nimport Menu, { IfmsMenuItem } from '../../../../ui/menu/Menu';\r\nimport JobListSuntekCommand from '../../../common/JobListSuntekCommand';\r\nimport { StatusNotUseFileLockedRenderer } from '../../../common/commonListRenderers';\r\nimport HistoryViewPayment from '../../../reports/HistoryViewPayment';\r\nimport DeleteHistoryPaymentView from '../../../reports/DeleteHistoryPaymentView';\r\nimport IfmsModal from '../../../../ui/IfmsModal';\r\nimport { FmsSubMenu } from '../../../../constants/fmsSubMenu';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport { CheckSubArgs } from '../../../../fms.report/args';\r\nimport { findSecurityTask, getSecBySecTask } from '../../../../util';\r\nimport useSuntekSettings from '../../../../hooks/useSuntekSettings';\r\nimport { useJournal } from '../../general/journal/JournalListView';\r\nimport { formatDate, nowDate } from '../../../../dateUtils';\r\nimport CustomerBalanceDetails from '../../../reports/AccountBalance';\r\nimport { SecType } from '../../../../fms.enum';\r\nimport { CurrencyAmountValue, nullableCheckBoxValue } from '../../../common/commonExportFormat';\r\n\r\nfunction IndicatorRenderer({ data, row }: any) {\r\n const l = data[row.index];\r\n let dataTooltip = '';\r\n const lStatus = (l as any).status as string;\r\n if (lStatus === 'PC') dataTooltip = 'Period Close';\r\n\r\n // function onIndicatorClick() {\r\n // if (jobListContext.rowExtrasId) {\r\n // return; // Some row is already selected\r\n // }\r\n\r\n // jobListContext.setRowExtrasId(data[row.index].id);\r\n // }\r\n\r\n let content: React.ReactNode = <>;\r\n if (lStatus === 'PC')\r\n content = \"\";\r\n\r\n return (\r\n //
{content}
\r\n
{content}
\r\n );\r\n}\r\n\r\nfunction VoidDateRenderer({cell, row}:any) {\r\n return (\r\n
\r\n {formatDate(cell.value)}\r\n
\r\n );\r\n}\r\n\r\nfunction TypeRenderer({ cell ,data, row}:any) {\r\n const l = data[row.index];\r\n let dataTooltip = '';\r\n const lPayment = (l as any).payment as string;\r\n if (lPayment === 'C') dataTooltip = 'CHECK';\r\n else if( lPayment === 'E') dataTooltip = 'EFT';\r\n else if( lPayment === 'A') dataTooltip = 'ACH';\r\n else if( lPayment === 'O') dataTooltip = 'OFFSET';\r\n\r\n return (\r\n
{cell.value}
\r\n );\r\n}\r\n\r\nfunction CurrencyRenderer(value: number | null | undefined, currency: string, isLast: boolean = false) {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction AccountingEntityRenderer(onLinkToAccounting: any, {data, row, value}: any) {\r\n const entity = data[row.index];\r\n\r\n return
\r\n \r\n  \r\n
;\r\n}\r\n\r\nfunction useSelectedOperations() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const appContext = useContext(ApplicationContext);\r\n const history = useHistory();\r\n\r\n const selectedElement = jobListContext.selectedElement as CustomerPaymentListItem;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n\r\n async function create() {\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/accounting/acCustomerPayment/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n\r\n openNewPage(history, '/accounting/acCustomerPayment/add', NavigationType.newPage);\r\n }\r\n\r\n async function deleteItem() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (\r\n jobListContext.hasOpenedScreenStartingWithUrl(`/accounting/acCustomerPayment/edit/${selectedElement.id}`) || \r\n jobListContext.hasOpenedScreenStartingWithUrl(`/accounting/acCustomerPayment/view/${selectedElement.id}`)\r\n ) {\r\n await showGlobalOkDialog('Need to close Customer Payment first', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n if (!selectedElement.isDraft) {\r\n await showGlobalOkDialog('Can delete the Draft Payment', false, null, \"warning\");\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(\r\n
\r\n

Confirm to Delete?

\r\n
\r\n , false, 0, true, 'warning');\r\n\r\n if (doDelete) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.CustPayment, { id: selectedElement.id });\r\n if (apiResult && apiResult.success) {\r\n jobListContext.reloadData();\r\n } else {\r\n const message = apiResult?.message ?? 'Cannot delete!';\r\n await showGlobalOkDialog(message);\r\n }\r\n }\r\n }\r\n\r\n async function edit() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/accounting/acCustomerPayment/edit/${id}`;\r\n const viewUrl = `/accounting/acCustomerPayment/view/${id}`;\r\n if (jobListContext.hasOpenedScreenStartingWithUrlWithoutMe('/accounting/acCustomerPayment/edit', editUrl)) {\r\n await showGlobalOkDialog(

Edit operation is already in progress

);\r\n return;\r\n }\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(editUrl, [editUrl, viewUrl]);\r\n }\r\n\r\n async function view() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const editUrl = `/accounting/acCustomerPayment/edit/${id}`;\r\n const viewUrl = `/accounting/acCustomerPayment/view/${id}`;\r\n const listSec = findSecurityTask(appContext, FmsSecTask.AcctCustPayment);\r\n const urls = [viewUrl];\r\n if(listSec?.grantEdit) urls.push(editUrl)\r\n\r\n jobListContext.moveToOpenedScreenInAnyOperationStartingWithUrl(viewUrl, urls);\r\n }\r\n\r\n async function copy() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (jobListContext.hasOpenedScreenStartingWithUrl('/accounting/acCustomerPayment/add')) {\r\n await showGlobalOkDialog(

New operation is already in progress

);\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n openNewPage(history, `/accounting/acCustomerPayment/add?copyId=${id}`, NavigationType.newPage);\r\n }\r\n\r\n async function moveToDeleteHistoryReport() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const id = selectedElement.id;\r\n const viewUrl = `/common/deleteHistory?jobname=${JobNames.CustPayment}&id=${id}`;\r\n \r\n openNewPage(history, viewUrl, NavigationType.newPage);\r\n }\r\n\r\n return {create, deleteItem: deleteItem, edit, view, copy, moveToDeleteHistoryReport};\r\n}\r\n\r\nfunction RightClickMenu({dismiss}:{dismiss: VoidFunction}) {\r\n const { create, deleteItem, edit, view } = useSelectedOperations();\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const appContext = useContext(ApplicationContext);\r\n \r\n const listSec = findSecurityTask(appContext, FmsSecTask.AcctCustPayment);\r\n\r\n const items = [\r\n { label: 'New', shortcut: 'F2', separator: false, hidden: !listSec?.grantAdd },\r\n { label: 'View', shortcut: 'F9', separator: !listSec?.grantEdit && !listSec?.grantDel },\r\n { label: 'Edit', shortcut: 'F3', separator: !listSec?.grantDel, hidden: !listSec?.grantEdit },\r\n { label: 'Delete', shortcut: '', separator: true, hidden: !listSec?.grantDel },\r\n { label: 'Search', shortcut: 'F5', separator: false },\r\n { label: constants.Doc_Server, shortcut: 'F8', separator: true, newCol: true },\r\n ];\r\n\r\n const menuItems: ActionButtonItem[] = items.map((i, index) =>({\r\n label: ,\r\n separator: i.separator,\r\n selected: false,\r\n newCol: i.newCol,\r\n index,\r\n hidden: i?.hidden ?? false,\r\n }));\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n switch (item.index) {\r\n case 0:\r\n create();\r\n break;\r\n case 1:\r\n view();\r\n break;\r\n case 2:\r\n edit(); \r\n break;\r\n case 3:\r\n // deleteItem();\r\n edit();\r\n break;\r\n case 4:\r\n jobListContext.triggerTableSearch('F5');\r\n break;\r\n case 5:\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n break;\r\n default:\r\n break;\r\n }\r\n dismiss();\r\n }\r\n\r\n return (\r\n ({\r\n maxHeight: '300px',\r\n overflowY: 'hidden',\r\n padding: 0,\r\n borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n paddingTop: 10,\r\n })}\r\n dismiss={dismiss}\r\n />\r\n );\r\n}\r\n\r\nfunction TrancationImpactButtonCommands({ userId } : {userId: string}) {\r\n const jobListContext = useContext(JobListViewContext);\r\n const selectedElement = jobListContext.selectedElement as CustomerPaymentListItem;\r\n const {switchJournal} = useJournal();\r\n const suntekSettings = useSuntekSettings();\r\n \r\n if (!suntekSettings.general?.allowViewJournalPayment && !userId.startsWith('@')) {\r\n return null;\r\n }\r\n\r\n return (\r\n switchJournal(JobNames.CustPayment, selectedElement.id)}>\r\n {constants.List_Journal}\r\n \r\n );\r\n}\r\n\r\nfunction ListCommands() {\r\n const jobListContext = useContext(JobListViewContext);\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const selectedElement = jobListContext.selectedElement as CustomerPaymentListItem;\r\n\r\n const {deleteItem, edit, view, moveToDeleteHistoryReport, /*copy*/ } = useSelectedOperations();\r\n const appContext = useContext(ApplicationContext);\r\n const { viewReport } = useReportViewer();\r\n\r\n function hasOpenedViewOrEditFor(id: number) {\r\n return jobListContext.hasOpenedScreenStartingWithUrl(`/accounting/acCustomerPayment/edit/${id}`) || jobListContext.hasOpenedScreenStartingWithUrl(`/accounting/acCustomerPayment/view/${id}`);\r\n }\r\n \r\n const onPopupClose = () => {\r\n setSelectedPopupMenuItem(null);\r\n }\r\n\r\n async function print() {\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n const title = `Deposit Slip [${selectedElement?.checkNo}]`;\r\n const args = new CheckSubArgs({\r\n docType: DocumentType.CheckSub,\r\n formCaption: title,\r\n subject: title,\r\n\r\n tbId: selectedElement?.id.toString() ?? '',\r\n tbName: \"T_DEPOHD\"\r\n });\r\n\r\n viewReport(args, \"\", true);\r\n }\r\n\r\n async function customerBalance() {\r\n if (selectedElement.customerId <= 0) {\r\n await showGlobalOkDialog(

You didn't enter Customer.

, false, null, 'warning');\r\n return;\r\n }\r\n setSelectedPopupMenuItem({\r\n label: 'Balance',\r\n popupWidth: 780,\r\n popupComponent:\r\n \r\n })\r\n }\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.AcctCustPayment);\r\n const readSecDelHistory = getSecBySecTask(appContext, FmsSecTask.AcctCPayDeleteHistory, SecType.Read);\r\n\r\n const hasSelectedRow = !!selectedElement;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n const canBeAdd = listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n\r\n return (\r\n
\r\n
\r\n  \r\n View \r\n Edit \r\n Delete\r\n
\r\n
\r\n setSelectedPopupMenuItem({ label: 'View History', popupWidth: 1240, popupComponent: })}>View History \r\n { readSecDelHistory && <>Delete History  }\r\n Balance\r\n
\r\n
\r\n Print Deposit Slip\r\n
\r\n {!!selectedPopupMenuItem && !!selectedPopupMenuItem.popupComponent ? (\r\n \r\n {cloneElement(selectedPopupMenuItem.popupComponent!, {onPopupClose})}\r\n \r\n ) : null}\r\n
\r\n );\r\n}\r\n\r\nfunction ListToolbar() {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n}\r\n\r\nfunction ListViewExtras() {\r\n useFunctionKeys({onFunction: onFunctionKey});\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.AcctCustPayment);\r\n const history = useHistory();\r\n\r\n const {create, edit, view} = useSelectedOperations();\r\n\r\n const [unprocessedFkey, setUnprocessedFkey] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!unprocessedFkey) {\r\n return;\r\n }\r\n\r\n doProcessFkey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [unprocessedFkey]\r\n );\r\n\r\n function doProcessFkey() {\r\n if (unprocessedFkey === 'F6') {\r\n\r\n } else if (unprocessedFkey === \"F2\") {\r\n if(listSec?.grantAdd)\r\n create();\r\n } else if (unprocessedFkey === \"F3\") {\r\n if(listSec?.grantEdit)\r\n edit();\r\n } else if (unprocessedFkey === \"F9\") {\r\n view();\r\n } else if (unprocessedFkey === \"F11\") {\r\n jobListContext.reloadData();\r\n } else if (unprocessedFkey === \"F8\") {\r\n jobListContext.setInfoAreaContent(jobListContext.infoAreaContent === 'memo' ? 'none' : 'memo');;\r\n }\r\n\r\n setUnprocessedFkey(null);\r\n }\r\n\r\n function onFunctionKey(fkey: string) {\r\n if (['F6', 'F2', 'F3', 'F9', 'F11', 'F8'].indexOf(fkey) >= 0) {\r\n setUnprocessedFkey(fkey);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function onLinkToAccounting(entity: any) {\r\n if (!entity || !entity.category || !entity.number) {\r\n return;\r\n }\r\n\r\n if (entity.category === 'Bill') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/bill/accounting', 'billNo', 'Bill #', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/bill/accounting`, NavigationType.newPage);\r\n }\r\n if (entity.category === 'Invoice') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/invoice/accounting', 'invoiceNo', 'Invoice #', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/invoice/accounting`, NavigationType.newPage);\r\n }\r\n if (entity.category === 'CrDb') {\r\n jobListContext.setFilterForScreenExternally('/common/joblistview/crdb/accounting', 'crdbNo', 'CrDb #', entity.number, 'updated', false, true);\r\n openNewPage(history, `/common/joblistview/crdb/accounting`, NavigationType.newPage);\r\n }\r\n }\r\n\r\n async function loadInfoAreaInvoiceBillCrDb(id: string) {\r\n const apiResult = await appContext.api.getOceanImportMblInfoAreaBics(id);\r\n if (!apiResult) {\r\n return null;\r\n }\r\n\r\n const tableOptions: ApplicableTableSettings = {\r\n tableName: 'infoAreaBicTable',\r\n ...infoAreaBicTable,\r\n data: apiResult,\r\n \r\n rowRenderers: [\r\n {accessor: 'date', Cell: TextRenderer},\r\n {accessor: 'category', Cell: TextRenderer},\r\n // @ts-ignore:next-line\r\n {accessor: 'number', Cell: AccountingEntityRenderer.bind(this, onLinkToAccounting)},\r\n {accessor: 'companyName', Cell: TextAlignLeftRenderer},\r\n {accessor: 'cur', Cell: TextRenderer},\r\n // @ts-ignore:next-line\r\n {accessor: 'amount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.amount, cell.row.values.cur)},\r\n // @ts-ignore:next-line\r\n {accessor: 'paidAmount', Cell: ({cell}) => CurrencyRenderer(cell.row.values.paidAmount, cell.row.values.cur)},\r\n // @ts-ignore:next-line\r\n {accessor: 'balance', Header: () =>
Balance
, Cell: ({cell}) => CurrencyRenderer(cell.row.values.balance, cell.row.values.cur, true)},\r\n ],\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n jobListContext.setInfoAreaContent('none')}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Concrete implementation for Customer Payment List screen\r\n *\r\n * @class ListView\r\n * @extends {AbstractListView}\r\n */\r\nclass ListView extends AbstractListView {\r\n async fetchAndFormatData(api: any, search: Search): Promise {\r\n const apiResult = await api.getListItems(\r\n JobNames.CustPayment,\r\n 'CustomerPaymentListItem',\r\n CustomerPaymentListItem.calculateSearchParameters(search, CustomerPaymentListItem.MapSearchFields),\r\n 1,\r\n search.pageSize,\r\n );\r\n\r\n if (!apiResult || !apiResult.entities || apiResult.entities.length <= 0) {\r\n return {data: [], totalCount: 0};\r\n }\r\n\r\n return {data: CustomerPaymentListItem.formatData(apiResult.entities), totalCount: apiResult.totalCount};\r\n }\r\n\r\n getCustomFilterRenderers(): ListCustomFilterRenderer[] {\r\n return [\r\n {\r\n accessor: 'statusNotUseFileLocked',\r\n renderer: StatusNotUseFileLockedRenderer,\r\n searchValueExtractor: (v:any|null|undefined) => v,\r\n },\r\n ];\r\n }\r\n\r\n getInfoAreaEntityId() {\r\n return constants.infoAreaEntity.oceanImportMbl;\r\n }\r\n\r\n getRowRenderers(): ListRowRenderer[] {\r\n return [\r\n {accessor: 'status', Cell: IndicatorRenderer},\r\n {accessor: 'isDraft', Cell: NullableCheckboxIconRenderer},\r\n {accessor: 'block', Cell: NullableCheckboxIconRenderer},\r\n {accessor: 'void', Cell: NullableCheckboxIconRenderer, Header: () =>
V
},\r\n {accessor: 'customer', Cell: TextAlignLeftRenderer},\r\n {accessor: 'receivedFrom', Cell: TextAlignLeftRenderer},\r\n {accessor: 'payment', Cell: TypeRenderer},\r\n {accessor: 'checkNo', Cell: TextAlignLeftRenderer},\r\n {accessor: 'bank', Cell: TextAlignLeftRenderer},\r\n {accessor: 'currency', Cell: TextRenderer},\r\n {accessor: 'amount', Cell: (props:any) => x.currency} {...props} />},\r\n {accessor: 'chkPrint', Cell: TextRenderer},\r\n {accessor: 'invoiceNo', Cell: TextAlignLeftRenderer},\r\n {accessor: 'invBillCrdb', Cell: TextAlignLeftRenderer},\r\n {accessor: 'remark', Cell: TextAlignLeftRenderer},\r\n {accessor: 'u1ID', Cell: TextAlignLeftRenderer},\r\n {accessor: 'u2ID', Cell: TextAlignLeftRenderer},\r\n\r\n {accessor: 'postDate', Cell: DateRenderer},\r\n {accessor: 'depositDate', Cell: DateRenderer},\r\n // {accessor: 'voidDate', Cell: VoidDateRenderer},\r\n {accessor: 'u2Date', Cell: DateTimeRenderer},\r\n {accessor: 'u1Date', Cell: DateTimeRenderer},\r\n ];\r\n }\r\n \r\n getExportRenderers(): ExportRowRenderer[] {\r\n const colRenderer = [];\r\n colRenderer.push({accessor: 'status', changedValue: (value: any)=> { return value['status'] === 'PC' ? 'Period Close' : ''}});\r\n colRenderer.push({accessor: 'isDraft', changedValue: (value: any)=> { return nullableCheckBoxValue(value['isDraft'])}});\r\n colRenderer.push({accessor: 'block', changedValue: (value: any)=> { return nullableCheckBoxValue(value['block'])}});\r\n colRenderer.push({accessor: 'void', changedValue: (value: any)=> { return nullableCheckBoxValue(value['void'])}});\r\n colRenderer.push({accessor: 'amount', changedValue: (value: any)=> { return CurrencyAmountValue(value['currency'], value['amount'])}});\r\n return colRenderer;\r\n }\r\n\r\n getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'u2Date',\r\n orderByAscending: false,\r\n };\r\n }\r\n\r\n getTableSettings(): TableSettings {\r\n const tsettings = customerPaymentList;\r\n const cols = CustomerPaymentListItem.getExportCollection();\r\n tsettings.columns = cols.map(x => {\r\n return { ...x, accessor: x.dataIndex, Header: x.text, filterType: undefined, filterTypeV2: x.type};\r\n });\r\n return tsettings;\r\n }\r\n\r\n renderCommands() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderBeforeConfigureButton() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderExtras() {\r\n return \r\n }\r\n\r\n getViewUrlFor(row: CustomerPaymentListItem) {\r\n return row && row.id ? `/accounting/acCustomerPayment/view/${row.id}` : '';\r\n }\r\n\r\n getListViewTitle() {\r\n return 'Customer Pay List';\r\n };\r\n\r\n renderAdditionalCommands() {\r\n return ;\r\n }\r\n\r\n hasRightClickContext(): boolean {\r\n return true;\r\n }\r\n\r\n renderRightClickContext(context: RightClickContext, dismiss: VoidFunction): React.ReactNode {\r\n return ;\r\n }\r\n\r\n transactionImpactBtn(userId: string): React.ReactNode {\r\n return \r\n }\r\n}\r\n\r\nexport default ListView;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CustomerPaymentMemoListItem extends SearchModelBase {\r\n customerName: string = '';\r\n currency: string = '';\r\n contact: string = '';\r\n phone: string = '';\r\n followUp: string | null = null;\r\n fromFollowUp: string | null = null;\r\n toFollowUp: string | null = null;\r\n lastPaidAmt: number|null = null;\r\n fromLastPaidAmt: number|null = null;\r\n toLastPaidAmt: number|null = null;\r\n terms: number|null = null;\r\n toTerms: number|null = null;\r\n fromTerms: number|null = null;\r\n avgAging: number|null = null;\r\n toAvgAging: number|null = null;\r\n fromAvgAging: number|null = null;\r\n curCnt: number|null = null;\r\n toCurCnt: number|null = null;\r\n fromCurCnt: number|null = null;\r\n pastDueCnt: number|null = null;\r\n toPastDueCnt: number|null = null;\r\n fromPastDueCnt: number|null = null;\r\n checkNo: string = '';\r\n lastPaidDate: string | null = null;\r\n fromLastPaidDate: string | null = null;\r\n toLastPaidDate: string | null = null;\r\n salesRep: string = '';\r\n groupId: string = '';\r\n currentBal: number|null = null;\r\n fromCurrentBal: number|null = null;\r\n toCurrentBal: number|null = null;\r\n pastDue: number|null = null;\r\n fromPastDue: number|null = null;\r\n toPastDue: number|null = null;\r\n days15: number|null = null;\r\n fromDays15: number|null = null;\r\n toDays15: number|null = null;\r\n days30: number|null = null;\r\n fromDays30: number|null = null;\r\n toDays30: number|null = null;\r\n days45: number|null = null;\r\n fromDays45: number|null = null;\r\n toDays45: number|null = null;\r\n days60: number|null = null;\r\n fromDays60: number|null = null;\r\n toDays60: number|null = null;\r\n days90: number|null = null;\r\n fromDays90: number|null = null;\r\n toDays90: number|null = null;\r\n over90: number|null = null;\r\n fromOver90: number|null = null;\r\n toOver90: number|null = null;\r\n balance: number|null = null;\r\n fromBalance: number|null = null;\r\n toBalance: number|null = null;\r\n memo: string = '';\r\n id: number = 0;\r\n idAndCurrency: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Customer', width: 200, dataIndex: 'customerName', defaultColumnFocus : true}),\r\n XCol.Create({ col: 1, text: 'Contact', width: 150, dataIndex: 'contact'}),\r\n XCol.Create({ col: 2, text: 'Phone', width: 150, dataIndex: 'phone'}),\r\n XCol.Create({ col: 3, text: 'Followup Date', width: 75, dataIndex: 'followUp', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 4, text: 'CUR', width: 40, dataIndex: 'currency'}),\r\n XCol.Create({ col: 5, text: 'Last Paid Amount', width: 100, dataIndex: 'lastPaidAmt', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 6, text: 'Check #', width: 100, dataIndex: 'checkNo'}),\r\n XCol.Create({ col: 7, text: 'Paid Date', width: 75, dataIndex: 'lastPaidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 8, text: 'Sales Rep', width: 95, dataIndex: 'salesRep'}),\r\n XCol.Create({ col: 9, text: 'Group', width: 60, dataIndex: 'groupId'}),\r\n XCol.Create({ col: 10, text: 'Terms', width: 60, dataIndex: 'terms', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 11, text: 'Avg Aging', width: 80, dataIndex: 'avgAging', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 12, text: 'Current Balance', width: 100, dataIndex: 'currentBal', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 13, text: 'Current Count', width: 70, dataIndex: 'curCnt', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 14, text: 'Past Due Amount', width: 90, dataIndex: 'pastDue', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 15, text: 'Past Due Count', width: 90, dataIndex: 'pastDueCnt', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 16, text: '15 Days', width: 80, dataIndex: 'days15', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 17, text: '30 Days', width: 80, dataIndex: 'days30', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 18, text: '45 Days', width: 80, dataIndex: 'days45', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 19, text: '60 Days ', width: 80, dataIndex: 'days60', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 20, text: '90 Days', width: 80, dataIndex: 'days90', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 21, text: 'Over', width: 80, dataIndex: 'over90', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 22, text: 'Total Balance ', width: 80, dataIndex: 'balance', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 23, text: 'Last Memo Title', width: 300, dataIndex: 'memo'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CustomerPaymentMemoListItem.prototype.customerName, orderByAscending: true };\r\n\r\n public static formatData(data: CustomerPaymentMemoListItem[]) {\r\n return data.map((d: CustomerPaymentMemoListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n public static MapSearchFields:{[key: string]: {[key: string]: string}} = {\r\n followUp: {from: 'fromFollowUp', to: 'toFollowUp'},\r\n lastPaidAmt: {from: 'fromLastPaidAmt', to: 'toLastPaidAmt'},\r\n lastPaidDate: {from: 'fromLastPaidDate', to: 'toLastPaidDate'},\r\n currentBal: {from: 'fromCurrentBal', to: 'toCurrentBal'},\r\n pastDue: {from: 'fromPastDue', to: 'toPastDue'},\r\n terms: {from: 'fromTerms', to: 'toTerms'},\r\n avgAging: {from: 'fromAvgAging', to: 'toAvgAging'},\r\n curCnt: {from: 'fromCurCnt', to: 'toCurCnt'},\r\n pastDueCnt: {from: 'fromPastDueCnt', to: 'toPastDueCnt'},\r\n days15: {from: 'fromDays15', to: 'toDays15'},\r\n days30: {from: 'fromDays30', to: 'toDays30'},\r\n days45: {from: 'fromDays45', to: 'toDays45'},\r\n days60: {from: 'fromDays60', to: 'toDays60'},\r\n days90: {from: 'fromDays90', to: 'toDays90'},\r\n over90: {from: 'fromOver90', to: 'toOver90'},\r\n balance: {from: 'fromBalance', to: 'toBalance'},\r\n }\r\n}\r\n","import {BatchStatementDetail} from './BatchStatementDetail';\r\n\r\nexport class BatchStatementHd {\r\n overDue: string = '';\r\n excludeZeroTerm: boolean = false;\r\n emailSubject: string = '';\r\n emailBody: string = '';\r\n bccToMe: boolean = false;\r\n bccEmail: string = '';\r\n attachInvoices: boolean = false;\r\n detailList: BatchStatementDetail[] = [];\r\n invoiceDateFrom: string | null = null;\r\n invoiceDateTo: string | null = null;\r\n workWith: string = '';\r\n\r\n constructor(init?:Partial) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n","import _ from \"lodash\";\r\nimport React, { MutableRefObject, useContext, useEffect, useRef } from \"react\";\r\nimport postal from 'postal';\r\nimport { Portal } from 'react-portal';\r\n\r\nimport CheckBox from \"../../../../../ui/CheckBox\";\r\nimport CheckBoxUncontrolled from '../../../../../ui/CheckBoxUncontrolled';\r\nimport DangerButton from '../../../../../ui/DangerButton';\r\nimport GreenButton from \"../../../../../ui/GreenButton\";\r\nimport TextBox from \"../../../../../ui/TextBox\";\r\nimport InlineInputControlRow from \"../../../../../ui/layout/InlineInputControlRow\";\r\nimport Label from \"../../../../../ui/Label\";\r\nimport MultilineTextBox from \"../../../../../ui/MultilineTextBox\";\r\nimport PrimaryButton from '../../../../../ui/PrimaryButton';\r\nimport SecondaryButton from \"../../../../../ui/SecondaryButton\";\r\nimport Select from \"../../../../../ui/Select\";\r\nimport SmartTable from \"../../../../../uiControls/SmartTable\";\r\nimport { NumberedIndicatorRenderer, TextAlignLeftRenderer, FloatRenderer, TextRenderer, DateRenderer, NullableCheckboxIconRenderer, BlueTextRenderer } from \"../../../../../uiControls/SmartTableRenderers\";\r\n\r\nimport useGlobalOkDialog from \"../../../../../hooks/useGlobalOkDialog\";\r\nimport useReportViewer from '../../../../../hooks/useReportViewer';\r\nimport { ApplicableTableSettings } from \"../../../../../tableSettings\";\r\nimport { formatDate, now, getDate } from '../../../../../dateUtils';\r\nimport { batchStatementProcessingTable } from \"../../../../reports/tableSettings\";\r\nimport { useTypedFastStorage } from \"../../../../../hooks/useFastStorage\";\r\n\r\nimport ApplicationContext, {IApplicationContext} from \"../../../../../ApplicationContext\";\r\nimport { BatchStatementDetail } from \"../../../../../fms.core/BatchStatementDetail\";\r\nimport { BatchStatementHd } from \"../../../../../fms.core/BatchStatementHd\";\r\nimport { DocumentType } from \"../../../../../framework.core/DocumentType\";\r\nimport { JobNames } from \"../../../../../framework.core/JobNames\";\r\nimport { LocalStatementArgs } from '../../../../../fms.report/args';\r\nimport { focusTabableByIndex } from \"../../../../../util/inputUtils\";\r\n\r\ninterface BatchStatementStorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\ninterface BatchStatementViewParams {\r\n id: string | undefined,\r\n onPopupClose?: () => void,\r\n jobName: JobNames,\r\n};\r\n\r\ninterface BatchStatementLoadedDetailsViewParams {\r\n batchStatement: BatchStatementHd,\r\n batchStatementRef: MutableRefObject,\r\n setBatchStatement: (x: Partial) => void,\r\n onPopupClose?: () => void,\r\n jobName: JobNames,\r\n tbId: string | undefined,\r\n appContext: IApplicationContext,\r\n loadList: () => void\r\n};\r\n\r\nconst ProgressDialogStyle:React.CSSProperties = {\r\n position: 'fixed',\r\n inset: '0px',\r\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\r\n zIndex: 9999999,\r\n display: 'none',\r\n};\r\n\r\nconst ProgressDialogContainerStyle:React.CSSProperties = {\r\n position: 'absolute',\r\n inset: '50% auto auto 50%',\r\n border: '1px solid rgb(204, 204, 204)',\r\n background: 'rgb(255, 255, 255)',\r\n overflow: 'auto',\r\n borderRadius: '4px',\r\n outline: 'none',\r\n padding: '20px',\r\n marginRight: '-50%',\r\n transform: 'translate(-50%, -50%)',\r\n zIndex: 9999999,\r\n};\r\n\r\nconst actualDate = ['90+ days', '60+ days', '45+ days', '30+ days', '15+ days', 'ALL',\r\n'61 ~ 90 days', '46 ~ 60 days', '31 ~ 45 days', '16 ~ 30 days', '1 ~ 15 days'];\r\n\r\nfunction getBatchStatementStorageKeys(jobName: JobNames): BatchStatementStorageKeys {\r\n return {modelStorage: `bill-payment-bank-edi-${jobName}`}\r\n}\r\n\r\nfunction SelectRenderer({data, row}: any) {\r\n const toggleSelection = data[row.index].toggleSelection;\r\n const isView = !data[row.index].useEmail;\r\n\r\n return (\r\n
\r\n {!isView ?\r\n toggleSelection(row.index)} disabled={isView} />\r\n :\r\n \r\n }\r\n
\r\n );\r\n}\r\n\r\nfunction ActionRenderer({data, row, cell}: any) {\r\n const previewReport = data[row.index].previewReport;\r\n const rowData = data[row.index];\r\n\r\n return previewReport(rowData)} />\r\n}\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nfunction BatchStatementImpl(params: BatchStatementViewParams) {\r\n const {jobName, id} = params;\r\n const {modelStorage} = getBatchStatementStorageKeys(jobName);\r\n const appContext = useContext(ApplicationContext);\r\n const [inStorage, setInStorage, , inStorageRef] = useTypedFastStorage(modelStorage, null);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const channel = postal.channel('ifms');\r\n\r\n useEffect(() => {\r\n initialize();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n async function loadExisting(): Promise {\r\n const currentDate = getDate(now());\r\n\r\n return new BatchStatementHd({\r\n overDue: actualDate[0],\r\n invoiceDateTo: currentDate,\r\n workWith:'E',\r\n emailSubject: `Statement for $$CUST$$ on ${formatDate(currentDate)}`,\r\n bccToMe: true,\r\n bccEmail: \"\" + (appContext && appContext.user ? appContext.user.email : \"\"),\r\n attachInvoices: true,\r\n detailList: []\r\n });\r\n }\r\n \r\n async function loadList() {\r\n const apiResult = await appContext.api.readStatementData(inStorage?.overDue, inStorage?.excludeZeroTerm, inStorage?.invoiceDateFrom, inStorage?.invoiceDateTo);\r\n\r\n if (!apiResult) return;\r\n\r\n if(apiResult.length === 0) {\r\n await showGlobalOkDialog(

There is no line item.

);\r\n setInStorage({detailList: []})\r\n return;\r\n }\r\n\r\n const detailList: BatchStatementDetail[] = apiResult as BatchStatementDetail[];\r\n\r\n setInStorage({detailList: detailList});\r\n\r\n // Clear selection if thers is a previous selection.\r\n for (let i = 0; i < detailList.length; i++) {\r\n if (detailList[i].useEmail) {\r\n channel.publish('ifms.chk-uncontrolled', {id: `item-chk-${i}`, value: false});\r\n }\r\n }\r\n }\r\n\r\n async function initialize() {\r\n const data = await loadExisting();\r\n setInStorage({...data})\r\n }\r\n\r\n if (!inStorage) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nfunction BatchStatementInitializedImpl({\r\n batchStatement, batchStatementRef, setBatchStatement, onPopupClose,\r\n jobName, tbId, appContext, loadList\r\n}: BatchStatementLoadedDetailsViewParams) {\r\n\r\n const progressRef = useRef(false);\r\n const { viewReport } = useReportViewer();\r\n const channel = postal.channel('ifms');\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n useEffect(() => {\r\n focusTabableByIndex(0);\r\n }, []);\r\n\r\n function onChange(change: Partial) {\r\n setBatchStatement(change);\r\n }\r\n\r\n function selectAll() {\r\n if (!batchStatement.detailList || batchStatement.detailList.length <= 0) return;\r\n\r\n for (let i = 0; i < batchStatement.detailList.length; ++i) {\r\n if (batchStatement.detailList[i].useEmail) {\r\n batchStatement.detailList[i].select = !isDeselectAll;\r\n channel.publish('ifms.chk-uncontrolled', {id: `item-chk-${i}`, value: !isDeselectAll});\r\n }\r\n }\r\n\r\n onChange({detailList: batchStatement.detailList});\r\n }\r\n\r\n function toggleSelection(i: number) {\r\n const _list = _.cloneDeep(batchStatement.detailList);\r\n if (_list[i].useEmail) {\r\n _list[i].select = !_list[i].select;\r\n setBatchStatement({detailList: _list});\r\n }\r\n }\r\n \r\n function makeReportArgs(row: any, isPreiview: boolean){\r\n if (!row) return null;\r\n\r\n const title = batchStatement.emailSubject.replace(\"$$CUST$$\", row.billToFName);\r\n const bccmail = batchStatement.bccToMe ? batchStatement.bccEmail : '';\r\n const comInfo = (isPreiview ? `|${row.billTo}` : `${row.billTo}|${row.billToSName}|${row.contact}|${row.fax}|${row.email}`);\r\n\r\n const args = new LocalStatementArgs({\r\n docType: DocumentType.LocalStatement,\r\n formCaption: title,\r\n subject: title,\r\n toCompanyid: comInfo,\r\n memo: batchStatement.emailBody,\r\n tbName: \"BatchStatement\",\r\n tbId: \"0\",\r\n bccEmail: bccmail,\r\n\r\n billto: row.billTo,\r\n startDate: batchStatement.invoiceDateFrom,\r\n endDate: batchStatement.invoiceDateTo,\r\n reportType: \"Local Invoice\",\r\n paidType: \"OPEN\",\r\n showDetail: batchStatement.attachInvoices,\r\n dateType: \"Invoice\",\r\n sortType: \"F_InvoiceDate\",\r\n currency: row.currency,\r\n advance: \"0\",\r\n asOf: batchStatement.invoiceDateFrom == null ? \"As of\" : \"Period\",\r\n pBalShow: true,\r\n departs: \"OI,AI,AO,OO,GE,WR,WS,\",\r\n useMultiCur: false, // Need to change // fmsGlobal.FmsMOption?.accountingOption?.showCurAmountInInv,\r\n pastDue: batchStatement.overDue,\r\n excl0Term: batchStatement.excludeZeroTerm\r\n })\r\n\r\n return args;\r\n }\r\n\r\n async function previewReport(row: any){\r\n const args = makeReportArgs(row, true);\r\n viewReport(args, \"\", true);\r\n }\r\n\r\n function showProgressDialog(show: boolean) {\r\n const el = document.getElementById('statement-progress-dialog');\r\n if (el) {\r\n el.style.display = show ? 'block' : 'none';\r\n }\r\n }\r\n\r\n function stopProgress() {\r\n progressRef.current = false;\r\n }\r\n\r\n function setProgressLabel(current: number, total: number) {\r\n const el = document.getElementById('statement-progress-counter');\r\n if (el) {\r\n el.innerHTML = `${current} / ${total}`;\r\n }\r\n }\r\n\r\n function setStatus(index: number, status: string) {\r\n const _list = _.cloneDeep(batchStatement.detailList);\r\n _list[index].status = status;\r\n onChange({detailList: _list});\r\n }\r\n\r\n async function sendEmail() {\r\n if (!batchStatement.emailSubject) {\r\n await showGlobalOkDialog(\"There is no Email Subject.\");\r\n return;\r\n }\r\n if (!batchStatement.emailBody) {\r\n await showGlobalOkDialog(\"There is no Email Body.\");\r\n return;\r\n }\r\n\r\n const actionRowCount = batchStatement.detailList.filter(x => x.select).length;\r\n let successRowCount = 0;\r\n if (actionRowCount === 0) return;\r\n\r\n progressRef.current = true;\r\n\r\n showProgressDialog(true);\r\n\r\n let currentIndex = 1;\r\n\r\n // + Loop\r\n\r\n for (let i = 0; i < batchStatement.detailList.length; i++) {\r\n if (!progressRef.current) {\r\n showProgressDialog(false);\r\n break;\r\n }\r\n\r\n const x = batchStatement.detailList[i];\r\n if (!x.select) continue;\r\n\r\n setProgressLabel(currentIndex++, actionRowCount);\r\n setStatus(i, \"Working\");\r\n\r\n //\r\n\r\n const args = makeReportArgs(x, false);\r\n\r\n const apiResult = await appContext.api.sendEMail(args);\r\n if (!apiResult || !apiResult.success) {\r\n setStatus(i, \"Error\");\r\n } else {\r\n setStatus(i, \"Done\");\r\n successRowCount++;\r\n }\r\n }\r\n\r\n showProgressDialog(false);\r\n\r\n await showGlobalOkDialog(

{`${successRowCount} out of ${actionRowCount} selected have been sent.`}

);\r\n }\r\n\r\n const tableOptions: ApplicableTableSettings = {\r\n tableName: 'batchStatementProcessingTable',\r\n ...batchStatementProcessingTable,\r\n data: batchStatement.detailList.map((x, i) => ({...x, i, toggleSelection, previewReport})),\r\n rowRenderers: [\r\n {accessor: 'indicator', Cell: NumberedIndicatorRenderer, },\r\n {accessor: 'billToSName', Cell: TextAlignLeftRenderer, },\r\n {accessor: 'currency', Cell: TextRenderer, },\r\n //{accessor: 'maxOverDueDays', Cell: FloatRenderer, },\r\n {accessor: 'maxOverDueDays', Cell: (props: any) => },\r\n {accessor: 'lastPaidDate', Cell: DateRenderer, },\r\n {accessor: 'currentAmount', Cell: FloatRenderer, },\r\n {accessor: 'pastDueAmount', Cell: FloatRenderer, },\r\n //{accessor: 'pastDueCount', Cell: FloatRenderer, },\r\n {accessor: 'pastDueCount', Cell: (props: any) => },\r\n {accessor: 'totalAmount', Cell: FloatRenderer, },\r\n {accessor: 'useEmail', Cell: NullableCheckboxIconRenderer, },\r\n {accessor: 'select', Cell: SelectRenderer, },\r\n {accessor: 'status', Cell: TextRenderer, },\r\n //{accessor: 'action', Cell: BlueTextRenderer, },\r\n //{accessor: 'action', Cell: ({cell}: any, {props}: any) => previewReport(props)} />, },\r\n {accessor: 'action', Cell: ActionRenderer, },\r\n ],\r\n rowProps: (row: any) => {\r\n if (!batchStatement.detailList[row.index].useEmail) {\r\n return {\r\n style: { backgroundColor: 'rgb(225, 225, 225)' }\r\n };\r\n }\r\n switch (batchStatement.detailList[row.index].status) {\r\n case \"Working\":\r\n return {\r\n style: { backgroundColor: 'rgb(225, 225, 0)' }\r\n };\r\n case \"Done\":\r\n return {\r\n style: { backgroundColor: 'rgb(0, 225, 0)' }\r\n };\r\n case \"Error\":\r\n return {\r\n style: { backgroundColor: 'rgb(225, 0, 0)' }\r\n };\r\n }\r\n\r\n return undefined;\r\n }, \r\n };\r\n\r\n const isDeselectAll = batchStatement.detailList.length > 0 && batchStatement.detailList.filter(f => f.useEmail).every(x => x.select);\r\n const allButtonLabel = isDeselectAll ? 'Cancel All' : 'Select All';\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n {setFyData({...fyData, endDate: e.target.value})}}\r\n items={endList.map(x=>({label: x, value: x}))} />\r\n
\r\n
\r\n
\r\n
\r\n Cancel\r\n
\r\n\r\n
\r\n Ok\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nfunction ChangeStartDate({startDate, setStartDate}:{startDate: string, setStartDate: (startYear: string, startMonth: string) => void }) {\r\n const globalOkDialog = useAppSelector(state => state.globalOkDialog);\r\n const dispatch = useAppDispatch();\r\n const [startYear, setStartYear] = useState('');\r\n const [startMonth, setstarMonth] = useState('');\r\n const monthList = ['01','02','03','04','05','06','07','08','09','10','11','12'];\r\n const [yearList, setYearList] = useState>([]);\r\n\r\n useEffect(() => {\r\n initialize();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n function initialize() {\r\n if (yearList.length <= 0) {\r\n const temp: Array = [];\r\n const year1 = +formatDate(startDate, 'YYYY');\r\n const year2 = getCurrentYear() + 1;\r\n\r\n for (let k = year1 - 10; k <= year2; k++) {\r\n temp.push('' + k);\r\n }\r\n\r\n setYearList(temp);\r\n }\r\n\r\n setStartYear(formatDate(startDate, 'YYYY'));\r\n setstarMonth(formatDate(startDate, 'MM'));\r\n }\r\n\r\n function closeDialog() {\r\n if (globalOkDialog.resolve) {\r\n globalOkDialog.resolve();\r\n }\r\n dispatch(hideGlobalOkDialog());\r\n }\r\n\r\n function onOk(){\r\n setStartDate(startYear, startMonth);\r\n closeDialog();\r\n }\r\n\r\n return (\r\n
\r\n
\r\n

Select Year and Month for the Start Date

\r\n
\r\n
\r\n {setstarMonth(e.target.value)}}\r\n items={monthList.map(x=>({label: x, value: x}))} />\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n Cancel\r\n
\r\n
\r\n Ok\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nconst ManageFiscalYearEnd = ({yearEnd, refreshCnt, setRefreshCnt, onPopupClose}: ManageFiscalYearEndParams) => {\r\n return (\r\n \r\n );\r\n};\r\nexport default ManageFiscalYearEnd;\r\n","import {MutableRefObject, useEffect, useState, useContext} from 'react';\r\nimport _ from \"lodash\";\r\n\r\nimport CheckBox from \"../../../ui/CheckBox\";\r\nimport GreenButton from '../../../ui/GreenButton';\r\nimport IfmsModal from '../../../ui/IfmsModal';\r\nimport InlineInputControlRow from \"../../../ui/layout/InlineInputControlRow\";\r\nimport Label from '../../../ui/Label';\r\nimport OrangeButton from '../../../ui/OrangeButton';\r\nimport SecondaryButton from \"../../../ui/SecondaryButton\";\r\nimport Select from '../../../ui/Select';\r\nimport SmartTable from '../../../uiControls/SmartTable';\r\nimport TextBox from \"../../../ui/TextBox\";\r\nimport useTableNavigation from '../../../ui/tables/useTableNavigation';\r\nimport { NumberedIndicatorRenderer, TextRenderer, DateRenderer, DateTimeRenderer, NullableCheckboxIconRenderer } from \"../../../uiControls/SmartTableRenderers\";\r\n\r\nimport useGlobalOkDialog from \"../../../hooks/useGlobalOkDialog\";\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\nimport { useTypedFastStorage } from '../../../hooks/useFastStorage';\r\nimport useTableStorage from '../../../hooks/useTableStorage';\r\nimport Fieldset from '../../common/Fieldset';\r\nimport { ApplicableTableSettings } from '../../../tableSettings';\r\nimport ApplicationContext from \"../../../ApplicationContext\";\r\n\r\nimport { formatDate, nowDate, compareIso } from '../../../dateUtils';\r\nimport { FiscalYearEnd } from \"../../../fms.core/FiscalYearEnd\";\r\nimport { fiscalYearSettingsTable, yearEndHistoryTable } from './yearEndProcessing/tableSettings';\r\nimport ManageFiscalYearEnd from './ManageFiscalYearEnd';\r\nimport { FYHistory } from '../../../fms.core/FYHistory';\r\nimport { focusTabableByIndex } from '../../../util/inputUtils';\r\n\r\ninterface YearEndStorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\ninterface YearEndViewParams {\r\n id: string | undefined,\r\n onPopupClose?: () => void\r\n};\r\n\r\ninterface YearEndLoadedDetailsViewParams {\r\n yearEnd: FiscalYearEnd,\r\n yearEndRef: MutableRefObject,\r\n setYearEnd: (x: Partial) => void,\r\n refreshCnt: number,\r\n setRefreshCnt: (x: number) => void,\r\n onPopupClose?: () => void\r\n};\r\n\r\nfunction getYearEndStorageKeys(): YearEndStorageKeys {\r\n return {modelStorage: 'report-year-end-processing'}\r\n}\r\n\r\nfunction Delay(delay: number) {\r\n return new Promise( res => setTimeout(res, delay) );\r\n}\r\nconst monthDesc = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'];\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nfunction YearEndImpl(params: YearEndViewParams) {\r\n const [refreshCnt, setRefreshCnt] = useState(0);\r\n const {modelStorage} = getYearEndStorageKeys();\r\n const [inStorage, setInStorage, removeYearEndFromStorage, yearEndProcessingRef] = useTypedFastStorage(modelStorage, null);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const appContext = useContext(ApplicationContext);\r\n\r\n useEffect(() => {\r\n initialize();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n },[refreshCnt]);\r\n\r\n async function loadExisting() {\r\n const apiResult = await appContext.api.readYearEndData();\r\n if (!apiResult || !apiResult.success ) {\r\n await showGlobalOkDialog(

Failed to read Year End Data

);\r\n return;\r\n }\r\n\r\n const fiscalYearEnd: FiscalYearEnd = apiResult.result as FiscalYearEnd;\r\n\r\n if (fiscalYearEnd.fiscalMonth > 0 && fiscalYearEnd.fiscalMonth <= 12)\r\n fiscalYearEnd.fiscalMonthDesc = monthDesc[fiscalYearEnd.fiscalMonth - 1];\r\n \r\n fiscalYearEnd.fyPeriods.forEach((x, i) => \r\n x.fyDesc = x.no\r\n );\r\n fiscalYearEnd.fyHistories.forEach((x, i) => \r\n x.fyDesc = x.no\r\n );\r\n removeYearEndFromStorage();\r\n setInStorage(fiscalYearEnd);\r\n }\r\n\r\n async function initialize() {\r\n loadExisting();\r\n }\r\n\r\n if (!inStorage) { \r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nfunction YearEndInitializedImpl({ yearEnd, yearEndRef, setYearEnd, refreshCnt, setRefreshCnt, onPopupClose }: YearEndLoadedDetailsViewParams) {\r\n const [selectedRow, setSelectedRow] = useState(-1);\r\n const [checkReverse, setCheckReverse] = useState(false);\r\n const [doingYearEnd, setDoingYearEnd] = useState(false);\r\n const [resultMsg, setResultMsg] = useState(\"\");\r\n const [showManageFyEnd, setShowManageFyEnd] = useState(false);\r\n const [lastHistoryId, setLastHistoryId] = useState(0);\r\n\r\n const { selectTableRow, clearTableSelection } = useTableNavigation('fiscalYearSettingsTable', onChangeSelectRow, onChangeSelectRow, [], true, true);\r\n const tableStorage = useTableStorage();\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n \r\n useEffect(() => {\r\n setLastHistoryId(yearEnd.fyHistories.length > 0 ? yearEnd.fyHistories[0].id : 0);\r\n setTimeout(() => { checkDefault(); }, 10);\r\n focusTabableByIndex(0);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (selectedRow > (yearEnd.fyPeriods.length - 1)){\r\n clearTableSelection();\r\n onChangeSelectRow(0);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [yearEnd]);\r\n\r\n function checkDefault() {\r\n if (selectedRow === -1) {\r\n let defaultIndex = yearEnd.fyPeriods.findIndex(x => compareIso(x.beginDate ?? '', nowDate()) < 0 && compareIso(nowDate(), x.endDate ?? '') < 0);\r\n if (defaultIndex >= 0) {\r\n if (defaultIndex + 1 < yearEnd.fyPeriods.length) {\r\n defaultIndex++;\r\n }\r\n }\r\n else if(defaultIndex === -1)\r\n defaultIndex = 0;\r\n\r\n onChangeSelectRow(defaultIndex);\r\n\r\n setLastHistoryId(yearEnd.fyHistories.length > 0 ? yearEnd.fyHistories[0].id : 0);\r\n }\r\n }\r\n\r\n function onChangeSelectRow(row:any) {\r\n setResultMsg(\"\");\r\n showProgress(false);\r\n setDoingYearEnd(false);\r\n selectTableRow(row);\r\n setSelectedRow(row);\r\n }\r\n\r\n function onChange(change: Partial) {\r\n setYearEnd(change);\r\n }\r\n\r\n function showProgress(show: boolean) {\r\n const el = document.getElementById('yearEnd-progress');\r\n if (el) {\r\n el.style.display = show ? 'block' : 'none';\r\n }\r\n }\r\n\r\n function setProgressStatus(percentage: number) {\r\n const progress = document.getElementById('yearEnd-progress');\r\n if (progress) {\r\n progress.style.width = `${percentage}%`;\r\n }\r\n }\r\n\r\n function setFYStatus(index: number, status: boolean) {\r\n const _list = _.cloneDeep(yearEnd.fyPeriods);\r\n _list[index].yearEnd = status;\r\n onChange({fyPeriods: _list});\r\n }\r\n\r\n async function refreshHistory() {\r\n const apiResult = await appContext.api.readFYHistory();\r\n if (!apiResult || !apiResult.success ) {\r\n await showGlobalOkDialog(

Failed to read history : {apiResult.message}

);\r\n return;\r\n }\r\n\r\n const histories: FYHistory[] = apiResult.result;\r\n histories.forEach((x) => \r\n x.fyDesc = x.no\r\n );\r\n\r\n onChange({ fyHistories: histories });\r\n }\r\n\r\n async function runYearEndProc() {\r\n if (selectedRow < 0) return;\r\n\r\n setDoingYearEnd(true);\r\n\r\n // 1. Fiscal Year List에서 필요시 Next Year정보를 추가\r\n let result:number = 0;\r\n let closeDate = yearEnd.fyPeriods[selectedRow].endDate;\r\n\r\n try {\r\n result = 5;\r\n\r\n let beginDate = yearEnd.fyPeriods[selectedRow].beginDate;\r\n let endDate = closeDate;\r\n let isFinalYear = (selectedRow === 0);\r\n\r\n if (isFinalYear) {\r\n const apiResult = await appContext.api.checkFYPeriod(beginDate, endDate);\r\n if (!apiResult || !apiResult.success ) {\r\n await showGlobalOkDialog(

Failed to check Fiscal Year Period

);\r\n return;\r\n }\r\n }\r\n\r\n // 2. 시작 위치 설정\r\n\r\n let beginRow = 0;\r\n for (let k = selectedRow; k < yearEnd.fyPeriods.length; k++) {\r\n if (yearEnd.fyPeriods[k].yearEnd) break;\r\n else beginRow = k;\r\n }\r\n\r\n // 3. 데이터 검증. Recog 처리 안된 것이 있는 경우 Warning. \r\n\r\n const apiResult2 = await appContext.api.checkRecogStatus(endDate);\r\n if (!apiResult2 || !apiResult2.success ) {\r\n await showGlobalOkDialog(

Failed to check Recog Status

);\r\n return;\r\n }\r\n\r\n if (!apiResult2.result) {\r\n const confirm = await showGlobalYesNoDialog(\r\n
\r\n

There are unrecognized Sales/Cost for year end processing.
\r\n Unrecognized Sales/Cost will affect the income Statement.
\r\n It is recommended to recognize Sales/Cost before year end processing.
\r\n Do you want to proceed with unrecognized Sales/Cost ?

\r\n
\r\n ,false, 0, true);\r\n\r\n if (!confirm) {\r\n setDoingYearEnd(false);\r\n return;\r\n }\r\n }\r\n\r\n showProgress(true);\r\n setProgressStatus(0);\r\n\r\n // 4. 실제 Year End Processing 수행\r\n let prog: number;\r\n\r\n for (let k = beginRow; k >= selectedRow; k--) {\r\n prog = Math.floor((beginRow - k) / (beginRow - selectedRow + 1) * 90);\r\n setProgressStatus(prog);\r\n\r\n beginDate = yearEnd.fyPeriods[k].beginDate;\r\n endDate = yearEnd.fyPeriods[k].endDate;\r\n\r\n const apiResult3 = await appContext.api.runYearEnd(beginDate, endDate, yearEnd.earningGLNo);\r\n if (!apiResult3 || !apiResult3.success ) {\r\n await showGlobalOkDialog(

Failed to run Year End Processing

);\r\n return;\r\n }\r\n result = apiResult3.result;\r\n setFYStatus(k, true);\r\n \r\n prog = Math.floor((beginRow - k + 1) / (beginRow - selectedRow + 1) * 90);\r\n setProgressStatus(prog);\r\n\r\n // Save & Reload History\r\n const apiResult4 = await appContext.api.saveFiscalYearHistory('Year End', yearEnd.fyPeriods[k].fyDesc, yearEnd.fyPeriods[k].fiscalYear);\r\n if (!apiResult4 || !apiResult4.success ) {\r\n await showGlobalOkDialog(

Failed to save history : {apiResult4.message}

);\r\n return;\r\n }\r\n refreshHistory();\r\n\r\n if (result> 0) {\r\n setProgressStatus(100);\r\n throw new Error();\r\n }\r\n }\r\n\r\n if (result <= 0) {\r\n const apiResult5 = await appContext.api.periodClose(closeDate);\r\n if (!apiResult5 || !apiResult5.success ) {\r\n await showGlobalOkDialog(

Failed to period close : {apiResult5.message}

);\r\n setDoingYearEnd(false);\r\n return;\r\n }\r\n result = apiResult5.reuslt;\r\n if (result > 0) {\r\n setProgressStatus(100);\r\n throw new Error();\r\n }\r\n }\r\n\r\n setProgressStatus(100);\r\n setResultMsg(\"++ Year End Processing is completed successfully.\");\r\n } catch (e:any) {\r\n switch (result) {\r\n case 7:\r\n setResultMsg(\"++ Year End Processing is completed.\\r\\n but Close Operation has failed.\");\r\n break;\r\n case 5:\r\n setResultMsg(\"++ System has some problem.\");\r\n break;\r\n case 2:\r\n setResultMsg(\"++ Year End Processing has failed. Please check accounting settings.\");\r\n break;\r\n case 1:\r\n setResultMsg(\"++ Year End Processing is completed.\\r\\n but you have an error somewhere in accounting process.\");\r\n break;\r\n default:\r\n setResultMsg(\"++ Year End Processing is completed successfully.\");\r\n break;\r\n }\r\n }\r\n\r\n setProgressStatus(100);\r\n }\r\n\r\n async function runReverseProc() {\r\n if (selectedRow < 0) return;\r\n\r\n setDoingYearEnd(true);\r\n\r\n try {\r\n // 1. 시작 위치 설정\r\n\r\n let beginRow = 0;\r\n for (let k = selectedRow; k >= 0; k--) {\r\n if (yearEnd.fyPeriods[k].yearEnd) beginRow = k;\r\n else break;\r\n }\r\n\r\n showProgress(true);\r\n setProgressStatus(0);\r\n\r\n // 2. 실제 Reverse Processing 수행\r\n let prog: number;\r\n let thisFiscalYear: number;\r\n let nextFiscalYear: number;\r\n\r\n for (let k = beginRow; k <= selectedRow; k++) {\r\n prog = Math.floor((k - beginRow) / (selectedRow - beginRow + 1) * 100);\r\n setProgressStatus(prog);\r\n\r\n thisFiscalYear = yearEnd.fyPeriods[k].fiscalYear;\r\n nextFiscalYear = yearEnd.fyPeriods[k - 1].fiscalYear;\r\n\r\n const apiResult = await appContext.api.runReverse(thisFiscalYear, nextFiscalYear);\r\n if (!apiResult || !apiResult.success ) {\r\n await showGlobalOkDialog(

Failed to run Reverse Processing : {apiResult.message}

);\r\n setDoingYearEnd(false);\r\n return;\r\n }\r\n\r\n setFYStatus(k, false);\r\n\r\n prog = Math.floor((k - beginRow + 1) / (selectedRow - beginRow + 1) * 100);\r\n setProgressStatus(prog);\r\n Delay(500);\r\n\r\n // Save & Reload History\r\n const apiResult2 = await appContext.api.saveFiscalYearHistory('Reverse', yearEnd.fyPeriods[k].fyDesc, yearEnd.fyPeriods[k].fiscalYear);\r\n if (!apiResult2 || !apiResult2.success ) {\r\n await showGlobalOkDialog(

Failed to save history : {apiResult2.message}

);\r\n setDoingYearEnd(false);\r\n return;\r\n }\r\n refreshHistory();\r\n \r\n }\r\n\r\n } catch (e:any) {\r\n }\r\n\r\n Delay(500);\r\n showProgress(false);\r\n setCheckReverse(false);\r\n setDoingYearEnd(false);\r\n }\r\n\r\n const yearEndListSettings: ApplicableTableSettings = {\r\n tableName: 'fiscalYearSettingsTable',\r\n customTableId: 'fiscalYearSettingsTable',\r\n ...fiscalYearSettingsTable,\r\n data: yearEnd.fyPeriods,\r\n rowRenderers: [\r\n { accessor: 'indicator', Cell: NumberedIndicatorRenderer },\r\n { accessor: 'fyDesc', Cell: TextRenderer },\r\n { accessor: 'beginDate', Cell: DateRenderer },\r\n { accessor: 'endDate', Cell: DateRenderer },\r\n { accessor: 'yearEnd', Cell: NullableCheckboxIconRenderer },\r\n ],\r\n customStorage: tableStorage,\r\n headersColor: 'white',\r\n footerRow: [ \r\n ],\r\n height: '220px',\r\n };\r\n\r\n const yearEndHistorySettings: ApplicableTableSettings = {\r\n tableName: 'yearEndHistoryTable',\r\n customTableId: 'yearEndHistoryTable',\r\n ...yearEndHistoryTable,\r\n data: yearEnd.fyHistories,\r\n rowRenderers: [\r\n { accessor: 'indicator', Cell: NumberedIndicatorRenderer },\r\n { accessor: 'date', Cell: DateTimeRenderer },\r\n { accessor: 'fyDesc', Cell: TextRenderer },\r\n { accessor: 'action', Cell: TextRenderer },\r\n { accessor: 'user', Cell: TextRenderer },\r\n ],\r\n customStorage: tableStorage,\r\n headersColor: 'white',\r\n footerRow: [ \r\n ],\r\n height: '120px',\r\n rowProps: (row: any) => {\r\n if (yearEnd.fyHistories[row.index].id > lastHistoryId) {\r\n return {\r\n style: { backgroundColor: 'rgb(160, 225, 160)' }\r\n };\r\n }\r\n\r\n return undefined;\r\n }, \r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n setShowManageFyEnd(true)}>Manage Fiscal Year End\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n ({ label: x.fyDesc, value: i }))}\r\n onChange={e => onChangeSelectRow(e.target.value)}\r\n />\r\n
\r\n
\r\n -1 && (yearEnd.fyPeriods[selectedRow].yearEnd || compareIso(yearEnd.fyPeriods[selectedRow].beginDate??'', nowDate()) > 0)) || doingYearEnd} size=\"small\" \r\n onClick={runYearEndProc} \r\n >Fiscal Year End Processing \r\n \r\n
\r\n
\r\n\r\n {selectedRow > -1 && (!yearEnd.fyPeriods[selectedRow].yearEnd || doingYearEnd) && \r\n\r\n
\r\n
\r\n

{resultMsg}

\r\n
\r\n
\r\n\r\n }\r\n\r\n {selectedRow > -1 && yearEnd.fyPeriods[selectedRow].yearEnd && !doingYearEnd && \r\n\r\n
\r\n
\r\n setCheckReverse(checked)} />\r\n
\r\n
\r\n Reverse\r\n
\r\n
\r\n\r\n }\r\n\r\n
\r\n
 
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n CANCEL\r\n \r\n
\r\n {!!showManageFyEnd ? (\r\n setShowManageFyEnd(false)} draggable isOpen={showManageFyEnd} title=\"Manage Fiscal Year End\" width=\"600px\">\r\n setShowManageFyEnd(false)} />\r\n \r\n ) : null}\r\n
\r\n );\r\n}\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nconst YearEndProcessingDetails = ({onPopupClose}: {onPopupClose?: () => void}) => {\r\n return (\r\n \r\n );\r\n};\r\nexport default YearEndProcessingDetails;\r\n","import constants from '../constants';\r\n\r\nimport { IfmsConfig } from './types';\r\n\r\nimport { stringsStartsWithIgnoreCase } from '../util';\r\nimport PeriodClosingDetails from \"../components/accounting/reports/ClosingPeriod\";\r\nimport YearEndProcessingDetails from \"../components/accounting/reports/YearEndProcessing\";\r\nimport { JobNames } from '../framework.core/JobNames';\r\nimport { FmsSecTask } from '../fms.core/constants';\r\nimport { FmsSubMenu } from '../constants/fmsSubMenu';\r\nimport { borderColors } from '../ui/ActionButton';\r\nimport previewPrintIcon from '../img/preview_print.svg';\r\n// let serverUrl = 'http://192.168.167.128:5000/api/';\r\n// let serverUrl = 'http://cloud.suntekscm.co.kr/api/';\r\n//let serverUrl = 'http://127.0.0.1:5000/api/';\r\n//let serverUrl = 'https://ifms.suntekscm.co.kr/api/';\r\n let serverUrl = 'http://localhost:5000/api/';\r\n\r\n// //\r\n// if (serverUrl !== 'http://localhost:5000/api/' && process.env.NODE_ENV === 'production') {\r\n// serverUrl = 'http://localhost:5000/api/';\r\n// }\r\n\r\n//<231201.dwshin. serverUrl auto setting.>\r\nif (process.env.NODE_ENV === 'production') {\r\n serverUrl = `${window.location.origin}/api/`;\r\n}\r\n\r\nconst config: IfmsConfig = {\r\n serverUrl,\r\n dashboardUrl: 'https://dash2.suntekscm.com/Base/DashBoard?ver=1005',\r\n dashboardUrlDark: 'https://dash2.suntekscm.com/Base/DashBoard?ver=1006',\r\n menus: [\r\n // Ocean Import\r\n {\r\n operation: constants.operations.oceanImport,\r\n job: [\r\n {\r\n text: 'Master B/L',\r\n name: 'mbl',\r\n level: 0,\r\n link: '/common/joblistview/mbl/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/mbl/oceanImport'),\r\n fmsSecTask: FmsSecTask.OIMbl,\r\n moreMenuJobName: JobNames.OIMbl,\r\n },\r\n {\r\n text: 'House B/L',\r\n name: 'hbl',\r\n level: 0,\r\n link: '/common/joblistview/hbl/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/hbl/oceanImport'),\r\n fmsSecTask: FmsSecTask.OIHbl,\r\n moreMenuJobName: JobNames.OIHbl,\r\n topLineColor: borderColors[0 % borderColors.length]\r\n },\r\n {\r\n text: 'Container List',\r\n name: 'cntr',\r\n level: 0,\r\n link: '/common/joblistview/OICN/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/OICN/oceanImport'),\r\n fmsSecTask: FmsSecTask.OIContainer,\r\n topLineColor: borderColors[0 % borderColors.length]\r\n },\r\n {\r\n text: 'Quotation',\r\n name: 'quot',\r\n level: 0,\r\n link: '/common/joblistview/oeQuotation/oceanExport?parentOp=oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/oeQuotation/oceanExport'),\r\n fmsSecTask: FmsSecTask.OIQuot,\r\n },\r\n {\r\n text: 'Load Plan',\r\n name: 'loadPlan',\r\n level: 0,\r\n link: '/common/joblistview/OILD/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/OILD/oceanImport'),\r\n fmsSecTask: FmsSecTask.OITruckLoad,\r\n topLineColor: borderColors[1 % borderColors.length]\r\n },\r\n {\r\n text: 'Vessel Info',\r\n name: 'vessel',\r\n level: 0,\r\n link: '/common/joblistview/OIVS/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/OIVS/oceanImport'),\r\n fmsSecTask: FmsSecTask.OIVessel,\r\n },\r\n {\r\n text: 'Invoice',\r\n name: 'inv',\r\n level: 0,\r\n link: '/common/joblistview/invoice/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/invoice/accounting'),\r\n fmsSecTask: FmsSecTask.AcctInvoiceList,\r\n topLineColor: borderColors[2 % borderColors.length]\r\n },\r\n {\r\n text: 'Bill',\r\n name: 'bil',\r\n level: 0,\r\n link: '/common/joblistview/bill/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/bill/accounting'),\r\n fmsSecTask: FmsSecTask.AcctBillList\r\n },\r\n {\r\n text: 'CrDb',\r\n name: 'crdb',\r\n level: 0,\r\n link: '/common/joblistview/crdb/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/crdb/accounting'),\r\n fmsSecTask: FmsSecTask.AcctCrDbList,\r\n },\r\n {\r\n text: 'AMS',\r\n level: 0,\r\n topLineColor: borderColors[3 % borderColors.length],\r\n name: 'ams',\r\n textColor: 'orangered',\r\n items: [\r\n {\r\n text: 'AMS Filing',\r\n name: 'amsFiling',\r\n level: 1,\r\n subMenu: FmsSubMenu.AmsFiling,\r\n },\r\n {\r\n text: 'Voyage',\r\n name: 'voyage',\r\n level: 1,\r\n link: '/common/joblistview/AMSV/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/AMSV/oceanImport'),\r\n fmsSecTask: FmsSecTask.AMSVoyage,\r\n },\r\n {\r\n text: 'MBL',\r\n name: 'amsMbl',\r\n level: 1,\r\n link: '/common/joblistview/AMSM/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/AMSM/oceanImport'),\r\n fmsSecTask: FmsSecTask.AMSMaster,\r\n },\r\n {\r\n text: 'HBL',\r\n name: 'amsHbl',\r\n level: 1,\r\n link: '/common/joblistview/AMSH/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/AMSH/oceanImport'),\r\n fmsSecTask: FmsSecTask.AMSHouse,\r\n },\r\n {\r\n text: 'User',\r\n name: 'amsUser',\r\n level: 1,\r\n link: '/common/joblistview/AMSU/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/AMSU/oceanImport'),\r\n fmsSecTask: FmsSecTask.AMSUser,\r\n },\r\n {\r\n text: 'AMS Branch',\r\n name: 'amsBranch',\r\n level: 1,\r\n link: '/common/joblistview/AMBR/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/AMBR/oceanImport'),\r\n fmsSecTask: FmsSecTask.AMSBranch,\r\n },\r\n {\r\n text: 'AMS Billing Code',\r\n name: 'amsBilling',\r\n level: 1,\r\n link: '/common/joblistview/AMBI/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/AMBI/oceanImport'),\r\n fmsSecTask: FmsSecTask.AMSBilling,\r\n },\r\n {\r\n text: 'Filing History',\r\n name: 'amsFileHistory',\r\n level: 1,\r\n link: '/common/joblistview/AMHI/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/AMHI/oceanImport'),\r\n fmsSecTask: FmsSecTask.AMSHistory,\r\n },\r\n {\r\n text: 'Customs Release History',\r\n name: 'amsCustHistory',\r\n level: 1,\r\n link: '/common/joblistview/AMC1/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/AMC1/oceanImport'),\r\n fmsSecTask: FmsSecTask.AMSC1History,\r\n }, {\r\n text: 'Usage Report',\r\n level: 1,\r\n link: '/oceanImport/amsUsageReport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/amsUsageReport/'),\r\n fmsSecTask: FmsSecTask.AMSRptUsage\r\n }, {\r\n text: 'Lifting Report',\r\n level: 1,\r\n link: '/oceanImport/amsLiftReport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/amsLiftReport/'),\r\n fmsSecTask: FmsSecTask.AMSRptLifting\r\n }, {\r\n text: 'Total Lifting Report',\r\n level: 1,\r\n link: '/oceanImport/amsTotLiftReport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/amsTotLiftReport/'),\r\n fmsSecTask: FmsSecTask.AMSRptTotalLifting\r\n },\r\n ]\r\n },\r\n {\r\n text: 'ACI eManifest', level: 0,\r\n name: 'aci',\r\n textColor: 'orangered',\r\n items: [\r\n // {\r\n // text: 'Voyage List',\r\n // level: 1,\r\n // link: '/common/joblistview/ACIV/oceanImport',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/ACIV/oceanImport')\r\n // },\r\n // {\r\n // text: 'MBL List',\r\n // level: 1,\r\n // link: '/common/joblistview/ACIM/oceanImport',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/ACIM/oceanImport')\r\n // },\r\n {\r\n text: 'House Bill',\r\n name: 'aciHbl',\r\n level: 1,\r\n link: '/common/joblistview/ACIEM/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/ACIEM/oceanImport'),\r\n fmsSecTask: FmsSecTask.ACIManifest\r\n },\r\n // {\r\n // text: 'Users',\r\n // level: 1,\r\n // link: '/common/joblistview/ACIU/oceanImport',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/ACIU/oceanImport')\r\n // },\r\n // {\r\n // text: 'Branch',\r\n // level: 1,\r\n // link: '/common/joblistview/ACBR/oceanImport',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/ACBR/oceanImport')\r\n // },\r\n // {\r\n // text: 'ACI Filing History',\r\n // level: 1,\r\n // link: '/common/joblistview/ACHI/oceanImport',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/ACHI/oceanImport')\r\n // },\r\n {\r\n text: 'ACI eManifest Usage Report',\r\n level: 1,\r\n link: '/oceanImport/aciUsageReport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/aciUsageReport/'),\r\n fmsSecTask: FmsSecTask.AMSRptUsage\r\n },\r\n // {\r\n // text: 'ACI eManifest Usage Report', \r\n // name:'aciUsageReport',\r\n // level: 1, \r\n // popupComponent: , \r\n // fmsSecTask: FmsSecTask.AMSRptUsage},\r\n // {text: 'Lifting Report', level: 1},\r\n // {text: 'Total ACI Lifting', level: 1},\r\n ]\r\n },\r\n {\r\n text: 'ISF',\r\n name: 'isf',\r\n level: 0,\r\n textColor: 'orangered',\r\n items: [\r\n {\r\n text: 'ISF Filing',\r\n name: 'isfFiling',\r\n level: 1,\r\n subMenu: FmsSubMenu.IsfFiling,\r\n },\r\n {\r\n text: 'ISF List',\r\n name: 'isfList',\r\n level: 1,\r\n link: '/common/joblistview/ISFL/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/ISFL/oceanImport'),\r\n fmsSecTask: FmsSecTask.ISF,\r\n },\r\n ]\r\n },\r\n {\r\n text: `AES Filing`,\r\n level: 0,\r\n name: 'aesFiling',\r\n textColor: 'orangered',\r\n metadata: { isDirectPrint: true }\r\n },\r\n {\r\n text: `In-bond`,\r\n level: 0,\r\n name: 'inbond',\r\n textColor: 'orangered',\r\n metadata: { isDirectPrint: true }\r\n },\r\n {\r\n text: 'Report', level: 0,\r\n name: 'report',\r\n topLineColor: borderColors[4 % borderColors.length],\r\n items: [\r\n {\r\n text: 'Arrival Notice Log',\r\n level: 1,\r\n link: '/oceanImport/arrivalnoticelog',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/arrivalnoticelog/'),\r\n fmsSecTask: FmsSecTask.OIRptANLog\r\n }, {\r\n text: 'Inland Transportation',\r\n level: 1,\r\n link: '/oceanImport/inlandTransportation',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/inlandTransportation/'),\r\n fmsSecTask: FmsSecTask.OIRptInlandTransport\r\n }, {\r\n text: 'Ocean Import ETA/ETD',\r\n level: 1,\r\n link: '/oceanImport/shipmentReport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/shipmentReport/'),\r\n fmsSecTask: FmsSecTask.OIRptShipment\r\n }, {\r\n text: 'Pending Cargo',\r\n level: 1,\r\n link: '/oceanImport/pendingCargo',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/pendingCargo/'),\r\n fmsSecTask: FmsSecTask.OIRptPendingCargo\r\n }, {\r\n text: 'Release History',\r\n level: 1,\r\n link: '/oceanImport/releaseHistory',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/releaseHistory/'),\r\n fmsSecTask: FmsSecTask.OIRptRlsHistory\r\n },]\r\n },\r\n {\r\n text: 'Download MBL',\r\n level: 0,\r\n link: '/common/joblistview/OIMP/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/OIMP/oceanImport'),\r\n fmsSecTask: FmsSecTask.OIMPims,\r\n },\r\n {\r\n text: 'Download HBL',\r\n level: 0,\r\n link: '/common/joblistview/OIHP/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/OIHP/oceanImport'),\r\n fmsSecTask: FmsSecTask.OIHPims,\r\n },\r\n ],\r\n operationReport: [],\r\n download: [],\r\n preReport: [\r\n // {\r\n // text: 'Billings', level: 0,\r\n // topLineColor: '#007BFF',\r\n // items: [\r\n // {text: 'Invoice List', level: 1, link: '/common/joblistview/invoice/accounting', isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/invoice/accounting')},\r\n // {text: 'Bill List', level: 1, link: '/common/joblistview/bill/accounting', isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/bill/accounting')},\r\n // {text: 'CrDb List', level: 1, link: '/common/joblistview/crdb/accounting', isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/crdb/accounting')},\r\n // ]\r\n // },\r\n ],\r\n report: [],\r\n moreMenu: [\r\n //Oim More Menu\r\n {\r\n text: 'Arrival Notice',\r\n level: 1,\r\n link: '/oceanImport/arrivalnotice?jobname=@jobName&id=@jobid&isAtme=false',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/arrivalnotice/'),\r\n moreMenuJobName: JobNames.OIMbl,\r\n //topLineColor: borderColors[0 % borderColors.length] \r\n },\r\n {\r\n text: 'Correction Notice/Request',\r\n level: 1,\r\n link: '/oceanImport/correctionNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/correctionNotice/'),\r\n moreMenuJobName: JobNames.OIMbl\r\n },\r\n {\r\n text: 'Master Invoice',\r\n level: 1,\r\n link: '/oceanImport/masterinvoice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/masterinvoice/'),\r\n moreMenuJobName: JobNames.OIMbl\r\n },\r\n {\r\n text: 'Pickup/Delivery Instruction',\r\n level: 1,\r\n link: '/oceanImport/pickupDelivery?jobname=@jobName&id=@jobid&docType=18',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/pickupDelivery/'),\r\n moreMenuJobName: JobNames.OIMbl\r\n },\r\n {\r\n text: 'USDA Hold Notice',\r\n level: 1,\r\n link: '/oceanImport/mblholdnotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/mblholdnotice/'),\r\n moreMenuJobName: JobNames.OIMbl\r\n },\r\n {\r\n text: 'Est. MBL Profit',\r\n level: 1,\r\n subMenu: FmsSubMenu.MasterProfit,\r\n moreMenuJobName: JobNames.OIMbl,\r\n //topLineColor: borderColors[1 % borderColors.length]\r\n },\r\n { text: 'Gross MBL Profit', level: 1, subMenu: FmsSubMenu.MasterProfitHBL, moreMenuJobName: JobNames.OIMbl },\r\n {\r\n text: 'Cargo Manifest',\r\n level: 1,\r\n subMenu: FmsSubMenu.OICargoManifest,\r\n moreMenuJobName: JobNames.OIMbl,\r\n //topLineColor: borderColors[2 % borderColors.length]\r\n },\r\n //{ text: 'Folder Label', level: 1, subMenu: FmsSubMenu.FolderLabel, moreMenuJobName: JobNames.OIMbl, metadata: { isDirectPrint: true } },\r\n {\r\n text: 'Folder Label',\r\n level: 1,\r\n link: '/oceanImport/folderLabel?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/folderLabel/'),\r\n moreMenuJobName: JobNames.OIMbl\r\n },\r\n {\r\n text: 'Memo List',\r\n level: 1,\r\n link: '/oceanImport/memoList?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/memoList/'),\r\n moreMenuJobName: JobNames.OIMbl\r\n },\r\n { text: 'Out of State Log', level: 1, subMenu: FmsSubMenu.OutOfStateLog, moreMenuJobName: JobNames.OIMbl },\r\n {\r\n text: 'Cargo Status Query',\r\n level: 1,\r\n textColor: 'orangered',\r\n link: '/oceanImport/cargoManifestStatus?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/cargoManifestStatus/'),\r\n moreMenuJobName: JobNames.OIMbl,\r\n //topLineColor: borderColors[3 % borderColors.length]\r\n },\r\n //appcontext on off menu\r\n { text: 'CFS Manifest', level: 1, subMenu: FmsSubMenu.STARCFSMANI, moreMenuJobName: JobNames.OIMbl },\r\n {\r\n text: 'Devanning Instruction',\r\n level: 1,\r\n link: '/oceanImport/devanninginstruction?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/devanninginstruction/'),\r\n moreMenuJobName: JobNames.OIMbl\r\n },\r\n\r\n //Oih More Menu\r\n // { text: 'Arrival Notice', level: 1, popupComponent: , popupLabel: 'Arrival Notice (HBL)', moreMenuJobName: JobNames.OIHbl, topLineColor: borderColors[0 % borderColors.length] },\r\n {\r\n text: 'Arrival Notice',\r\n level: 1,\r\n link: '/oceanImport/hblArrivalNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/hblArrivalNotice/'),\r\n moreMenuJobName: JobNames.OIHbl,\r\n //topLineColor: borderColors[0 % borderColors.length] \r\n },\r\n {\r\n text: 'Arrival Notice',\r\n level: 1,\r\n moreMenuJobName: JobNames.OIHbl,\r\n subMenu: FmsSubMenu.ArrivalNotice\r\n //topLineColor: borderColors[0 % borderColors.length] \r\n },\r\n // { text: 'Arrival/Release Notice', level: 1, popupComponent: , moreMenuJobName: JobNames.OIHbl },\r\n {\r\n text: 'Arrival/Release Notice',\r\n level: 1,\r\n link: '/oceanImport/arrivalReleaseNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/arrivalReleaseNotice'),\r\n moreMenuJobName: JobNames.OIHbl\r\n },\r\n { text: '2nd Arrival Notice', level: 1, subMenu: FmsSubMenu._2ndArrivalNotice, moreMenuJobName: JobNames.OIHbl },\r\n // { text: 'Correction Notice/Request', level: 1, popupComponent: , moreMenuJobName: JobNames.OIHbl },\r\n {\r\n text: 'Correction Notice/Request',\r\n level: 1,\r\n link: '/oceanImport/correctionNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/correctionNotice/'),\r\n moreMenuJobName: JobNames.OIHbl\r\n },\r\n // { text: 'Delivery Order (Pre Form)', level: 1, popupComponent: , moreMenuJobName: JobNames.OIHbl },\r\n // {\r\n // text: 'Delivery Order (Pre Form)',\r\n // level: 1,\r\n // link: '/oceanImport/preDeliveryOrder?jobname=@jobName&id=@jobid&docType=59',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/preDeliveryOrder/'),\r\n // moreMenuJobName: JobNames.OIHbl\r\n // },\r\n // { text: 'Delivery Order (Short Form)', level: 1, popupComponent: , moreMenuJobName: JobNames.OIHbl },\r\n {\r\n text: 'Delivery Order',\r\n level: 1,\r\n link: '/oceanImport/shortDeliveryOrder?jobname=@jobName&id=@jobid&docType=81',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/shortDeliveryOrder/'),\r\n moreMenuJobName: JobNames.OIHbl\r\n },\r\n // { text: 'Pickup/Delivery Instruction', level: 1, popupComponent: , moreMenuJobName: JobNames.OIHbl },\r\n {\r\n text: 'Pickup/Delivery Instruction',\r\n level: 1,\r\n link: '/oceanImport/pickupDelivery?jobname=@jobName&id=@jobid&docType=18',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/pickupDelivery/'),\r\n moreMenuJobName: JobNames.OIHbl\r\n },\r\n { text: 'Print HBL', level: 1, subMenu: FmsSubMenu.OIHouseBL, moreMenuJobName: JobNames.OIHbl },\r\n //{ text: 'USDA Hold Notice', level: 1, popupComponent: , popupLabel: 'USDA Hold Notice (HBL)', moreMenuJobName: JobNames.OIHbl },\r\n {\r\n text: 'USDA Hold Notice',\r\n level: 1,\r\n link: '/oceanImport/hblHoldNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/hblHoldNotice'),\r\n moreMenuJobName: JobNames.OIHbl\r\n },\r\n {\r\n text: 'Est. HBL Profit',\r\n level: 1,\r\n subMenu: FmsSubMenu.HouseProfit,\r\n moreMenuJobName: JobNames.OIHbl,\r\n //topLineColor: borderColors[1 % borderColors.length]\r\n },\r\n //{ text: 'Cargo Status Query', level: 1, popupComponent: , moreMenuJobName: JobNames.OIHbl, topLineColor: borderColors[2 % borderColors.length] },\r\n {\r\n text: 'Cargo Status Query',\r\n level: 1,\r\n textColor: 'orangered',\r\n link: '/oceanImport/cargoManifestStatus?jobname=@jobName&id=@jobid&oiMblId=@oiMblId',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/cargoManifestStatus/'),\r\n moreMenuJobName: JobNames.OIHbl,\r\n //topLineColor: borderColors[2 % borderColors.length]\r\n },\r\n //appcontext on off menu\r\n { text: 'CFS Release', level: 1, moreMenuJobName: JobNames.OIHbl },\r\n //appcontext on off menu\r\n //{ text: 'EDI 315', level: 1, popupComponent: , popupWidth: 760, moreMenuJobName: JobNames.OIHbl },\r\n {\r\n text: 'EDI 315',\r\n level: 1,\r\n link: '/oceanImport/sendShipmentStatus?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/sendShipmentStatus'),\r\n moreMenuJobName: JobNames.OIHbl\r\n },\r\n {\r\n text: 'Carrier\\'s Certificate',\r\n level: 1,\r\n subMenu: FmsSubMenu.CarrierCertificate,\r\n moreMenuJobName: JobNames.OIHbl,\r\n //topLineColor: borderColors[3 % borderColors.length]\r\n },\r\n // { text: 'Empty CNTR Return Guarantee', level: 1, popupComponent: , moreMenuJobName: JobNames.OIHbl },\r\n {\r\n text: 'Empty CNTR Return Guarantee',\r\n level: 1,\r\n link: '/oceanImport/emptyContainerReturnGuarantee?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/emptyContainerReturnGuarantee'),\r\n moreMenuJobName: JobNames.OIHbl\r\n },\r\n { text: 'Export Declaration for Transit', level: 1, subMenu: FmsSubMenu.ExdecTransit, moreMenuJobName: JobNames.OIHbl },\r\n //{ text: 'Folder Label', level: 1, subMenu: FmsSubMenu.FolderLabel, moreMenuJobName: JobNames.OIHbl, metadata: { isDirectPrint: true } },\r\n {\r\n text: 'Folder Label',\r\n level: 1,\r\n link: '/oceanImport/folderLabel?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/folderLabel/'),\r\n moreMenuJobName: JobNames.OIHbl\r\n },\r\n // { text: 'I.T Cancel Notice', level: 1, popupComponent: , moreMenuJobName: JobNames.OIHbl },\r\n {\r\n text: 'I.T Cancel Notice',\r\n level: 1,\r\n link: '/oceanImport/cancelNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/cancelNotice'),\r\n moreMenuJobName: JobNames.OIHbl\r\n },\r\n // { text: 'Print 7512', level: 1, popupComponent: , moreMenuJobName: JobNames.OIHbl },\r\n {\r\n text: 'Print 7512',\r\n level: 1,\r\n link: '/oceanImport/itTeNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/itTeNotice/'),\r\n moreMenuJobName: JobNames.OIHbl\r\n },\r\n // { text: 'Lien Notice', level: 1, popupComponent: , moreMenuJobName: JobNames.OIHbl },\r\n {\r\n text: 'Lien Notice',\r\n level: 1,\r\n link: '/oceanImport/lienNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/lienNotice'),\r\n moreMenuJobName: JobNames.OIHbl\r\n },\r\n // { text: 'Memo List', level: 1, popupComponent: , popupLabel: 'Memo List (HBL)', moreMenuJobName: JobNames.OIHbl },\r\n // { text: 'Memo List (Customer)', level: 1, popupComponent: , popupLabel: 'Memo List (Customer)', moreMenuJobName: JobNames.OIHbl },\r\n {\r\n text: 'Memo List',\r\n level: 1,\r\n link: '/oceanImport/memoList?jobname=@jobName&id=@jobid&isCompany=false',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/memoList/'),\r\n moreMenuJobName: JobNames.OIHbl\r\n },\r\n {\r\n text: 'Memo List (Customer)',\r\n level: 1,\r\n link: '/oceanImport/memoCustomerList?jobname=@jobName&id=@jobid&isCompany=true',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/memoCustomerList/'),\r\n moreMenuJobName: JobNames.OIHbl\r\n },\r\n // { text: 'Package Label', level: 1, popupComponent: , moreMenuJobName: JobNames.OIHbl },\r\n {\r\n text: 'Package Label',\r\n level: 1,\r\n link: '/oceanImport/packageLabel?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/packageLabel/'),\r\n moreMenuJobName: JobNames.OIHbl\r\n },\r\n // { text: 'Preliminary Claim Notice', level: 1, popupComponent: , moreMenuJobName: JobNames.OIHbl },\r\n {\r\n text: 'Preliminary Claim Notice',\r\n level: 1,\r\n link: '/oceanImport/preliminaryClaimNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/preliminaryClaimNotice/'),\r\n moreMenuJobName: JobNames.OIHbl\r\n },\r\n // { text: 'Proof of Delivery', level: 1, popupComponent: , popupWidth: 790, moreMenuJobName: JobNames.OIHbl },\r\n {\r\n text: 'Proof of Delivery',\r\n level: 1,\r\n link: '/oceanImport/proofOfDelivery?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/proofOfDelivery/'),\r\n moreMenuJobName: JobNames.OIHbl\r\n },\r\n // { text: 'Release Order/Turnover', level: 1, popupComponent: , moreMenuJobName: JobNames.OIHbl },\r\n {\r\n text: 'Release Order/Turnover',\r\n level: 1,\r\n link: '/oceanImport/releaseOrderTurnover?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/releaseOrderTurnover/'),\r\n moreMenuJobName: JobNames.OIHbl\r\n },\r\n // { text: 'Straight B/L', level: 1, popupComponent: , moreMenuJobName: JobNames.OIHbl },\r\n {\r\n text: 'Straight B/L',\r\n level: 1,\r\n link: '/oceanImport/straightBl?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/straightBl/'),\r\n moreMenuJobName: JobNames.OIHbl\r\n },\r\n { text: 'Work Sheet', level: 1, subMenu: FmsSubMenu.WorkSheet, moreMenuJobName: JobNames.OIHbl },\r\n // {\r\n // text: 'ISF Usage',\r\n // level: 1,\r\n // link: '/oceanImport/isfUsage?jobname=@jobName',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/isfUsage'),\r\n // moreMenuJobName: JobNames.ISF\r\n // },\r\n //Download MBL More Menu\r\n // { text: 'Download MBL (All) List', level: 1, moreMenuJobName: JobNames.OIMPims },\r\n // { text: 'Download MBL (Downloaded) List', level: 1, moreMenuJobName: JobNames.OIMPims },\r\n // { text: 'Download MBL (Not Downloaded) List', level: 1, moreMenuJobName: JobNames.OIMPims },\r\n\r\n //Download HBL More Menu\r\n // { text: 'Download HBL (All) List', level: 1, moreMenuJobName: JobNames.OIHPims },\r\n // { text: 'Download HBL (Downloaded) List', level: 1, moreMenuJobName: JobNames.OIHPims },\r\n // { text: 'Download HBL (Not Downloaded) List', level: 1, moreMenuJobName: JobNames.OIHPims },\r\n ]\r\n },\r\n // Ocean export\r\n {\r\n operation: constants.operations.oceanExport,\r\n job: [\r\n {\r\n text: 'Quotation',\r\n level: 0,\r\n link: '/common/joblistview/oeQuotation/oceanExport?parentOp=oceanExport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/oeQuotation/oceanExport'),\r\n fmsSecTask: FmsSecTask.OEQuot,\r\n },\r\n {\r\n text: 'Booking',\r\n level: 0,\r\n link: '/common/joblistview/oeBooking/oceanExport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/oeBooking/oceanExport'),\r\n fmsSecTask: FmsSecTask.OEBook,\r\n moreMenuJobName: JobNames.OEBook,\r\n },\r\n {\r\n text: 'House B/L',\r\n level: 0,\r\n link: '/common/joblistview/oeHbl/oceanExport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/oeHbl/oceanExport'),\r\n fmsSecTask: FmsSecTask.OEHbl,\r\n moreMenuJobName: JobNames.OEHbl,\r\n topLineColor: borderColors[0 % borderColors.length]\r\n },\r\n {\r\n text: 'Master B/L',\r\n level: 0,\r\n link: '/common/joblistview/oeMbl/oceanExport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/oeMbl/oceanExport'),\r\n fmsSecTask: FmsSecTask.OEMbl,\r\n moreMenuJobName: JobNames.OEMbl,\r\n topLineColor: borderColors[0 % borderColors.length]\r\n },\r\n {\r\n text: 'Container List',\r\n level: 0,\r\n link: '/common/joblistview/oeContainerStatus/oceanExport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/oeContainerStatus/oceanExport'),\r\n fmsSecTask: FmsSecTask.OEContainer,\r\n topLineColor: borderColors[1 % borderColors.length]\r\n },\r\n {\r\n text: 'Load Plan',\r\n level: 0,\r\n link: '/common/joblistview/oeLoadPlan/oceanExport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/oeLoadPlan/oceanExport'),\r\n fmsSecTask: FmsSecTask.OELoad,\r\n },\r\n {\r\n text: 'Invoice',\r\n level: 0,\r\n link: '/common/joblistview/invoice/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/invoice/accounting'),\r\n fmsSecTask: FmsSecTask.AcctInvoiceList,\r\n topLineColor: borderColors[2 % borderColors.length]\r\n },\r\n {\r\n text: 'Bill',\r\n level: 0,\r\n link: '/common/joblistview/bill/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/bill/accounting'),\r\n fmsSecTask: FmsSecTask.AcctBillList\r\n },\r\n {\r\n text: 'CrDb',\r\n level: 0,\r\n link: '/common/joblistview/crdb/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/crdb/accounting'),\r\n fmsSecTask: FmsSecTask.AcctCrDbList\r\n },\r\n {\r\n text: `AMS Filing`,\r\n level: 0,\r\n name: 'amsFiling',\r\n textColor: 'orangered',\r\n metadata: { isDirectPrint: true },\r\n topLineColor: borderColors[3 % borderColors.length]\r\n },\r\n {\r\n text: `ISF Filing`,\r\n level: 0,\r\n name: 'isfFiling',\r\n textColor: 'orangered',\r\n metadata: { isDirectPrint: true }\r\n },\r\n {\r\n text: `AES Filing`,\r\n level: 0,\r\n name: 'aesFiling',\r\n textColor: 'orangered',\r\n metadata: { isDirectPrint: true }\r\n },\r\n {\r\n text: `In-bond`,\r\n level: 0,\r\n name: 'inbond',\r\n textColor: 'orangered',\r\n metadata: { isDirectPrint: true }\r\n },\r\n {\r\n text: 'Report',\r\n level: 0,\r\n topLineColor: borderColors[4 % borderColors.length],\r\n items: [\r\n {\r\n text: 'Ocean Export Shipment',\r\n level: 1,\r\n link: '/oceanExport/shipmentReport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/shipmentReport/'),\r\n fmsSecTask: FmsSecTask.OERptShipment\r\n }, {\r\n text: 'Brokerage',\r\n level: 1,\r\n link: '/oceanExport/brokerageReport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/brokerageReport/'),\r\n fmsSecTask: FmsSecTask.OERptBrokerage\r\n },\r\n // {text: 'Est. Profit/Volume Summary Report', level: 1},\r\n ],\r\n },\r\n {\r\n text: 'Download MBL',\r\n level: 0,\r\n link: '/common/joblistview/OEMP/oceanExport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/OEMP/oceanExport'),\r\n fmsSecTask: FmsSecTask.OEMPims,\r\n },\r\n {\r\n text: 'Download HBL',\r\n level: 0,\r\n link: '/common/joblistview/OEHP/oceanExport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/OEHP/oceanExport'),\r\n fmsSecTask: FmsSecTask.OEHPims,\r\n },\r\n /*{\r\n text: 'Booking Status', level: 0,\r\n items: [\r\n { text: 'Customer Booking ', level: 1 },\r\n { text: 'Carrier Booking ', level: 1 },\r\n ]\r\n },*/\r\n // {\r\n // text: 'Load Plan', level: 0,\r\n // },\r\n /*{\r\n text: '\tW/H Receipt', level: 0,\r\n },\r\n {\r\n text: 'Container Tracking', level: 0,\r\n },*/\r\n ],\r\n download: [],\r\n operationReport: [],\r\n preReport: [\r\n // {\r\n // text: 'Billings', level: 0,\r\n // items: [\r\n // {text: 'Invoice List', level: 1, link: '/common/joblistview/invoice/accounting', isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/invoice/accounting')},\r\n // {text: 'Bill List', level: 1, link: '/common/joblistview/bill/accounting', isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/bill/accounting')},\r\n // {text: 'CrDb List', level: 1, link: '/common/joblistview/crdb/accounting', isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/crdb/accounting')},\r\n // ]\r\n // },\r\n ],\r\n report: [],\r\n moreMenu: [\r\n //Oem More Menu\r\n // { text: 'AES Filing (Portal)', level: 1, popupComponent: , moreMenuJobName: JobNames.OEMbl, topLineColor: borderColors[0 % borderColors.length] },\r\n {\r\n text: 'AES Filing (Portal)',\r\n level: 1,\r\n link: '/oceanExport/aesFiling?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/aesFiling/'),\r\n moreMenuJobName: JobNames.OEMbl,\r\n //topLineColor: borderColors[0 % borderColors.length]\r\n },\r\n // { text: 'Correction Notice/Request', level: 1, popupComponent: , moreMenuJobName: JobNames.OEMbl },\r\n {\r\n text: 'Correction Notice/Request',\r\n level: 1,\r\n link: '/oceanExport/correctionNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/correctionNotice/'),\r\n moreMenuJobName: JobNames.OEMbl\r\n },\r\n // { text: 'Pickup/Delivery Instruction', level: 1, popupComponent: , moreMenuJobName: JobNames.OEMbl },\r\n {\r\n text: 'Pickup/Delivery Instruction',\r\n level: 1,\r\n link: '/oceanExport/pickupDelivery?jobname=@jobName&id=@jobid&docType=18',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/pickupDelivery/'),\r\n moreMenuJobName: JobNames.OEMbl\r\n },\r\n // { text: 'Batch Print House B/L', level: 1, popupComponent: , moreMenuJobName: JobNames.OEMbl },\r\n {\r\n text: 'Batch Print House B/L',\r\n level: 1,\r\n link: '/oceanExport/oemBatchPrint?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/oemBatchPrint/'),\r\n moreMenuJobName: JobNames.OEMbl\r\n },\r\n {\r\n text: 'Est. MBL Profit',\r\n level: 1,\r\n subMenu: FmsSubMenu.MasterProfit,\r\n moreMenuJobName: JobNames.OEMbl,\r\n //topLineColor: borderColors[1 % borderColors.length] \r\n },\r\n { text: 'Gross MBL Profit', level: 1, subMenu: FmsSubMenu.MasterProfitHBL, moreMenuJobName: JobNames.OEMbl },\r\n // { text: 'Agent Document Package', level: 1, popupComponent: , moreMenuJobName: JobNames.OEMbl, topLineColor: borderColors[2 % borderColors.length] },\r\n {\r\n text: 'Agent Document Package',\r\n level: 1,\r\n link: '/oceanExport/agentDocumentPackage?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/agentDocumentPackage/'),\r\n moreMenuJobName: JobNames.OEMbl,\r\n //topLineColor: borderColors[2 % borderColors.length]\r\n },\r\n // { text: 'Container Load Plan', level: 1, popupComponent: , moreMenuJobName: JobNames.OEMbl },\r\n {\r\n text: 'Container Load Plan',\r\n level: 1,\r\n link: '/oceanExport/containerLoadPlan?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/containerLoadPlan'),\r\n moreMenuJobName: JobNames.OEMbl\r\n },\r\n { text: 'Dock Receipt', level: 1, subMenu: FmsSubMenu.DockReceipt, moreMenuJobName: JobNames.OEMbl },\r\n //{ text: 'Folder Label', level: 1, subMenu: FmsSubMenu.FolderLabel, moreMenuJobName: JobNames.OEMbl, metadata: { isDirectPrint: true } },\r\n {\r\n text: 'Folder Label',\r\n level: 1,\r\n link: '/oceanExport/folderLabel?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/folderLabel/'),\r\n moreMenuJobName: JobNames.OEMbl\r\n },\r\n { text: 'MBL/Shipping Request', level: 1, subMenu: FmsSubMenu.MasterSet, moreMenuJobName: JobNames.OEMbl },\r\n // { text: 'Memo List', level: 1, popupComponent: , popupLabel: 'Memo List (MBL)', moreMenuJobName: JobNames.OEMbl },\r\n {\r\n text: 'Memo List',\r\n level: 1,\r\n link: '/oceanExport/memoList?jobname=@jobName&id=@jobid&isCompany=false',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/memoList/'),\r\n moreMenuJobName: JobNames.OEMbl\r\n },\r\n // { text: 'Ocean Cargo Manifest', level: 1, popupComponent: , moreMenuJobName: JobNames.OEMbl, topLineColor: borderColors[3 % borderColors.length] },\r\n {\r\n text: 'Ocean Cargo Manifest',\r\n level: 1,\r\n link: '/oceanExport/cargoManifest?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanImport/cargoManifest/'),\r\n moreMenuJobName: JobNames.OEMbl,\r\n //topLineColor: borderColors[3 % borderColors.length]\r\n },\r\n { text: 'Telex Release', level: 1, subMenu: FmsSubMenu.TelexReleaseMessage, moreMenuJobName: JobNames.OEMbl },\r\n //appcontext on off menu\r\n //{ text: 'Carrier Shipping Instruction', level: 1, moreMenuJobName: JobNames.OEMbl }, // <250205.dwshin. releated pims. remove menu.>\r\n //appcontext on off menu\r\n // { text: 'B/L EDI', level: 1, popupComponent: , moreMenuJobName: JobNames.OEMbl },\r\n {\r\n text: 'B/L EDI',\r\n level: 1,\r\n link: '/oceanExport/sendBl?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/sendBl/'),\r\n moreMenuJobName: JobNames.OEMbl\r\n },\r\n\r\n //Oeh More Menu\r\n // { text: 'AES Filing (Portal)', level: 1, popupComponent: , moreMenuJobName: JobNames.OEHbl, topLineColor: borderColors[0 % borderColors.length] },\r\n {\r\n text: 'AES Filing (Portal)',\r\n level: 1,\r\n link: '/oceanExport/aesFiling?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/aesFiling/'),\r\n moreMenuJobName: JobNames.OEHbl,\r\n //topLineColor: borderColors[0 % borderColors.length]\r\n },\r\n // { text: 'AES Filing', level: 1, subMenu: FmsSubMenu.AesOcean, moreMenuJobName: JobNames.OEHbl },\r\n { text: 'Booking Confirmation', level: 1, subMenu: FmsSubMenu.OOHBook, moreMenuJobName: JobNames.OEHbl },\r\n // { text: 'Correction Notice/Request', level: 1, popupComponent: , moreMenuJobName: JobNames.OEHbl },\r\n {\r\n text: 'Correction Notice/Request',\r\n level: 1,\r\n link: '/oceanExport/correctionNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/correctionNotice/'),\r\n moreMenuJobName: JobNames.OEHbl\r\n },\r\n // { text: 'Pickup/Delivery Instruction', level: 1, popupComponent: , moreMenuJobName: JobNames.OEHbl },\r\n {\r\n text: 'Pickup/Delivery Instruction',\r\n level: 1,\r\n link: '/oceanExport/pickupDelivery?jobname=@jobName&id=@jobid&docType=18',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/pickupDelivery/'),\r\n moreMenuJobName: JobNames.OEHbl\r\n },\r\n // { text: 'Print House B/L', level: 1, popupComponent: , moreMenuJobName: JobNames.OEHbl },\r\n {\r\n text: 'Print House B/L',\r\n level: 1,\r\n link: '/oceanExport/printHbl?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/printHbl/'),\r\n moreMenuJobName: JobNames.OEHbl\r\n },\r\n {\r\n text: 'Est. HBL Profit',\r\n level: 1,\r\n subMenu: FmsSubMenu.HouseProfit,\r\n moreMenuJobName: JobNames.OEHbl,\r\n //topLineColor: borderColors[1 % borderColors.length] \r\n },\r\n // { text: 'Bank Draft', level: 1, popupComponent: , moreMenuJobName: JobNames.OEHbl, topLineColor: borderColors[2 % borderColors.length] },\r\n {\r\n text: 'Bank Draft',\r\n level: 1,\r\n link: '/oceanExport/bankDraft?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/bankDraft/'),\r\n moreMenuJobName: JobNames.OEHbl,\r\n //topLineColor: borderColors[2 % borderColors.length]\r\n },\r\n { text: 'Certificate of Heat Treatment', level: 1, subMenu: FmsSubMenu.OEUSDA, moreMenuJobName: JobNames.OEHbl },\r\n // { text: 'Certificate of Origin', level: 1, popupComponent: , moreMenuJobName: JobNames.OEHbl },\r\n {\r\n text: 'Certificate of Origin',\r\n level: 1,\r\n link: '/oceanExport/certificateOfOrigin?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/certificateOfOrigin/'),\r\n moreMenuJobName: JobNames.OEHbl\r\n },\r\n // { text: 'Commercial Invoice', level: 1, popupComponent: , moreMenuJobName: JobNames.OEHbl },\r\n {\r\n text: 'Commercial Invoice',\r\n level: 1,\r\n link: '/oceanExport/commercialInvoice?jobname=@jobName&id=@jobid&rptType=RPCOINV',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/commercialInvoice/'),\r\n moreMenuJobName: JobNames.OEHbl\r\n },\r\n { text: 'Dock Receipt', level: 1, subMenu: FmsSubMenu.DockReceipt, moreMenuJobName: JobNames.OEHbl },\r\n // { text: 'Document Package', level: 1, popupComponent: , moreMenuJobName: JobNames.OEHbl },\r\n {\r\n text: 'Document Package',\r\n level: 1,\r\n link: '/oceanExport/documentPackage?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/documentPackage/'),\r\n moreMenuJobName: JobNames.OEHbl\r\n },\r\n { text: 'Export Declaration for Transit', level: 1, subMenu: FmsSubMenu.ExdecTransit, moreMenuJobName: JobNames.OEHbl },\r\n //{ text: 'Folder Label', level: 1, subMenu: FmsSubMenu.FolderLabel, moreMenuJobName: JobNames.OEHbl, metadata: { isDirectPrint: true } },\r\n {\r\n text: 'Folder Label',\r\n level: 1,\r\n link: '/oceanExport/folderLabel?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/folderLabel/'),\r\n moreMenuJobName: JobNames.OEHbl\r\n },\r\n // { text: 'Print 7512', level: 1, popupComponent: , moreMenuJobName: JobNames.OEHbl },\r\n {\r\n text: 'Print 7512',\r\n level: 1,\r\n link: '/oceanExport/itTeNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/itTeNotice/'),\r\n moreMenuJobName: JobNames.OEHbl\r\n },\r\n // { text: 'Memo List', level: 1, popupComponent: , popupLabel: 'Memo List (HBL)', moreMenuJobName: JobNames.OEHbl },\r\n // { text: 'Memo List (Customer)', level: 1, popupComponent: , popupLabel: 'Memo List (Customer)', moreMenuJobName: JobNames.OEHbl },\r\n {\r\n text: 'Memo List',\r\n level: 1,\r\n link: '/oceanExport/memoList?jobname=@jobName&id=@jobid&isCompany=false',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/memoList/'),\r\n moreMenuJobName: JobNames.OEHbl\r\n },\r\n {\r\n text: 'Memo List (Customer)',\r\n level: 1,\r\n link: '/oceanExport/memoCustomerList?jobname=@jobName&id=@jobid&isCompany=true',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/memoCustomerList/'),\r\n moreMenuJobName: JobNames.OEHbl\r\n },\r\n // { text: 'Package Label', level: 1, popupComponent: , moreMenuJobName: JobNames.OEHbl },\r\n {\r\n text: 'Package Label',\r\n level: 1,\r\n link: '/oceanExport/packageLabel?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/packageLabel/'),\r\n moreMenuJobName: JobNames.OEHbl\r\n },\r\n // { text: 'Packing List', level: 1, popupComponent: , moreMenuJobName: JobNames.OEHbl },\r\n {\r\n text: 'Packing List',\r\n level: 1,\r\n link: '/oceanExport/packingList?jobname=@jobName&id=@jobid&rptType=RPPACKL',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/packingList/'),\r\n moreMenuJobName: JobNames.OEHbl\r\n },\r\n // { text: 'Shipping Advice', level: 1, popupComponent: , moreMenuJobName: JobNames.OEHbl },\r\n {\r\n text: 'Shipping Advice',\r\n level: 1,\r\n link: '/oceanExport/shippingAdvice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/shippingAdvice/'),\r\n moreMenuJobName: JobNames.OEHbl\r\n },\r\n // { text: 'Straight B/L', level: 1, popupComponent: , moreMenuJobName: JobNames.OEHbl },\r\n {\r\n text: 'Straight B/L',\r\n level: 1,\r\n link: '/oceanExport/straightBl?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/straightBl/'),\r\n moreMenuJobName: JobNames.OEHbl\r\n },\r\n\r\n //Booking More Menu\r\n {\r\n text: 'Booking Confirmation',\r\n level: 1,\r\n subMenu: FmsSubMenu.OOHBook,\r\n moreMenuJobName: JobNames.OEBook,\r\n //topLineColor: borderColors[0 % borderColors.length]\r\n },\r\n // { text: 'Booking Label', level: 1, popupComponent: , moreMenuJobName: JobNames.OEBook },\r\n {\r\n text: 'Booking Label',\r\n level: 1,\r\n link: '/oceanExport/airLabel?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/airLabel/'),\r\n moreMenuJobName: JobNames.OEBook\r\n },\r\n { text: 'Dock Receipt', level: 1, subMenu: FmsSubMenu.DockReceipt, moreMenuJobName: JobNames.OEBook },\r\n // { text: 'Pickup/Delivery Instruction', level: 1, popupComponent: , moreMenuJobName: JobNames.OEBook },\r\n {\r\n text: 'Pickup/Delivery Instruction',\r\n level: 1,\r\n link: '/oceanExport/pickupDelivery?jobname=@jobName&id=@jobid&docType=18',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/pickupDelivery/'),\r\n moreMenuJobName: JobNames.OEBook\r\n },\r\n // { text: 'Shipping Advice', level: 1, popupComponent: , moreMenuJobName: JobNames.OEBook },\r\n {\r\n text: 'Shipping Advice',\r\n level: 1,\r\n link: '/oceanExport/shippingAdvice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/oceanExport/shippingAdvice/'),\r\n moreMenuJobName: JobNames.OEBook\r\n },\r\n\r\n //Download MBL More Menu\r\n // { text: 'Download MBL (All) List', level: 1, moreMenuJobName: JobNames.OEMPims },\r\n // { text: 'Download MBL (Downloaded) List', level: 1, moreMenuJobName: JobNames.OEMPims },\r\n // { text: 'Download MBL (Not Downloaded) List', level: 1, moreMenuJobName: JobNames.OEMPims },\r\n\r\n //Download HBL More Menu\r\n // { text: 'Download HBL (All) List', level: 1, moreMenuJobName: JobNames.OEHPims },\r\n // { text: 'Download HBL (Downloaded) List', level: 1, moreMenuJobName: JobNames.OEHPims },\r\n // { text: 'Download HBL (Not Downloaded) List', level: 1, moreMenuJobName: JobNames.OEHPims },\r\n \r\n ]\r\n },\r\n // Air Import\r\n {\r\n operation: constants.operations.airImport,\r\n job: [\r\n {\r\n text: 'Master AWB',\r\n level: 0,\r\n link: '/common/joblistview/aiMawb/airImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/aiMawb/airImport'),\r\n fmsSecTask: FmsSecTask.AIMbl,\r\n moreMenuJobName: JobNames.AIMbl,\r\n },\r\n {\r\n text: 'House AWB',\r\n level: 0,\r\n link: '/common/joblistview/aiHawb/airImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/aiHawb/airImport'),\r\n fmsSecTask: FmsSecTask.AIHbl,\r\n moreMenuJobName: JobNames.AIHbl,\r\n },\r\n {\r\n text: 'Quotation',\r\n level: 0,\r\n link: '/common/joblistview/aeQuotation/airExport?parentOp=airImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/aeQuotation/airExport'),\r\n fmsSecTask: FmsSecTask.AIQuot,\r\n topLineColor: borderColors[0 % borderColors.length]\r\n },\r\n {\r\n text: 'Invoice', level: 0,\r\n link: '/common/joblistview/invoice/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/invoice/accounting'),\r\n fmsSecTask: FmsSecTask.AcctInvoiceList,\r\n topLineColor: borderColors[1 % borderColors.length]\r\n },\r\n {\r\n text: 'Bill', level: 0,\r\n link: '/common/joblistview/bill/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/bill/accounting'),\r\n fmsSecTask: FmsSecTask.AcctBillList\r\n },\r\n {\r\n text: 'CrDb', level: 0,\r\n link: '/common/joblistview/crdb/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/crdb/accounting'),\r\n fmsSecTask: FmsSecTask.AcctCrDbList\r\n },\r\n {\r\n text: `AMS Filing`,\r\n level: 0,\r\n name: 'amsFiling',\r\n textColor: 'orangered',\r\n metadata: { isDirectPrint: true },\r\n topLineColor: borderColors[2 % borderColors.length]\r\n },\r\n {\r\n text: `ISF Filing`,\r\n level: 0,\r\n name: 'isfFiling',\r\n textColor: 'orangered',\r\n metadata: { isDirectPrint: true }\r\n },\r\n {\r\n text: `AES Filing`,\r\n level: 0,\r\n name: 'aesFiling',\r\n textColor: 'orangered',\r\n metadata: { isDirectPrint: true }\r\n },\r\n {\r\n text: `In-bond`,\r\n level: 0,\r\n name: 'inbond',\r\n textColor: 'orangered',\r\n metadata: { isDirectPrint: true }\r\n },\r\n {\r\n text: 'Pre Alert Report', level: 0,\r\n link: '/airImport/preAlert',\r\n fmsSecTask: FmsSecTask.AIRptPreAlert,\r\n topLineColor: borderColors[3 % borderColors.length],\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/preAlert/'),\r\n },\r\n {\r\n text: 'Air Import Est. Profit Report', level: 1,\r\n link: '/airImport/estProfit?docType=705&isManagerReport=true&opType=airImport',\r\n fmsSecTask: FmsSecTask.AIRptEstProfit,\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/estProfit'),\r\n },\r\n {\r\n text: 'Download MAWB',\r\n level: 0,\r\n link: '/common/joblistview/AIMP/airImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/AIMP/airImport'),\r\n fmsSecTask: FmsSecTask.AIMPims,\r\n },\r\n {\r\n text: 'Download HAWB',\r\n level: 0,\r\n link: '/common/joblistview/AIHP/airImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/AIHP/airImport'),\r\n fmsSecTask: FmsSecTask.AIHPims,\r\n },\r\n ],\r\n download: [],\r\n operationReport: [],\r\n preReport: [\r\n // {\r\n // text: 'Billings', level: 0,\r\n // items: [\r\n // {text: 'Invoice List', level: 1, link: '/common/joblistview/invoice/accounting', isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/invoice/accounting')},\r\n // {text: 'Bill List', level: 1, link: '/common/joblistview/bill/accounting', isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/bill/accounting')},\r\n // {text: 'CrDb List', level: 1, link: '/common/joblistview/crdb/accounting', isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/crdb/accounting')},\r\n // ]\r\n // },\r\n ],\r\n report: [],\r\n /*download: [\r\n {\r\n text: Report (AI), level: 0,\r\n items: [\r\n { text: 'Pre Alert Report', level: 1, popupComponent: },\r\n { text: 'Est. Profilt/Volume Summary Report', level: 1, popupComponent: },\r\n ]\r\n },\r\n {\r\n text: 'Download', level: 0,\r\n items: [\r\n { text: 'Download My MBL (AI)', level: 1 },\r\n { text: 'Donwload My HBL (AI)', level: 1 },\r\n { text: 'Download All MBL (AI)', level: 1 },\r\n { text: 'Donwload All HBL (AI)', level: 1 },\r\n { text: 'Shipping Order (AI)', level: 1 },\r\n ]\r\n },\r\n {\r\n text: Billings & Report (Manager), level: 0,\r\n items: [\r\n { text: 'Invoice List', level: 1 },\r\n { text: 'Bill List', level: 1 },\r\n { text: 'CrDb List', level: 1 },\r\n { text: 'Est. Profilt/Volume Summary Report', level: 1 },\r\n { text: 'Gross Profit/Volume Summary Report', level: 1 },\r\n { text: 'Vendor Cost Report', level: 1 },\r\n { text: 'Volume Report', level: 1 },\r\n { text: 'Sales Performance Report', level: 1 },\r\n { text: 'Customer Activity Report', level: 1 },\r\n { text: 'Duty Pendings', level: 1 },\r\n { text: 'Issue Ready Invoice Report', level: 1 },\r\n { text: 'Issue Ready Bill Report', level: 1 },\r\n { text: 'Issue Ready Cr/Db Report', level: 1 },\r\n { text: 'Operation Performance Report', level: 1 },\r\n { text: 'Branch Performance Report', level: 1 },\r\n ]\r\n },\r\n {\r\n text: Report (AI), level: 0,\r\n items: [\r\n { text: 'Pre Alert Report', level: 1, popupComponent: },\r\n { text: 'Est. Profilt/Volume Summary Report', level: 1, popupComponent: },\r\n ]\r\n },\r\n {\r\n text: 'EDI', level: 0,\r\n items: [\r\n { text: 'FS3.0 EDI', level: 1 },\r\n { text: 'B/L from Oversea Partner', level: 1 },\r\n ]\r\n },\r\n ],*/\r\n /*download: [\r\n {\r\n text: 'Download', level: 0,\r\n items: [\r\n { text: 'Download My MBL (AI)', level: 1 },\r\n { text: 'Donwload My HBL (AI)', level: 1 },\r\n { text: 'Download All MBL (AI)', level: 1 },\r\n { text: 'Donwload All HBL (AI)', level: 1 },\r\n { text: 'Shipping Order (AI)', level: 1 },\r\n ]\r\n },\r\n {\r\n text: 'EDI', level: 0,\r\n items: [\r\n { text: 'FS3.0 EDI', level: 1 },\r\n { text: 'B/L from Oversea Partner', level: 1 },\r\n ]\r\n },\r\n ],*/\r\n /*report: [\r\n {\r\n text: Billings & Report (Manager), level: 0,\r\n items: [\r\n { text: 'Invoice List', level: 1 },\r\n { text: 'Bill List', level: 1 },\r\n { text: 'CrDb List', level: 1 },\r\n { text: 'Est. Profilt/Volume Summary Report', level: 1 },\r\n { text: 'Gross Profit/Volume Summary Report', level: 1 },\r\n { text: 'Vendor Cost Report', level: 1 },\r\n { text: 'Volume Report', level: 1 },\r\n { text: 'Sales Performance Report', level: 1 },\r\n { text: 'Customer Activity Report', level: 1 },\r\n { text: 'Duty Pendings', level: 1 },\r\n { text: 'Issue Ready Invoice Report', level: 1 },\r\n { text: 'Issue Ready Bill Report', level: 1 },\r\n { text: 'Issue Ready Cr/Db Report', level: 1 },\r\n { text: 'Operation Performance Report', level: 1 },\r\n { text: 'Branch Performance Report', level: 1 },\r\n ]\r\n },\r\n {\r\n text: Report (AI), level: 0,\r\n items: [\r\n { text: 'Pre Alert Report', level: 1, popupComponent: },\r\n { text: 'Est. Profilt/Volume Summary Report', level: 1, popupComponent: },\r\n ]\r\n },\r\n ]*/\r\n moreMenu: [\r\n //Aim More Menu\r\n {\r\n text: 'Air Cargo Manifest',\r\n level: 1,\r\n subMenu: FmsSubMenu.AICargoManifest,\r\n moreMenuJobName: JobNames.AIMbl,\r\n },\r\n {\r\n text: 'Arrival Notice',\r\n level: 1,\r\n link: '/airImport/arrivalNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/arrivalNotice/'),\r\n moreMenuJobName: JobNames.AIMbl,\r\n },\r\n {\r\n text: 'Authority to Make Entry',\r\n level: 1,\r\n link: '/airImport/AuthorityToMakeEntry?jobname=@jobName&id=@jobid&isAtme=true',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/AuthorityToMakeEntry/'),\r\n moreMenuJobName: JobNames.AIMbl,\r\n },\r\n {\r\n text: 'IRC-225',\r\n level: 1,\r\n link: '/airImport/IRC225?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/IRC225/'),\r\n moreMenuJobName: JobNames.AIMbl,\r\n },\r\n {\r\n text: 'Correction Notice/Request',\r\n level: 1,\r\n link: '/airImport/correctionNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/correctionNotice/'),\r\n moreMenuJobName: JobNames.AIMbl,\r\n },\r\n {\r\n text: 'Pickup/Delivery Instruction',\r\n level: 1,\r\n link: '/airImport/pickupDelivery?jobname=@jobName&id=@jobid&docType=18',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/pickupDelivery/'),\r\n moreMenuJobName: JobNames.AIMbl,\r\n },\r\n {\r\n text: 'Est. MBL Profit',\r\n level: 1,\r\n subMenu: FmsSubMenu.MasterProfit,\r\n moreMenuJobName: JobNames.AIMbl,\r\n //topLineColor: borderColors[1 % borderColors.length]\r\n },\r\n { text: 'Gross MBL Profit', level: 1, subMenu: FmsSubMenu.MasterProfitHBL, moreMenuJobName: JobNames.AIMbl },\r\n //{ text: 'Folder Label', level: 1, subMenu: FmsSubMenu.FolderLabel, moreMenuJobName: JobNames.AIMbl, metadata: { isDirectPrint: true } },\r\n {\r\n text: 'Folder Label',\r\n level: 1,\r\n link: '/airImport/folderLabel?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/folderLabel/'),\r\n moreMenuJobName: JobNames.AIMbl\r\n },\r\n //{ text: 'Memo List', level: 1, popupComponent: , popupLabel: 'Memo List (MAWB)', moreMenuJobName: JobNames.AIMbl },\r\n {\r\n text: 'Memo List',\r\n level: 1,\r\n link: '/airImport/memoList?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/pickupDelivery/'),\r\n moreMenuJobName: JobNames.AIMbl,\r\n },\r\n //{ text: 'Cargo Status Query', level: 1, popupComponent: , moreMenuJobName: JobNames.AIMbl, topLineColor: borderColors[3 % borderColors.length] },\r\n {\r\n text: 'Cargo Status Query',\r\n level: 1,\r\n textColor: 'orangered',\r\n link: '/airImport/cargoManifestStatus?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/cargoManifestStatus/'),\r\n moreMenuJobName: JobNames.AIMbl,\r\n //topLineColor: borderColors[3 % borderColors.length]\r\n },\r\n //Aih More Menu\r\n //{ text: 'Arrival Notice', level: 1, popupComponent: , popupLabel: 'Arrival Notice (HAWB)', topLineColor: borderColors[0 % borderColors.length],moreMenuJobName: JobNames.AIHbl },\r\n {\r\n text: 'Arrival Notice',\r\n level: 1,\r\n link: '/airImport/hblArrivalNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/hblArrivalNotice/'),\r\n moreMenuJobName: JobNames.AIHbl,\r\n //topLineColor: borderColors[0 % borderColors.length]\r\n },\r\n {\r\n text: 'Arrival Notice',\r\n level: 1,\r\n moreMenuJobName: JobNames.AIHbl,\r\n subMenu: FmsSubMenu.ArrivalNotice\r\n //topLineColor: borderColors[0 % borderColors.length] \r\n },\r\n { text: 'Authority to Make Entry', level: 1, subMenu: FmsSubMenu.AuthEntry, moreMenuJobName: JobNames.AIHbl },\r\n //{ text: 'Correction Notice/Request', level: 1, popupComponent: , moreMenuJobName: JobNames.AIHbl },\r\n {\r\n text: 'Correction Notice/Request',\r\n level: 1,\r\n link: '/airImport/correctionNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/correctionNotice/'),\r\n moreMenuJobName: JobNames.AIHbl,\r\n },\r\n //{ text: 'Delivery Order (Pre Form)', level: 1, popupComponent: , moreMenuJobName: JobNames.AIHbl },\r\n // {\r\n // text: 'Delivery Order (Pre Form)',\r\n // level: 1,\r\n // link: '/airImport/preDeliveryOrder?jobname=@jobName&id=@jobid&docType=59',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/preDeliveryOrder/'),\r\n // moreMenuJobName: JobNames.AIHbl,\r\n // },\r\n //{ text: 'Delivery Order (Short Form)', level: 1, popupComponent: , moreMenuJobName: JobNames.AIHbl },\r\n {\r\n text: 'Delivery Order',\r\n level: 1,\r\n link: '/airImport/shortDeliveryOrder?jobname=@jobName&id=@jobid&docType=81',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/shortDeliveryOrder/'),\r\n moreMenuJobName: JobNames.AIHbl,\r\n },\r\n //{ text: 'Pickup/Delivery Instruction', level: 1, popupComponent: , moreMenuJobName: JobNames.AIHbl },\r\n {\r\n text: 'Pickup/Delivery Instruction',\r\n level: 1,\r\n link: '/airImport/pickupDelivery?jobname=@jobName&id=@jobid&docType=18',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/pickupDelivery/'),\r\n moreMenuJobName: JobNames.AIHbl,\r\n },\r\n {\r\n text: 'Est. HBL Profit',\r\n level: 1,\r\n subMenu: FmsSubMenu.HouseProfit,\r\n moreMenuJobName: JobNames.AIHbl,\r\n //topLineColor: borderColors[1 % borderColors.length]\r\n },\r\n {\r\n text: 'Carrier\\'s Certificate',\r\n level: 1,\r\n subMenu: FmsSubMenu.CarrierCertificate,\r\n moreMenuJobName: JobNames.AIHbl,\r\n //topLineColor: borderColors[2 % borderColors.length]\r\n },\r\n { text: 'Export Declaration for Transit', level: 1, subMenu: FmsSubMenu.ExdecTransit, moreMenuJobName: JobNames.AIHbl },\r\n //{ text: 'Print 7512', level: 1, popupComponent: , moreMenuJobName: JobNames.AIHbl },\r\n {\r\n text: 'Print 7512',\r\n level: 1,\r\n link: '/airImport/ItTeNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/ItTeNotice/'),\r\n moreMenuJobName: JobNames.AIHbl,\r\n },\r\n //{ text: 'Memo List', level: 1, popupComponent: , popupLabel: 'Memo List (HAWB)', moreMenuJobName: JobNames.AIHbl },\r\n {\r\n text: 'Memo List',\r\n level: 1,\r\n link: '/airImport/memoList?jobname=@jobName&id=@jobid&isCompany=false',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/memoList/'),\r\n moreMenuJobName: JobNames.AIHbl,\r\n },\r\n //{ text: 'Memo List (Customer)', level: 1, popupComponent: , popupLabel: 'Memo List (Customer)', moreMenuJobName: JobNames.AIHbl },\r\n {\r\n text: 'Memo List (Customer)',\r\n level: 1,\r\n link: '/airImport/memoCustomerList?jobname=@jobName&id=@jobid&isCompany=true',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/memoCustomerList/'),\r\n moreMenuJobName: JobNames.AIHbl,\r\n },\r\n //{ text: 'Package Label', level: 1, popupComponent: , moreMenuJobName: JobNames.AIHbl },\r\n {\r\n text: 'Package Label',\r\n level: 1,\r\n link: '/airImport/packageLabel?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/packageLabel/'),\r\n moreMenuJobName: JobNames.AIHbl,\r\n },\r\n //{ text: 'Preliminary Claim Notice', level: 1, popupComponent: , moreMenuJobName: JobNames.AIHbl },\r\n {\r\n text: 'Preliminary Claim Notice',\r\n level: 1,\r\n link: '/airImport/preliminaryClaimNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/preliminaryClaimNotice/'),\r\n moreMenuJobName: JobNames.AIHbl,\r\n },\r\n //{ text: 'Proof of Delivery', level: 1, popupComponent: , popupWidth: 790, moreMenuJobName: JobNames.AIHbl },\r\n {\r\n text: 'Proof of Delivery',\r\n level: 1,\r\n link: '/airImport/proofOfDelivery?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/proofOfDelivery/'),\r\n moreMenuJobName: JobNames.AIHbl,\r\n },\r\n //{ text: 'Release Order/Turnover', level: 1, popupComponent: , moreMenuJobName: JobNames.AIHbl },\r\n {\r\n text: 'Release Order/Turnover',\r\n level: 1,\r\n link: '/airImport/releaseOrderTurnover?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/releaseOrderTurnover/'),\r\n moreMenuJobName: JobNames.AIHbl,\r\n },\r\n //{ text: 'Straight B/L', level: 1, popupComponent: , moreMenuJobName: JobNames.AIHbl },\r\n {\r\n text: 'Straight B/L',\r\n level: 1,\r\n link: '/airImport/straightBl?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/straightBl/'),\r\n moreMenuJobName: JobNames.AIHbl,\r\n },\r\n //{ text: 'Cargo Status Query', level: 1, popupComponent: , moreMenuJobName: JobNames.AIHbl, topLineColor: borderColors[3 % borderColors.length] },\r\n {\r\n text: 'Cargo Status Query',\r\n level: 1,\r\n textColor: 'orangered',\r\n link: '/airImport/cargoManifestStatus?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/cargoManifestStatus/'),\r\n moreMenuJobName: JobNames.AIHbl,\r\n //topLineColor: borderColors[3 % borderColors.length]\r\n },\r\n //Download MAWB More Menu\r\n // { text: 'Download MAWB (All) List', level: 1, moreMenuJobName: JobNames.AIMPims },\r\n // { text: 'Download MAWB (Downloaded) List', level: 1, moreMenuJobName: JobNames.AIMPims },\r\n // { text: 'Download MAWB (Not Downloaded) List', level: 1, moreMenuJobName: JobNames.AIMPims },\r\n\r\n //Download HAWB More Menu\r\n // { text: 'Download HAWB (All) List', level: 1, moreMenuJobName: JobNames.AIHPims },\r\n // { text: 'Download HAWB (Downloaded) List', level: 1, moreMenuJobName: JobNames.AIHPims },\r\n // { text: 'Download HAWB (Not Downloaded) List', level: 1, moreMenuJobName: JobNames.AIHPims },\r\n {\r\n text: 'Print HAWB',\r\n level: 1,\r\n subMenu: FmsSubMenu.AIAWB,\r\n moreMenuJobName: JobNames.AIHbl,\r\n },\r\n ]\r\n },\r\n // Air Export\r\n {\r\n operation: constants.operations.airExport,\r\n job: [\r\n {\r\n text: 'Quotation', level: 0,\r\n link: '/common/joblistview/aeQuotation/airExport?parentOp=airExport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/aeQuotation/airExport'),\r\n fmsSecTask: FmsSecTask.AEQuot,\r\n },\r\n {\r\n text: 'Master AWB',\r\n level: 0,\r\n link: '/common/joblistview/aeMawb/airExport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/aeMawb/airExport'),\r\n fmsSecTask: FmsSecTask.AEMbl,\r\n moreMenuJobName: JobNames.AEMbl,\r\n topLineColor: borderColors[0 % borderColors.length]\r\n },\r\n {\r\n text: 'House AWB',\r\n level: 0,\r\n link: '/common/joblistview/aeHawb/airExport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/aeHawb/airExport'),\r\n fmsSecTask: FmsSecTask.AEHbl,\r\n moreMenuJobName: JobNames.AEHbl,\r\n },\r\n {\r\n text: 'Invoice', level: 0,\r\n link: '/common/joblistview/invoice/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/invoice/accounting'),\r\n fmsSecTask: FmsSecTask.AcctInvoiceList,\r\n topLineColor: borderColors[1 % borderColors.length]\r\n },\r\n {\r\n text: 'Bill', level: 0,\r\n link: '/common/joblistview/bill/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/bill/accounting'),\r\n fmsSecTask: FmsSecTask.AcctBillList\r\n },\r\n {\r\n text: 'CrDb', level: 0,\r\n link: '/common/joblistview/crdb/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/crdb/accounting'),\r\n fmsSecTask: FmsSecTask.AcctCrDbList\r\n },\r\n {\r\n text: `AMS Filing`,\r\n level: 0,\r\n name: 'amsFiling',\r\n textColor: 'orangered',\r\n metadata: { isDirectPrint: true },\r\n topLineColor: borderColors[2 % borderColors.length]\r\n },\r\n {\r\n text: `ISF Filing`,\r\n level: 0,\r\n name: 'isfFiling',\r\n textColor: 'orangered',\r\n metadata: { isDirectPrint: true }\r\n },\r\n {\r\n text: `AES Filing`,\r\n level: 0,\r\n name: 'aesFiling',\r\n textColor: 'orangered',\r\n metadata: { isDirectPrint: true }\r\n },\r\n {\r\n text: `In-bond`,\r\n level: 0,\r\n name: 'inbond',\r\n textColor: 'orangered',\r\n metadata: { isDirectPrint: true }\r\n },\r\n {\r\n text: 'Air Export Est. Profit Report', level: 1,\r\n topLineColor: borderColors[3 % borderColors.length],\r\n link: '/airExport/estProfit?docType=705&isManagerReport=true&opType=airExport',\r\n fmsSecTask: FmsSecTask.AERptEstProfit,\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/estProfit'),\r\n },\r\n {\r\n text: 'Download MAWB',\r\n level: 0,\r\n link: '/common/joblistview/AEMP/airExport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/AEMP/airExport'),\r\n fmsSecTask: FmsSecTask.AEMPims,\r\n },\r\n {\r\n text: 'Download HAWB',\r\n level: 0,\r\n link: '/common/joblistview/AEHP/airExport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/AEHP/airExport'),\r\n fmsSecTask: FmsSecTask.AEHPims,\r\n },\r\n ],\r\n download: [],\r\n operationReport: [],\r\n report: [\r\n // {\r\n // text: 'Billings', level: 0,\r\n // items: [\r\n // {text: 'Invoice List', level: 1, link: '/common/joblistview/invoice/accounting', isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/invoice/accounting')},\r\n // {text: 'Bill List', level: 1, link: '/common/joblistview/bill/accounting', isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/bill/accounting')},\r\n // {text: 'CrDb List', level: 1, link: '/common/joblistview/crdb/accounting', isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/crdb/accounting')},\r\n // ]\r\n // },\r\n ],\r\n moreMenu: [\r\n //Aem More Menu\r\n {\r\n text: 'AES Filing (Portal)',\r\n level: 1,\r\n link: '/airExport/aesFiling?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/aesFiling/'),\r\n moreMenuJobName: JobNames.AEMbl,\r\n //topLineColor: borderColors[0 % borderColors.length]\r\n },\r\n {\r\n text: 'Correction Notice/Request',\r\n level: 1,\r\n link: '/airExport/correctionNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/correctionNotice/'),\r\n moreMenuJobName: JobNames.AEMbl,\r\n }, {\r\n text: 'Pickup/Delivery Instruction',\r\n level: 1,\r\n link: '/airExport/pickupDelivery?jobname=@jobName&id=@jobid&docType=18',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/pickupDelivery/'),\r\n moreMenuJobName: JobNames.AEMbl,\r\n }, {\r\n text: 'Print MAWB',\r\n level: 1,\r\n link: '/airExport/aemPrintMawb?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/aemPrintMawb/'),\r\n moreMenuJobName: JobNames.AEMbl,\r\n }, {\r\n text: 'Batch Print HAWB',\r\n level: 1,\r\n link: '/airExport/aemBatchPrint?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/aemBatchPrint/'),\r\n moreMenuJobName: JobNames.AEMbl,\r\n },\r\n {\r\n text: 'Est. MBL Profit',\r\n level: 1,\r\n subMenu: FmsSubMenu.MasterProfit,\r\n moreMenuJobName: JobNames.AEMbl,\r\n //topLineColor: borderColors[1 % borderColors.length]\r\n },\r\n { text: 'Gross MBL Profit', level: 1, subMenu: FmsSubMenu.MasterProfitHBL, moreMenuJobName: JobNames.AEMbl },\r\n {\r\n text: 'Agent Document Package',\r\n level: 1,\r\n link: '/airExport/agentDocument?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/agentDocument/'),\r\n moreMenuJobName: JobNames.AEMbl,\r\n //topLineColor: borderColors[2 % borderColors.length] \r\n }, {\r\n text: 'Air Cargo Manifest',\r\n level: 1,\r\n link: '/airExport/cargoManifest?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/cargoManifest/'),\r\n moreMenuJobName: JobNames.AEMbl,\r\n }, {\r\n text: 'Air Label',\r\n level: 1,\r\n link: '/airExport/airLabel?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/airLabel/'),\r\n moreMenuJobName: JobNames.AEMbl,\r\n }, {\r\n text: 'Pouch Air Label',\r\n level: 1,\r\n link: '/airExport/pouchAirLabel?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/pouchAirLabel/'),\r\n moreMenuJobName: JobNames.AEMbl,\r\n }, {\r\n text: 'Certificate of Origin',\r\n level: 1,\r\n link: '/airExport/certificationOrigin?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/certificationOrigin/'),\r\n moreMenuJobName: JobNames.AEMbl,\r\n },\r\n { text: 'IAC Certificate (Known)', level: 1, subMenu: FmsSubMenu.TsaSecurity, moreMenuJobName: JobNames.AEMbl },\r\n { text: 'IAC Certificate (Unknown)', level: 1, subMenu: FmsSubMenu.TsaUnknown, moreMenuJobName: JobNames.AEMbl },\r\n //{ text: 'Folder Label', level: 1, subMenu: FmsSubMenu.FolderLabel, moreMenuJobName: JobNames.AEMbl, metadata: { isDirectPrint: true } },\r\n {\r\n text: 'Folder Label',\r\n level: 1,\r\n link: '/airExport/folderLabel?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/folderLabel/'),\r\n moreMenuJobName: JobNames.AEMbl\r\n },\r\n {\r\n text: 'Memo List',\r\n level: 1,\r\n link: '/airExport/memoList?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/memoList/'),\r\n moreMenuJobName: JobNames.AEMbl,\r\n }, {\r\n text: 'Shipping Advice',\r\n level: 1,\r\n link: '/airExport/shippingAdvice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/shippingAdvice/'),\r\n moreMenuJobName: JobNames.AEMbl,\r\n }, {\r\n text: 'Transfer Manifest',\r\n level: 1,\r\n link: '/airExport/transferManifest?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/transferManifest/'),\r\n moreMenuJobName: JobNames.AEMbl,\r\n }, {\r\n text: 'Send B/L to Partner',\r\n level: 1,\r\n link: '/airExport/sendBLtoPatner?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/sendBLtoPatner/'),\r\n moreMenuJobName: JobNames.AEMbl,\r\n //topLineColor: borderColors[3 % borderColors.length] \r\n },\r\n\r\n // { text: 'AES Filing (Portal)', level: 1, popupComponent: , moreMenuJobName: JobNames.AEMbl, topLineColor: borderColors[0 % borderColors.length] },\r\n // { text: 'Correction Notice/Request', level: 1, popupComponent: , moreMenuJobName: JobNames.AEMbl },\r\n // { text: 'Pickup/Delivery Instruction', level: 1, popupComponent: , moreMenuJobName: JobNames.AEMbl },\r\n // { text: 'Print MAWB', level: 1, popupComponent: , moreMenuJobName: JobNames.AEMbl },\r\n // { text: 'Batch Print HAWB', level: 1, popupComponent: , moreMenuJobName: JobNames.AEMbl },\r\n // //{ text: 'Est. MBL Profit', level: 1, subMenu: FmsSubMenu.MasterProfit, moreMenuJobName: JobNames.AEMbl, topLineColor: borderColors[1 % borderColors.length] },\r\n // //{ text: 'Gross MBL Profit', level: 1, subMenu: FmsSubMenu.MasterProfitHBL, moreMenuJobName: JobNames.AEMbl },\r\n // { text: 'Agent Document Package', level: 1, popupComponent: , moreMenuJobName: JobNames.AEMbl, topLineColor: borderColors[2 % borderColors.length] },\r\n // { text: 'Air Cargo Manifest', level: 1, popupComponent: , moreMenuJobName: JobNames.AEMbl },\r\n // { text: 'Air Label', level: 1, popupComponent: , moreMenuJobName: JobNames.AEMbl },\r\n // { text: 'Pouch Air Label', level: 1, popupComponent: , moreMenuJobName: JobNames.AEMbl },\r\n // { text: 'Certificate of Origin', level: 1, popupComponent: , moreMenuJobName: JobNames.AEMbl },\r\n // //{ text: 'IAC Certificate (Known)', level: 1, subMenu: FmsSubMenu.TsaSecurity, moreMenuJobName: JobNames.AEMbl },\r\n // //{ text: 'IAC Certificate (Unknown)', level: 1, subMenu: FmsSubMenu.TsaUnknown, moreMenuJobName: JobNames.AEMbl },\r\n // //{ text: 'Folder Label', level: 1, subMenu: FmsSubMenu.FolderLabel, moreMenuJobName: JobNames.AEMbl },\r\n // { text: 'Memo List', level: 1, popupComponent: , popupLabel: 'Memo List (MAWB)', moreMenuJobName: JobNames.AEMbl },\r\n // { text: 'Shipping Advice', level: 1, popupComponent: , moreMenuJobName: JobNames.AEMbl },\r\n // { text: 'Transfer Manifest', level: 1, popupComponent: , moreMenuJobName: JobNames.AEMbl },\r\n // { text: 'Send B/L to Partner', level: 1, popupComponent: , moreMenuJobName: JobNames.AEMbl, topLineColor: borderColors[3 % borderColors.length] },\r\n\r\n //Aeh More Menu\r\n\r\n {\r\n text: 'AES Filing (Portal)',\r\n level: 1,\r\n link: '/airExport/aesFiling?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/aesFiling/'),\r\n moreMenuJobName: JobNames.AEHbl,\r\n //topLineColor: borderColors[0 % borderColors.length]\r\n },\r\n // { text: 'AES Filing', level: 1, subMenu: FmsSubMenu.AesAir, moreMenuJobName: JobNames.AEHbl },\r\n {\r\n text: 'Correction Notice/Request',\r\n level: 1,\r\n link: '/airExport/correctionNotice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/correctionNotice/'),\r\n moreMenuJobName: JobNames.AEHbl,\r\n }, {\r\n text: 'Pickup/Delivery Instruction',\r\n level: 1,\r\n link: '/airExport/pickupDelivery?jobname=@jobName&id=@jobid&docType=18',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/pickupDelivery/'),\r\n moreMenuJobName: JobNames.AEHbl,\r\n }, {\r\n text: 'Print HAWB',\r\n level: 1,\r\n link: '/airExport/aemPrintHawb?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/aemPrintHawb/'),\r\n moreMenuJobName: JobNames.AEHbl,\r\n },\r\n {\r\n text: 'Est. HBL Profit',\r\n level: 1,\r\n subMenu: FmsSubMenu.HouseProfit,\r\n moreMenuJobName: JobNames.AEHbl,\r\n //topLineColor: borderColors[1 % borderColors.length] \r\n },\r\n {\r\n text: 'Air Label',\r\n level: 1,\r\n link: '/airExport/airLabel?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/airLabel/'),\r\n moreMenuJobName: JobNames.AEHbl,\r\n //topLineColor: borderColors[2 % borderColors.length]\r\n }, {\r\n text: 'Bank Draft',\r\n level: 1,\r\n link: '/airExport/bankDraft?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/bankDraft/'),\r\n moreMenuJobName: JobNames.AEHbl,\r\n }, {\r\n text: 'Certificate of Origin',\r\n level: 1,\r\n link: '/airExport/certificationOrigin?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/certificationOrigin/'),\r\n moreMenuJobName: JobNames.AEHbl,\r\n }, {\r\n text: 'Document Package',\r\n level: 1,\r\n link: '/airExport/documentPackage?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/documentPackage/'),\r\n moreMenuJobName: JobNames.AEHbl,\r\n }, {\r\n text: 'Commercial Invoice',\r\n level: 1,\r\n link: '/airExport/commercialInvoice?jobname=@jobName&id=@jobid&rptType=RPCOINV',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/commercialInvoice/'),\r\n moreMenuJobName: JobNames.AEHbl,\r\n }, {\r\n text: 'Memo List',\r\n level: 1,\r\n link: '/airExport/memoList?jobname=@jobName&id=@jobid&isCompany=false',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/memoList/'),\r\n moreMenuJobName: JobNames.AEHbl,\r\n }, {\r\n text: 'Memo List (Customer)',\r\n level: 1,\r\n link: '/airExport/memoCustomerList?jobname=@jobName&id=@jobid&isCompany=true',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/memoCustomerList/'),\r\n moreMenuJobName: JobNames.AEHbl,\r\n }, {\r\n text: 'Package Label',\r\n level: 1,\r\n link: '/airExport/packageLabel?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/packageLabel/'),\r\n moreMenuJobName: JobNames.AEHbl,\r\n }, {\r\n text: 'Packing List',\r\n level: 1,\r\n link: '/airExport/packingList?jobname=@jobName&id=@jobid&rptType=RPPACKL',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/packingList/'),\r\n moreMenuJobName: JobNames.AEHbl,\r\n }, {\r\n text: 'Shipping Advice',\r\n level: 1,\r\n link: '/airExport/shippingAdvice?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/shippingAdvice/'),\r\n moreMenuJobName: JobNames.AEHbl,\r\n }, {\r\n text: 'Straight B/L',\r\n level: 1,\r\n link: '/airExport/straightBl?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airExport/straightBl/'),\r\n moreMenuJobName: JobNames.AEHbl,\r\n },\r\n\r\n // { text: 'AES Filing (Portal)', level: 1, popupComponent: , moreMenuJobName: JobNames.AEHbl, topLineColor: borderColors[0 % borderColors.length] },\r\n // { text: 'AES Filing (iPims)', level: 1, link: 'https://ipims.suntekscm.com/home/loginrequest/' },\r\n // { text: 'Correction Notice/Request', level: 1, popupComponent: , moreMenuJobName: JobNames.AEHbl },\r\n // { text: 'Pickup/Delivery Instruction', level: 1, popupComponent: , moreMenuJobName: JobNames.AEHbl },\r\n // { text: 'Print HAWB', level: 1, popupComponent: , moreMenuJobName: JobNames.AEHbl },\r\n // { text: 'Est. HBL Profit', level: 1, subMenu: FmsSubMenu.HouseProfit, moreMenuJobName: JobNames.AEHbl, topLineColor: borderColors[1 % borderColors.length] },\r\n // { text: 'Air Label', level: 1, popupComponent: , moreMenuJobName: JobNames.AEHbl, topLineColor: borderColors[2 % borderColors.length] },\r\n // { text: 'Bank Draft', level: 1, popupComponent: , moreMenuJobName: JobNames.AEHbl },\r\n // { text: 'Certificate of Origin', level: 1, popupComponent: , moreMenuJobName: JobNames.AEHbl },\r\n // { text: 'Document Package', level: 1, popupComponent: , moreMenuJobName: JobNames.AEHbl },\r\n // { text: 'Commercial Invoice', level: 1, popupComponent: , moreMenuJobName: JobNames.AEHbl },\r\n // { text: 'Memo List', level: 1, popupComponent: , popupLabel: 'Memo List (HAWB)', moreMenuJobName: JobNames.AEHbl },\r\n // { text: 'Memo List (Customer)', level: 1, popupComponent: , popupLabel: 'Memo List (Customer)', moreMenuJobName: JobNames.AEHbl },\r\n // { text: 'Package Label', level: 1, popupComponent: , moreMenuJobName: JobNames.AEHbl },\r\n // { text: 'Packing List', level: 1, popupComponent: , moreMenuJobName: JobNames.AEHbl },\r\n // { text: 'Shipping Advice', level: 1, popupComponent: , moreMenuJobName: JobNames.AEHbl },\r\n // { text: 'Straight B/L', level: 1, popupComponent: , moreMenuJobName: JobNames.AEHbl },\r\n\r\n //Download MAWB More Menu\r\n // { text: 'Download MAWB (All) List', level: 1, moreMenuJobName: JobNames.AEMPims },\r\n // { text: 'Download MAWB (Downloaded) List', level: 1, moreMenuJobName: JobNames.AEMPims },\r\n // { text: 'Download MAWB (Not Downloaded) List', level: 1, moreMenuJobName: JobNames.AEMPims },\r\n\r\n //Download HAWB More Menu\r\n // { text: 'Download HAWB (All) List', level: 1, moreMenuJobName: JobNames.AEHPims },\r\n // { text: 'Download HAWB (Downloaded) List', level: 1, moreMenuJobName: JobNames.AEHPims },\r\n // { text: 'Download HAWB (Not Downloaded) List', level: 1, moreMenuJobName: JobNames.AEHPims },\r\n ]\r\n },\r\n // Other Shipment\r\n {\r\n operation: constants.operations.otherShipment,\r\n job: [\r\n {\r\n text: 'Other Shipment List', level: 0,\r\n link: '/common/joblistview/otherShipment/otherShipment',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/otherShipment/otherShipment'),\r\n fmsSecTask: FmsSecTask.OtherOP,\r\n moreMenuJobName: JobNames.OtherOP,\r\n },\r\n {\r\n text: 'Quotation', level: 0,\r\n link: '/common/joblistview/otQuotation/otherShipment?parentOp=otherShipment',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/otQuotation/otherShipment'),\r\n fmsSecTask: FmsSecTask.OTQuot,\r\n topLineColor: borderColors[0 % borderColors.length]\r\n },\r\n {\r\n text: 'Invoice', level: 0,\r\n link: '/common/joblistview/invoice/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/invoice/accounting'),\r\n fmsSecTask: FmsSecTask.AcctInvoiceList,\r\n topLineColor: borderColors[1 % borderColors.length]\r\n },\r\n {\r\n text: 'Bill', level: 0,\r\n link: '/common/joblistview/bill/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/bill/accounting'),\r\n fmsSecTask: FmsSecTask.AcctBillList\r\n },\r\n {\r\n text: 'CrDb', level: 0,\r\n link: '/common/joblistview/crdb/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/crdb/accounting'),\r\n fmsSecTask: FmsSecTask.AcctCrDbList\r\n },\r\n {\r\n text: `AMS Filing`,\r\n level: 0,\r\n name: 'amsFiling',\r\n textColor: 'orangered',\r\n metadata: { isDirectPrint: true },\r\n topLineColor: borderColors[2 % borderColors.length]\r\n },\r\n {\r\n text: `ISF Filing`,\r\n level: 0,\r\n name: 'isfFiling',\r\n textColor: 'orangered',\r\n metadata: { isDirectPrint: true }\r\n },\r\n {\r\n text: `AES Filing`,\r\n level: 0,\r\n name: 'aesFiling',\r\n textColor: 'orangered',\r\n metadata: { isDirectPrint: true }\r\n },\r\n {\r\n text: `In-bond`,\r\n level: 0,\r\n name: 'inbond',\r\n textColor: 'orangered',\r\n metadata: { isDirectPrint: true }\r\n },\r\n // {\r\n // text: 'Freight Receipt', level: 0,\r\n // link: '/common/joblistview/whReceipt/otherShipment',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/whReceipt/otherShipment'),\r\n // fmsSecTask: FmsSecTask.WHRcpt\r\n // },\r\n ],\r\n download: [],\r\n preReport: [\r\n // {\r\n // text: 'Billings', level: 0,\r\n // items: [\r\n // {text: 'Invoice List', level: 1, link: '/common/joblistview/invoice/accounting', isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/invoice/accounting')},\r\n // {text: 'Bill List', level: 1, link: '/common/joblistview/bill/accounting', isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/bill/accounting')},\r\n // {text: 'CrDb List', level: 1, link: '/common/joblistview/crdb/accounting', isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/crdb/accounting')},\r\n // ]\r\n // },\r\n ],\r\n report: [\r\n // {\r\n // text: 'Report', level: 0,\r\n // items: [\r\n // // {text: 'Invoice List', level: 1},\r\n // // {text: 'Bill List', level: 1},\r\n // // {text: 'CrDb List', level: 1},\r\n // {text: 'Est. Profit/Volume Summary Report', level: 1, popupComponent: },\r\n // {text: 'Gross Profit/Volume Summary Report', level: 1, popupComponent: },\r\n // {text: 'Vendor Cost Report', level: 1, popupComponent: },\r\n // {text: 'Volume Report', level: 1, popupComponent: },\r\n // {text: 'Sales Performance Report', level: 1, popupComponent: },\r\n // {text: 'Customer Activity Report', level: 1, popupComponent: },\r\n // {text: 'Duty Pendings', level: 1, popupComponent: },\r\n // {text: 'Issue Ready Invoice Report', level: 1},\r\n // {text: 'Issue Ready Bill Report', level: 1},\r\n // {text: 'Issue Ready Cr/Db Report', level: 1},\r\n // {text: 'Operation Performance Report', level: 1, popupComponent: },\r\n // {text: 'Branch Performance Report', level: 1, popupComponent: },\r\n // ]\r\n // },\r\n ],\r\n moreMenu: [\r\n //Other Shipment More Menu\r\n // { text: 'AES Filing', level: 1, subMenu: FmsSubMenu.AesOtherOP, moreMenuJobName: JobNames.OtherOP},\r\n {\r\n text: 'Delivery Order',\r\n level: 1,\r\n link: '/otherShipment/shortDeliveryOrder?jobname=@jobName&id=@jobid&docType=81',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/otherShipment/shortDeliveryOrder/'),\r\n moreMenuJobName: JobNames.OtherOP\r\n },\r\n //{ text: 'Delivery Order (Short Form)', level: 1, popupComponent: , popupWidth: 760, moreMenuJobName: JobNames.OtherOP, topLineColor: borderColors[0 % borderColors.length] },\r\n {\r\n text: 'Pickup/Delivery Instruction',\r\n level: 1,\r\n link: '/otherShipment/pickupDelivery?jobname=@jobName&id=@jobid&docType=18',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/otherShipment/pickupDelivery/'),\r\n moreMenuJobName: JobNames.OtherOP\r\n },\r\n //{ text: 'Pickup/Delivery Instruction', level: 1, popupComponent: , popupWidth:760, moreMenuJobName: JobNames.OtherOP },\r\n {\r\n text: 'Est. Profit',\r\n level: 1,\r\n subMenu: FmsSubMenu.MasterProfit,\r\n moreMenuJobName: JobNames.OtherOP,\r\n //topLineColor: borderColors[1 % borderColors.length]\r\n },\r\n {\r\n text: 'Gross Profit', level: 1,\r\n subMenu: FmsSubMenu.MasterProfitHBL,\r\n moreMenuJobName: JobNames.OtherOP\r\n },\r\n // {\r\n // text: 'Folder Label', level: 1, subMenu: FmsSubMenu.FolderLabel,\r\n // moreMenuJobName: JobNames.OtherOP,\r\n // //topLineColor: borderColors[2 % borderColors.length],\r\n // metadata: { isDirectPrint: true }\r\n // }, \r\n {\r\n text: 'Folder Label',\r\n level: 1,\r\n link: '/otherShipment/folderLabel?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/otherShipment/folderLabel/'),\r\n moreMenuJobName: JobNames.OtherOP\r\n },\r\n {\r\n text: 'Straight B/L',\r\n level: 1,\r\n link: '/otherShipment/straightBl?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/otherShipment/straightBl/'),\r\n moreMenuJobName: JobNames.OtherOP\r\n },\r\n //{ text: 'Straight B/L', level: 1, popupComponent: , popupWidth:760, moreMenuJobName: JobNames.OtherOP },\r\n {\r\n text: 'Cargo Status Query',\r\n level: 1,\r\n textColor: 'orangered',\r\n link: '/otherShipment/cargoManifestStatus?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/otherShipment/cargoManifestStatus/'),\r\n moreMenuJobName: JobNames.OtherOP,\r\n //topLineColor: borderColors[3 % borderColors.length]\r\n },\r\n ]\r\n },\r\n\r\n //Change name W/H Receipt -> Freight Receipt\r\n //Other Shipment Side Menu -> Main Menu\r\n //Freight Receipt\r\n {\r\n operation: constants.operations.whReceipt,\r\n job: [\r\n {\r\n text: 'Freight Receipt List', level: 0,\r\n link: '/common/joblistview/whReceipt/whReceipt',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/whReceipt/whReceipt'),\r\n fmsSecTask: FmsSecTask.WHRcpt,\r\n moreMenuJobName: JobNames.WHRcpt,\r\n }\r\n ],\r\n download: [],\r\n preReport: [],\r\n report: [],\r\n moreMenu: [\r\n //Freight Receipt More Menu\r\n { text: 'Freight Arrival Notice', level: 1, subMenu: FmsSubMenu.FArrivalNotice, moreMenuJobName: JobNames.WHRcpt },\r\n {\r\n text: 'Freight Receipt Label',\r\n level: 1,\r\n link: '/warehousing/receiptLabel?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/warehousing/receiptLabel/'),\r\n moreMenuJobName: JobNames.WHRcpt\r\n },\r\n {\r\n text: 'Received Cargo Status',\r\n level: 1,\r\n link: '/warehousing/receivedcargostatus?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/warehousing/receivedcargostatus/'),\r\n moreMenuJobName: JobNames.WHRcpt\r\n },\r\n // { text: 'Warehouse Receipt Label', level: 0, popupComponent: , popupWidth: 760 },\r\n // { text: 'Received Cargo Status', level: 0, popupComponent: , popupWidth: 760 },\r\n \r\n \r\n ]\r\n },\r\n // Warehousing\r\n {\r\n operation: constants.operations.warehousing,\r\n job: [\r\n {\r\n text: 'Receiving', level: 0,\r\n link: '/common/joblistview/whReceiving/warehousing',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/whReceiving/warehousing'),\r\n fmsSecTask: FmsSecTask.WHRcv,\r\n moreMenuJobName: JobNames.WHRcv,\r\n },\r\n {\r\n text: 'Shipping', level: 0,\r\n link: '/common/joblistview/whShipping/warehousing',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/whShipping/warehousing'),\r\n fmsSecTask: FmsSecTask.WHShip,\r\n moreMenuJobName: JobNames.WHShip,\r\n },\r\n {\r\n text: 'Inventory', level: 0,\r\n link: '/common/joblistview/whInventory/warehousing',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/whInventory/warehousing'),\r\n fmsSecTask: FmsSecTask.WHInvenSummary,\r\n topLineColor: borderColors[0 % borderColors.length]\r\n },\r\n {\r\n text: 'In/Out Activity', level: 0,\r\n link: '/common/joblistview/whInOut/warehousing',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/whInOut/warehousing'),\r\n fmsSecTask: FmsSecTask.WHInvenDetail,\r\n },\r\n {\r\n text: 'Invoice (WH)', level: 0,\r\n link: '/common/joblistview/invoice/warehousing',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/invoice/warehousing'),\r\n fmsSecTask: FmsSecTask.WHInvoice,\r\n topLineColor: borderColors[1 % borderColors.length]\r\n },\r\n {\r\n text: 'Bill (WH)', level: 0,\r\n link: '/common/joblistview/bill/warehousing',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/bill/warehousing'),\r\n fmsSecTask: FmsSecTask.WHBill\r\n },\r\n {\r\n text: 'CrDb (WH)', level: 0,\r\n link: '/common/joblistview/crdb/warehousing',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/crdb/warehousing'),\r\n fmsSecTask: FmsSecTask.WHCrDb\r\n },\r\n {\r\n text: 'Storage Invoice', level: 0,\r\n link: '/common/joblistview/whStorageInvoice/warehousing',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/whStorageInvoice/warehousing'),\r\n fmsSecTask: FmsSecTask.WHStorageInv\r\n },\r\n {\r\n text: 'Customer (WH)', level: 0,\r\n link: '/common/joblistview/whCompany/warehousing',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/whCompany/warehousing'),\r\n fmsSecTask: FmsSecTask.WHCustomer,\r\n topLineColor: borderColors[2 % borderColors.length]\r\n },\r\n {\r\n text: 'Item (WH)', level: 0,\r\n link: '/common/joblistview/whItem/warehousing',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/whItem/warehousing'),\r\n fmsSecTask: FmsSecTask.WHItem,\r\n },\r\n {\r\n text: 'Location (WH)', level: 0,\r\n link: '/common/joblistview/whLocation/warehousing',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/whLocation/warehousing'),\r\n fmsSecTask: FmsSecTask.WHLoc,\r\n },\r\n {\r\n text: 'Chargeable Item Report', level: 0,\r\n link: '/warehousing/chargeItemSummary?jobname=@jobName&id=@jobid&docType=101',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/warehousing/chargeItemSummary/'),\r\n fmsSecTask: FmsSecTask.WHRptChargeItemSummary,\r\n topLineColor: borderColors[3 % borderColors.length]\r\n },\r\n {\r\n text: 'Customer In/Out Report', level: 0,\r\n link: '/warehousing/CustomerInNOut?jobname=@jobName&id=@jobid&docType=186',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/warehousing/customerInNOut'),\r\n fmsSecTask: FmsSecTask.WHRptCustomerInNOut,\r\n },\r\n // {\r\n // text: 'Company (WH)', level: 0,\r\n // link: '/common/joblistview/whCompany/warehousing',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/whCompany/warehousing'),\r\n // },\r\n // {\r\n // text: 'Item (WH)', level: 0,\r\n // link: '/common/joblistview/whItem/warehousing',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/whItem/warehousing'),\r\n // },\r\n // {\r\n // text: 'Location (WH)', level: 0,\r\n // link: '/common/joblistview/whLocation/warehousing',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/whLocation/warehousing'),\r\n // },\r\n ],\r\n download: [],\r\n report: [],\r\n operationReport: [],\r\n moreMenu: [\r\n //Receiving More Menu\r\n {\r\n text: 'Pickup/Delivery Instruction',\r\n level: 1,\r\n link: '/warehousing/pickupDelivery?jobname=@jobName&id=@jobid&docType=18',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/warehousing/pickupDelivery/'),\r\n moreMenuJobName: JobNames.WHRcv,\r\n //topLineColor: borderColors[0 % borderColors.length]\r\n },\r\n //{ text: 'Pickup/Delivery Instruction', level: 1, popupComponent: , moreMenuJobName: JobNames.WHRcv, topLineColor: borderColors[0 % borderColors.length] },\r\n {\r\n text: 'Straight B/L',\r\n level: 1,\r\n link: '/warehousing/straightBl?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/warehousing/straightBl/'),\r\n moreMenuJobName: JobNames.WHRcv,\r\n },\r\n //{ text: 'Straight B/L', level: 1, popupComponent: , moreMenuJobName: JobNames.WHRcv },\r\n { text: 'Warehouse Receipt', level: 1, subMenu: FmsSubMenu.WReceipt, moreMenuJobName: JobNames.WHRcv },\r\n { text: 'Warehouse Receiving Label', level: 1, subMenu: FmsSubMenu.WLabelReceive, moreMenuJobName: JobNames.WHRcv },\r\n\r\n //Shipping More Menu\r\n {\r\n text: 'Pickup/Delivery Instruction',\r\n level: 1,\r\n link: '/warehousing/pickupDelivery?jobname=@jobName&id=@jobid&docType=18',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/warehousing/pickupDelivery/'),\r\n moreMenuJobName: JobNames.WHShip,\r\n //topLineColor: borderColors[0 % borderColors.length]\r\n },\r\n //{ text: 'Pickup/Delivery Instruction', level: 1, popupComponent: , moreMenuJobName: JobNames.WHShip, topLineColor: borderColors[0 % borderColors.length] },\r\n {\r\n text: 'Straight B/L',\r\n level: 1,\r\n link: '/warehousing/straightBl?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/warehousing/straightBl/'),\r\n moreMenuJobName: JobNames.WHShip,\r\n },\r\n //{ text: 'Straight B/L', level: 1, popupComponent: , moreMenuJobName: JobNames.WHShip },\r\n { text: 'Pickup Slip', level: 1, subMenu: FmsSubMenu.WShip, moreMenuJobName: JobNames.WHShip },\r\n { text: 'Warehouse Shipping Label', level: 1, subMenu: FmsSubMenu.WLabelShip, moreMenuJobName: JobNames.WHShip },\r\n ]\r\n },\r\n\r\n // Accounting [230519 Before Change Code]\r\n // {\r\n // operation: constants.operations.accounting,\r\n // job: [\r\n // {\r\n // text: 'Invoice (All)',\r\n // level: 0,\r\n // link: '/common/joblistview/invoice/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/invoice/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctInvoiceList\r\n // },\r\n // {\r\n // text: 'Bill (All)',\r\n // level: 0,\r\n // link: '/common/joblistview/bill/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/bill/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctBillList\r\n // },\r\n // {\r\n // text: 'CrDb (All)',\r\n // level: 0,\r\n // link: '/common/joblistview/crdb/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/crdb/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctCrDbList\r\n // },\r\n // {\r\n // text: 'G. Billing', level: 0,\r\n // items: [\r\n // {\r\n // text: 'G. Bill',\r\n // level: 1,\r\n // link: '/common/joblistview/acGeneralBill/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acGeneralBill/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctGBillList\r\n // },\r\n // {\r\n // text: 'G. Invoice',\r\n // level: 1,\r\n // link: '/common/joblistview/acGeneralInvoice/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acGeneralInvoice/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctGInvoList\r\n // },\r\n // ]\r\n // },\r\n\r\n // // {\r\n // // text: 'Invoice/Bill/CrDb', level: 0,\r\n // // items: [\r\n // // { text: 'Invoice', level: 1 },\r\n // // { text: 'Bill', level: 1 },\r\n // // { text: 'CrDb', level: 1 },\r\n // // { text: 'General Invoice', level: 1 },\r\n // // { text: 'General Bill', level: 1 },\r\n // // ]\r\n // // },\r\n // {\r\n // text: 'Customer Pay', level: 0,\r\n // link: '/common/joblistview/acCustomerPayment/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acCustomerPayment/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctCustPayment,\r\n // },\r\n // {\r\n // text: 'Bill Pay', level: 0,\r\n // link: '/common/joblistview/acBillPayment/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acBillPayment/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctBillPayment,\r\n // },\r\n // {\r\n // text: 'CC Pay', level: 0, link: '/common/joblistview/acCCPayment/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acCCPayment/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctCCPayment,\r\n // },\r\n // {\r\n // text: 'Deposit / Check Clear', level: 0,\r\n // // link: '/common/joblistview/acDepositCheckClear/accounting',\r\n // // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acDepositCheckClear/accounting'),\r\n // popupComponent: {\r\n // const refreshUrls = ['/common/joblistview/acBillPayment/accounting', '/common/joblistview/acCustomerPayment/accounting'];\r\n // if (refreshUrls.includes(currentUrl)) {\r\n // const channel = postal.channel('ifms-job-list');\r\n // channel.publish('ifms-job-list.reload');\r\n // }\r\n // }} />,\r\n // popupWidth: 840,\r\n // popupTop: 50, \r\n // fmsSecTask: FmsSecTask.AcctDeposit,\r\n // },\r\n // // {\r\n // // text: 'Payment', level: 0,\r\n // // items: [\r\n // // {\r\n // // text: 'Customer Payment', level: 1,\r\n // // link: '/common/joblistview/acCustomerPayment/accounting',\r\n // // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acCustomerPayment/accounting'),\r\n // // },\r\n // // {\r\n // // text: 'Bill Payment', level: 1,\r\n // // link: '/common/joblistview/acBillPayment/accounting',\r\n // // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acBillPayment/accounting'),\r\n // // },\r\n // // {\r\n // // text: 'Credit Card Payment', level: 1, link: '/common/joblistview/acCCPayment/accounting',\r\n // // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acCCPayment/accounting'),\r\n // // },\r\n // // ]\r\n // // },\r\n // {\r\n // text: 'Bank Transaction', level: 0,\r\n // items: [\r\n // {\r\n // text: 'Undo Deposit Clear/\\nCancel Check Clear', level: 1,\r\n // // link: '/common/joblistview/acDepositCheckClear/accounting',\r\n // // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acDepositCheckClear/accounting'),\r\n // popupComponent: {\r\n // const refreshUrls = ['r/common/joblistview/acBillPayment/accounting', '/common/joblistview/acCustomerPayment/accounting'];\r\n // if (refreshUrls.includes(currentUrl)) {\r\n // const channel = postal.channel('ifms-job-list');\r\n // channel.publish('ifms-job-list.reload');\r\n // }\r\n // }} />,\r\n // popupWidth: 840,\r\n // popupTop: 50, \r\n // metadata: {\r\n // doubleLineInMenu: true,\r\n // },\r\n // fmsSecTask: FmsSecTask.AcctUndoDeposit\r\n // },\r\n // {\r\n // text: 'Credit Card Clear', level: 1,\r\n // // link: '/common/joblistview/acCreditCardClear/accounting',\r\n // // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acCreditCardClear/accounting'),\r\n // popupComponent: ,\r\n // popupWidth: 840,\r\n // popupTop: 50, \r\n // fmsSecTask: FmsSecTask.AcctCCClear,\r\n // },\r\n // {\r\n // text: 'Cancel Credit Card Clear', level: 1,\r\n // // link: '/common/joblistview/acCreditCardClear/accounting',\r\n // // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acCreditCardClear/accounting'),\r\n // popupComponent: ,\r\n // popupWidth: 840,\r\n // popupTop: 50, \r\n // fmsSecTask: FmsSecTask.AcctCancelCCClear,\r\n // },\r\n // {\r\n // text: 'Check Clear with Excel', level: 1,\r\n // // link: '/common/joblistview/acCreditCardClear/accounting',\r\n // // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acCreditCardClear/accounting'),\r\n // popupComponent: ,\r\n // popupWidth: 840,\r\n // popupTop: 50, \r\n // fmsSecTask: FmsSecTask.AcctChkClearWithExcel,\r\n // },\r\n // {\r\n // text: 'Bank Transfer', level: 1,\r\n // link: '/common/joblistview/acBankTransfer/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acBankTransfer/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctBankTransfer,\r\n // },\r\n // {\r\n // text: 'Bank Recon', level: 1,\r\n // link: '/common/joblistview/acBankRecon/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acBankRecon/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctBankRecon,\r\n // },\r\n // /*{\r\n // text: 'Check Clear with Excel', level: 1,\r\n // link: '/common/joblistview/acCheckClear/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acCheckClear/accounting'),\r\n // },*/\r\n // ]\r\n // },\r\n // ],\r\n // download: [],\r\n // report: [\r\n // {\r\n // text: 'Aging', level: 0,\r\n // popupComponent: ,\r\n // popupWidth: 760,\r\n // fmsSecTask: FmsSecTask.AcctAging,\r\n // },\r\n // {\r\n // text: 'Statement', level: 0,\r\n // items: [\r\n // {text: 'Customer Statement', level: 1, popupComponent: , popupWidth: 760, popupTop: 50, fmsSecTask: FmsSecTask.AcctCustStatement },\r\n // {text: 'Agent Statement', level: 1, popupComponent: , popupWidth: 760, popupTop: 50, fmsSecTask: FmsSecTask.AcctAgentStatement},\r\n // {\r\n // text: 'Customer Pay Memo', level: 1,\r\n // link: '/common/joblistview/acCustomerPaymentMemo/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acCustomerPaymentMemo/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctCustPaymentMemo\r\n // },\r\n // ]\r\n // },\r\n // {\r\n // text: 'Sales/Cost Recog', level: 0,\r\n // items: [\r\n // {\r\n // text: 'Deferred Report', level: 1, popupComponent: , \r\n // popupWidth: 760, \r\n // fmsSecTask: FmsSecTask.SCRecogDeferred \r\n // },\r\n // {text: 'Batch Recog', level: 1, popupComponent: , popupWidth: 1120, popupTop: 50, fmsSecTask: FmsSecTask.SCRecogBatchRecog },\r\n // ]\r\n // },\r\n // {\r\n // text: 'Accounting Assist', level: 0,\r\n // items: [\r\n // {text: 'Daily Accounting Summary', level: 1, popupComponent: , popupWidth: 760, fmsSecTask: FmsSecTask.AcctDailyAcctSummary},\r\n // {text: 'Account Balance', level: 1, popupComponent: , popupWidth: 760, fmsSecTask: FmsSecTask.AcctBalByEntity},\r\n // {text: 'Account Ledger', level: 1, popupComponent: , popupWidth: 760, fmsSecTask: FmsSecTask.AcctLedger},\r\n // {text: 'General Ledger', level: 1, popupComponent: , popupWidth: 760, fmsSecTask: FmsSecTask.AcctGeneralLedger},\r\n // ]\r\n // },\r\n // {\r\n // text: 'Financial Report', level: 0,\r\n // items: [\r\n // {text: 'Income Statement', level: 1, popupComponent: , popupWidth: 760, fmsSecTask: FmsSecTask.AcctIncomeStatement},\r\n // {text: 'Balance Sheet', level: 1, popupComponent: , popupWidth: 760, fmsSecTask: FmsSecTask.AcctBalanceSheet},\r\n // {text: 'Trial Balance', level: 1, popupComponent: , popupWidth: 760, fmsSecTask: FmsSecTask.AcctTrialBalance},\r\n // ]\r\n // },\r\n // {\r\n // text: 'Period/Year End', level: 0,\r\n // items: [\r\n // {text: 'Period Closing', level: 1, popupComponent: , fmsSecTask: FmsSecTask.AcctPeriodClosing},\r\n // {text: 'Year End Processing', level: 1, popupWidth: 510, popupTop: 50, popupComponent: , fmsSecTask: FmsSecTask.AcctEndYearProc}, \r\n // ]\r\n // },\r\n // {\r\n // text: 'General Accounting', level: 0,\r\n // items: [\r\n // {\r\n // text: 'Payroll Summary', level: 1,\r\n // link: '/common/joblistview/acPayroll2/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acPayroll2/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctPayroll\r\n // },\r\n // {\r\n // text: 'Prepaid Expense Adjustment', level: 1,\r\n // link: '/common/joblistview/acPrepaidExpenseAdjustment/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acPrepaidExpenseAdjustment/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctPrepaidAdjustment,\r\n // },\r\n // {\r\n // text: 'Depreciation Adjustment', level: 1,\r\n // link: '/common/joblistview/acDepreciationAdjustment/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acDepreciationAdjustment/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctDepreciationAdjustment,\r\n // },\r\n // {\r\n // text: 'Amortization Adjustment', level: 1,\r\n // link: '/common/joblistview/acAmortizationAdjustment/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acAmortizationAdjustment/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctAmortizationAdjustment,\r\n // },\r\n // {\r\n // text: 'Bad Debt Expense', level: 1,\r\n // link: '/common/joblistview/acBadDebtProcessing/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acBadDebtProcessing/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctBadDebtExpense,\r\n // },\r\n // {\r\n // text: 'Sales Tax Return', level: 1,\r\n // link: '/common/joblistview/acSalesTaxReturn/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acSalesTaxReturn/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctSalesTaxReturnList,\r\n // },\r\n // ]\r\n // },\r\n // {\r\n // text: 'Journal', level: 0,\r\n // link: '/common/joblistview/acJournal/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acJournal/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctSlipJournalList,\r\n // },\r\n // {\r\n // text: 'Memo List', level: 0,\r\n // items: [\r\n // {text: 'Reminder Task', level: 1, link: '/memoList?o=accounting&i=0', metadata: { op: constants.operations.accounting } },\r\n // {text: 'Attached File', level: 1, link: '/memoList?o=accounting&i=1', metadata: { op: constants.operations.accounting }, fmsSecTask: FmsSecTask.UTAttachedFile },\r\n // ]\r\n // },\r\n // {\r\n // text: 'Log List', level: 0,\r\n // items: [\r\n // {text: 'Email Log List', level: 1, link: '/memoList?o=accounting&i=2', metadata: { op: constants.operations.accounting }, fmsSecTask: FmsSecTask.UTEmailLog },\r\n // {text: 'Print Log List', level: 1, link: '/memoList?o=accounting&i=3', metadata: { op: constants.operations.accounting }, fmsSecTask: FmsSecTask.UTPrintLog },\r\n // {text: 'Fax Log List', level: 1, link: '/memoList?o=accounting&i=4', metadata: { op: constants.operations.accounting }, fmsSecTask: FmsSecTask.UTFaxLog },\r\n // ],\r\n // },\r\n // ]\r\n // },\r\n {\r\n operation: constants.operations.accounting,\r\n job: [\r\n {\r\n text: 'Bank Balance',\r\n level: 0,\r\n link: '/accounting/acBankBalanceView',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acBankBalanceView'),\r\n fmsSecTask: FmsSecTask.AcctBankBalance,\r\n topLineColor: '#d9d9d9'\r\n },\r\n {\r\n text: 'Bank Recon',\r\n level: 0,\r\n link: '/common/joblistview/acBankRecon/accounting',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acBankRecon/accounting'),\r\n fmsSecTask: FmsSecTask.AcctBankRecon,\r\n },\r\n {\r\n text: 'Daily Accounting Summary',\r\n level: 0,\r\n link: '/accounting/acDailyAccountingSummary',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acDailyAccountingSummary'),\r\n fmsSecTask: FmsSecTask.AcctDailyAcctSummary,\r\n },\r\n {\r\n text: 'Customer Pay',\r\n level: 0,\r\n link: '/common/joblistview/acCustomerPayment/accounting',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acCustomerPayment/accounting'),\r\n fmsSecTask: FmsSecTask.AcctCustPayment,\r\n topLineColor: '#d9d9d9'\r\n },\r\n {\r\n text: 'Bill Pay',\r\n level: 0,\r\n link: '/common/joblistview/acBillPayment/accounting',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acBillPayment/accounting'),\r\n fmsSecTask: FmsSecTask.AcctBillPayment,\r\n },\r\n {\r\n text: 'CC Pay',\r\n level: 0,\r\n link: '/common/joblistview/acCCPayment/accounting',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acCCPayment/accounting'),\r\n fmsSecTask: FmsSecTask.AcctCCPayment,\r\n },\r\n {\r\n text: 'Agent Pay',\r\n level: 0,\r\n link: '/common/joblistview/acAgentPayment/accounting',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acAgentPayment/accounting'),\r\n fmsSecTask: FmsSecTask.AcctAgntPayment,\r\n },\r\n // {\r\n // text: 'Payment Prep',\r\n // level: 0,\r\n // link: '/common/joblistview/acPaymentPrep/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acPaymentPrep/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctPaymentPrep,\r\n // },\r\n {\r\n text: 'Deposit / Check Clear',\r\n level: 0,\r\n // link: '/common/joblistview/acDepositCheckClear/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acDepositCheckClear/accounting'),\r\n // popupComponent: {\r\n // const refreshUrls = ['/common/joblistview/acBillPayment/accounting', '/common/joblistview/acCustomerPayment/accounting'];\r\n // if (refreshUrls.includes(currentUrl)) {\r\n // const channel = postal.channel('ifms-job-list');\r\n // channel.publish('ifms-job-list.reload');\r\n // }\r\n // }} />,\r\n // popupWidth: 840,\r\n // popupTop: 50, \r\n link: '/accounting/acDepositCheckClear',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acDepositCheckClear'),\r\n fmsSecTask: FmsSecTask.AcctDeposit,\r\n topLineColor: '#d9d9d9'\r\n },\r\n {\r\n text: 'Undo Deposit / Check Clear',\r\n level: 0,\r\n // link: '/common/joblistview/acDepositCheckClear/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acDepositCheckClear/accounting'),\r\n // popupComponent: {\r\n // \r\n // const refreshUrls = ['r/common/joblistview/acBillPayment/accounting', '/common/joblistview/acCustomerPayment/accounting'];\r\n // if (refreshUrls.includes(currentUrl)) {\r\n // const channel = postal.channel('ifms-job-list');\r\n // channel.publish('ifms-job-list.reload');\r\n // }\r\n // }} />,\r\n // popupWidth: 840,\r\n // popupTop: 50, \r\n link: '/accounting/acUndoDepositCheckClear',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acUndoDepositCheckClear'),\r\n fmsSecTask: FmsSecTask.AcctUndoDeposit\r\n },\r\n {\r\n text: 'Credit Card Clear',\r\n level: 0,\r\n // link: '/common/joblistview/acCreditCardClear/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acCreditCardClear/accounting'),\r\n // popupComponent: ,\r\n // popupWidth: 840,\r\n // popupTop: 50, \r\n link: '/accounting/acCreditCardClear',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acCreditCardClear'),\r\n fmsSecTask: FmsSecTask.AcctCCClear,\r\n },\r\n {\r\n text: 'Cancel Credit Card Clear',\r\n level: 0,\r\n // link: '/common/joblistview/acCreditCardClear/accounting',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acCreditCardClear/accounting'),\r\n // popupComponent: ,\r\n // popupWidth: 840,\r\n // popupTop: 50, \r\n link: '/accounting/acCancelCreditCardClear',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acCancelCreditCardClear'),\r\n fmsSecTask: FmsSecTask.AcctCancelCCClear,\r\n },\r\n {\r\n text: 'Check Clear with Excel',\r\n level: 0,\r\n // popupComponent: {\r\n // const refreshUrls = ['/common/joblistview/acBillPayment/accounting', '/common/joblistview/acCustomerPayment/accounting'];\r\n // if (refreshUrls.includes(currentUrl)) {\r\n // const channel = postal.channel('ifms-job-list');\r\n // channel.publish('ifms-job-list.reload');\r\n // }\r\n // }} />,\r\n // popupWidth: 840,\r\n // popupTop: 50, \r\n link: '/accounting/acCheckClearwExcel',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/CheckClearwExcel'),\r\n fmsSecTask: FmsSecTask.AcctChkClearWithExcel,\r\n },\r\n {\r\n text: 'Bank Transfer',\r\n level: 0,\r\n link: '/common/joblistview/acBankTransfer/accounting',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acBankTransfer/accounting'),\r\n fmsSecTask: FmsSecTask.AcctBankTransfer,\r\n },\r\n // {\r\n // text: 'Aging',\r\n // level: 0,\r\n // popupComponent: ,\r\n // popupWidth: 760,\r\n // fmsSecTask: FmsSecTask.AcctAging,\r\n // topLineColor: '#d9d9d9'\r\n // },\r\n {\r\n text: 'Aging',\r\n level: 0,\r\n link: '/accounting/acAging',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acAging'),\r\n fmsSecTask: FmsSecTask.AcctAgingAR,\r\n topLineColor: '#d9d9d9'\r\n },\r\n {\r\n text: 'Customer Statement',\r\n level: 0,\r\n // popupComponent: ,\r\n // popupWidth: 760,\r\n // popupTop: 50,\r\n link: '/accounting/acCustomerStatement?parentOp=accounting',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acCustomerStatement'),\r\n fmsSecTask: FmsSecTask.AcctCustStatement\r\n },\r\n {\r\n text: 'Agent Statement',\r\n level: 0,\r\n // popupComponent: ,\r\n // popupWidth: 760,\r\n // popupTop: 50,\r\n link: '/accounting/acAgentStatement?parentOp=accounting',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acAgentStatement'),\r\n fmsSecTask: FmsSecTask.AcctAgentStatement\r\n },\r\n {\r\n text: 'Customer Pay Memo',\r\n level: 0,\r\n link: '/common/joblistview/acCustomerPaymentMemo/accounting',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acCustomerPaymentMemo/accounting'),\r\n fmsSecTask: FmsSecTask.AcctCustPaymentMemo\r\n },\r\n\r\n {\r\n text: 'Invoice',\r\n level: 0,\r\n link: '/common/joblistview/invoice/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/invoice/accounting'),\r\n fmsSecTask: FmsSecTask.AcctInvoiceList,\r\n topLineColor: '#d9d9d9'\r\n },\r\n {\r\n text: 'Bill',\r\n level: 0,\r\n link: '/common/joblistview/bill/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/bill/accounting'),\r\n fmsSecTask: FmsSecTask.AcctBillList\r\n },\r\n {\r\n text: 'CrDb',\r\n level: 0,\r\n link: '/common/joblistview/crdb/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/crdb/accounting'),\r\n fmsSecTask: FmsSecTask.AcctCrDbList\r\n },\r\n {\r\n text: 'G. Bill',\r\n level: 0,\r\n link: '/common/joblistview/acGeneralBill/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acGeneralBill/accounting'),\r\n fmsSecTask: FmsSecTask.AcctGBillList\r\n },\r\n {\r\n text: 'G. Invoice',\r\n level: 0,\r\n link: '/common/joblistview/acGeneralInvoice/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acGeneralInvoice/accounting'),\r\n fmsSecTask: FmsSecTask.AcctGInvoList\r\n },\r\n {\r\n text: 'Payroll (Old)',\r\n level: 0,\r\n link: '/common/joblistview/acPayrollSummary/accounting',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acPayrollSummary/accounting'),\r\n fmsSecTask: FmsSecTask.AcctPayroll,\r\n topLineColor: '#d9d9d9'\r\n },\r\n {\r\n text: 'Payroll',\r\n level: 0,\r\n link: '/common/joblistview/acPayroll2/accounting',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acPayroll2/accounting'),\r\n fmsSecTask: FmsSecTask.AcctPayroll,\r\n },\r\n {\r\n text: 'iXpense',\r\n level: 0,\r\n \r\n },\r\n {\r\n text: 'Sales / Cost Batch Recog',\r\n level: 0,\r\n items: [\r\n {\r\n text: 'Sales / Cost Batch Recog',\r\n level: 1,\r\n link: '/accounting/acSalesCostRecog/add',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acSalesCostRecog/add'),\r\n fmsSecTask: FmsSecTask.SCRecogBatchRecog,\r\n topLineColor: '#d9d9d9',\r\n },\r\n {\r\n text: 'Recog History',\r\n level: 1,\r\n link: '/common/joblistView/acBatchRecogHistoy/accounting',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistView/acBatchRecogHistoy/accounting'),\r\n },\r\n ]\r\n },\r\n {\r\n text: 'Deferred Report',\r\n level: 0,\r\n link: '/accounting/acDeferredReport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acDeferredReport'),\r\n fmsSecTask: FmsSecTask.SCRecogDeferred\r\n },\r\n {\r\n text: 'Account Balance',\r\n level: 0,\r\n link: '/accounting/acAccountBalance',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acAccountBalance'),\r\n // popupComponent: , \r\n // popupWidth: 760, \r\n fmsSecTask: FmsSecTask.AcctBalByEntity,\r\n topLineColor: '#d9d9d9'\r\n },\r\n {\r\n text: 'Account Ledger',\r\n level: 0,\r\n link: '/accounting/acAccountLedger',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acAccountLedger'),\r\n // popupComponent: , \r\n // popupWidth: 760, \r\n\r\n fmsSecTask: FmsSecTask.AcctLedger\r\n },\r\n {\r\n text: 'General Ledger',\r\n level: 0,\r\n link: '/accounting/acGeneralLedger',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acGeneralLedger'),\r\n //popupComponent: , \r\n //popupWidth: 760,\r\n\r\n fmsSecTask: FmsSecTask.AcctGeneralLedger\r\n },\r\n {\r\n text: 'Accounting Classify',\r\n level: 0,\r\n items: [\r\n {\r\n text: 'Prepaid Expense', level: 1,\r\n link: '/common/joblistview/acPrepaidExpenseAdjustment/accounting',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acPrepaidExpenseAdjustment/accounting'),\r\n fmsSecTask: FmsSecTask.AcctPrepaidAdjustment,\r\n },\r\n {\r\n text: 'Depreciation', level: 1,\r\n link: '/common/joblistview/acDepreciationAdjustment/accounting',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acDepreciationAdjustment/accounting'),\r\n fmsSecTask: FmsSecTask.AcctDepreciationAdjustment,\r\n },\r\n {\r\n text: 'Amortization', level: 1,\r\n link: '/common/joblistview/acAmortizationAdjustment/accounting',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acAmortizationAdjustment/accounting'),\r\n fmsSecTask: FmsSecTask.AcctAmortizationAdjustment,\r\n },\r\n {\r\n text: 'Bad Debt Expense', level: 1,\r\n link: '/common/joblistview/acBadDebtProcessing/accounting',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acBadDebtProcessing/accounting'),\r\n fmsSecTask: FmsSecTask.AcctBadDebtExpense,\r\n },\r\n {\r\n text: 'Sales Tax Return', level: 1,\r\n link: '/common/joblistview/acSalesTaxReturn/accounting',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acSalesTaxReturn/accounting'),\r\n fmsSecTask: FmsSecTask.AcctSalesTaxReturnList,\r\n },\r\n ],\r\n topLineColor: '#d9d9d9'\r\n },\r\n {\r\n text: 'Journal',\r\n level: 0,\r\n link: '/common/joblistview/acJournal/accounting',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acJournal/accounting'),\r\n fmsSecTask: FmsSecTask.AcctSlipJournalList,\r\n topLineColor: '#d9d9d9'\r\n },\r\n {\r\n text: 'Financial Report',\r\n level: 0,\r\n items: [\r\n //{text: 'Income Statement', level: 1, popupComponent: , popupWidth: 760, fmsSecTask: FmsSecTask.AcctIncomeStatement},\r\n {\r\n text: 'Income Statement',\r\n level: 1,\r\n link: '/accounting/acIncomeStatement',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acIncomeStatement'),\r\n fmsSecTask: FmsSecTask.AcctIncomeStatement,\r\n },\r\n // {text: 'Balance Sheet', level: 1, popupComponent: , popupWidth: 760, fmsSecTask: FmsSecTask.AcctBalanceSheet},\r\n {\r\n text: 'Balance Sheet',\r\n level: 1,\r\n link: '/accounting/acBalanceSheet',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acBalanceSheet'),\r\n fmsSecTask: FmsSecTask.AcctBalanceSheet,\r\n },\r\n // {text: 'Trial Balance', level: 1, popupComponent: , popupWidth: 760, fmsSecTask: FmsSecTask.AcctTrialBalance},\r\n {\r\n text: 'Trial Balance',\r\n level: 1,\r\n link: '/accounting/acTrialBalance',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acTrialBalance'),\r\n fmsSecTask: FmsSecTask.AcctTrialBalance,\r\n },\r\n ]\r\n },\r\n {\r\n text: 'Period Closing',\r\n level: 0,\r\n popupComponent: ,\r\n fmsSecTask: FmsSecTask.AcctPeriodClosing,\r\n topLineColor: '#d9d9d9'\r\n },\r\n {\r\n text: 'Year End Processing',\r\n level: 0,\r\n popupWidth: 510,\r\n popupTop: 50,\r\n popupComponent: ,\r\n fmsSecTask: FmsSecTask.AcctEndYearProc\r\n },\r\n ],\r\n download: [],\r\n report: [],\r\n // moreMenu: [\r\n // {\r\n // text: 'More Menu',\r\n // level: 0,\r\n // items: [\r\n // //Bill Pay More Menu\r\n // // {text: 'Bank EDI (ARP)', level: 1, popupComponent: , moreMenuJobName: JobNames.BillPayment },\r\n // // {text: 'Print Check Attachment', level: 1, subMenu: FmsSubMenu.PrintCheckSlip, moreMenuJobName: JobNames.BillPayment},\r\n // // { text: 'Print Messenger Slip', level: 1, subMenu: FmsSubMenu.PrintMessengerSlip, moreMenuJobName: JobNames.BillPayment },\r\n\r\n // //Check Clear More Menu\r\n // // {text: 'New Customer Pay',level: 1, moreMenuJobName: JobNames.CheckClear },\r\n // // {text: 'New Bill Pay',level: 1, moreMenuJobName: JobNames.CheckClear },\r\n // ]\r\n // },\r\n // ]\r\n },\r\n // Customer\r\n {\r\n operation: constants.operations.customer,\r\n job: [\r\n // {\r\n // text: 'Agent Statement',\r\n // level: 0,\r\n // },\r\n // {\r\n // text: 'Customer Statement',\r\n // level: 0,\r\n // },\r\n // {\r\n // text: 'Email',\r\n // level: 0,\r\n // },\r\n // {\r\n // text: 'Fax',\r\n // level: 0,\r\n // },\r\n // {\r\n // text: 'Importer/Bond Query',\r\n // level: 0,\r\n // },\r\n // {\r\n // text: 'Last Transaction',\r\n // level: 0,\r\n // },\r\n // {\r\n // text: 'Memo List (Customer)',\r\n // level: 0,\r\n // },\r\n // {\r\n // text: 'PrePickup Order',\r\n // level: 0,\r\n // },\r\n // {\r\n // text: 'Print Customer Profile',\r\n // level: 0,\r\n // },\r\n {\r\n text: 'Customer List', level: 0,\r\n link: '/common/joblistview/company/customer',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/company/customer'),\r\n fmsSecTask: FmsSecTask.CodeCompany,\r\n moreMenuJobName: JobNames.Company\r\n },\r\n {\r\n text: 'Active/In-Action CUST Report', \r\n level: 0,\r\n link: '/company/activeCustomer',\r\n fmsSecTask: FmsSecTask.OPRptCustomerActivity,\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/company/activeCustomer'),\r\n },\r\n ],\r\n download: [],\r\n report: [],\r\n moreMenu: [\r\n //Company More Menu\r\n {\r\n text: 'Agent Statement',\r\n level: 1,\r\n link: '/company/agentStatement?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/company/agentStatement/'),\r\n moreMenuJobName: JobNames.Company,\r\n //topLineColor: borderColors[0 % borderColors.length]\r\n },\r\n {\r\n text: 'Customer Statement',\r\n level: 1,\r\n link: '/company/customerVendor?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/company/customerVendor/'),\r\n moreMenuJobName: JobNames.Company\r\n },\r\n {\r\n text: 'PrePickup Order',\r\n level: 1,\r\n link: '/company/pickupDelivery?jobname=@jobName&id=@jobid&docType=127',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/company/pickupDelivery/'),\r\n moreMenuJobName: JobNames.Company\r\n },\r\n {\r\n text: 'Print Customer Profile',\r\n level: 1,\r\n subMenu: FmsSubMenu.CompanyProfile,\r\n moreMenuJobName: JobNames.Company,\r\n //topLineColor: borderColors[1 % borderColors.length]\r\n },\r\n {\r\n text: 'Internet Tracking Customers',\r\n level: 1,\r\n link: '/company/internetTrackingCustomers?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/company/internetTrackingCustomers/'),\r\n moreMenuJobName: JobNames.Company\r\n },\r\n {\r\n text: 'Email', level: 1,\r\n subMenu: FmsSubMenu.SendEmail,\r\n moreMenuJobName: JobNames.Company,\r\n //topLineColor: borderColors[2 % borderColors.length]\r\n },\r\n {\r\n text: 'Fax',\r\n level: 1,\r\n subMenu: FmsSubMenu.SendFax, moreMenuJobName: JobNames.Company\r\n },\r\n {\r\n text: 'Importer/Bond Query',\r\n level: 1,\r\n link: '/company/importerBondQuery?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/company/importerBondQuery/'),\r\n moreMenuJobName: JobNames.Company,\r\n //topLineColor: borderColors[3 % borderColors.length]\r\n },\r\n {\r\n text: 'Last Transaction',\r\n level: 1,\r\n link: '/company/lastTransaction?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/company/lastTransaction/'),\r\n moreMenuJobName: JobNames.Company\r\n },\r\n {\r\n text: 'Memo List (Customer)',\r\n level: 1,\r\n link: '/company/memoList?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/company/memoList/'),\r\n moreMenuJobName: JobNames.Company\r\n },\r\n {\r\n text: 'Customer Address Label Print',\r\n level: 1,\r\n link: '/company/companyAddressLabel?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/company/companyAddressLabel/'),\r\n moreMenuJobName: JobNames.Company\r\n },\r\n // { text: 'Agent Statement', level: 1, popupComponent: , moreMenuJobName: JobNames.Company, topLineColor: borderColors[0 % borderColors.length] },\r\n // { text: 'Customer Statement', level: 1, popupComponent: , moreMenuJobName: JobNames.Company },\r\n // { text: 'PrePickup Order', level: 1, popupComponent: , moreMenuJobName: JobNames.Company },\r\n // { text: 'Print Customer Profile', level: 1, subMenu: FmsSubMenu.CompanyProfile, moreMenuJobName: JobNames.Company, topLineColor: borderColors[1 % borderColors.length] },\r\n // { text: 'Importer/Bond Query', level: 1, popupComponent: , popupWidth: 550, moreMenuJobName: JobNames.Company, topLineColor: borderColors[3 % borderColors.length] },\r\n // { text: 'Last Transaction', level: 1, popupComponent: , moreMenuJobName: JobNames.Company },\r\n // { text: 'Memo List (Customer)', level: 1, popupComponent: , moreMenuJobName: JobNames.Company },\r\n // {\r\n // text: 'Customer Address Label Print',\r\n // level: 0,\r\n // popupComponent: ,\r\n // popupWidth: 550,\r\n // fmsSecTask: FmsSecTask.CmpAddrPrint,\r\n // },\r\n ]\r\n },\r\n //OP Report\r\n {\r\n operation: constants.operations.opReport,\r\n job: [\r\n {\r\n text: 'Duty Pendings', level: 0,\r\n link: '/opReport/dutyPendings',\r\n fmsSecTask: FmsSecTask.OPRptDutyPendings,\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/opReport/dutyPendings'),\r\n },\r\n { text: 'Issue Ready Report', level: 0, fmsSecTask: FmsSecTask.OPRptIssueReady, subMenu: FmsSubMenu.IssueReady },\r\n {\r\n text: 'Est. Profit/Volume Report', level: 0,\r\n link: '/opReport/estProfit?docType=705&isManagerReport=true&opType=oceanImport',\r\n fmsSecTask: FmsSecTask.OPRptEstProfit,\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/opReport/estProfit'),\r\n },\r\n {\r\n text: 'Gross Profit/Volume Report', level: 0,\r\n link: '/opReport/grossProfit?docType=23&isManagerReport=true&opType=oceanImport',\r\n fmsSecTask: FmsSecTask.OPRptGrossProfit,\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/opReport/grossProfit'),\r\n },\r\n {\r\n text: 'Cost/Expense Report', level: 0,\r\n link: '/opReport/cost',\r\n fmsSecTask: FmsSecTask.OPRptVendorCost,\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/opReport/cost'),\r\n },\r\n // {\r\n // text: 'Expense Report', level: 0,\r\n // link: '/opReport/expense',\r\n // fmsSecTask: FmsSecTask.OPRptExpense,\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/opReport/expense'),\r\n // },\r\n {\r\n text: 'Volume/Weight Report', level: 0,\r\n link: '/opReport/volume',\r\n fmsSecTask: FmsSecTask.OPRptVolume,\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/opReport/volume'),\r\n },\r\n {\r\n text: 'Salesperson Performance', level: 0,\r\n link: '/opReport/salesPerformance?docType=206&isManagerReport=true&opType=oceanImport',\r\n fmsSecTask: FmsSecTask.OPRptProfitBySalesman,\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/opReport/salesPerformance'),\r\n },\r\n // {\r\n // text: 'Customer Activity Report', level: 0,\r\n // link: '/opReport/customerActivity',\r\n // fmsSecTask: FmsSecTask.OPRptCustomerActivity,\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/opReport/customerActivity'),\r\n // },\r\n {\r\n text: 'Operator Performance', level: 0,\r\n link: '/opReport/opPerformance',\r\n fmsSecTask: FmsSecTask.OPRptOpPerfom,\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/opReport/opPerformance'),\r\n },\r\n {\r\n text: 'Branch Performance Report', level: 0,\r\n link: '/opReport/branchPerformance',\r\n fmsSecTask: FmsSecTask.OPRptBranchPerform,\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/opReport/branchPerformance'),\r\n },\r\n // {\r\n // text: 'Invoice', level: 0,\r\n // link: '/common/joblistview/invoice/accounting?parentOp=opReport',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/invoice/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctInvoiceList,\r\n // topLineColor: '#d9d9d9' \r\n // },\r\n // {\r\n // text: 'Bill', level: 0,\r\n // link: '/common/joblistview/bill/accounting?parentOp=opReport',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/bill/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctBillList\r\n // },\r\n // {\r\n // text: 'CrDb', level: 0,\r\n // link: '/common/joblistview/crdb/accounting?parentOp=opReport',\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/crdb/accounting'),\r\n // fmsSecTask: FmsSecTask.AcctCrDbList\r\n // },\r\n ],\r\n // job: [\r\n // {text: 'Duty Pendings Report', level: 0, popupComponent: , popupWidth: 760, fmsSecTask: FmsSecTask.OPRptDutyPendings},\r\n // {text: 'Issue Ready Report', level: 0, fmsSecTask: FmsSecTask.OPRptIssueReady},\r\n // {\r\n // text: 'Est. Profit/Volume Report', level: 0, popupComponent: , popupWidth: 760,\r\n // fmsSecTask: FmsSecTask.OPRptEstProfit\r\n // },\r\n // {\r\n // text: 'Gross Profit/Volume Report', level: 0, popupComponent: , \r\n // popupWidth: 760, fmsSecTask: FmsSecTask.OPRptGrossProfit \r\n // },\r\n // {text: 'Cost Report', level: 0, popupComponent: , popupWidth: 760, fmsSecTask: FmsSecTask.OPRptVendorCost},\r\n // {text: 'Volume Report', level: 0, popupComponent: , popupWidth: 760, fmsSecTask: FmsSecTask.OPRptVolume },\r\n // {\r\n // text: 'Sales Performance Report', level: 0, popupComponent: , \r\n // popupWidth: 760, fmsSecTask: FmsSecTask.OPRptProfitBySalesman \r\n // },\r\n // {text: 'Customer Activity Report', level: 0, popupComponent: , popupWidth: 760, fmsSecTask: FmsSecTask.OPRptCustomerActivity},\r\n\r\n // {text: 'OP Performance Report', level: 0, popupComponent: , popupWidth: 760, fmsSecTask: FmsSecTask.OPRptOpPerfom},\r\n // {text: 'Branch Performance Report', level: 0, popupComponent: , popupWidth: 760, fmsSecTask: FmsSecTask.OPRptBranchPerform},\r\n // ],\r\n download: [],\r\n report: [],\r\n },\r\n //Utility\r\n {\r\n operation: constants.operations.utility,\r\n job: [\r\n {\r\n text: 'Communication Log List',\r\n level: 0,\r\n link: '/common/joblistview/utCommunication/utility',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/utCommunication/utility'),\r\n fmsSecTask: FmsSecTask.UTCommunication\r\n },\r\n {\r\n text: 'Email Log List',\r\n level: 0,\r\n link: '/common/joblistview/utEmail/utility',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/utEmail/utility'),\r\n fmsSecTask: FmsSecTask.UTEmailLog\r\n },\r\n {\r\n text: 'Print Log List',\r\n level: 0,\r\n link: '/common/joblistview/utPrint/utility',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/utPrint/utility'),\r\n fmsSecTask: FmsSecTask.UTPrintLog\r\n },\r\n {\r\n text: 'Fax Log List',\r\n level: 0,\r\n link: '/common/joblistview/utFax/utility',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/utFax/utility'),\r\n fmsSecTask: FmsSecTask.UTFaxLog\r\n },\r\n {\r\n text: 'Memo/Task List',\r\n level: 0,\r\n link: '/common/joblistview/utMemotask/utility',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/utMemotask/utility'),\r\n fmsSecTask: FmsSecTask.UTTaskMemoList\r\n },\r\n {\r\n text: 'Attached File List',\r\n level: 0,\r\n link: '/common/joblistview/utAttachedfile/utility',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/utAttachedfile/utility'),\r\n fmsSecTask: FmsSecTask.UTAttachedFile\r\n },\r\n {\r\n //text: appContext.systemSettings?.showMilestoneInOihList ? 'B/L Activity Status Off (OIH List)': 'B/L Activity Status On (OIH List)',\r\n text: 'OIH B/L Activity Status On',\r\n level: 0,\r\n //link: '/common/joblistview/utFax/utility', \r\n //fmsSecTask: FmsSecTask.UTFaxLog\r\n },\r\n {\r\n //text: appContext.systemSettings?.showMilestoneInAihList ? 'B/L Activity Status Off (AIH List)': 'B/L Activity Status On (AIH List)',\r\n text: 'AIH B/L Activity Status On',\r\n level: 0,\r\n //link: '/common/joblistview/utFax/utility', \r\n //fmsSecTask: FmsSecTask.UTFaxLog\r\n },\r\n {\r\n text: `Denied Party (BIS)`,\r\n level: 0,\r\n link: 'https://www.bis.doc.gov/index.php/policy-guidance/lists-of-parties-of-concern',\r\n metadata: { isDirectPrint: true }\r\n },\r\n {\r\n text: `Denied Party (OFAC)`,\r\n level: 0, link: 'https://www.treas.gov/offices/enforcement/ofac/sdn/',\r\n metadata: { isDirectPrint: true }\r\n },\r\n {\r\n text: `Denied Party (ITAR)`,\r\n level: 0, link: 'https://www.pmddtc.state.gov/',\r\n metadata: { isDirectPrint: true }\r\n },\r\n // {\r\n // text: 'Denied Party (BIS)',\r\n // level: 0,\r\n // link: 'https://www.bis.doc.gov/index.php/policy-guidance/lists-of-parties-of-concern'\r\n // //fmsSecTask: FmsSecTask.UTFaxLog\r\n // },\r\n // {\r\n // text: 'Denied Party (OFAC)',\r\n // level: 0,\r\n // link: 'https://www.treas.gov/offices/enforcement/ofac/sdn/'\r\n // //fmsSecTask: FmsSecTask.UTFaxLog\r\n // },\r\n // {\r\n // text: 'Denied Party (ITAR)',\r\n // level: 0,\r\n // link: 'https://www.pmddtc.state.gov/'\r\n // //fmsSecTask: FmsSecTask.UTFaxLog\r\n // },\r\n {\r\n text: 'Check File Server',\r\n level: 0,\r\n //fmsSecTask: FmsSecTask.UTFaxLog\r\n },\r\n ],\r\n download: [],\r\n preReport: [],\r\n report: []\r\n },\r\n //Billings\r\n {\r\n operation: constants.operations.billings,\r\n moreMenuLocation: 'bottom',\r\n job: [\r\n {\r\n text: 'Invoice',\r\n level: 0,\r\n link: '/common/joblistview/invoice/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/invoice/accounting'),\r\n fmsSecTask: FmsSecTask.AcctInvoiceList,\r\n },\r\n {\r\n text: 'Bill',\r\n level: 0,\r\n link: '/common/joblistview/bill/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/bill/accounting'),\r\n fmsSecTask: FmsSecTask.AcctBillList,\r\n },\r\n {\r\n text: 'CrDb',\r\n level: 0,\r\n link: '/common/joblistview/crdb/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/crdb/accounting'),\r\n fmsSecTask: FmsSecTask.AcctCrDbList,\r\n },\r\n {\r\n text: 'G. Invoice',\r\n level: 0,\r\n link: '/common/joblistview/acGeneralInvoice/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acGeneralInvoice/accounting'),\r\n fmsSecTask: FmsSecTask.AcctGInvoList,\r\n },\r\n {\r\n text: 'G. Bill',\r\n level: 0,\r\n link: '/common/joblistview/acGeneralBill/accounting?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/acGeneralBill/accounting'),\r\n fmsSecTask: FmsSecTask.AcctGBillList,\r\n },\r\n \r\n ],\r\n download: [],\r\n preReport: [],\r\n report: [],\r\n moreMenu: [\r\n // View History -----------------------------\r\n {\r\n text: 'View History',\r\n level: 0,\r\n subMenuNonReport: FmsSubMenu.OpenHistoryView,\r\n },\r\n // Delete History -----------------------------\r\n {\r\n text: 'Delete History',\r\n link: '/common/deleteHistory?jobname=@jobName&id=@jobid',\r\n level: 1,\r\n moreMenuJobName: JobNames.Invoice,\r\n subMenuNonReport: FmsSubMenu.OpenDeleteHistoryView,\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/deleteHistory'),\r\n },\r\n {\r\n text: 'Delete History',\r\n link: '/common/deleteHistory?jobname=@jobName&id=@jobid',\r\n level: 1,\r\n moreMenuJobName: JobNames.Bill,\r\n subMenuNonReport: FmsSubMenu.OpenDeleteHistoryView,\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/deleteHistory'),\r\n },\r\n {\r\n text: 'Delete History',\r\n link: '/common/deleteHistory?jobname=@jobName&id=@jobid',\r\n level: 1,\r\n moreMenuJobName: JobNames.CrDb,\r\n subMenuNonReport: FmsSubMenu.OpenDeleteHistoryView,\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/deleteHistory'),\r\n },\r\n {\r\n text: 'Delete History',\r\n link: '/common/deleteHistory?jobname=@jobName&id=@jobid',\r\n level: 1,\r\n moreMenuJobName: JobNames.GInvo,\r\n subMenuNonReport: FmsSubMenu.OpenDeleteHistoryView,\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/deleteHistory'),\r\n },\r\n {\r\n text: 'Delete History',\r\n link: '/common/deleteHistory?jobname=@jobName&id=@jobid',\r\n level: 1,\r\n moreMenuJobName: JobNames.GBill,\r\n subMenuNonReport: FmsSubMenu.OpenDeleteHistoryView,\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/deleteHistory'),\r\n },\r\n // Auto Billing (G. Invoice Only) -----------------------------\r\n {\r\n text: 'Auto Billing',\r\n level: 1,\r\n fmsSecTask: FmsSecTask.AcctGInvoList,\r\n moreMenuJobName: JobNames.GInvo,\r\n subMenuNonReport: FmsSubMenu.AutoBillingView,\r\n // isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acAutobilling'),\r\n },\r\n // Print -----------------------------\r\n {\r\n text: 'Print',\r\n level: 1,\r\n moreMenuJobName: JobNames.OpInvoice,\r\n subMenu: FmsSubMenu.Invoice,\r\n fmsSecTask: FmsSecTask.AcctInvoiceList,\r\n topLineColor: '#cc00ff'\r\n },\r\n {\r\n text: 'Print',\r\n level: 1,\r\n moreMenuJobName: JobNames.Invoice,\r\n subMenu: FmsSubMenu.Invoice,\r\n fmsSecTask: FmsSecTask.AcctInvoiceList,\r\n topLineColor: '#cc00ff'\r\n },\r\n {\r\n text: 'Print',\r\n level: 1,\r\n moreMenuJobName: JobNames.OpBill,\r\n fmsSecTask: FmsSecTask.AcctBillList,\r\n subMenuNonReport: FmsSubMenu.PrintBill,\r\n topLineColor: '#cc00ff'\r\n },\r\n {\r\n text: 'Print',\r\n level: 1,\r\n moreMenuJobName: JobNames.Bill,\r\n fmsSecTask: FmsSecTask.AcctBillList,\r\n subMenuNonReport: FmsSubMenu.PrintBill,\r\n topLineColor: '#cc00ff'\r\n },\r\n {\r\n text: 'Print',\r\n level: 1,\r\n moreMenuJobName: JobNames.OpCrDb,\r\n fmsSecTask: FmsSecTask.AcctCrDbList,\r\n subMenu: FmsSubMenu.CrDbNote,\r\n topLineColor: '#cc00ff'\r\n },\r\n {\r\n text: 'Print',\r\n level: 1,\r\n moreMenuJobName: JobNames.CrDb,\r\n fmsSecTask: FmsSecTask.AcctCrDbList,\r\n subMenu: FmsSubMenu.CrDbNote,\r\n topLineColor: '#cc00ff'\r\n },\r\n {\r\n text: 'Print',\r\n level: 1,\r\n moreMenuJobName: JobNames.GInvo,\r\n fmsSecTask: FmsSecTask.AcctGInvoList,\r\n subMenu: FmsSubMenu.Invoice,\r\n topLineColor: '#cc00ff'\r\n },\r\n {\r\n text: 'Print',\r\n level: 1,\r\n fmsSecTask: FmsSecTask.AcctGBillList,\r\n subMenuNonReport: FmsSubMenu.PrintBill,\r\n moreMenuJobName: JobNames.GBill,\r\n topLineColor: '#cc00ff'\r\n },\r\n // Batch Print -----------------------------\r\n {\r\n text: 'Batch Print',\r\n level: 1,\r\n fmsSecTask: FmsSecTask.AcctInvoiceList,\r\n moreMenuJobName: JobNames.OpInvoice,\r\n subMenuNonReport: FmsSubMenu.BatchPrint,\r\n },\r\n {\r\n text: 'Batch Print',\r\n level: 1,\r\n fmsSecTask: FmsSecTask.AcctInvoiceList,\r\n moreMenuJobName: JobNames.Invoice,\r\n subMenuNonReport: FmsSubMenu.BatchPrint,\r\n },\r\n {\r\n text: 'Batch Print',\r\n level: 1,\r\n fmsSecTask: FmsSecTask.AcctGInvoList,\r\n moreMenuJobName: JobNames.GInvo,\r\n subMenuNonReport: FmsSubMenu.BatchPrint,\r\n },\r\n // New Customer Pay -----------------------------\r\n {\r\n text: 'New Customer Pay',\r\n level: 0,\r\n fmsSecTask: FmsSecTask.AcctCustPayment,\r\n subMenuNonReport: FmsSubMenu.NewCustomerPay,\r\n topLineColor: '#0079a4'\r\n },\r\n \r\n // New Bill Pay -----------------------------\r\n {\r\n text: 'New Bill Pay',\r\n level: 0,\r\n subMenuNonReport: FmsSubMenu.NewBillPay,\r\n fmsSecTask: FmsSecTask.AcctBillPayment,\r\n },\r\n // Customer Pay List -----------------------------\r\n {\r\n text: 'Customer Pay List',\r\n level: 0,\r\n subMenuNonReport: FmsSubMenu.CustomerPayList,\r\n fmsSecTask: FmsSecTask.AcctCustPayment,\r\n topLineColor: '#ffc000',\r\n topLineShort: true,\r\n },\r\n // Bill Pay List -----------------------------\r\n {\r\n text: 'Bill Pay List',\r\n level: 0,\r\n subMenuNonReport: FmsSubMenu.BillPayList,\r\n fmsSecTask: FmsSecTask.AcctBillPayment,\r\n },\r\n // View Payment History -----------------------------\r\n {\r\n text: 'View Payment History',\r\n level: 0,\r\n subMenuNonReport: FmsSubMenu.ViewPaymenHistory,\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acPaymentHistoryView'),\r\n },\r\n // Customer Statement -----------------------------\r\n {\r\n text: 'Customer Statement',\r\n level: 0,\r\n fmsSecTask: FmsSecTask.AcctCustStatement,\r\n link: '/accounting/acCustomerStatement?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acCustomerStatement'),\r\n topLineColor: '#ff0000'\r\n },\r\n \r\n // Agent Statement -----------------------------\r\n {\r\n text: 'Agent Statement',\r\n level: 0,\r\n fmsSecTask: FmsSecTask.AcctAgentStatement,\r\n link: '/accounting/acAgentStatement?parentOp=billings',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/accounting/acAgentStatement'),\r\n },\r\n // View Journal -----------------------------\r\n {\r\n text: constants.List_Journal,\r\n level: 0,\r\n //moreMenuJobName: JobNames.OpInvoice,\r\n fmsSecTask: FmsSecTask.AcctSlipJournalList,\r\n subMenuNonReport: FmsSubMenu.SwitchJournal,\r\n topLineColor: '#84e291',\r\n },\r\n ],\r\n\r\n },\r\n //My Event\r\n {\r\n operation: constants.operations.myEvent,\r\n job:[\r\n {\r\n text: 'Master B/L',\r\n name: 'mbl',\r\n level: 0,\r\n link: '/common/joblistview/mbl/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/mbl/oceanImport'),\r\n fmsSecTask: FmsSecTask.OIMbl,\r\n },\r\n {\r\n text: 'House B/L',\r\n name: 'hbl',\r\n level: 0,\r\n link: '/common/joblistview/hbl/oceanImport',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/common/joblistview/hbl/oceanImport'),\r\n fmsSecTask: FmsSecTask.OIHbl,\r\n },\r\n ],\r\n download: [],\r\n preReport: [],\r\n report: []\r\n },\r\n ],\r\n};\r\n\r\n\r\nexport default config;\r\n","import _ from 'lodash';\r\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\n\r\nfunction customizer(objValue:any, srcValue:any) {\r\n if (_.isArray(objValue)) {\r\n return srcValue;\r\n }\r\n}\r\n\r\ninterface IndexByAny {\r\n [key: string]: any,\r\n};\r\n\r\nconst initialState:IndexByAny = {\r\n};\r\n\r\n/**\r\n * Slice for controlling Storage\r\n */\r\nconst storageSlice = createSlice({\r\n name: 'storage',\r\n initialState,\r\n reducers: {\r\n setInStorage: (state, action:PayloadAction) => {\r\n let res = _.cloneDeep(state);\r\n res = _.mergeWith(res, action.payload, customizer);\r\n return res;\r\n },\r\n removeFromStorage: (state, action:PayloadAction) => {\r\n return _.omit(state, [action.payload]);\r\n },\r\n clearStorage: () => initialState,\r\n }\r\n});\r\n\r\nexport default storageSlice.reducer;\r\n\r\nexport const { setInStorage, removeFromStorage, clearStorage } = storageSlice.actions;\r\n","import { Draft } from 'immer';\r\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport constants from '../constants';\r\nimport { stringsContainsIgnoreCase, stringsEqualIgnoreCase } from '../util';\r\nimport {nowMillisecond} from \"../dateUtils\";\r\nimport _ from 'lodash';\r\n\r\nexport interface MoveJobToTop {\r\n url: string,\r\n operation: string,\r\n};\r\n\r\nexport interface MoveJobToOperation {\r\n url: string,\r\n sourceOperation: string,\r\n destinationOperation: string,\r\n}\r\n\r\nexport interface AddJobMenuItem {\r\n url: string,\r\n label: any,\r\n parentUrl: string|null,\r\n operation: string|null,\r\n activeOperation: string|null,\r\n closeOnLogout: boolean,\r\n metadata: any|null,\r\n timestamp: string|null,\r\n noOperationSuffix?: boolean,\r\n afterScreenUrl: string|null,\r\n jobMode?:string,\r\n jobType?:string,\r\n addTypeSuffix?: boolean,\r\n};\r\n\r\nexport interface ReplaceJobMenuItem {\r\n oldUrl: string,\r\n newUrl: string,\r\n oldLabel: any,\r\n newLabel: any,\r\n metadata: any|null,\r\n noOperationSuffix?: boolean,\r\n};\r\n\r\nexport interface ReplaceParentOpJobMenuItem {\r\n url: string,\r\n};\r\n\r\nexport interface RemoveJobMenuItem {\r\n url: string,\r\n activeOperation: string|null,\r\n};\r\n\r\nexport interface ReplaceJobMenuItemMetadata {\r\n url: string,\r\n metadata: any|null,\r\n};\r\n\r\nexport interface ReplaceJobMenuItemTimestamp {\r\n url: string,\r\n timestamp: string,\r\n};\r\n\r\nexport interface JobMenuItem {\r\n url: string,\r\n label: any,\r\n parentUrl: string|null,\r\n operationName: string|null,\r\n closeOnLogout: boolean,\r\n metadata: any|null,\r\n counter: number, // For internal redraw logic\r\n timestamp?: string,\r\n noOperationSuffix: boolean,\r\n afterScreenUrl?:string|null,\r\n jobMode?:string,\r\n jobType?:string,\r\n addTypeSuffix?: boolean,\r\n};\r\n\r\nexport interface JobMenuState {\r\n [key: string]: Array,\r\n oceanImport: Array,\r\n oceanExport: Array,\r\n airImport: Array,\r\n airExport: Array,\r\n otherShipment: Array,\r\n accounting: Array,\r\n warehousing: Array,\r\n customer: Array,\r\n whReceipt: Array,\r\n standalone: Array,\r\n utility: Array,\r\n opReport: Array,\r\n billings: Array,\r\n myEvent: Array,\r\n businessIntell: Array,\r\n //reportManager: Array,\r\n}\r\n\r\n// const timestamp = now();\r\n\r\nconst initialState:JobMenuState = {\r\n home: [\r\n { url: '/home/home', label: 'Shortcut', parentUrl: null, operationName: constants.operations.home, closeOnLogout: false, metadata:null, counter: 0, timestamp:nowMillisecond(), noOperationSuffix:false }\r\n ],\r\n oceanImport: [\r\n // { url: '/oceanImport/home', label: 'Home', parentUrl: null, operationName: constants.operations.oceanImport, closeOnLogout: false, metadata:null, counter: 0, timestamp }\r\n ],\r\n oceanExport: [\r\n // { url: '/oceanExport/home', label: 'Home', parentUrl: null, operationName: constants.operations.oceanExport, closeOnLogout: false, metadata:null, counter: 0, timestamp }\r\n ],\r\n airImport: [\r\n // { url: '/airImport/home', label: 'Home', parentUrl: null, operationName: constants.operations.airImport, closeOnLogout: false, metadata:null, counter: 0, timestamp }\r\n ],\r\n airExport: [\r\n // { url: '/airExport/home', label: 'Home', parentUrl: null, operationName: constants.operations.airExport, closeOnLogout: false, metadata:null, counter: 0, timestamp }\r\n ],\r\n otherShipment: [\r\n // { url: '/otherShipment/home', label: 'Home', parentUrl: null, operationName: constants.operations.otherShipment, closeOnLogout: false, metadata:null, counter: 0, timestamp }\r\n ],\r\n accounting: [\r\n // { url: '/accounting/home', label: 'Home', parentUrl: null, operationName: constants.operations.accounting, closeOnLogout: false, metadata:null, counter: 0, timestamp }\r\n ],\r\n warehousing: [\r\n // { url: '/warehousing/home', label: 'Home', parentUrl: null, operationName: constants.operations.warehousing, closeOnLogout: false, metadata:null, counter: 0, timestamp }\r\n ],\r\n whReceipt:[],\r\n customer: [],\r\n standalone: [],\r\n utility:[],\r\n opReport: [],\r\n billings:[],\r\n myEvent:[],\r\n businessIntell:[]\r\n};\r\n\r\nfunction doMoveJobToOperation(currentState: Draft, url: string, sourceOperation: string, destinationOperation: string) {\r\n if (sourceOperation === destinationOperation) {\r\n return;\r\n }\r\n\r\n let sourceSection = currentState[sourceOperation];\r\n let destinationSection = currentState[destinationOperation];\r\n\r\n const moveItemIndex = sourceSection.findIndex(x => x.url === url);\r\n if (moveItemIndex >= 0) {\r\n const moveItems = sourceSection.splice(moveItemIndex, 1);\r\n moveItems[0].operationName = constants.operations[destinationOperation];\r\n destinationSection.push(moveItems[0]);\r\n }\r\n}\r\n\r\nfunction moveScreenToTopForSection(section:Draft>, url:string) {\r\n if (section.length <= 0 || section[section.length - 1].url === url) {\r\n // Nothing to do. Either there is no screens on stack or screen with url is already on top\r\n return;\r\n }\r\n\r\n const currentIndex = section.findIndex(x => x.url === url);\r\n if (currentIndex < 0) {\r\n return;\r\n }\r\n\r\n const moveItem = section.splice(currentIndex, 1)[0];\r\n\r\n section.push(moveItem);\r\n}\r\n\r\nfunction doAddJobMenuItemToSectionIfNotExists(section:Draft>, newElement:JobMenuItem, afterScreenUrl: string|null) {\r\n const existingIndex = section.findIndex(x => stringsEqualIgnoreCase(x.url, newElement.url));\r\n\r\n if (existingIndex < 0) {\r\n if (!!afterScreenUrl) {\r\n // const afterScreen = section.find(x => x.url === afterScreenUrl);\r\n // const lastTimestamp = section[section.length - 1].timestamp;\r\n // if (afterScreen && lastTimestamp) {\r\n // newElement.timestamp = addMilliseconds(lastTimestamp, 1000);\r\n // }\r\n // if (afterScreen && afterScreen.timestamp) {\r\n // newElement.timestamp = addMilliseconds(afterScreen.timestamp, 1000);\r\n // }\r\n }\r\n section.push(newElement);\r\n } else {\r\n section[existingIndex].counter = section[existingIndex].counter + 1;\r\n }\r\n}\r\n\r\nfunction doAddJobMenuItemFromAction(currentState:Draft, actionPayload:AddJobMenuItem) {\r\n const newElement:JobMenuItem = {\r\n url: actionPayload.url,\r\n label: actionPayload.label,\r\n parentUrl: actionPayload.parentUrl,\r\n operationName: actionPayload.operation ? constants.operations[actionPayload.operation] : '',\r\n closeOnLogout: actionPayload.closeOnLogout,\r\n metadata: actionPayload.metadata,\r\n counter: 0,\r\n timestamp: nowMillisecond(),\r\n noOperationSuffix: !!actionPayload.noOperationSuffix,\r\n jobMode:actionPayload.jobMode,\r\n afterScreenUrl:actionPayload.afterScreenUrl,\r\n jobType:actionPayload.jobType,\r\n addTypeSuffix: !!actionPayload.addTypeSuffix,\r\n };\r\n\r\n if (!!actionPayload.operation) {\r\n doAddJobMenuItemToSectionIfNotExists(currentState[actionPayload.operation], newElement, actionPayload.afterScreenUrl);\r\n } else {\r\n doAddJobMenuItemToSectionIfNotExists(currentState.oceanImport, newElement, actionPayload.afterScreenUrl);\r\n doAddJobMenuItemToSectionIfNotExists(currentState.oceanExport, newElement, actionPayload.afterScreenUrl);\r\n doAddJobMenuItemToSectionIfNotExists(currentState.airImport, newElement, actionPayload.afterScreenUrl);\r\n doAddJobMenuItemToSectionIfNotExists(currentState.airExport, newElement, actionPayload.afterScreenUrl);\r\n doAddJobMenuItemToSectionIfNotExists(currentState.otherShipment, newElement, actionPayload.afterScreenUrl);\r\n doAddJobMenuItemToSectionIfNotExists(currentState.accounting, newElement, actionPayload.afterScreenUrl);\r\n doAddJobMenuItemToSectionIfNotExists(currentState.customer, newElement, actionPayload.afterScreenUrl);\r\n doAddJobMenuItemToSectionIfNotExists(currentState.warehousing, newElement, actionPayload.afterScreenUrl);\r\n doAddJobMenuItemToSectionIfNotExists(currentState.whReceipt, newElement, actionPayload.afterScreenUrl);\r\n doAddJobMenuItemToSectionIfNotExists(currentState.utility, newElement, actionPayload.afterScreenUrl);\r\n doAddJobMenuItemToSectionIfNotExists(currentState.opReport, newElement, actionPayload.afterScreenUrl);\r\n doAddJobMenuItemToSectionIfNotExists(currentState.billings, newElement, actionPayload.afterScreenUrl);\r\n doAddJobMenuItemToSectionIfNotExists(currentState.myEvent, newElement, actionPayload.afterScreenUrl);\r\n doAddJobMenuItemToSectionIfNotExists(currentState.businessIntell, newElement, actionPayload.afterScreenUrl);\r\n }\r\n}\r\n\r\nfunction removeJobItemFromSection(section:Draft>, urlToRemove:string) {\r\n const deleteIndex = section.findIndex(x => x.url === urlToRemove);\r\n if (deleteIndex < 0) {\r\n return section;\r\n }\r\n\r\n // Build dependency tree of urls to delete\r\n const urlsToDelete:Array = [];\r\n let query = [urlToRemove];\r\n\r\n while (query && query.length > 0) {\r\n urlsToDelete.unshift(...query);\r\n // eslint-disable-next-line no-loop-func\r\n query = section.filter(s => query.some(q => stringsEqualIgnoreCase(q, s.parentUrl))).map(x => x.url);\r\n }\r\n\r\n const deleteIndices = Array.from(new Set( // to remove duplicates\r\n section.reduce((a, e, i) => {\r\n if (urlsToDelete.some(d => stringsContainsIgnoreCase(d, e.url))) {\r\n a.push(i);\r\n }\r\n return a;\r\n }, [] as number[])\r\n ));\r\n deleteIndices.sort((a, b) => b-a); // Sort descending\r\n\r\n deleteIndices.forEach(i => section.splice(i, 1));\r\n}\r\n\r\nfunction doReplaceJobMenuItemFromAction(currentState:Draft, actionPayload:ReplaceJobMenuItem) {\r\n const indexInOi = currentState.oceanImport.findIndex(x => x.url === actionPayload.oldUrl);\r\n if (indexInOi >= 0) {\r\n currentState.oceanImport[indexInOi].url = actionPayload.newUrl;\r\n currentState.oceanImport[indexInOi].label = actionPayload.newLabel;\r\n currentState.oceanImport[indexInOi].metadata = actionPayload.metadata;\r\n currentState.oceanImport[indexInOi].noOperationSuffix = !!actionPayload.noOperationSuffix;\r\n }\r\n\r\n const indexInOe = currentState.oceanExport.findIndex(x => x.url === actionPayload.oldUrl);\r\n if (indexInOe >= 0) {\r\n currentState.oceanExport[indexInOe].url = actionPayload.newUrl;\r\n currentState.oceanExport[indexInOe].label = actionPayload.newLabel;\r\n currentState.oceanExport[indexInOe].metadata = actionPayload.metadata;\r\n currentState.oceanExport[indexInOe].noOperationSuffix = !!actionPayload.noOperationSuffix;\r\n }\r\n\r\n const indexInAi = currentState.airImport.findIndex(x => x.url === actionPayload.oldUrl);\r\n if (indexInAi >= 0) {\r\n currentState.airImport[indexInAi].url = actionPayload.newUrl;\r\n currentState.airImport[indexInAi].label = actionPayload.newLabel;\r\n currentState.airImport[indexInAi].metadata = actionPayload.metadata;\r\n currentState.airImport[indexInAi].noOperationSuffix = !!actionPayload.noOperationSuffix;\r\n }\r\n\r\n const indexInAe = currentState.airExport.findIndex(x => x.url === actionPayload.oldUrl);\r\n if (indexInAe >= 0) {\r\n currentState.airExport[indexInAe].url = actionPayload.newUrl;\r\n currentState.airExport[indexInAe].label = actionPayload.newLabel;\r\n currentState.airExport[indexInAe].metadata = actionPayload.metadata;\r\n currentState.airExport[indexInAe].noOperationSuffix = !!actionPayload.noOperationSuffix;\r\n }\r\n\r\n const indexInOs = currentState.otherShipment.findIndex(x => x.url === actionPayload.oldUrl);\r\n if (indexInOs >= 0) {\r\n currentState.otherShipment[indexInOs].url = actionPayload.newUrl;\r\n currentState.otherShipment[indexInOs].label = actionPayload.newLabel;\r\n currentState.otherShipment[indexInOs].metadata = actionPayload.metadata;\r\n currentState.otherShipment[indexInOs].noOperationSuffix = !!actionPayload.noOperationSuffix;\r\n }\r\n\r\n const indexInAc = currentState.accounting.findIndex(x => x.url === actionPayload.oldUrl);\r\n if (indexInAc >= 0) {\r\n currentState.accounting[indexInAc].url = actionPayload.newUrl;\r\n currentState.accounting[indexInAc].label = actionPayload.newLabel;\r\n currentState.accounting[indexInAc].metadata = actionPayload.metadata;\r\n currentState.accounting[indexInAc].noOperationSuffix = !!actionPayload.noOperationSuffix;\r\n }\r\n\r\n const indexInWa = currentState.warehousing.findIndex(x => x.url === actionPayload.oldUrl);\r\n if (indexInWa >= 0) {\r\n currentState.warehousing[indexInWa].url = actionPayload.newUrl;\r\n currentState.warehousing[indexInWa].label = actionPayload.newLabel;\r\n currentState.warehousing[indexInWa].metadata = actionPayload.metadata;\r\n currentState.warehousing[indexInWa].noOperationSuffix = !!actionPayload.noOperationSuffix;\r\n }\r\n\r\n const indexInWhr = currentState.whReceipt.findIndex(x => x.url === actionPayload.oldUrl);\r\n if (indexInWhr >= 0) {\r\n currentState.whReceipt[indexInWhr].url = actionPayload.newUrl;\r\n currentState.whReceipt[indexInWhr].label = actionPayload.newLabel;\r\n currentState.whReceipt[indexInWhr].metadata = actionPayload.metadata;\r\n currentState.whReceipt[indexInWhr].noOperationSuffix = !!actionPayload.noOperationSuffix;\r\n }\r\n\r\n const indexInCs = currentState.customer.findIndex(x => x.url === actionPayload.oldUrl);\r\n if (indexInCs >= 0) {\r\n currentState.customer[indexInCs].url = actionPayload.newUrl;\r\n currentState.customer[indexInCs].label = actionPayload.newLabel;\r\n currentState.customer[indexInCs].metadata = actionPayload.metadata;\r\n currentState.customer[indexInCs].noOperationSuffix = !!actionPayload.noOperationSuffix;\r\n }\r\n\r\n const indexInUtil = currentState.utility.findIndex(x => x.url === actionPayload.oldUrl);\r\n if (indexInUtil >= 0) {\r\n currentState.utility[indexInUtil].url = actionPayload.newUrl;\r\n currentState.utility[indexInUtil].label = actionPayload.newLabel;\r\n currentState.utility[indexInUtil].metadata = actionPayload.metadata;\r\n currentState.utility[indexInUtil].noOperationSuffix = !!actionPayload.noOperationSuffix;\r\n }\r\n\r\n const indexInBillings = currentState.billings.findIndex(x => x.url === actionPayload.oldUrl);\r\n if (indexInBillings >= 0) {\r\n currentState.billings[indexInBillings].url = actionPayload.newUrl;\r\n currentState.billings[indexInBillings].label = actionPayload.newLabel;\r\n currentState.billings[indexInBillings].metadata = actionPayload.metadata;\r\n currentState.billings[indexInBillings].noOperationSuffix = !!actionPayload.noOperationSuffix;\r\n }\r\n\r\n const indexInMyEvent = currentState.myEvent.findIndex(x => x.url === actionPayload.oldUrl);\r\n if (indexInMyEvent >= 0) {\r\n currentState.myEvent[indexInMyEvent].url = actionPayload.newUrl;\r\n currentState.myEvent[indexInMyEvent].label = actionPayload.newLabel;\r\n currentState.myEvent[indexInMyEvent].metadata = actionPayload.metadata;\r\n currentState.myEvent[indexInMyEvent].noOperationSuffix = !!actionPayload.noOperationSuffix;\r\n }\r\n\r\n const indexInBIntell = currentState.businessIntell.findIndex(x => x.url === actionPayload.oldUrl);\r\n if (indexInBIntell >= 0) {\r\n currentState.businessIntell[indexInBIntell].url = actionPayload.newUrl;\r\n currentState.businessIntell[indexInBIntell].label = actionPayload.newLabel;\r\n currentState.businessIntell[indexInBIntell].metadata = actionPayload.metadata;\r\n currentState.businessIntell[indexInBIntell].noOperationSuffix = !!actionPayload.noOperationSuffix;\r\n }\r\n}\r\n\r\nfunction doReplaceJobMenuItemTimestamp(currentState:Draft, actionPayload:ReplaceJobMenuItemTimestamp) {\r\n const indexInOi = currentState.oceanImport.findIndex(x => x.url === actionPayload.url);\r\n if (indexInOi >= 0) {\r\n currentState.oceanImport[indexInOi].timestamp = actionPayload.timestamp;\r\n }\r\n\r\n const indexInOe = currentState.oceanExport.findIndex(x => x.url === actionPayload.url);\r\n if (indexInOe >= 0) {\r\n currentState.oceanExport[indexInOe].timestamp = actionPayload.timestamp;\r\n }\r\n\r\n const indexInAi = currentState.airImport.findIndex(x => x.url === actionPayload.url);\r\n if (indexInAi >= 0) {\r\n currentState.airImport[indexInAi].timestamp = actionPayload.timestamp;\r\n }\r\n\r\n const indexInAe = currentState.airExport.findIndex(x => x.url === actionPayload.url);\r\n if (indexInAe >= 0) {\r\n currentState.airExport[indexInAe].timestamp = actionPayload.timestamp;\r\n }\r\n\r\n const indexInOs = currentState.otherShipment.findIndex(x => x.url === actionPayload.url);\r\n if (indexInOs >= 0) {\r\n currentState.otherShipment[indexInOs].timestamp = actionPayload.timestamp;\r\n }\r\n\r\n const indexInAc = currentState.accounting.findIndex(x => x.url === actionPayload.url);\r\n if (indexInAc >= 0) {\r\n currentState.accounting[indexInAc].timestamp = actionPayload.timestamp;\r\n }\r\n\r\n const indexInWa = currentState.warehousing.findIndex(x => x.url === actionPayload.url);\r\n if (indexInWa >= 0) {\r\n currentState.warehousing[indexInWa].timestamp = actionPayload.timestamp;\r\n }\r\n\r\n const indexInWhr = currentState.whReceipt.findIndex(x => x.url === actionPayload.url);\r\n if (indexInWhr >= 0) {\r\n currentState.whReceipt[indexInWhr].timestamp = actionPayload.timestamp;\r\n }\r\n\r\n const indexInCs = currentState.customer.findIndex(x => x.url === actionPayload.url);\r\n if (indexInCs >= 0) {\r\n currentState.customer[indexInCs].timestamp = actionPayload.timestamp;\r\n }\r\n \r\n const indexInUtil = currentState.utility.findIndex(x => x.url === actionPayload.url);\r\n if (indexInUtil >= 0) {\r\n currentState.utility[indexInUtil].timestamp = actionPayload.timestamp;\r\n }\r\n\r\n const indexInBillings = currentState.billings.findIndex(x => x.url === actionPayload.url);\r\n if (indexInBillings >= 0) {\r\n currentState.billings[indexInBillings].timestamp = actionPayload.timestamp;\r\n }\r\n\r\n const indexInMyEvent = currentState.myEvent.findIndex(x => x.url === actionPayload.url);\r\n if (indexInMyEvent >= 0) {\r\n currentState.myEvent[indexInMyEvent].timestamp = actionPayload.timestamp;\r\n }\r\n\r\n \r\n const indexInBusinessIntel = currentState.businessIntell.findIndex(x => x.url === actionPayload.url);\r\n if (indexInBusinessIntel >= 0) {\r\n currentState.businessIntell[indexInBusinessIntel].timestamp = actionPayload.timestamp;\r\n }\r\n}\r\n\r\nfunction doReplaceJobMenuItemMetadata(currentState:Draft, actionPayload:ReplaceJobMenuItemMetadata) {\r\n const indexInOi = currentState.oceanImport.findIndex(x => x.url === actionPayload.url);\r\n if (indexInOi >= 0) {\r\n currentState.oceanImport[indexInOi].metadata = actionPayload.metadata;\r\n }\r\n\r\n const indexInOe = currentState.oceanExport.findIndex(x => x.url === actionPayload.url);\r\n if (indexInOe >= 0) {\r\n currentState.oceanExport[indexInOe].metadata = actionPayload.metadata;\r\n }\r\n\r\n const indexInAi = currentState.airImport.findIndex(x => x.url === actionPayload.url);\r\n if (indexInAi >= 0) {\r\n currentState.airImport[indexInAi].metadata = actionPayload.metadata;\r\n }\r\n\r\n const indexInAe = currentState.airExport.findIndex(x => x.url === actionPayload.url);\r\n if (indexInAe >= 0) {\r\n currentState.airExport[indexInAe].metadata = actionPayload.metadata;\r\n }\r\n\r\n const indexInOs = currentState.otherShipment.findIndex(x => x.url === actionPayload.url);\r\n if (indexInOs >= 0) {\r\n currentState.otherShipment[indexInOs].metadata = actionPayload.metadata;\r\n }\r\n\r\n const indexInAc = currentState.accounting.findIndex(x => x.url === actionPayload.url);\r\n if (indexInAc >= 0) {\r\n currentState.accounting[indexInAc].metadata = actionPayload.metadata;\r\n }\r\n\r\n const indexInWa = currentState.warehousing.findIndex(x => x.url === actionPayload.url);\r\n if (indexInWa >= 0) {\r\n currentState.warehousing[indexInWa].metadata = actionPayload.metadata;\r\n }\r\n\r\n const indexInWhr = currentState.whReceipt.findIndex(x => x.url === actionPayload.url);\r\n if (indexInWhr >= 0) {\r\n currentState.whReceipt[indexInWhr].metadata = actionPayload.metadata;\r\n }\r\n\r\n const indexInCs = currentState.customer.findIndex(x => x.url === actionPayload.url);\r\n if (indexInCs >= 0) {\r\n currentState.customer[indexInCs].metadata = actionPayload.metadata;\r\n }\r\n \r\n const indexInUtil = currentState.utility.findIndex(x => x.url === actionPayload.url);\r\n if (indexInUtil >= 0) {\r\n currentState.utility[indexInUtil].metadata = actionPayload.metadata;\r\n }\r\n\r\n const indexInBillings = currentState.billings.findIndex(x => x.url === actionPayload.url);\r\n if (indexInBillings >= 0) {\r\n currentState.billings[indexInBillings].metadata = actionPayload.metadata;\r\n }\r\n\r\n const indexInMyEvent = currentState.myEvent.findIndex(x => x.url === actionPayload.url);\r\n if (indexInMyEvent >= 0) {\r\n currentState.myEvent[indexInMyEvent].metadata = actionPayload.metadata;\r\n }\r\n\r\n \r\n const indexInBusinessIntel = currentState.businessIntell.findIndex(x => x.url === actionPayload.url);\r\n if (indexInBusinessIntel >= 0) {\r\n currentState.businessIntell[indexInBusinessIntel].metadata = actionPayload.metadata;\r\n }\r\n}\r\n\r\nfunction doReplaceJobMenuParentOp(currentState:Draft, actionPayload:ReplaceParentOpJobMenuItem) {\r\n const orgUrl = actionPayload.url;\r\n let findUrl = orgUrl.indexOf('parentOp') > -1 ? orgUrl.slice(0,orgUrl.indexOf('parentOp')-1) : orgUrl;\r\n\r\n // for quotation\r\n const indexInOe = currentState.oceanExport.findIndex(x => { return x.url.startsWith(findUrl); } );\r\n if (indexInOe >= 0) {\r\n currentState.oceanExport[indexInOe].url = orgUrl;\r\n }\r\n\r\n // for quotation\r\n const indexInAe = currentState.airExport.findIndex(x => { return x.url.startsWith(findUrl); } );\r\n if (indexInAe >= 0) {\r\n currentState.airExport[indexInAe].url = orgUrl;\r\n }\r\n\r\n // for inv, bill, crdb\r\n const indexInAc = currentState.accounting.findIndex(x => { return x.url.startsWith(findUrl); } );\r\n if (indexInAc >= 0) {\r\n currentState.accounting[indexInAc].url = orgUrl;\r\n }\r\n}\r\n\r\n// Implementation note:\r\n// The common operations (no operation parameter is provided)\r\n// Is added to every section (for each operation). Later when it is removed, it is also removed\r\n// from all operations. That way the order of screens will be consistent for common operations while\r\n// switching between operations in operation menu.\r\n// (Dario)\r\n\r\n/**\r\n * Slice for controlling Job Menu\r\n */\r\nconst jobMenuSlice = createSlice({\r\n name: 'jobMenu',\r\n initialState,\r\n reducers: {\r\n clearJobMenu: () => _.cloneDeep(initialState),\r\n addJobMenuItem: (state, action: PayloadAction) => {\r\n doAddJobMenuItemFromAction(state, action.payload);\r\n },\r\n replaceJobMenuItem: (state, action:PayloadAction) => {\r\n doReplaceJobMenuItemFromAction(state, action.payload);\r\n },\r\n removeJobMenuItem: (state, action: PayloadAction) => {\r\n removeJobItemFromSection(state.oceanImport, action.payload.url);\r\n removeJobItemFromSection(state.oceanExport, action.payload.url);\r\n removeJobItemFromSection(state.airImport, action.payload.url);\r\n removeJobItemFromSection(state.airExport, action.payload.url);\r\n removeJobItemFromSection(state.otherShipment, action.payload.url);\r\n removeJobItemFromSection(state.accounting, action.payload.url);\r\n removeJobItemFromSection(state.warehousing, action.payload.url);\r\n removeJobItemFromSection(state.opReport, action.payload.url);\r\n removeJobItemFromSection(state.whReceipt, action.payload.url);\r\n removeJobItemFromSection(state.customer, action.payload.url);\r\n removeJobItemFromSection(state.utility, action.payload.url);\r\n removeJobItemFromSection(state.standalone, action.payload.url);\r\n removeJobItemFromSection(state.billings, action.payload.url);\r\n removeJobItemFromSection(state.myEvent, action.payload.url);\r\n removeJobItemFromSection(state.businessIntell, action.payload.url);\r\n },\r\n replaceJobMenuMetadata: (state, action:PayloadAction) => {\r\n doReplaceJobMenuItemMetadata(state, action.payload);\r\n },\r\n replaceJobMenuTimestamp: (state, action:PayloadAction) => {\r\n doReplaceJobMenuItemTimestamp(state, action.payload);\r\n },\r\n moveJobMenuToTop: (state, action: PayloadAction) => {\r\n moveScreenToTopForSection(state[action.payload.operation], action.payload.url);\r\n },\r\n moveJobToOperation: (state, action: PayloadAction) => {\r\n doMoveJobToOperation(state, action.payload.url, action.payload.sourceOperation, action.payload.destinationOperation);\r\n },\r\n replaceJobMenuParentOp: (state, action:PayloadAction) => {\r\n doReplaceJobMenuParentOp(state, action.payload);\r\n },\r\n }\r\n});\r\n\r\nexport default jobMenuSlice.reducer;\r\n\r\nexport const {\r\n clearJobMenu,\r\n addJobMenuItem,\r\n replaceJobMenuItem,\r\n removeJobMenuItem,\r\n replaceJobMenuMetadata,\r\n replaceJobMenuTimestamp,\r\n moveJobMenuToTop,\r\n moveJobToOperation,\r\n replaceJobMenuParentOp,\r\n} = jobMenuSlice.actions;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport { JobNames } from '../../framework.core/JobNames';\r\nimport _ from 'lodash';\r\n\r\nexport class InvoiceListItem extends SearchModelBase {\r\n id: number = 0;\r\n invoiceNo: string = '';\r\n invoiceToName: string = '';\r\n invoiceToFName: string = '';\r\n invoiceDate: string | null = null;\r\n fromInvoiceDate: string | null = null;\r\n toInvoiceDate: string | null = null;\r\n dueDate: string | null = null;\r\n fromDueDate: string | null = null;\r\n toDueDate: string | null = null;\r\n salesperson: string = '';\r\n currency: string = '';\r\n overDue: number|null = null;\r\n fromOverDue: number|null = null;\r\n toOverDue: number|null = null;\r\n amount: number|null = null;\r\n fromAmount: number|null = null;\r\n toAmount: number|null = null;\r\n vatAmount: number|null = null;\r\n fromVatAmount: number|null = null;\r\n toVatAmount: number|null = null;\r\n paidAmount: number|null = null;\r\n fromPaidAmount: number|null = null;\r\n toPaidAmount: number|null = null;\r\n cAmount: number|null = null;\r\n fromCAmount: number|null = null;\r\n toCAmount: number|null = null;\r\n dutyAmount: number|null = null;\r\n fromDutyAmount: number|null = null;\r\n toDutyAmount: number|null = null;\r\n faxSentDate: string | null = null;\r\n fromFaxSentDate: string | null = null;\r\n toFaxSentDate: string | null = null;\r\n emailSentDate: string | null = null;\r\n fromEmailSentDate: string | null = null;\r\n toEmailSentDate: string | null = null;\r\n printedDate: string | null = null;\r\n fromPrintedDate: string | null = null;\r\n toPrintedDate: string | null = null;\r\n branch: string = '';\r\n createdBy: string = '';\r\n createdAt: string | null = null;\r\n fromCreatedAt: string | null = null;\r\n toCreatedAt: string | null = null;\r\n balance: number|null = null;\r\n fromBalance: number|null = null;\r\n toBalance: number|null = null;\r\n checkNo: string = '';\r\n paidDate: string | null = null;\r\n fromPaidDate: string | null = null;\r\n toPaidDate: string | null = null;\r\n lastClearDate: string | null = null;\r\n fromLastClearDate: string | null = null;\r\n toLastClearDate: string | null = null;\r\n tempAmount: number = 0;\r\n tempPaidAmount: number = 0;\r\n tempBalance: number = 0;\r\n jobType: string = '';\r\n blNo: string = '';\r\n referenceNo: string = '';\r\n customerRefNo: string = '';\r\n otherRefNo: string = '';\r\n shipToName: string = '';\r\n invoiceUserMemo: string = '';\r\n foreignDest: string = '';\r\n remarks: string = '';\r\n description: string = '';\r\n invoiceTo: number = 0;\r\n tbName: string = '';\r\n tbId: number = 0;\r\n u2ID: string = '';\r\n u2Date: string | null = null;\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n postDate: string | null = null;\r\n draftPaid: boolean = false;\r\n confirmed: boolean = false;\r\n\r\n // cloud\r\n /**\r\n * PC for Period Close, '' for not period close\r\n */\r\n status: string = '';\r\n recognized: string = '';\r\n priod: string = '';\r\n draft: boolean = false;\r\n mblNo: string = '';\r\n hblNo: string = '';\r\n\r\n private static InvoiceExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'R', width: 35, dataIndex: 'recognized', noNullOrEmptySearch: true, hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 2, text: 'Draft', width: 30, dataIndex: 'draft', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true, hiddenInColumnSetup: true}),\r\n // XCol.Create({ col: 3, text: 'V', width: 35, dataIndex: 'void', type: XCol.XCellType.StrBool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 3, text: 'Date', width: 75, dataIndex: 'invoiceDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 4, text: 'Invoice #', width: 100, dataIndex: 'invoiceNo'}),\r\n XCol.Create({ col: 5, text: 'BR', width: 40, dataIndex: 'branch', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 6, text: 'Invoice to', width: 150, dataIndex: 'invoiceToName', defaultColumnFocus : true}),\r\n XCol.Create({ col: 7, text: 'Cust. Ref. #', width: 100, dataIndex: 'customerRefNo', visible: false}),\r\n XCol.Create({ col: 8, text: 'Due Date', width: 75, dataIndex: 'dueDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 9, text: 'Overdue', width: 50, dataIndex: 'overDue', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 10, text: 'CUR', width: 40, dataIndex: 'currency', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 11, text: 'Amount', width: 100, dataIndex: 'amount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 12, text: 'VAT', width: 100, dataIndex: 'vatAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 13, text: 'Paid', width: 100, dataIndex: 'paidAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 14, text: 'Balance', width: 100, dataIndex: 'balance', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 15, text: 'Confirmed', width: 60, dataIndex: 'confirmed', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 16, text: 'C. Amount', width: 100, dataIndex: 'cAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 17, text: 'Duty Amount', width: 100, dataIndex: 'dutyAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 18, text: 'Draft Paid', width: 60, dataIndex: 'draftPaid', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: false}),\r\n XCol.Create({ col: 19, text: 'Check #', width: 100, dataIndex: 'checkNo'}),\r\n XCol.Create({ col: 20, text: 'Paid Date', width: 75, dataIndex: 'paidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 21, text: 'Clear Date', width: 75, dataIndex: 'lastClearDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 22, text: 'Fax Date', width: 75, dataIndex: 'faxSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 23, text: 'Email Date', width: 75, dataIndex: 'emailSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 24, text: 'Print Date', width: 75, dataIndex: 'printedDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 25, text: 'Type', width: 40, dataIndex: 'jobType', align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 26, text: 'Ref. #', width: 100, dataIndex: 'referenceNo'}),\r\n XCol.Create({ col: 27, text: 'MBL/MAWB #', width: 100, dataIndex: 'mblNo'}),\r\n XCol.Create({ col: 28, text: 'HBL/HAWB #', width: 100, dataIndex: 'hblNo'}),\r\n XCol.Create({ col: 29, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 30, text: 'Create by', width: 80, dataIndex: 'createdBy'}),\r\n XCol.Create({ col: 31, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 32, text: 'Update by', width: 80, dataIndex: 'u2ID'}),\r\n ];\r\n\r\n \r\n private static GInvoiceExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Draft', width: 30, dataIndex: 'draft', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true, hiddenInColumnSetup: true}),\r\n // XCol.Create({ col: 2, text: 'Void', width: 35, dataIndex: 'void', type: XCol.XCellType.StrBool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 2, text: 'Date', width: 75, dataIndex: 'invoiceDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 3, text: 'G. Invoice #', width: 100, dataIndex: 'invoiceNo'}),\r\n XCol.Create({ col: 4, text: 'BR', width: 40, dataIndex: 'branch', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 5, text: 'Invoice to', width: 150, dataIndex: 'invoiceToName', defaultColumnFocus : true}),\r\n XCol.Create({ col: 6, text: 'Cust. Ref. #', width: 100, dataIndex: 'customerRefNo', visible: false}),\r\n XCol.Create({ col: 7, text: 'Due Date', width: 75, dataIndex: 'dueDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 8, text: 'Overdue', width: 50, dataIndex: 'overDue', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 9, text: 'CUR', width: 40, dataIndex: 'currency', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 10, text: 'Amount', width: 100, dataIndex: 'amount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 11, text: 'VAT', width: 100, dataIndex: 'vatAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 12, text: 'Paid', width: 100, dataIndex: 'paidAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 13, text: 'Balance', width: 100, dataIndex: 'balance', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 14, text: 'Confirmed', width: 60, dataIndex: 'confirmed', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 15, text: 'C. Amount', width: 100, dataIndex: 'cAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 16, text: 'Draft Paid', width: 60, dataIndex: 'draftPaid', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: false}),\r\n XCol.Create({ col: 17, text: 'Check #', width: 100, dataIndex: 'checkNo'}),\r\n XCol.Create({ col: 18, text: 'Paid Date', width: 75, dataIndex: 'paidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 19, text: 'Clear Date', width: 75, dataIndex: 'lastClearDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 20, text: 'Invoice Memo', width: 150, dataIndex: 'remarks'}),\r\n XCol.Create({ col: 21, text: 'Description', width: 150, dataIndex: 'description'}),\r\n XCol.Create({ col: 22, text: 'Fax Date', width: 75, dataIndex: 'faxSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 23, text: 'Email Date', width: 75, dataIndex: 'emailSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 24, text: 'Print Date', width: 75, dataIndex: 'printedDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 25, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 26, text: 'Create by', width: 80, dataIndex: 'createdBy'}),\r\n XCol.Create({ col: 27, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 28, text: 'Update by', width: 80, dataIndex: 'u2ID'}),\r\n ];\r\n\r\n\r\n private static WHStorageInvoiceExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n // XCol.Create({ col: 1, text: 'Void', width: 35, dataIndex: 'void', type: XCol.XCellType.StrBool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 1, text: 'Date', width: 75, dataIndex: 'invoiceDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 2, text: 'Invoice #', width: 100, dataIndex: 'invoiceNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 3, text: 'Invoice To', width: 150, dataIndex: 'invoiceToName'}),\r\n XCol.Create({ col: 4, text: 'Cust. Ref. #', width: 100, dataIndex: 'customerRefNo'}),\r\n XCol.Create({ col: 5, text: 'Due Date', width: 75, dataIndex: 'dueDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 6, text: 'Overdue', width: 50, dataIndex: 'overDue', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 7, text: 'CUR', width: 40, dataIndex: 'currency', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 8, text: 'Amount', width: 100, dataIndex: 'amount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 9, text: 'VAT', width: 100, dataIndex: 'vatAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 10, text: 'Paid', width: 100, dataIndex: 'paidAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 11, text: 'Balance', width: 100, dataIndex: 'balance', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 12, text: 'Confirmed', width: 60, dataIndex: 'confirmed', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 13, text: 'Draft Paid', width: 60, dataIndex: 'draftPaid', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: false}),\r\n XCol.Create({ col: 14, text: 'Check #', width: 100, dataIndex: 'checkNo'}),\r\n XCol.Create({ col: 15, text: 'Paid Date', width: 75, dataIndex: 'paidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 16, text: 'Clear Date', width: 75, dataIndex: 'lastClearDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 17, text: 'Fax Date', width: 75, dataIndex: 'faxSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 18, text: 'Email Date', width: 75, dataIndex: 'emailSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 19, text: 'Print Date', width: 75, dataIndex: 'printedDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 20, text: 'Storage Invoice Memo', width: 200, dataIndex: 'remarks'}),\r\n XCol.Create({ col: 21, text: 'Item Description', width: 200, dataIndex: 'description'}),\r\n XCol.Create({ col: 22, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 23, text: 'Create by', width: 80, dataIndex: 'createdBy'}),\r\n XCol.Create({ col: 24, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 25, text: 'Update by', width: 80, dataIndex: 'u2ID'}),\r\n ];\r\n\r\n private static WHInvoiceExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Draft', width: 30, dataIndex: 'draft', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true, hiddenInColumnSetup: true}),\r\n // XCol.Create({ col: 3, text: 'Void', width: 35, dataIndex: 'void', type: XCol.XCellType.StrBool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 2, text: 'P', width: 35, dataIndex: 'period', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 3, text: 'Date', width: 75, dataIndex: 'invoiceDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 4, text: 'Invoice #', width: 100, dataIndex: 'invoiceNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 5, text: 'Invoice To', width: 150, dataIndex: 'invoiceToName'}),\r\n XCol.Create({ col: 6, text: 'Cust Ref. #', width: 100, dataIndex: 'customerRefNo'}),\r\n XCol.Create({ col: 7, text: 'Due Date', width: 75, dataIndex: 'dueDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 8, text: 'Overdue', width: 50, dataIndex: 'overDue', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 9, text: 'CUR', width: 40, dataIndex: 'currency', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 10, text: 'Amount', width: 100, dataIndex: 'amount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 11, text: 'Paid', width: 100, dataIndex: 'paidAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 12, text: 'Balance', width: 100, dataIndex: 'balance', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 13, text: 'Confirmed', width: 60, dataIndex: 'confirmed', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 14, text: 'Draft Paid', width: 60, dataIndex: 'draftPaid', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: false}),\r\n XCol.Create({ col: 15, text: 'Check #', width: 100, dataIndex: 'checkNo'}),\r\n XCol.Create({ col: 16, text: 'Paid Date', width: 75, dataIndex: 'paidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 17, text: 'Clear Date', width: 75, dataIndex: 'lastClearDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 18, text: 'Fax Date', width: 75, dataIndex: 'faxSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 19, text: 'Email Date', width: 75, dataIndex: 'emailSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 20, text: 'Print Date', width: 75, dataIndex: 'printedDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 21, text: 'Type', width: 60, dataIndex: 'jobType', align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 22, text: 'Receiving/Shipping ID', width: 140, dataIndex: 'referenceNo', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 23, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 24, text: 'Create by', width: 80, dataIndex: 'createdBy'}),\r\n XCol.Create({ col: 25, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 26, text: 'Update by', width: 80, dataIndex: 'u2ID'}),\r\n ];\r\n\r\n\r\n public static getExportCollection(jobName: JobNames, useBranch: boolean, useVat: boolean): XCol.XExportColumn[] {\r\n let returnCloumns;\r\n switch (jobName) {\r\n case JobNames.Invoice:\r\n returnCloumns = _.cloneDeep(this.InvoiceExportCollection);\r\n break;\r\n case JobNames.GInvo:\r\n returnCloumns = _.cloneDeep(this.GInvoiceExportCollection);\r\n break;\r\n case JobNames.WHStorageInv:\r\n returnCloumns = _.cloneDeep(this.WHStorageInvoiceExportCollection);\r\n break;\r\n case JobNames.WHInvoice:\r\n returnCloumns = _.cloneDeep(this.WHInvoiceExportCollection);\r\n break;\r\n default:\r\n returnCloumns = _.cloneDeep(this.InvoiceExportCollection);\r\n break;\r\n }\r\n if (!useVat) returnCloumns = returnCloumns.filter(x => x.dataIndex !== 'vatAmount');\r\n if (!useBranch) returnCloumns = returnCloumns.filter(x => x.dataIndex !== 'branch');\r\n \r\n return returnCloumns;\r\n };\r\n\r\n public static OrderBy = { orderBy: InvoiceListItem.prototype.postDate, orderByAscending: false };\r\n\r\n public static formatData(data: InvoiceListItem[]) {\r\n return data.map((d: InvoiceListItem) => ({\r\n ...d,\r\n status: d.draft ? '' : d.status,\r\n u1ID: d.u2ID\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n postDate: {from: 'fromPostDate', to: 'toPostDate'},\r\n invoiceDate: {from: 'fromInvoiceDate', to: 'toInvoiceDate'},\r\n dueDate: {from: 'fromDueDate', to: 'toDueDate'},\r\n overDue: {from: 'fromOverDue', to: 'toOverDue'},\r\n amount: {from: 'fromAmount', to: 'toAmount'},\r\n vatAmount: {from: 'fromVatAmount', to: 'toVatAmount'},\r\n paidAmount: {from: 'fromPaidAmount', to: 'toPaidAmount'},\r\n cAmount: {from: 'fromCAmount', to: 'toCAmount'},\r\n dutyAmount: {from: 'fromDutyAmount', to: 'toDutyAmount'},\r\n faxSentDate: {from: 'fromFaxSentDate', to: 'toFaxSentDate'},\r\n emailSentDate: {from: 'fromEmailSentDate', to: 'toEmailSentDate'},\r\n printedDate: {from: 'fromPrintedDate', to: 'toPrintedDate'},\r\n createdAt: {from: 'fromCreatedAt', to: 'toCreatedAt'},\r\n balance: {from: 'fromBalance', to: 'toBalance'},\r\n paidDate: {from: 'fromPaidDate', to: 'toPaidDate'},\r\n lastClearDate: {from: 'fromLastClearDate', to: 'toLastClearDate'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n }\r\n}\r\n","import {TableSettings} from \"../../../tableSettings\";\r\n\r\nexport const receivingList:TableSettings = {\r\n tableVersion: 10054,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'status', Header: 'S', visible: true, width: 35, canBeHidden: false, resizable: false, sortable: false },\r\n // 2023-10-19 jhchoi : Void 컬럼 제거(추후에 사용할 경우 주석 제거)\r\n // { accessor:'isVoid', Header: 'Void', visible: true, width: 35, canBeHidden: true, resizable: false, sortable: false, filterable: true, filterType: 'text' },\r\n { accessor:'receiveNo', Header: 'Receiving ID', visible: true, width: 90, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'centerNo', Header: 'Customer', visible:true, width: 90, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'receiveDate', Header: 'In Date', visible: true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'orderDate', Header: 'Order Date', visible: true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'rcvStatus', Header: 'Status', visible:true, width: 124, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'p', Header: 'Paid', visible: true, width: 30, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'soNo', Header: 'S/O #', visible:true, width: 142, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'vendor', Header: 'Ship From', visible:true, width: 142, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'trucker', Header: 'Carrier', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'palletRemark', Header: 'Pallet', visible:true, width: 124, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'remark', Header: 'Remark', visible:true, width: 142, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u2Date', Header: 'Update', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'u2ID', Header: 'Update by', visible: true, width: 88, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u1ID', Header: 'Create By', visible: true, width: 88, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const shippingList:TableSettings = {\r\n tableVersion: 10053,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'sstatus', Header: 'S', visible: true, width: 35, canBeHidden: false, resizable: false, sortable: false, hiddenInColumnSetup: true },\r\n // 2023-10-19 jhchoi : Void 컬럼 제거(추후에 사용할 경우 주석 제거)\r\n // { accessor:'isVoid', Header: 'Void', visible: true, width: 35, canBeHidden: true, resizable: false, sortable: false, filterable: true, filterType: 'text' },\r\n { accessor:'shipNo', Header: 'Shipping ID', visible: true, width: 90, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'centerNo', Header: 'Customer', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'shipDate', Header: 'Out Date', visible: true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'orderDate', Header: 'Order Date', visible: true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'status', Header: 'Sstatus', visible:true, width: 124, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'p', Header: 'Paid', visible: true, width: 95, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'poNo', Header: 'Order #', visible:true, width: 142, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'totalQty', Header: 'Total Qty', visible:true, width: 142, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'shipToNo', Header: 'Ship To', visible:true, width: 142, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'trucker', Header: 'Carrier', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'palletRemark', Header: 'Pallet', visible:true, width: 124, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'remark', Header: 'Remark', visible:true, width: 142, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u2Date', Header: 'Update', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'u2ID', Header: 'Update by', visible: true, width: 88, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u1ID', Header: 'Create By', visible: true, width: 88, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const inOutList:TableSettings = {\r\n tableVersion: 10046,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'postDate', Header: 'Date', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'centerNo', Header: 'Customer', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'refNo', Header: 'Receiving/ShippingId', visible:true, width: 124, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'trucker', Header: 'Trucker', visible:true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'fromTo', Header: 'Ship From/To', visible: true, width: 95, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'itemNo', Header: 'Prod Code/SKU', visible:true, width: 142, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'location', Header: 'Location', visible:true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'poNo', Header: 'P.O #', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'qty', Header: 'Pack Qty', visible:true, width: 50, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'box', Header: 'Qty', visible:true, width: 50, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'boxUnit', Header: 'Unit', visible:true, width: 50, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'itemDesc', Header: 'Item Description', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'lbs', Header: 'LBS', visible:true, width: 60, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'cft', Header: 'CFT', visible:true, width: 60, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'status', Header: 'Status', visible:true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'remark', Header: 'Remark', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const inventoryList:TableSettings = {\r\n tableVersion: 10047,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'centerNo', Header: 'Customer', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'itemNo', Header: 'Prod Code/SKU', visible:true, width: 124, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'itemDesc', Header: 'Description', visible: true, width: 95, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'upcCode', Header: 'UPC/EAN', visible:true, width: 142, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'onHandPcs', Header: 'On Hand Pack Qty', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'allPcs', Header: 'Allocated Pack Qty', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'availPcs', Header: 'Available Pack Qty', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'boxUnit', Header: 'Unit', visible:true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'innerPcs', Header: 'Inner Pack', visible:true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'onHandallQty', Header: 'On Hand Qty', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'allallQty', Header: 'Allocated Qty', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'availallQty', Header: 'Available Qty', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n ]\r\n};\r\n\r\nexport const invoiceList:TableSettings = {\r\n tableVersion: 1006,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'s', Header: 'S', visible: true, width: 35, canBeHidden: false, resizable: false, sortable: false, hiddenInColumnSetup: true },\r\n { accessor:'draft', Header: 'Draft', visible: true, width: 31, canBeHidden: false, resizable: false, sortable: false, filterable: true, filterType: 'text' },\r\n // { accessor:'void', Header: 'Void', visible: true, width: 35, canBeHidden: false, resizable: false, sortable: false, filterable: true, filterType: 'text' },\r\n { accessor:'invoiceDate', Header: 'Invoice Date', visible: true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'invoiceNo', Header: 'Invoice #', visible: true, width: 90, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'branch', Header: 'BR', visible:true, width: 26, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'invoiceTo', Header: 'Invoice To', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'customerRefNo', Header: 'Customer Ref. #', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'dueDate', Header: 'Due Date', visible: true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'overdue', Header: 'Overdue', visible:true, width: 124, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'cur', Header: 'CUR', visible:true, width: 124, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'amount', Header: 'Amount', visible: true, width: 95, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'float' },\r\n { accessor:'paid', Header: 'Paid', visible: true, width: 95, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'float' },\r\n { accessor:'balance', Header: 'Balance', visible: true, width: 95, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'float' },\r\n { accessor:'lPaidCheckNo', Header: 'Paid Chk #', visible:true, width: 142, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'lPaidDate', Header: 'Paid Date', visible:true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'clearDate', Header: 'Clear Date', visible:true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'faxDate', Header: 'Fax Date', visible:true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'emailDate', Header: 'Email Date', visible:true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'printDate', Header: 'Print Date', visible:true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'type', Header: 'Type', visible:true, width: 70, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'rId', Header: 'Receiving/Shipping ID', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u2Date', Header: 'Update', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'u2ID', Header: 'Update by', visible: true, width: 88, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u1ID', Header: 'Create By', visible: true, width: 88, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const billList:TableSettings = {\r\n tableVersion: 1003,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'s', Header: 'S', visible: true, width: 35, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'draft', Header: 'Draft', visible: true, width: 31, canBeHidden: false, resizable: false, sortable: false, filterable: true, filterType: 'text' },\r\n // { accessor:'void', Header: 'Void', visible: true, width: 35, canBeHidden: false, resizable: false, sortable: false, filterable: true, filterType: 'text' },\r\n { accessor:'billDate', Header: 'Bill Date', visible: true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'billNo', Header: 'Bill #', visible: true, width: 90, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'branch', Header: 'BR', visible:true, width: 26, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'vendor', Header: 'Vendor', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'dueDate', Header: 'Due Date', visible: true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'cur', Header: 'CUR', visible:true, width: 124, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'amount', Header: 'Amount', visible: true, width: 95, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'float' },\r\n { accessor:'paid', Header: 'Paid', visible: true, width: 95, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'float' },\r\n { accessor:'balance', Header: 'Balance', visible: true, width: 95, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'float' },\r\n { accessor:'lPaidCheckNo', Header: 'Paid Chk #', visible:true, width: 142, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'lPaidDate', Header: 'Paid Date', visible:true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'clearDate', Header: 'Chk Clear Date', visible:true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'rcvd', Header: 'B. Rcvd.', visible:true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'faxDate', Header: 'Fax Date', visible:true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'emailDate', Header: 'Email Date', visible:true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'printDate', Header: 'Print Date', visible:true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'type', Header: 'Type', visible:true, width: 70, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'rId', Header: 'Receiving/Shipping ID', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u2Date', Header: 'Update', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'u2ID', Header: 'Update by', visible: true, width: 88, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u1ID', Header: 'Create By', visible: true, width: 88, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const storageInvoiceList:TableSettings = {\r\n tableVersion: 10012,\r\n verflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: []\r\n};\r\n\r\nexport const companyList:TableSettings = {\r\n tableVersion: 10046,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'void', Header: 'Inactive', visible: true, width: 50, canBeHidden: false, resizable: false, sortable: false, filterable: true, filterType: 'text' },\r\n { accessor:'type', Header: 'Type', visible: true, width: 50, canBeHidden: false, resizable: false, sortable: false, filterable: true, filterType: 'text' },\r\n { accessor:'companyId', Header: 'CompanyID', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'name', Header: 'CompanyName', visible:true, width: 250, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'phone', Header: 'Phone', visible:true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'fax', Header: 'fax', visible:true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'attention', Header: 'Attention', visible: true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'billGroup', Header: 'Bill Group', visible: true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'boxRate', Header: 'Box Rate', visible: true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'pcsRate', Header: 'Pcs Rate', visible: true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'cftRate', Header: 'CFT Rate', visible: true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'boxCharge', Header: 'Box Charge', visible: true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'labelCharge', Header: 'Label Charge', visible: true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'docCharge', Header: 'Doc Charge', visible: true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'u2Date', Header: 'Update', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'u2Id', Header: 'Update by', visible: true, width: 88, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u1Id', Header: 'Create By', visible: true, width: 88, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const itemList:TableSettings = {\r\n tableVersion: 10043,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'customer', Header: 'Company ID', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'prodCode', Header: 'Prod Code/SKU', visible:true, width: 124, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'itemDesc', Header: 'Description', visible: true, width: 95, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'upc', Header: 'UPC/EAN', visible:true, width: 142, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'boxUnit', Header: 'Unit', visible:true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'innerPac', Header: 'Inner Pack', visible:true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'defaultLoc', Header: 'Default Location', visible:true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'lbs', Header: 'LBS', visible:true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'length', Header: 'Length', visible:true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'width', Header: 'Width', visible:true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'height', Header: 'Height', visible:true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'cft', Header: 'CFT', visible:true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'u2Date', Header: 'Update', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'u2ID', Header: 'Update by', visible: true, width: 88, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u1ID', Header: 'Create By', visible: true, width: 88, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const receiptList:TableSettings = {\r\n tableVersion: 10045,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'refNo', Header: 'Freight Receipt #', visible: true, width: 135, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'branch', Header: 'BR', visible: true, width: 35, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'receivedDate', Header: 'Receive Date', visible: true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'receivedBy', Header: 'Receive By', visible: true, width: 90, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'truckBLNo', Header: 'Truck B/L #', visible:true, width: 124, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'poNo', Header: 'P.O #', visible: true, width: 130, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'blNo', Header: 'B/L #', visible:true, width: 142, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'shipped', Header: 'Shipped', visible:true, width: 142, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'maker', Header: 'Maker', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'sName', Header: 'Shipper', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'sName1', Header: 'Consignee', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'commodity', Header: 'Commodity', visible:true, width: 124, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'amount', Header: 'Amount', visible:true, width: 142, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'float' },\r\n { accessor:'hazGoods', Header: 'Hazardous', visible:true, width: 73, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u2Date', Header: 'Update', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'u2ID', Header: 'Update by', visible: true, width: 88, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u1ID', Header: 'Create By', visible: true, width: 88, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const receiptContainerDetails:TableSettings = {\r\n tableVersion: 1006,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '200px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.73,\r\n },\r\n {\r\n Header: 'Length',\r\n accessor: 'length',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.84,\r\n },\r\n {\r\n Header: 'Width',\r\n accessor: 'width',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.84,\r\n },\r\n {\r\n Header: 'Height',\r\n accessor: 'height',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.84,\r\n },\r\n {\r\n Header: 'Packages',\r\n accessor: 'pcs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.84,\r\n },\r\n {\r\n Header: 'Unit',\r\n accessor: 'unit',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.21,\r\n },\r\n {\r\n Header: 'LBS',\r\n accessor: 'dimKgs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.70,\r\n },\r\n {\r\n Header: 'CBM',\r\n accessor: 'cbm',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.70,\r\n },\r\n {\r\n Header: 'Act. Weight',\r\n accessor: 'aWeight',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.95,\r\n },\r\n {\r\n Header: 'Shpd',\r\n accessor: 'shipped',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.84,\r\n },\r\n {\r\n Header: 'M',\r\n accessor: 'mode',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.73,\r\n },\r\n {\r\n Header: 'Date',\r\n accessor: 'shippedDate',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.57,\r\n },\r\n {\r\n Header: 'B/L #',\r\n accessor: 'blNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.69,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.48,\r\n },\r\n ]\r\n};\r\n\r\nexport const shippingTopContainerDetails:TableSettings = {\r\n tableVersion: 10038,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '210px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.66,\r\n },\r\n {\r\n Header: 'Product Code/SKU',\r\n accessor: 'prodCode',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.20,\r\n },\r\n {\r\n Header: 'Description',\r\n accessor: 'description',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.63,\r\n },\r\n {\r\n Header: 'Inner Pack',\r\n accessor: 'pcsBox',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.32,\r\n },\r\n {\r\n Header: 'Pack Qty',\r\n accessor: 'packQty',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.32,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'qty',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.32,\r\n },\r\n {\r\n Header: 'Unit',\r\n accessor: 'unit',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.32,\r\n },\r\n {\r\n Header: 'LBS',\r\n accessor: 'lbs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.32,\r\n },\r\n {\r\n Header: 'CFT',\r\n accessor: 'cft',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.32,\r\n },\r\n {\r\n Header: 'Location',\r\n accessor: 'location',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.76,\r\n },\r\n {\r\n Header: 'Serial Number',\r\n accessor: 'serialNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.41,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.42,\r\n },\r\n ]\r\n};\r\n\r\nexport const receivingTopContainerDetails:TableSettings = {\r\n tableVersion: 10046,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '210px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [ \r\n { Header: '#', accessor: 'indicator', resizable: false, sortable: false, visible: true, initialWidthPercentage: 3.66, },\r\n { Header: 'Product Code/SKU', accessor: 'itemNo', resizable: false, sortable: false, visible: true, initialWidthPercentage: 12.20, },\r\n { Header: 'Description', accessor: 'itemDescription', resizable: false, sortable: false, visible: true, initialWidthPercentage: 10.98, },\r\n { Header: 'PO #', accessor: 'itemPoNo', resizable: false, sortable: false, visible: true, initialWidthPercentage: 7.32, },\r\n { Header: 'Order Qty', accessor: 'ordQty', resizable: false, sortable: false, visible: true, initialWidthPercentage: 7.32, },\r\n { Header: 'Inner Pack', accessor: 'pcsPerBox', resizable: false, sortable: false, visible: true, initialWidthPercentage: 7.32, },\r\n { Header: 'Pack Qty', accessor: 'box', resizable: false, sortable: false, visible: true, initialWidthPercentage: 7.32, },\r\n { Header: 'Qty', accessor: 'qty', resizable: false, sortable: false, visible: true, initialWidthPercentage: 7.32, },\r\n { Header: 'Unit', accessor: 'boxUnit', resizable: false, sortable: false, visible: true, initialWidthPercentage: 7.32, },\r\n { Header: 'LBS', accessor: 'lbs', resizable: false, sortable: false, visible: true, initialWidthPercentage: 7.32, },\r\n { Header: 'CFT', accessor: 'cft', resizable: false, sortable: false, visible: true, initialWidthPercentage: 7.32, },\r\n { Header: 'Location', accessor: 'location', resizable: false, sortable: false, visible: true, initialWidthPercentage: 8.54, },\r\n { Header: 'Reg', accessor: 'reg', resizable: false, sortable: false, visible: true, initialWidthPercentage: 3.66, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 2.40, },\r\n ]\r\n};\r\n\r\nexport const receivingBottomContainerDetails:TableSettings = {\r\n tableVersion: 10046,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '210px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.67,\r\n },\r\n {\r\n Header: 'UPC Code',\r\n accessor: 'upcCode',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.78,\r\n },\r\n {\r\n Header: 'SKU #',\r\n accessor: 'skuNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 22.22,\r\n },\r\n {\r\n Header: 'Description',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 26.67,\r\n },\r\n {\r\n Header: 'Scanned Qty',\r\n accessor: 'scanQty',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 22.22,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.44,\r\n },\r\n ]\r\n};\r\n\r\nexport const sInvoiceLoadItem :TableSettings = {\r\n tableVersion: 10041,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n alternateRows: false,\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: 'Select',\r\n accessor: 'select',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.82,\r\n },\r\n {\r\n Header: 'Billing Item',\r\n accessor: 'itemNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 40.27,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.82,\r\n },\r\n {\r\n Header: 'Rate',\r\n accessor: 'rate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage:13.23,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'qty',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage:13.23,\r\n maxWidth: 600,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.23,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.40,\r\n },\r\n ]\r\n};\r\n\r\nexport const storageInvoiceLineItemTable:TableSettings = {\r\n tableVersion: 10049,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '210px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.57,\r\n },\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'billingCodeView',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.19,\r\n },\r\n {\r\n Header: 'Billing Item',\r\n accessor: 'description',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 40.76,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.95,\r\n },\r\n {\r\n Header: 'Rate',\r\n accessor: 'rate',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'qty',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.40,\r\n },\r\n ]\r\n};\r\n\r\nexport const storageInvoiceLineItemTableWithVat:TableSettings = {\r\n tableVersion: 10003,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '210px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.57,\r\n },\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'billingCode',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.19,\r\n },\r\n {\r\n Header: 'Billing Item',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 37.74,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'cur',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.95,\r\n },\r\n {\r\n Header: 'Rate',\r\n accessor: 'rate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'qty',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n { \r\n Header: 'VAT', \r\n accessor: 'useVat', \r\n resizable: true, \r\n sortable: false, \r\n visible: true, \r\n initialWidthPercentage: 3.02, \r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.40,\r\n },\r\n ]\r\n};\r\n\r\nexport const storageInvoiceBottomContainerDetails:TableSettings = {\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n // \r\n height: '210px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.28,\r\n },\r\n {\r\n Header: 'Inv Seq',\r\n accessor: 'invoiceSeq',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.85,\r\n },\r\n {\r\n Header: 'Customer',\r\n accessor: 'companyName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 50.37,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 25.18,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.28,\r\n },\r\n ]\r\n};\r\n\r\nexport const locationList:TableSettings = {\r\n tableVersion: 10043,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor: 'indicator', Header: '', visible:true, width: 30, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor: 'location', Header: 'Location', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor: 'zone', Header: 'Zone', visible:true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor: 'row', Header: 'Row', visible:true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor: 'level', Header: 'Level', visible:true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor: 'storage', Header: 'Occupied', visible:true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'bool', },\r\n { accessor:'u2Date', Header: 'Update', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'u2ID', Header: 'Update by', visible: true, width: 88, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u1ID', Header: 'Create By', visible: true, width: 88, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },]\r\n};\r\n\r\n/*More button popups*/\r\nexport const batchPrintTable:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'hidden',\r\n overflowY: 'auto',\r\n \r\n height: '200px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'selected',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5,\r\n },\r\n {\r\n Header: 'Invoice #',\r\n accessor: 'invoiceNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: 'Date',\r\n accessor: 'date',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: 'Bill To',\r\n accessor: 'billTo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20,\r\n },\r\n {\r\n Header: 'Sales',\r\n accessor: 'sales',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: 'Fax',\r\n accessor: 'fax',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n ]\r\n};\r\n\r\nexport const receivingShippingChargeItemDetails:TableSettings = {\r\n tableVersion: 10051,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: '210px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'billingCode',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 21.00,\r\n },\r\n {\r\n Header: 'Description',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 25.00,\r\n },\r\n {\r\n Header: 'Rate',\r\n accessor: 'rate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.00,\r\n },\r\n {\r\n Header: 'Count',\r\n accessor: 'qty',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.00,\r\n },\r\n {\r\n Header: 'Billing #',\r\n accessor: 'invoiceNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.00,\r\n },\r\n {\r\n Header: 'Draft',\r\n accessor: 'isDraft',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.00,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.00,\r\n },\r\n ]\r\n};\r\n","import Modal from 'react-modal';\r\nimport ButtonGroup from '../uiControls/ButtonGroup';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport ApplicationContext from '../ApplicationContext';\r\nimport useGlobalOkDialog from '../hooks/useGlobalOkDialog';\r\nimport constants from '../constants';\r\nimport { getRecogConfirmMsg, getRecogSQLInfos } from '../fms.data/modules/FmsModFunc';\r\nimport { compareIso, formatDate, getDate } from '../dateUtils';\r\nimport React from 'react';\r\nimport Date from '../ui/Date';\r\nimport { selectInput } from '../util/inputUtils';\r\nimport NoticeWarningIcon from '../img/notice_warning.svg';\r\n\r\nconst ModalOverlayStyle: React.CSSProperties = {\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backgroundColor: 'rgba(0, 0, 0, 0.55)',\r\n zIndex: 888888\r\n};\r\n\r\nconst ModalDialogContentStyle: React.CSSProperties = {\r\n top: '50%',\r\n left: '50%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-50%',\r\n transform: 'translate(-50%, -50%)',\r\n border: '1px solid',\r\n borderRadius: '0px',\r\n borderColor: '#00F',\r\n zIndex: 10000,\r\n paddingLeft: '40px',\r\n paddingRight: '40px'\r\n};\r\n\r\nfunction RecogModal({\r\n mTbId = 0,\r\n isSet = false,\r\n mTbName = '',\r\n onCancel = () => { },\r\n reloadData = () => { },\r\n}: {\r\n mTbId: number,\r\n isSet: boolean,\r\n mTbName: string,\r\n onCancel: () => void,\r\n reloadData: (recogDate: string) => void,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const [estRecogDate, setEstRecogDate] = useState('');\r\n const [firstAcctDate, setFirstAcctDate] = useState('');\r\n const [recogDate, setRecogDate] = useState('');\r\n const beforeClosing = useRef(false);\r\n\r\n useEffect(() => {\r\n initialize();\r\n setTimeout(() => {\r\n const recogDateField = document.getElementById('recogmodal-recogdate');\r\n if (recogDateField) selectInput(recogDateField as HTMLInputElement);\r\n }, 10);\r\n }, []);\r\n\r\n async function initialize() {\r\n let apiResult = await appContext.api.getEstFinalizeDateEx(mTbName, mTbId);\r\n setFirstAcctDate(getDate(apiResult?.result?.item1) ?? \"\") // FirstAcctDate\r\n setRecogDate(getDate(apiResult?.result?.item2) ?? \"\"); // ReturnDate\r\n setEstRecogDate(getDate(apiResult?.result?.item2) ?? \"\"); // EstRecogDate\r\n beforeClosing.current = apiResult?.result?.item3;\r\n }\r\n\r\n async function recognize() {\r\n if (compareIso(recogDate, firstAcctDate) < 0) {\r\n await showGlobalOkDialog(

(can change the date from {formatDate(firstAcctDate)})

, false, null, 'warning');\r\n return;\r\n }\r\n\r\n const result = getRecogConfirmMsg(estRecogDate, beforeClosing.current, isSet);\r\n if (result.errorMsg) {\r\n await showGlobalOkDialog(

{result.errorMsg}

, false, null, 'warning');\r\n onCancel();\r\n return;\r\n }\r\n\r\n let apiResult = await appContext.api.checkFinalizeData(mTbName, mTbId);\r\n let msg = apiResult?.result;\r\n if (!apiResult || msg) {\r\n await showGlobalOkDialog(

{msg ?? constants.LOAD_ERROR_MESSAGE}

, false, null, 'warning');\r\n onCancel();\r\n return;\r\n }\r\n\r\n const sqlInfos = getRecogSQLInfos(mTbName, mTbId, recogDate, appContext.user?.id ?? \"\", isSet);\r\n apiResult = await appContext.api.saveRecognizeData(sqlInfos);\r\n if (!apiResult || !apiResult.success) {\r\n msg = constants.SAVE_ERROR_MESSAGE;\r\n await showGlobalOkDialog(

{msg}

);\r\n onCancel();\r\n return;\r\n }\r\n onCancel();\r\n reloadData(recogDate);\r\n }\r\n\r\n const alignMargin = '42px';\r\n\r\n return (\r\n \r\n {isSet ?\r\n
\r\n \"\"\r\n This Action will recognize Sales, Cost in B/L on recog date.

\r\n
\r\n Recog Date\r\n
\r\n { setRecogDate(date ?? '') }} value={recogDate}>\r\n
\r\n
\r\n
\r\n (can change Recog Date if Change Date is after Bill Start Date [{formatDate(firstAcctDate)}])\r\n
\r\n

\r\n
\r\n Confirm to Recognize ?\r\n {\r\n if (b === 'Yes') recognize();\r\n else onCancel();\r\n }}\r\n defaultFocusIndex={-1}\r\n addOr={true}\r\n />\r\n
\r\n

\r\n
\r\n Note: Invoice, Bill, CrDb issued after recog date will be recognized on \r\n
\r\n
\r\n each date of Invoice, Bill, CrDb issued respectively.\r\n
\r\n
\r\n :\r\n
\r\n
\r\n \"\"\r\n Do you want to Undo Recog ?\r\n
\r\n {\r\n if (b === 'Yes') recognize();\r\n else onCancel();\r\n }}\r\n defaultFocusIndex={0}\r\n addOr={true}\r\n />\r\n
\r\n }\r\n \r\n )\r\n}\r\n\r\nexport default React.memo(RecogModal);","import { MblStatusViewModel, OceanMblStatusMap, OiContainerEvents } from \"../../../../fms.core/MblStatusViewModel\";\r\nimport { OiMbl } from \"../../../../fms.core/OiMbl\";\r\nimport { PimsContainer } from \"../../../../fms.core/pims/PimsContainer\";\r\nimport { PimsCntrEvent } from \"../../../../fms.core/PimsCntrEvent\";\r\nimport { CargoEventLog } from '../../../../fms.core/CargoEventLog';\r\nimport { now } from '../../../../dateUtils';\r\nimport { getFmsGlobal } from '../../../../globals';\r\nimport _ from \"lodash\";\r\nimport moment from \"moment\";\r\n\r\nexport function formatLclFcl(f:string|null|undefined) {\r\n if (f === 'L') {\r\n return 'Consol';\r\n } else if (f === 'F') {\r\n return 'FCL';\r\n } else if (f === 'O') {\r\n return 'LCL';\r\n }\r\n\r\n return '';\r\n}\r\n\r\nexport function formatMblType(m:string|null|undefined) {\r\n if (!m) {\r\n return 'None';\r\n }\r\n\r\n if (m === 'A') {\r\n return 'Agent';\r\n\r\n } else if (m === 'D') {\r\n return 'Deconsol';\r\n } else if (m === 'C') {\r\n return 'Co-Load';\r\n } else if (m === 'N') {\r\n return 'Direct';\r\n }\r\n\r\n return m;\r\n}\r\n\r\n//[save-sqlinfo]\r\nexport const mblStatusName = {\r\n rcvAnFromCarr: 'rcvAnFromCarr',\r\n sendAnToCust: 'sendAnToCust',\r\n eblDate: 'eblDate',\r\n rcvCrDb: 'rcvCrDb',\r\n rlsDate: 'rlsDate',\r\n customsHold: 'customsHold',\r\n customRls: 'customRls',\r\n cfsDate: 'cfsDate',\r\n arrngTruck: 'arrngTruck',\r\n sendPuDelInst: 'sendPuDelInst',\r\n sendPod: 'sendPod',\r\n emptyRtnDate: 'emptyRtnDate'\r\n}\r\n\r\n/**\r\n * [save-sqlinfo]\r\n * Do remaining initialization after read Entity\r\n * @param mbl \r\n */\r\n export function prepareOiMblForView(mbl:OiMbl) {\r\n // Init milestone\r\n if(!mbl.milestone) {\r\n mbl.milestone = new MblStatusViewModel();\r\n }\r\n if(mbl.milestone.eventItemList.length > 0) {\r\n _.remove(mbl.milestone.eventItemList);\r\n }\r\n\r\n if(mbl.milestone.cntrItemList == null) mbl.milestone.cntrItemList = [];\r\n if(mbl.milestone.eventItemList == null) mbl.milestone.eventItemList = [];\r\n\r\n if (!mbl.milestone.cntrItemList || mbl.milestone.cntrItemList.length === 0) {\r\n AddPimsCntrEvent(mbl, new PimsContainer({ bookingId: mbl.pimsLinkId, cntrNo: mbl.mblNo }))\r\n }\r\n else {\r\n mbl.milestone.cntrItemList.forEach(x => {\r\n AddPimsCntrEvent(mbl, x)\r\n })\r\n }\r\n }\r\n\r\nfunction AddPimsCntrEvent(mbl:OiMbl, pimsContainer:PimsContainer){\r\n OiContainerEvents.forEach((enumEvent) => {\r\n // let seqNo = 0;\r\n const smitem = OceanMblStatusMap.get(enumEvent);\r\n if(!smitem) return;\r\n mbl.milestone?.eventItemList?.push(new PimsCntrEvent({\r\n pimsCntrId: pimsContainer.id,\r\n cntrNo: pimsContainer.cntrNo,\r\n pickupNo: pimsContainer.pickupNo,\r\n name: smitem.label,\r\n lastDate: _.get(pimsContainer, smitem.pimsCntrDate??''),\r\n locName: _.get(pimsContainer, smitem.pimsCntrLoc??''),\r\n seq: enumEvent, //seqNo++,\r\n isVisible: true\r\n }));\r\n });\r\n}\r\n\r\nexport function AddEventToNotice(dicEvent: { key: string, value: string }[], evtCode: string, pimsCntrId: string): void {\r\n // if (dicEvent.hasOwnProperty(evtCode)) {\r\n // if (dicEvent[evtCode] === null || dicEvent[evtCode] === \"\") {\r\n // dicEvent[evtCode] = pimsCntrId.toString();\r\n // } else {\r\n // if (!dicEvent[evtCode].includes(pimsCntrId.toString())) {\r\n // dicEvent[evtCode] += `,${pimsCntrId}`;\r\n // }\r\n // }\r\n // } else {\r\n // dicEvent[evtCode] = pimsCntrId.toString();\r\n // }\r\n if (!dicEvent.some(x => x.key === evtCode)) {\r\n dicEvent.push({ key: evtCode, value: pimsCntrId });\r\n }\r\n else {\r\n const findIndex = dicEvent.findIndex(x => x.key === evtCode);\r\n dicEvent[findIndex].value += `,${pimsCntrId}`;\r\n }\r\n}\r\n\r\nexport function CreateCargoEventLog(mblNo: string, evtName: string, kvp: { key: string, value: string }, cntrDataWithSeq: { loc: string, cntrNo: string, seq: number }[], userId: string) {\r\n const keyArr: string[] = kvp.key.split('|');\r\n //const eventAt = _.isEmpty(keyArr[1]) ? null : formatDateTime(keyArr[1]);\r\n const eventAt = _.isEmpty(keyArr[1]) ? null : moment(keyArr[1]).format(CargoEventLog.DateTimeFormat);\r\n const eventLogs: CargoEventLog[] = [];\r\n\r\n const uniqueCntrSet = new Set(cntrDataWithSeq.map(item => item.cntrNo));\r\n const uniqueCntrArray = Array.from(uniqueCntrSet);\r\n uniqueCntrArray.forEach(cntrNo => {\r\n const result: CargoEventLog = new CargoEventLog(evtName, eventAt ?? '')\r\n result.suntekID = getFmsGlobal().AcmeID ?? '';\r\n result.mblNo = mblNo;\r\n result.cntrNo = cntrNo;\r\n result.srcEventType = 'ifms';\r\n result.locName = cntrDataWithSeq.find(x => x.cntrNo === cntrNo)?.loc ?? '';\r\n //API > TrackingLogMblEvents에서 수행함\r\n //result.utcTime = nowUtc(); \r\n result.timezone =Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n result.locTime = now() ;\r\n result.u1Id = userId;\r\n\r\n eventLogs.push(result);\r\n })\r\n return eventLogs;\r\n}\r\n\r\nexport function FindIndexOfKeyStartsWith(dicEvent: { key: string, value: string }[], startWith: string): number {\r\n let index: number = -1;\r\n const vStart: string[] = startWith.split(',').map(str => str.trim()).filter(str => str !== '');\r\n\r\n for (let i = 0; i < dicEvent.length; i++) {\r\n const item = dicEvent[i];\r\n for (const v of vStart) {\r\n if (item.key.startsWith(v)) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n if (index !== -1) {\r\n break;\r\n }\r\n }\r\n \r\n return index;\r\n}","export class BlEventName {\r\n static readonly FmsTracker: string = \"bl_tracker\";\r\n static readonly FmsHawbRcvd: string = \"bl_hawb_rcvd\";\r\n static readonly FmsLastTrack: string = \"bl_last_track\";\r\n static readonly FmsPlRcvd: string = \"bl_pl_rcvd\";\r\n static readonly FmsAnPrt: string = \"bl_an_prt\";\r\n static readonly FmsCommDoc: string = \"bl_comm_doc\";\r\n static readonly FmsEntryDoc: string = \"bl_entry_doc\";\r\n static readonly Fms7501: string = \"bl_7501\";\r\n static readonly FmsEtaCfrmd: string = \"bl_eta_cfrmd\";\r\n static readonly Fms3461: string = \"bl_3461\";\r\n static readonly FmsAmsCfrmd: string = \"bl_ams_cfrmd\";\r\n static readonly FmsInlandNtc: string = \"bl_inland_ntc\";\r\n static readonly FmsPuSent: string = \"bl_pu_sent\";\r\n static readonly FmsExamOn: string = \"bl_exam_on\";\r\n static readonly FmsExamOff: string = \"bl_exam_off\";\r\n static readonly FmsDoConfirm: string = \"bl_do_confirm\";\r\n static readonly FmsDoSent: string = \"bl_do_sent\";\r\n static readonly FmsDelAddr: string = \"bl_del_addr\";\r\n static readonly FmsDelSched: string = \"bl_del_sched\";\r\n static readonly FmsDelAct: string = \"bl_del_act\";\r\n static readonly FmsEmptyRet: string = \"bl_empty_ret\";\r\n static readonly FmsPod: string = \"bl_pod\";\r\n static readonly FmsBill: string = \"bl_bill\";\r\n static readonly FmsBillPacket: string = \"bl_bill_packet\";\r\n static readonly FmsDdp: string = \"bl_ddp\";\r\n}","export class BlEventLog {\r\n\r\n id: number = 0;\r\n suntekID: string = '';\r\n jobName: string = '';\r\n jobId: number = 0;\r\n blNo: string = '';\r\n eventName: string = '';\r\n eventAtUtc: string | null = null;\r\n eventAt: string | null = null;\r\n u1Id: string = '';\r\n u1Date: string | null = null;\r\n \r\n constructor(evtName: string, eventAt: string | null = null) {\r\n if (evtName) {\r\n this.eventName = evtName;\r\n }\r\n if (eventAt !== null) {\r\n this.eventAt = eventAt;\r\n }\r\n }\r\n }","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { faCheck, faMinus } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nfunction CheckBoxIcon({\r\n value,\r\n color = 'green',\r\n falseColor='green',\r\n}: {\r\n value: boolean,\r\n color?: 'green' | 'red' | 'black',\r\n falseColor?: 'green' | 'red' | 'black',\r\n}) {\r\n const chechboxIconStyle = {color: '#0d7757'};\r\n const chechboxIconStyle2 = {color: '#0d7757'};\r\n\r\n if (color === 'red') {\r\n chechboxIconStyle.color = '#DC2626';\r\n } else if (color === 'black') {\r\n chechboxIconStyle.color = '#000000';\r\n }\r\n\r\n if (falseColor === 'red') {\r\n chechboxIconStyle2.color = '#DC2626';\r\n } else if (falseColor === 'black') {\r\n chechboxIconStyle2.color = '#000000';\r\n }\r\n\r\n if (value) {\r\n return ;\r\n } else {\r\n return ;\r\n }\r\n}\r\n\r\nCheckBoxIcon.defaultProps = {\r\n value: false,\r\n color: 'green',\r\n falseColor:'green'\r\n};\r\n\r\nCheckBoxIcon.propTypes = {\r\n value: PropTypes.bool.isRequired,\r\n color: PropTypes.oneOf(['green', 'red', 'black']),\r\n falseColor: PropTypes.oneOf(['green', 'red', 'black']),\r\n};\r\n\r\n\r\nexport default React.memo(CheckBoxIcon);\r\n","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\nimport { JobNames } from '../framework.core/JobNames';\r\n\r\nexport class HblStatusViewModel extends TrackableEntity {\r\n jobName: string = '';\r\n jobId: number = 0;\r\n createdBy: string = '';\r\n createdAt: string | null = null;\r\n updatedBy: string = '';\r\n updatedAt: string | null = null;\r\n operator: string = '';\r\n csr: string = '';\r\n oblCol: string = '';\r\n oblRcvd: boolean = false;\r\n oblDate: string | null = null;\r\n rlsd: boolean = false;\r\n rlsdBy: string = '';\r\n rlsDate: string | null = null;\r\n fileClosed: string = '';\r\n opClosed: boolean = false;\r\n opClosedBy: string = '';\r\n opCloseDate: string | null = null;\r\n actClosed: boolean = false;\r\n actClosedBy: string = '';\r\n actCloseDate: string | null = null;\r\n postDate: string | null = null;\r\n amsLinkId: number = 0;\r\n pimsLinkId: number = 0;\r\n commDocDate: string | null = null;\r\n commDocTime: string | null = null;\r\n commDocBy: string = '';\r\n commDocChk: boolean = false;\r\n entryDocDate: string | null = null;\r\n entryDocTime: string | null = null;\r\n entryDocBy: string = '';\r\n entryDocChk: boolean = false;\r\n f7501Date: string | null = null;\r\n f7501Time: string | null = null;\r\n f7501By: string = '';\r\n f7501Chk: boolean = false;\r\n f3461Date: string | null = null;\r\n f3461Time: string | null = null;\r\n f3461By: string = '';\r\n f3461Chk: boolean = false;\r\n puSentDate: string | null = null;\r\n puSentTime: string | null = null;\r\n puSentBy: string = '';\r\n puSentChk: boolean = false;\r\n delSchedDate: string | null = null;\r\n delSchedTime: string | null = null;\r\n delSchedBy: string = '';\r\n delSchedChk: boolean = false;\r\n delActDate: string | null = null;\r\n delActTime: string | null = null;\r\n delActBy: string = '';\r\n delActChk: boolean = false;\r\n podDate: string | null = null;\r\n podTime: string | null = null;\r\n podBy: string = '';\r\n podChk: boolean = false;\r\n billDate: string | null = null;\r\n billTime: string | null = null;\r\n billBy: string = '';\r\n billChk: boolean = false;\r\n billPacketDate: string | null = null;\r\n billPacketTime: string | null = null;\r\n billPacketBy: string = '';\r\n billPacketChk: boolean = false;\r\n trackerDate: string | null = null;\r\n trackerTime: string | null = null;\r\n trackerBy: string = '';\r\n trackerChk: boolean = false;\r\n lastTrackDate: string | null = null;\r\n lastTrackTime: string | null = null;\r\n lastTrackBy: string = '';\r\n lastTrackChk: boolean = false;\r\n emptyRetDate: string | null = null;\r\n emptyRetTime: string | null = null;\r\n emptyRetBy: string = '';\r\n emptyRetChk: boolean = false;\r\n anPrtDate: string | null = null;\r\n anPrtTime: string | null = null;\r\n anPrtBy: string = '';\r\n anPrtChk: boolean = false;\r\n inlandNtcDate: string | null = null;\r\n inlandNtcTime: string | null = null;\r\n inlandNtcBy: string = '';\r\n inlandNtcChk: boolean = false;\r\n doConfirmDate: string | null = null;\r\n doConfirmTime: string | null = null;\r\n doConfirmBy: string = '';\r\n doConfirmChk: boolean = false;\r\n doSentDate: string | null = null;\r\n doSentTime: string | null = null;\r\n doSentBy: string = '';\r\n doSentChk: boolean = false;\r\n delAddrDate: string | null = null;\r\n delAddrTime: string | null = null;\r\n delAddrBy: string = '';\r\n delAddrChk: boolean = false;\r\n ddpDate: string | null = null;\r\n ddpTime: string | null = null;\r\n ddpBy: string = '';\r\n ddpChk: boolean = false;\r\n examOnDate: string | null = null;\r\n examOnTime: string | null = null;\r\n examOnBy: string = '';\r\n examOnChk: boolean = false;\r\n examOffDate: string | null = null;\r\n examOffTime: string | null = null;\r\n examOffBy: string = '';\r\n examOffChk: boolean = false;\r\n hblNo: string = '';\r\n ror: boolean = false;\r\n oblBy: string = '';\r\n isRlsDate: boolean = false;\r\n customsStatus: string = '';\r\n isCClear: boolean = false;\r\n cClearDate: string | null = null;\r\n cClearBy: string = '';\r\n isCHold: boolean = false;\r\n cHoldDate: string | null = null;\r\n cHoldBy: string = '';\r\n isClear: boolean = false;\r\n cReleaseDate: string | null = null;\r\n cReleaseBy: string = '';\r\n fdaHold: boolean = false;\r\n fdaHoldDate: string | null = null;\r\n fdaHoldBy: string = '';\r\n fdaRls: boolean = false;\r\n fdaRlsDate: string | null = null;\r\n fdaRlsBy: string = '';\r\n issuedBy: string = '';\r\n issueDate: string | null = null;\r\n isRcvDoc: boolean = false;\r\n rcvDocDate: string | null = null;\r\n rcvDocDateBy: string = '';\r\n isRcvCargo: boolean = false;\r\n rcvCargoDate: string | null = null;\r\n rcvCargoDateBy: string = '';\r\n isDlvrCarr: boolean = false;\r\n dlvrCarrDate: string | null = null;\r\n dlvrCarrDateby: string = '';\r\n // For Aih\r\n lCode: string = '';\r\n etd: string | null = null;\r\n dCode: string = '';\r\n eta: string | null = null;\r\n storageDate: string | null = null;\r\n finalDest: string = '';\r\n fEta: string | null = null;\r\n goDate: string | null = null;\r\n carrierName: string = '';\r\n isRls: boolean = false;\r\n paidDate: string | null = null;\r\n rlsBy: string = '';\r\n anSentDate: string | null = null;\r\n anSentBy: string = '';\r\n anSentChk: boolean = false;\r\n firstTrackDate: string | null = null;\r\n firstTrackBy: string = '';\r\n firstTrackChk: boolean = false;\r\n fltNo: string = '';\r\n cargoOnBoard: string = '';\r\n cfsLocationName: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key=undefined;\r\n Object.assign(this, init);\r\n this.noTrackProps.push('jobName', 'jobId', 'createdBy', 'createdAt', 'updatedBy', 'updatedAt', \r\n 'operator', 'csr', 'oblRcvd', 'rlsd', 'fileClosed',\r\n 'opClosed', 'opClosedBy', 'opCloseDate', 'actClosed', 'actClosedBy', 'actCloseDate',\r\n 'postDate', 'amsLinkId', 'pimsLinkId', 'commDocTime', 'entryDocTime', 'f7501Time', 'f3461Time',\r\n 'puSentTime', 'delSchedTime', 'delActTime', 'podTime', 'billTime', 'billPacketTime', 'trackerTime', \r\n 'lastTrackTime', 'emptyRetTime', 'anPrtTime', 'inlandNtcTime', 'doConfirmTime', 'doSentTime', 'delAddrTime', \r\n 'ddpTime', 'examOnTime', 'examOffTime', 'hblNo', 'ror', 'isRlsDate', 'lCode', 'etd', 'dCode', 'eta', \r\n 'storageDate', 'finalDest', 'fEta', 'goDate', 'carrierName', 'fltNo', 'issueDate', 'issuedBy');\r\n }\r\n\r\n getDbMappings(jobName:string):IDictionary {\r\n return HblStatusViewModel.getFieldMappings(jobName);\r\n }\r\n\r\n static _oihDicFieldMappings:IDictionary = {\r\n 'commDocBy': new DBMappingInfo({ field: 'F_C1', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'commDocDate': new DBMappingInfo({ field: 'F_D1', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'commDocChk': new DBMappingInfo({ field: 'F_N1', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'entryDocBy': new DBMappingInfo({ field: 'F_C2', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'entryDocDate': new DBMappingInfo({ field: 'F_D2', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'entryDocChk': new DBMappingInfo({ field: 'F_N2', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'f7501By': new DBMappingInfo({ field: 'F_C3', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'f7501Date': new DBMappingInfo({ field: 'F_D3', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'f7501Chk': new DBMappingInfo({ field: 'F_N3', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'f3461By': new DBMappingInfo({ field: 'F_C4', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'f3461Date': new DBMappingInfo({ field: 'F_D4', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'f3461Chk': new DBMappingInfo({ field: 'F_N4', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'puSentBy': new DBMappingInfo({ field: 'F_C5', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'puSentDate': new DBMappingInfo({ field: 'F_D5', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'puSentChk': new DBMappingInfo({ field: 'F_N5', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'delSchedBy': new DBMappingInfo({ field: 'F_C6', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'delSchedDate': new DBMappingInfo({ field: 'F_D6', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'delSchedChk': new DBMappingInfo({ field: 'F_N6', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'delActBy': new DBMappingInfo({ field: 'F_C7', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'delActDate': new DBMappingInfo({ field: 'F_D7', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'delActChk': new DBMappingInfo({ field: 'F_N7', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'podBy': new DBMappingInfo({ field: 'F_C8', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'podDate': new DBMappingInfo({ field: 'F_D8', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'podChk': new DBMappingInfo({ field: 'F_N8', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'billBy': new DBMappingInfo({ field: 'F_C9', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'billDate': new DBMappingInfo({ field: 'F_D9', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'billChk': new DBMappingInfo({ field: 'F_N9', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'billPacketBy': new DBMappingInfo({ field: 'F_C10', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'billPacketDate': new DBMappingInfo({ field: 'F_D10', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'billPacketChk': new DBMappingInfo({ field: 'F_N10', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'trackerBy': new DBMappingInfo({ field: 'F_C1', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'trackerDate': new DBMappingInfo({ field: 'F_D1', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'trackerChk': new DBMappingInfo({ field: 'F_N1', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'lastTrackBy': new DBMappingInfo({ field: 'F_C2', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'lastTrackDate': new DBMappingInfo({ field: 'F_D2', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'lastTrackChk': new DBMappingInfo({ field: 'F_N2', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'emptyRetBy': new DBMappingInfo({ field: 'F_C3', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'emptyRetDate': new DBMappingInfo({ field: 'F_D3', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'emptyRetChk': new DBMappingInfo({ field: 'F_N3', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'anPrtBy': new DBMappingInfo({ field: 'F_C4', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'anPrtDate': new DBMappingInfo({ field: 'F_D4', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'anPrtChk': new DBMappingInfo({ field: 'F_N4', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'inlandNtcBy': new DBMappingInfo({ field: 'F_C5', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'inlandNtcDate': new DBMappingInfo({ field: 'F_D5', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'inlandNtcChk': new DBMappingInfo({ field: 'F_N5', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'doConfirmBy': new DBMappingInfo({ field: 'F_C6', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'doConfirmDate': new DBMappingInfo({ field: 'F_D6', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'doConfirmChk': new DBMappingInfo({ field: 'F_N6', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'doSentBy': new DBMappingInfo({ field: 'F_C7', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'doSentDate': new DBMappingInfo({ field: 'F_D7', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'doSentChk': new DBMappingInfo({ field: 'F_N7', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'delAddrBy': new DBMappingInfo({ field: 'F_C8', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'delAddrDate': new DBMappingInfo({ field: 'F_D8', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'delAddrChk': new DBMappingInfo({ field: 'F_N8', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'ddpBy': new DBMappingInfo({ field: 'F_C9', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'ddpDate': new DBMappingInfo({ field: 'F_D9', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'ddpChk': new DBMappingInfo({ field: 'F_N9', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'examOnBy': new DBMappingInfo({ field: 'F_C1', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 17 }),\r\n 'examOnDate': new DBMappingInfo({ field: 'F_D1', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 17 }),\r\n 'examOnChk': new DBMappingInfo({ field: 'F_N1', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 17 }),\r\n 'examOffBy': new DBMappingInfo({ field: 'F_C2', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 17 }),\r\n 'examOffDate': new DBMappingInfo({ field: 'F_D2', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 17 }),\r\n 'examOffChk': new DBMappingInfo({ field: 'F_N2', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 17 }),\r\n\r\n // For Oih\r\n 'customsStatus': new DBMappingInfo({ field: 'F_CustomStatus', table: 'T_OIHMAIN' }),\r\n 'cClearDate': new DBMappingInfo({ field: 'F_D3', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 17 }),\r\n 'cClearBy': new DBMappingInfo({ field: 'F_C3', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 17 }),\r\n 'cHoldDate': new DBMappingInfo({ field: 'CHoldDate', table: 'T_OIHMAIN' }),\r\n 'cHoldBy': new DBMappingInfo({ field: 'CHoldBy', table: 'T_OIHMAIN' }),\r\n 'isClear': new DBMappingInfo({ field: 'F_N3', table: 'T_AOTHERINFO', tbName: 'T_OIHMAIN', tbId: '@TbId', type: 17 }),\r\n 'cReleaseDate': new DBMappingInfo({ field: 'F_ClearDate', table: 'T_OIHMAIN' }),\r\n 'cReleaseBy': new DBMappingInfo({ field: 'ClearBy', table: 'T_OIHMAIN' }),\r\n 'fdaHold': new DBMappingInfo({ field: 'F_FDAHold', table: 'T_OIHMAIN' }),\r\n 'fdaHoldDate': new DBMappingInfo({ field: 'FdaHoldDate', table: 'T_OIHMAIN' }),\r\n 'fdaHoldBy': new DBMappingInfo({ field: 'FdaHoldBy', table: 'T_OIHMAIN' }),\r\n //'fdaRls': new DBMappingInfo({ field: 'FdaRls', table: 'T_OIHMAIN' }),\r\n 'fdaRlsDate': new DBMappingInfo({ field: 'F_FDARlsDate', table: 'T_OIHMAIN' }),\r\n 'fdaRlsBy': new DBMappingInfo({ field: 'FdaRlsBy', table: 'T_OIHMAIN' }),\r\n 'oblCol': new DBMappingInfo({ field: 'F_OBLCOL', table: 'T_OIHMAIN' }),\r\n 'oblDate': new DBMappingInfo({ field: 'F_OBLDATE', table: 'T_OIHMAIN' }),\r\n 'oblBy': new DBMappingInfo({ field: 'OblBy', table: 'T_OIHMAIN' }),\r\n \r\n 'rlsDate': new DBMappingInfo({ field: 'F_RLSDATE', table: 'T_OIHMAIN' }),\r\n 'rlsdBy': new DBMappingInfo({ field: 'F_RELEASEBY', table: 'T_OIHMAIN' }),\r\n };\r\n\r\n static _aihDicFieldMappings:IDictionary = {\r\n 'commDocBy': new DBMappingInfo({ field: 'F_C1', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'commDocDate': new DBMappingInfo({ field: 'F_D1', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'commDocChk': new DBMappingInfo({ field: 'F_N1', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'entryDocBy': new DBMappingInfo({ field: 'F_C2', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'entryDocDate': new DBMappingInfo({ field: 'F_D2', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'entryDocChk': new DBMappingInfo({ field: 'F_N2', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'f7501By': new DBMappingInfo({ field: 'F_C3', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'f7501Date': new DBMappingInfo({ field: 'F_D3', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'f7501Chk': new DBMappingInfo({ field: 'F_N3', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'f3461By': new DBMappingInfo({ field: 'F_C4', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'f3461Date': new DBMappingInfo({ field: 'F_D4', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'f3461Chk': new DBMappingInfo({ field: 'F_N4', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'puSentBy': new DBMappingInfo({ field: 'F_C5', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'puSentDate': new DBMappingInfo({ field: 'F_D5', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'puSentChk': new DBMappingInfo({ field: 'F_N5', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'delSchedBy': new DBMappingInfo({ field: 'F_C6', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'delSchedDate': new DBMappingInfo({ field: 'F_D6', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'delSchedChk': new DBMappingInfo({ field: 'F_N6', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'delActBy': new DBMappingInfo({ field: 'F_C7', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'delActDate': new DBMappingInfo({ field: 'F_D7', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'delActChk': new DBMappingInfo({ field: 'F_N7', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'podBy': new DBMappingInfo({ field: 'F_C8', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'podDate': new DBMappingInfo({ field: 'F_D8', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'podChk': new DBMappingInfo({ field: 'F_N8', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'billBy': new DBMappingInfo({ field: 'F_C9', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'billDate': new DBMappingInfo({ field: 'F_D9', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'billChk': new DBMappingInfo({ field: 'F_N9', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'billPacketBy': new DBMappingInfo({ field: 'F_C10', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'billPacketDate': new DBMappingInfo({ field: 'F_D10', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'billPacketChk': new DBMappingInfo({ field: 'F_N10', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 15 }),\r\n 'trackerBy': new DBMappingInfo({ field: 'F_C1', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'trackerDate': new DBMappingInfo({ field: 'F_D1', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'trackerChk': new DBMappingInfo({ field: 'F_N1', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'lastTrackBy': new DBMappingInfo({ field: 'F_C2', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'lastTrackDate': new DBMappingInfo({ field: 'F_D2', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'lastTrackChk': new DBMappingInfo({ field: 'F_N2', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'emptyRetBy': new DBMappingInfo({ field: 'F_C3', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'emptyRetDate': new DBMappingInfo({ field: 'F_D3', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'emptyRetChk': new DBMappingInfo({ field: 'F_N3', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'anPrtBy': new DBMappingInfo({ field: 'F_C4', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'anPrtDate': new DBMappingInfo({ field: 'F_D4', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'anPrtChk': new DBMappingInfo({ field: 'F_N4', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 16 }),\r\n // For Aih\r\n 'anSentBy': new DBMappingInfo({ field: 'F_C5', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'anSentDate': new DBMappingInfo({ field: 'F_D5', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'anSentChk': new DBMappingInfo({ field: 'F_N5', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'firstTrackBy': new DBMappingInfo({ field: 'F_C6', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'firstTrackDate': new DBMappingInfo({ field: 'F_D6', table: 'T_AOTHERINFO', tbName: 'T_AIHMAIN', tbId: '@TbId', type: 16 }),\r\n 'paidDate': new DBMappingInfo({ field: 'X_PAIDDATE', table: 'T_AIHMAIN' }),\r\n 'rlsBy': new DBMappingInfo({ field: 'RlsBy', table: 'T_AIHMAIN' }),\r\n 'isRls': new DBMappingInfo({ field: 'IsRls', table: 'T_AIHMAIN' }),\r\n\r\n };\r\n\r\n static _oehDicFieldMappings:IDictionary = {\r\n 'trackerBy': new DBMappingInfo({ field: 'F_C1', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'trackerDate': new DBMappingInfo({ field: 'F_D1', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'trackerChk': new DBMappingInfo({ field: 'F_N1', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'lastTrackBy': new DBMappingInfo({ field: 'F_C2', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'lastTrackDate': new DBMappingInfo({ field: 'F_D2', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'lastTrackChk': new DBMappingInfo({ field: 'F_N2', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'emptyRetBy': new DBMappingInfo({ field: 'F_C3', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'emptyRetDate': new DBMappingInfo({ field: 'F_D3', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'emptyRetChk': new DBMappingInfo({ field: 'F_N3', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'anPrtBy': new DBMappingInfo({ field: 'F_C4', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'anPrtDate': new DBMappingInfo({ field: 'F_D4', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'anPrtChk': new DBMappingInfo({ field: 'F_N4', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'inlandNtcBy': new DBMappingInfo({ field: 'F_C5', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'inlandNtcDate': new DBMappingInfo({ field: 'F_D5', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'inlandNtcChk': new DBMappingInfo({ field: 'F_N5', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'doConfirmBy': new DBMappingInfo({ field: 'F_C6', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'doConfirmDate': new DBMappingInfo({ field: 'F_D6', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'doConfirmChk': new DBMappingInfo({ field: 'F_N6', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'doSentBy': new DBMappingInfo({ field: 'F_C7', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'doSentDate': new DBMappingInfo({ field: 'F_D7', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'doSentChk': new DBMappingInfo({ field: 'F_N7', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'delAddrBy': new DBMappingInfo({ field: 'F_C8', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'delAddrDate': new DBMappingInfo({ field: 'F_D8', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'delAddrChk': new DBMappingInfo({ field: 'F_N8', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'ddpBy': new DBMappingInfo({ field: 'F_C9', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'ddpDate': new DBMappingInfo({ field: 'F_D9', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'ddpChk': new DBMappingInfo({ field: 'F_N9', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'examOnBy': new DBMappingInfo({ field: 'F_C10', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'examOnDate': new DBMappingInfo({ field: 'F_D10', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'examOnChk': new DBMappingInfo({ field: 'F_N10', table: 'T_AOTHERINFO', tbName: 'T_OOHMAIN', tbId: '@TbId', type: 15 }),\r\n //'isRcvDoc': new DBMappingInfo({ field: 'IsRcvDoc', table: 'T_OOHMAIN' }),\r\n 'rcvDocDate': new DBMappingInfo({ field: 'rcvDocDate', table: 'T_OOHMAIN' }),\r\n 'rcvDocDateBy': new DBMappingInfo({ field: 'rcvDocDateby', table: 'T_OOHMAIN' }),\r\n //'isRcvCargo': new DBMappingInfo({ field: 'IsRcvCargo', table: 'T_OOHMAIN' }),\r\n 'rcvCargoDate': new DBMappingInfo({ field: 'rcvCargoDate', table: 'T_OOHMAIN' }),\r\n 'rcvCargoDateBy': new DBMappingInfo({ field: 'rcvCargoDateBy', table: 'T_OOHMAIN' }),\r\n //'isDlvrCarr': new DBMappingInfo({ field: 'IsDlvrCarr', table: 'T_OOHMAIN' }),\r\n 'dlvrCarrDate': new DBMappingInfo({ field: 'dlvrCarrDate', table: 'T_OOHMAIN' }),\r\n 'dlvrCarrDateby': new DBMappingInfo({ field: 'dlvrCarrDateBy', table: 'T_OOHMAIN' }),\r\n\r\n };\r\n\r\n static _aehDicFieldMappings:IDictionary = {\r\n 'trackerBy': new DBMappingInfo({ field: 'F_C1', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'trackerDate': new DBMappingInfo({ field: 'F_D1', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'trackerChk': new DBMappingInfo({ field: 'F_N1', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'lastTrackBy': new DBMappingInfo({ field: 'F_C2', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'lastTrackDate': new DBMappingInfo({ field: 'F_D2', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'lastTrackChk': new DBMappingInfo({ field: 'F_N2', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'emptyRetBy': new DBMappingInfo({ field: 'F_C3', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'emptyRetDate': new DBMappingInfo({ field: 'F_D3', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'emptyRetChk': new DBMappingInfo({ field: 'F_N3', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'anPrtBy': new DBMappingInfo({ field: 'F_C4', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'anPrtDate': new DBMappingInfo({ field: 'F_D4', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'anPrtChk': new DBMappingInfo({ field: 'F_N4', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'anSentBy': new DBMappingInfo({ field: 'F_C5', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'anSentDate': new DBMappingInfo({ field: 'F_D5', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'anSentChk': new DBMappingInfo({ field: 'F_N5', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'doConfirmBy': new DBMappingInfo({ field: 'F_C6', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'doConfirmDate': new DBMappingInfo({ field: 'F_D6', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'doConfirmChk': new DBMappingInfo({ field: 'F_N6', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'doSentBy': new DBMappingInfo({ field: 'F_C7', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'doSentDate': new DBMappingInfo({ field: 'F_D7', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'doSentChk': new DBMappingInfo({ field: 'F_N7', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'delAddrBy': new DBMappingInfo({ field: 'F_C8', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'delAddrDate': new DBMappingInfo({ field: 'F_D8', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'delAddrChk': new DBMappingInfo({ field: 'F_N8', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'ddpBy': new DBMappingInfo({ field: 'F_C9', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'ddpDate': new DBMappingInfo({ field: 'F_D9', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'ddpChk': new DBMappingInfo({ field: 'F_N9', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 16 }),\r\n 'commDocBy': new DBMappingInfo({ field: 'F_C1', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'commDocDate': new DBMappingInfo({ field: 'F_D1', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'commDocChk': new DBMappingInfo({ field: 'F_N1', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'entryDocBy': new DBMappingInfo({ field: 'F_C2', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'entryDocDate': new DBMappingInfo({ field: 'F_D2', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'entryDocChk': new DBMappingInfo({ field: 'F_N2', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'f7501By': new DBMappingInfo({ field: 'F_C3', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'f7501Date': new DBMappingInfo({ field: 'F_D3', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'f7501Chk': new DBMappingInfo({ field: 'F_N3', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'f3461By': new DBMappingInfo({ field: 'F_C4', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'f3461Date': new DBMappingInfo({ field: 'F_D4', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'f3461Chk': new DBMappingInfo({ field: 'F_N4', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'cargoOnBoard': new DBMappingInfo({ field: 'F_C5', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'delSchedBy': new DBMappingInfo({ field: 'F_C6', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'delSchedDate': new DBMappingInfo({ field: 'F_D6', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 15 }),\r\n 'delSchedChk': new DBMappingInfo({ field: 'F_N6', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TbId', type: 15 }),\r\n\r\n };\r\n\r\n // Called from View to make SQLList by passing arg\r\n static getFieldMappings = (jobName:string):IDictionary => {\r\n if(jobName === JobNames.OIHbl) return this._oihDicFieldMappings;\r\n else if(jobName === JobNames.AIHbl) return this._aihDicFieldMappings;\r\n else if(jobName === JobNames.OEHbl) return this._oehDicFieldMappings;\r\n else return this._aehDicFieldMappings;\r\n };\r\n}\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport _ from 'lodash';\r\n\r\nexport enum OihListType {\r\n Normal,\r\n NormalCan,\r\n UseLot,\r\n HblInfo\r\n}\r\n\r\nexport class OiHblListItem extends SearchModelBase {\r\n closed: string = '';\r\n isClosed: boolean|null = null;\r\n invStat: string = '';\r\n billStat: string = '';\r\n crDbStat: string = '';\r\n postDate: string | null = null;\r\n hblNo: string = '';\r\n branch: string = '';\r\n custFName: string = '';\r\n custSName: string = '';\r\n hasCLimit: string = '';\r\n refNo: string = '';\r\n mblNo: string = '';\r\n soNo: string = '';\r\n projectNo: string = '';\r\n shipmentId: string = '';\r\n cargoNo: string = '';\r\n itNo: string = '';\r\n itPlace: string = '';\r\n oblStat: string = '';\r\n \r\n oblDate: string | null = null;\r\n fromOblDate: string | null = null;\r\n toOblDate: string | null = null;\r\n rlsStat: string = '';\r\n\r\n rlsDate: string | null = null;\r\n fromRlsDate: string | null = null;\r\n toRlsDate: string | null = null;\r\n rlsBy: string = '';\r\n payStat: string = '';\r\n payDate: string | null = null;\r\n fromPayDate: string | null = null;\r\n toPayDate: string | null = null;\r\n moveType: string = '';\r\n anFax: string | null = null;\r\n fromAnFax: string | null = null;\r\n toAnFax: string | null = null;\r\n anEmail: string | null = null;\r\n fromAnEmail: string | null = null;\r\n toAnEmail: string | null = null;\r\n doorMove: boolean|null = null;\r\n cClear: boolean|null = null;\r\n cHold: boolean|null = null;\r\n pkgs: number|null = null;\r\n fromPkgs: number|null = null;\r\n toPkgs: number|null = null;\r\n lbs: number|null = null;\r\n fromLbs: number|null = null;\r\n toLbs: number|null = null;\r\n kgs: number|null = null;\r\n fromKgs: number|null = null;\r\n toKgs: number|null = null;\r\n cbm: number|null = null;\r\n fromCbm: number|null = null;\r\n toCbm: number|null = null;\r\n lPort: string = '';\r\n fDest: string = '';\r\n commodity: string = '';\r\n operator: string = '';\r\n csr: string = '';\r\n createdAt: string | null = null;\r\n fromCreatedAt: string | null = null;\r\n toCreatedAt: string | null = null;\r\n custRefNo: string = '';\r\n eta: string | null = null;\r\n fromEta: string | null = null;\r\n toEta: string | null = null;\r\n fEta: string | null = null;\r\n fromFEta: string | null = null;\r\n toFEta: string | null = null;\r\n lastFreeDay: string | null = null;\r\n fromLastFreeDay: string | null = null;\r\n toLastFreeDay: string | null = null;\r\n cntrNo: string = '';\r\n cntrType: string = '';\r\n sManID: string = '';\r\n aName: string = '';\r\n sName: string = '';\r\n shipperName: string | null = null;\r\n cName: string = '';\r\n consigneeName: string | null = null;\r\n nName: string = '';\r\n notifyName: string | null = null;\r\n bName: string = '';\r\n brokerName: string | null = null;\r\n subMBl: string = '';\r\n subBl: string = '';\r\n poNo: string = '';\r\n amsBlNo: string = '';\r\n fWhse: string = '';\r\n dvnEdi: string | null = null;\r\n fromDvnEdi: string | null = null;\r\n toDvnEdi: string | null = null;\r\n rlsEdi: string | null = null;\r\n fromRlsEdi: string | null = null;\r\n toRlsEdi: string | null = null;\r\n doorDlvLoc: string = '';\r\n vessel: string = '';\r\n voyage: string = '';\r\n dPort: string = '';\r\n isfNo: string = '';\r\n canShareFile: boolean = false;\r\n pimsLinkId: number = 0;\r\n amsLinkId: number = 0;\r\n id: number = 0;\r\n deliverToName: string = '';\r\n shipmentType: string = '';\r\n doorDlvETA: string | null = null;\r\n fromDoorDlvETA: string | null = null;\r\n toDoorDlvETA: string | null = null;\r\n anPrint: string | null = null;\r\n fromAnPrint: string | null = null;\r\n toAnPrint: string | null = null;\r\n lotNo: string = '';\r\n\r\n trackerDate: string | null = null;\r\n fromTrackerDate: string | null = null;\r\n toTrackerDate: string | null = null;\r\n trackerUser: string = '';\r\n \r\n lastTrackedDate: string | null = null;\r\n fromLastTrackedDate: string | null = null;\r\n toLastTrackedDate: string | null = null;\r\n lastTrackedUser: string = '';\r\n \r\n anPrintedDate: string | null = null; // ** 이름은 PrtChk으로 되어있지만 실제 Email or Fax를 전송했을 때 설정된다.\r\n fromANPrintedDate: string | null = null;\r\n toANPrintedDate: string | null = null;\r\n anPrintedUser: string = '';\r\n \r\n cDocRcvdDate: string | null = null;\r\n fromCDocRcvdDate: string | null = null;\r\n toCDocRcvdDate: string | null = null;\r\n cDocRcvdUser: string = '';\r\n \r\n eDocSentDate: string | null = null;\r\n fromEDocSentDate: string | null = null;\r\n toEDocSentDate: string | null = null;\r\n eDocSentUser: string = '';\r\n \r\n f7501RcvdDate: string | null = null;\r\n from7501RcvdDate: string | null = null;\r\n to7501RcvdDate: string | null = null;\r\n f7501RcvdUser: string = '';\r\n \r\n f3461RcvdDate: string | null = null;\r\n from3461RcvdDate: string | null = null;\r\n to3461RcvdDate: string | null = null;\r\n f3461RcvdUser: string = '';\r\n \r\n inlandNoticeSentDate: string | null = null;\r\n fromInlandNoticeSentDate: string | null = null;\r\n toInlandNoticeSentDate: string | null = null;\r\n inlandNoticeSentUser: string = '';\r\n \r\n puInfoSentDate: string | null = null;\r\n fromPUInfoSentDate: string | null = null;\r\n toPUInfoSentDate: string | null = null;\r\n puInfoSentUser: string = '';\r\n \r\n doReceiptCfrmdDate: string | null = null;\r\n fromDoReceiptCfrmdDate: string | null = null;\r\n toDoReceiptCfrmdDate: string | null = null;\r\n doReceiptCfrmdUser: string = '';\r\n \r\n doSentDate: string | null = null;\r\n fromDOSentDate: string | null = null;\r\n toDOSentDate: string | null = null;\r\n doSentUser: string = '';\r\n \r\n dlvAddrCfrmdDate: string | null = null;\r\n fromDlvAddrCfrmdDate: string | null = null;\r\n toDlvAddrCfrmdDate: string | null = null;\r\n dlvAddrCfrmdUser: string = '';\r\n \r\n dlvSchdDate: string | null = null;\r\n fromDlvSchdDate: string | null = null;\r\n toDlvSchdDate: string | null = null;\r\n dlvSchdUser: string = '';\r\n \r\n actDlvDate: string | null = null;\r\n fromActDlvDate: string | null = null;\r\n toActDlvDate: string | null = null;\r\n actDlvUser: string = '';\r\n \r\n emptyRtnDate: string | null = null;\r\n fromEmptyRtnDate: string | null = null;\r\n toEmptyRtnDate: string | null = null;\r\n emptyRtnUser: string = '';\r\n \r\n podRcvdDate: string | null = null;\r\n fromPODRcvdDate: string | null = null;\r\n toPODRcvdDate: string | null = null;\r\n podRcvdUser: string = '';\r\n \r\n billingCpldDate: string | null = null;\r\n fromBillingCpldDate: string | null = null;\r\n toBillingCpldDate: string | null = null;\r\n billingCpldUser: string = '';\r\n\r\n mailDate: string | null = null;\r\n fromMailDate: string | null = null;\r\n toMailDate: string | null = null;\r\n mailUser: string = '';\r\n oiMblId: number = 0;\r\n confirmDate: string | null = null;\r\n fromConfirmDate: string | null = null;\r\n toConfirmDate: string | null = null;\r\n etd: string | null = null;\r\n expRls: boolean = false;\r\n oblCol: string = '';\r\n recognized: string = '';\r\n status: string = '';\r\n\r\n // cloud\r\n bizMode: string = '';\r\n u2Date: string | null = null;\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n u2ID: string = '';\r\n u1ID: string = '';\r\n canBeDeleted: boolean = false;\r\n anPrtChk: boolean = false; // ** 이름은 PrtChk으로 되어있지만 실제 Email or Fax를 전송했을 때 설정된다.\r\n \r\n //PGA Hold\r\n fdaHoldDate: string | null = null;\r\n fromFdaHoldDate: string | null = null;\r\n toFdaHoldDate: string | null = null;\r\n\r\n //PGA Rls\r\n fdaRlsDate: string | null = null;\r\n fromFdaRlsDate: string | null = null;\r\n toFdaRlsDate: string | null = null;\r\n\r\n //Customs Rls\r\n clearDate: string | null = null;\r\n fromClearDate: string | null = null;\r\n toClearDate: string | null = null;\r\n\r\n //Customs Hold\r\n cHoldDate: string | null = null;\r\n fromCHoldDate: string | null = null;\r\n toCHoldDate: string | null = null;\r\n\r\n //Exam On\r\n examOnDate: string | null = null;\r\n fromExamOnDate: string | null = null;\r\n toExamOnDate: string | null = null;\r\n\r\n //Exam Off\r\n examOffDate: string | null = null;\r\n fromExamOffDate: string | null = null;\r\n toExamOffDate: string | null = null;\r\n\r\n //DDP\r\n ddpDate: string | null = null; \r\n fromDdpDate: string | null = null;\r\n toDdpDate: string | null = null;\r\n\r\n // Need to check if it's returned from server. currently service is down.\r\n // It is added to avoid compile error\r\n customer: number = 0\r\n\r\n trType: string = ''\r\n trStatus:string=''\r\n trStatusDesc:string=''\r\n trDate: string | null = null;\r\n fromTrDate: string | null = null;\r\n toTrDate: string | null = null;\r\n\r\n //Track Event\r\n lastEvent: string = '';\r\n lastEventDate: string | null = null;\r\n\r\n //useChb: boolean = false;\r\n //useIsf: boolean = false;\r\n //useAms: boolean = false;\r\n useAmsBlNo: boolean = false;\r\n useIsfNo: boolean = false;\r\n useAms: boolean = false;\r\n useIsf: boolean = false;\r\n chbRspCode: string = '';\r\n chbRspMsg: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', canBeHidden: false, resizable: false, sortable: true, hiddenInColumnSetup: true }),\r\n XCol.Create({ col: 1, text: 'R', width: 30, dataIndex: 'recognized', canBeHidden: false, resizable: false, sortable: true, filterable: true, noNullOrEmptySearch: true, hiddenInColumnSetup: true }),\r\n XCol.Create({ col: 58, text: 'D/ID', width: 35, dataIndex: 'shipmentType', resizable: false, sortable: true, noNullOrEmptySearch: true }),\r\n \r\n XCol.Create({ col: 2, text: 'HBL', width: 100, dataIndex: 'hblNo' }),\r\n\r\n XCol.Create({ col: 3, text: 'AMS', width: 50, dataIndex: 'useAmsBlNo', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 4, text: 'ISF', width: 50, dataIndex: 'useIsfNo', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 5, text: 'iCHB', width: 40, dataIndex: 'chbRspCode', align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n\r\n XCol.Create({ col: 6, text: 'BR', width: 40, dataIndex: 'branch', align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 7, text: 'Customer', width: 120, dataIndex: 'custSName' }),\r\n XCol.Create({ col: 8, text: 'Credit', width: 60, dataIndex: 'hasCLimit', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 9, text: 'Ref. #', width: 100, dataIndex: 'refNo', defaultColumnFocus: true }),\r\n XCol.Create({ col: 10, text: 'RQ', width: 210, dataIndex: 'trStatus' }),\r\n \r\n // XCol.Create({ col: 10, text: 'Last Event', width: 85, dataIndex: 'lastEvent', noNullOrEmptySearch: true }),\r\n\r\n XCol.Create({ col: 11, text: 'MBL', width: 100, dataIndex: 'mblNo' }),\r\n XCol.Create({ col: 12, text: 'S/O', width: 80, dataIndex: 'soNo' }),\r\n XCol.Create({ col: 13, text: 'Project ID', width: 80, dataIndex: 'projectNo' }),\r\n XCol.Create({ col: 14, text: 'In-bond', width: 80, dataIndex: 'itNo' }),\r\n XCol.Create({ col: 15, text: 'O B/L', width: 50, dataIndex: 'oblStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 16, text: 'O B/L RCVD', width: 75, dataIndex: 'oblDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 17, text: 'RLSD', width: 50, dataIndex: 'rlsStat' }),\r\n XCol.Create({ col: 18, text: 'Cargo RLSD', width: 75, dataIndex: 'rlsDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 19, text: 'P', width: 40, dataIndex: 'payStat', align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 20, text: 'Paid', width: 75, dataIndex: 'payDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 21, text: 'Move Type', width: 80, dataIndex: 'moveType', align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 22, text: 'A/N', width: 50, dataIndex: 'anPrtChk', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 23, text: 'DR', width: 50, dataIndex: 'doorMove', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 24, text: 'CC', width: 50, dataIndex: 'cClear', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 25, text: 'CH', width: 50, dataIndex: 'cHold', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 26, text: 'PKG(s)', width: 60, dataIndex: 'pkgs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 27, text: 'LBS', width: 60, dataIndex: 'lbs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 28, text: 'KGS', width: 60, dataIndex: 'kgs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 29, text: 'CBM', width: 60, dataIndex: 'cbm', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.000', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 30, text: 'Loading Port', width: 120, dataIndex: 'lPort' }),\r\n XCol.Create({ col: 31, text: 'Final Dest', width: 120, dataIndex: 'fDest' }),\r\n XCol.Create({ col: 32, text: 'Commodity', width: 120, dataIndex: 'commodity' }),\r\n XCol.Create({ col: 33, text: 'Prep.', width: 80, dataIndex: 'operator' }),\r\n XCol.Create({ col: 34, text: 'CSR', width: 80, dataIndex: 'csr' }),\r\n XCol.Create({ col: 35, text: 'Customer Ref.', width: 100, dataIndex: 'custRefNo' }),\r\n XCol.Create({ col: 36, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 37, text: 'F.ETA', width: 75, dataIndex: 'fEta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 38, text: 'L.F.D', width: 75, dataIndex: 'lastFreeDay', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 39, text: 'D.ETA', width: 75, dataIndex: 'doorDlvETA', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 40, text: 'Container', width: 90, dataIndex: 'cntrNo' }),\r\n XCol.Create({ col: 41, text: 'Type', width: 60, dataIndex: 'cntrType' }),\r\n XCol.Create({ col: 42, text: 'Sales', width: 80, dataIndex: 'sManID' }),\r\n XCol.Create({ col: 43, text: 'Agent', width: 120, dataIndex: 'aName' }),\r\n XCol.Create({ col: 44, text: 'Shipper', width: 120, dataIndex: 'shipperName', hasCustomTooltip: true }),\r\n XCol.Create({ col: 45, text: 'Consignee', width: 120, dataIndex: 'consigneeName', hasCustomTooltip: true }),\r\n XCol.Create({ col: 46, text: 'Notify', width: 120, dataIndex: 'notifyName', hasCustomTooltip: true }),\r\n XCol.Create({ col: 47, text: 'Broker', width: 120, dataIndex: 'brokerName', hasCustomTooltip: true, visible: false }),\r\n XCol.Create({ col: 48, text: 'Sub MBL', width: 120, dataIndex: 'subMBl', visible: false }),\r\n XCol.Create({ col: 49, text: 'Sub HBL', width: 120, dataIndex: 'subBl', visible: false }),\r\n XCol.Create({ col: 50, text: 'Freight Location', width: 120, dataIndex: 'fWhse' }),\r\n XCol.Create({ col: 51, text: 'Dvn. EDI', width: 75, dataIndex: 'dvnEdi', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 52, text: 'Door Delivery', width: 120, dataIndex: 'doorDlvLoc' }),\r\n XCol.Create({ col: 53, text: 'Vessel', width: 120, dataIndex: 'vessel' }),\r\n XCol.Create({ col: 54, text: 'Voyage', width: 60, dataIndex: 'voyage' }),\r\n XCol.Create({ col: 55, text: 'Discharge Port', width: 80, dataIndex: 'dPort' }),\r\n XCol.Create({ col: 56, text: 'Tracking Date', width: 100, dataIndex: 'trDate', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center }),\r\n \r\n XCol.Create({ col: 59, text: 'INV', width: 35, dataIndex: 'invStat', align: XCol.XAlignType.Center, resizable: false, sortable: true, noNullOrEmptySearch: true, visible: false }),\r\n XCol.Create({ col: 60, text: 'BIL', width: 35, dataIndex: 'billStat', align: XCol.XAlignType.Center, resizable: false, sortable: true, noNullOrEmptySearch: true, visible: false }),\r\n XCol.Create({ col: 61, text: 'CrDb', width: 35, dataIndex: 'crDbStat', align: XCol.XAlignType.Center, resizable: false, sortable: true, noNullOrEmptySearch: true, visible: false }),\r\n \r\n // XCol.Create({ col: 6, text: 'Biz', width: 57, dataIndex: 'bizMode', tooltip: 'Biz Mode'}),\r\n \r\n // start - For Hbl Information \r\n XCol.Create({ col: 61, text: 'Tracker', width: 75, dataIndex: 'trackerDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 62, text: 'Last Tracked', width: 75, dataIndex: 'lastTrackedDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 63, text: 'Send A/N', width: 75, dataIndex: 'anPrintedDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 64, text: 'Rcv C. Doc', width: 75, dataIndex: 'cDocRcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 65, text: 'Send E. Doc', width: 75, dataIndex: 'eDocSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 66, text: 'Rcv 7501', width: 75, dataIndex: 'f7501RcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 67, text: 'Rcv 3461', width: 75, dataIndex: 'f3461RcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 68, text: 'Customs Rls', width: 75, dataIndex: 'clearDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 69, text: 'Customs Hold', width: 75, dataIndex: 'cHoldDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 70, text: 'Exam On', width: 75, dataIndex: 'examOnDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 71, text: 'Exam Off', width: 75, dataIndex: 'examOffDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 72, text: 'PGA Hold', width: 75, dataIndex: 'fdaHoldDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 73, text: 'PGA Rls', width: 75, dataIndex: 'fdaRlsDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 74, text: 'Send IT', width: 75, dataIndex: 'inlandNoticeSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 75, text: 'Send P/U Info', width: 75, dataIndex: 'puInfoSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 76, text: 'Cfm DO', width: 75, dataIndex: 'doReceiptCfrmdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 77, text: 'Cfm D/A', width: 75, dataIndex: 'dlvAddrCfrmdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 78, text: 'Send DO', width: 75, dataIndex: 'doSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 79, text: 'ETD', width: 75, dataIndex: 'dlvSchdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 80, text: 'ATD', width: 75, dataIndex: 'actDlvDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 81, text: 'Rtn E. CNTR', width: 75, dataIndex: 'emptyRtnDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 82, text: 'Rcv POD', width: 75, dataIndex: 'podRcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 83, text: 'Bill Complete', width: 75, dataIndex: 'billingCpldDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 84, text: 'DDP', width: 75, dataIndex: 'ddpDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n //end - Hbl Information\r\n \r\n XCol.Create({ col: 85, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 86, text: 'Create by', width: 80, dataIndex: 'u1ID', visible: false }),\r\n XCol.Create({ col: 87, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 88, text: 'Update by', width: 80, dataIndex: 'u2ID', visible: false }),\r\n \r\n //for use tooltip\r\n XCol.Create({ col: 89, text: '', width: 0, dataIndex: 'sName', hiddenInColumnSetup: true, visible: false }),\r\n XCol.Create({ col: 90, text: '', width: 0, dataIndex: 'bName', hiddenInColumnSetup: true, visible: false }),\r\n XCol.Create({ col: 91, text: '', width: 0, dataIndex: 'nName', hiddenInColumnSetup: true, visible: false }),\r\n XCol.Create({ col: 92, text: '', width: 0, dataIndex: 'cName', hiddenInColumnSetup: true, visible: false }),\r\n ];\r\n\r\n private static ExportCollection_Can: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', canBeHidden: false, resizable: false, sortable: true, hiddenInColumnSetup: true }),\r\n XCol.Create({ col: 1, text: 'R', width: 30, dataIndex: 'recognized', canBeHidden: false, resizable: false, sortable: true, filterable: true, noNullOrEmptySearch: true, hiddenInColumnSetup: true }),\r\n XCol.Create({ col: 58, text: 'D/ID', width: 35, dataIndex: 'shipmentType', canBeHidden: true, resizable: false, sortable: true, noNullOrEmptySearch: true }),\r\n \r\n //XCol.Create({ col: 6, text: 'Biz', width: 57, dataIndex: 'bizMode', tooltip: 'Biz Mode'}),\r\n XCol.Create({ col: 2, text: 'HBL', width: 100, dataIndex: 'hblNo' }),\r\n\r\n XCol.Create({ col: 3, text: 'AMS', width: 50, dataIndex: 'useAmsBlNo', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 4, text: 'ISF', width: 50, dataIndex: 'useIsfNo', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 5, text: 'iCHB', width: 40, dataIndex: 'chbRspCode', align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n\r\n XCol.Create({ col: 6, text: 'BR', width: 40, dataIndex: 'branch', align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 7, text: 'Customer', width: 120, dataIndex: 'custSName' }),\r\n XCol.Create({ col: 8, text: 'Credit', width: 60, dataIndex: 'hasCLimit', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 9, text: 'Ref. #', width: 100, dataIndex: 'refNo', defaultColumnFocus: true }),\r\n \r\n // XCol.Create({ col: 10, text: 'Last Event', width: 85, dataIndex: 'lastEvent', noNullOrEmptySearch: true }),\r\n\r\n XCol.Create({ col: 11, text: 'MBL', width: 100, dataIndex: 'mblNo' }),\r\n XCol.Create({ col: 12, text: 'S/O', width: 80, dataIndex: 'soNo' }),\r\n XCol.Create({ col: 13, text: 'Project ID', width: 80, dataIndex: 'projectNo' }),\r\n XCol.Create({ col: 14, text: 'In-bond', width: 80, dataIndex: 'itNo' }),\r\n XCol.Create({ col: 15, text: 'O B/L', width: 50, dataIndex: 'oblStat', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 16, text: 'O B/L RCVD', width: 75, dataIndex: 'oblDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 17, text: 'RLSD', width: 50, dataIndex: 'rlsStat' }),\r\n XCol.Create({ col: 18, text: 'Cargo RLSD', width: 75, dataIndex: 'rlsDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 19, text: 'P', width: 40, dataIndex: 'payStat', align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 20, text: 'Paid Date', width: 75, dataIndex: 'payDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 21, text: 'Move Type', width: 80, dataIndex: 'moveType', align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 22, text: 'A/N', width: 50, dataIndex: 'anPrtChk', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 23, text: 'DR', width: 50, dataIndex: 'doorMove', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 24, text: 'CC', width: 50, dataIndex: 'cClear', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 25, text: 'CH', width: 50, dataIndex: 'cHold', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 26, text: 'PKG(s)', width: 60, dataIndex: 'pkgs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 27, text: 'LBS', width: 60, dataIndex: 'lbs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 28, text: 'KGS', width: 60, dataIndex: 'kgs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 29, text: 'CBM', width: 60, dataIndex: 'cbm', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.000', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 30, text: 'Loading Port', width: 120, dataIndex: 'lPort' }),\r\n XCol.Create({ col: 31, text: 'Final Dest', width: 120, dataIndex: 'fDest' }),\r\n XCol.Create({ col: 32, text: 'Commodity', width: 120, dataIndex: 'commodity' }),\r\n XCol.Create({ col: 33, text: 'Prep.', width: 80, dataIndex: 'operator' }),\r\n XCol.Create({ col: 34, text: 'CSR', width: 80, dataIndex: 'csr' }),\r\n XCol.Create({ col: 35, text: 'Customer Ref.', width: 100, dataIndex: 'custRefNo' }),\r\n XCol.Create({ col: 36, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 37, text: 'F.ETA', width: 75, dataIndex: 'fEta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 38, text: 'L.F.D', width: 75, dataIndex: 'lastFreeDay', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 39, text: 'D.ETA', width: 75, dataIndex: 'doorDlvETA', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 40, text: 'Container', width: 90, dataIndex: 'cntrNo' }),\r\n XCol.Create({ col: 41, text: 'Type', width: 60, dataIndex: 'cntrType' }),\r\n XCol.Create({ col: 42, text: 'Sales', width: 80, dataIndex: 'sManID' }),\r\n XCol.Create({ col: 43, text: 'Agent', width: 120, dataIndex: 'aName' }),\r\n XCol.Create({ col: 44, text: 'Shipper', width: 120, dataIndex: 'shipperName', hasCustomTooltip: true }),\r\n XCol.Create({ col: 45, text: 'Consignee', width: 120, dataIndex: 'consigneeName', hasCustomTooltip: true }),\r\n XCol.Create({ col: 46, text: 'Notify', width: 120, dataIndex: 'notifyName', hasCustomTooltip: true }),\r\n XCol.Create({ col: 47, text: 'Broker', width: 120, dataIndex: 'brokerName', hasCustomTooltip: true, visible: false }),\r\n XCol.Create({ col: 48, text: 'Sub MBL', width: 120, dataIndex: 'subMBl', visible: false }),\r\n XCol.Create({ col: 49, text: 'Sub HBL', width: 120, dataIndex: 'subBl', visible: false }),\r\n XCol.Create({ col: 50, text: 'Freight Location', width: 120, dataIndex: 'fWhse' }),\r\n XCol.Create({ col: 51, text: 'Dvn. EDI', width: 75, dataIndex: 'dvnEdi', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 52, text: 'Door Delivery', width: 120, dataIndex: 'doorDlvLoc' }),\r\n XCol.Create({ col: 53, text: 'Vessel', width: 120, dataIndex: 'vessel' }),\r\n XCol.Create({ col: 54, text: 'Voyage', width: 60, dataIndex: 'voyage' }),\r\n XCol.Create({ col: 55, text: 'Discharge Port', width: 80, dataIndex: 'dPort' }),\r\n XCol.Create({ col: 56, text: 'Tracking Date', width: 100, dataIndex: 'trDate', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center }),\r\n \r\n XCol.Create({ col: 59, text: 'INV', width: 35, dataIndex: 'invStat', align: XCol.XAlignType.Center, resizable: false, sortable: true, noNullOrEmptySearch: true, visible: false }),\r\n XCol.Create({ col: 60, text: 'BIL', width: 35, dataIndex: 'billStat', align: XCol.XAlignType.Center, resizable: false, sortable: true, noNullOrEmptySearch: true, visible: false }),\r\n XCol.Create({ col: 61, text: 'CrDb', width: 35, dataIndex: 'crDbStat', align: XCol.XAlignType.Center, resizable: false, sortable: true, noNullOrEmptySearch: true, visible: false }),\r\n \r\n //same showMilestone Check\r\n XCol.Create({ col: 64, text: 'Tracker', width: 75, dataIndex: 'trackerDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 65, text: 'Last Tracked', width: 75, dataIndex: 'lastTrackedDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 66, text: 'Send A/N', width: 75, dataIndex: 'anPrintedDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 67, text: 'Rcv C. Doc', width: 75, dataIndex: 'cDocRcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 68, text: 'Send E. Doc', width: 75, dataIndex: 'eDocSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 69, text: 'Rcv 7501', width: 75, dataIndex: 'f7501RcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 70, text: 'Rcv 3461', width: 75, dataIndex: 'f3461RcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 71, text: 'Customs Rel', width: 75, dataIndex: 'clearDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 72, text: 'Customs Hold', width: 75, dataIndex: 'cHoldDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 73, text: 'Exam On', width: 75, dataIndex: 'examOnDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 74, text: 'Exam Off', width: 75, dataIndex: 'examOffDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 75, text: 'PGA Hold', width: 75, dataIndex: 'fdaHoldDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 76, text: 'PGA Rel', width: 75, dataIndex: 'fdaRlsDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 77, text: 'Send IT', width: 75, dataIndex: 'inlandNoticeSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 78, text: 'Send P/U Info', width: 75, dataIndex: 'puInfoSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 79, text: 'Cfm DO', width: 75, dataIndex: 'doReceiptCfrmdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 80, text: 'Cfm D/A', width: 75, dataIndex: 'dlvAddrCfrmdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 81, text: 'Send DO', width: 75, dataIndex: 'doSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 82, text: 'ETD', width: 75, dataIndex: 'dlvSchdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 83, text: 'ATD', width: 75, dataIndex: 'actDlvDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 84, text: 'Rtn E. CNTR', width: 75, dataIndex: 'emptyRtnDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 85, text: 'Rcv POD', width: 75, dataIndex: 'podRcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 86, text: 'Bill Complete', width: 75, dataIndex: 'billingCpldDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 87, text: 'DDP', width: 75, dataIndex: 'ddpDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n \r\n XCol.Create({ col: 88, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 89, text: 'Create by', width: 80, dataIndex: 'u1ID', visible: false }),\r\n XCol.Create({ col: 90, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 91, text: 'Update by', width: 80, dataIndex: 'u2ID', visible: false }),\r\n \r\n //for use tooltip\r\n XCol.Create({ col: 92, text: '', width: 10, dataIndex: 'sName', hiddenInColumnSetup: true, visible: false }),\r\n XCol.Create({ col: 93, text: '', width: 10, dataIndex: 'bName', hiddenInColumnSetup: true, visible: false }),\r\n XCol.Create({ col: 94, text: '', width: 10, dataIndex: 'nName', hiddenInColumnSetup: true, visible: false }),\r\n XCol.Create({ col: 94, text: '', width: 10, dataIndex: 'cName', hiddenInColumnSetup: true, visible: false }),\r\n ];\r\n\r\n \r\n\r\n public static getExportCollection(ltype: OihListType, useTrackingService: boolean, useBranch: boolean): XCol.XExportColumn[] {\r\n let expCollection = _.cloneDeep(ltype === OihListType.NormalCan ? this.ExportCollection_Can : this.ExportCollection);\r\n\r\n if (!useTrackingService) expCollection = expCollection.filter(x => x.dataIndex !== 'trDate');\r\n\r\n if (ltype === OihListType.NormalCan) return expCollection; //this.ExportCollection_Can;\r\n\r\n //let expCollection = _.cloneDeep(this.ExportCollection);\r\n let showInfo = false;\r\n switch (ltype) {\r\n case OihListType.Normal:\r\n case OihListType.UseLot:\r\n showInfo = false;\r\n break;\r\n case OihListType.HblInfo:\r\n showInfo = true;\r\n break;\r\n default:\r\n return [];\r\n }\r\n\r\n const infoCols = [\r\n 'trackerDate',\r\n 'lastTrackedDate',\r\n 'anPrintedDate',\r\n 'cDocRcvdDate',\r\n 'eDocSentDate',\r\n 'f7501RcvdDate',\r\n 'f3461RcvdDate',\r\n 'clearDate',\r\n 'cHoldDate',\r\n 'examOnDate',\r\n 'examOffDate',\r\n 'fdaHoldDate',\r\n 'fdaRlsDate',\r\n 'inlandNoticeSentDate',\r\n 'puInfoSentDate',\r\n 'doReceiptCfrmdDate',\r\n 'doSentDate',\r\n 'dlvAddrCfrmdDate',\r\n 'dlvSchdDate',\r\n 'actDlvDate',\r\n 'emptyRtnDate',\r\n 'podRcvdDate',\r\n 'billingCpldDate',\r\n 'ddpDate',\r\n ];\r\n\r\n if (!showInfo) expCollection = expCollection.filter(x => !infoCols.includes(x.dataIndex));\r\n if (!useBranch) expCollection = expCollection.filter(x => x.dataIndex !== 'branch');\r\n return expCollection;\r\n // expCollection.filter(x => [OiHblListItem.prototype.lotNo,\r\n // OiHblListItem.prototype.trackerDate,\r\n // OiHblListItem.prototype.lastTrackedDate,\r\n // OiHblListItem.prototype.anPrintedDate,\r\n // OiHblListItem.prototype.cDocRcvdDate,\r\n // OiHblListItem.prototype.eDocSentDate,\r\n // OiHblListItem.prototype.f7501RcvdDate,\r\n // OiHblListItem.prototype.f3461RcvdDate,\r\n // OiHblListItem.prototype.inlandNoticeSentDate,\r\n // OiHblListItem.prototype.puInfoSentDate,\r\n // OiHblListItem.prototype.doReceiptCfrmdDate,\r\n // OiHblListItem.prototype.doSentDate,\r\n // OiHblListItem.prototype.dlvAddrCfrmdDate,\r\n // OiHblListItem.prototype.dlvSchdDate,\r\n // OiHblListItem.prototype.actDlvDate,\r\n // OiHblListItem.prototype.emptyRtnDate,\r\n // OiHblListItem.prototype.podRcvdDate,\r\n // OiHblListItem.prototype.billingCpldDate\r\n // ].indexOf(x.dataIndex) >= 0).forEach(x => {\r\n // x.visible = showInfo;\r\n // });\r\n };\r\n\t\r\n public static OrderBy = { orderBy: OiHblListItem.prototype.createdAt , orderByAscending: false };\r\n\r\n public static formatData(data: OiHblListItem[]) {\r\n return data.map((d: OiHblListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n oblDate: { from: 'fromOblDate', to: 'toOblDate'},\r\n rlsDate: { from: 'fromRlsDate', to: 'toRlsDate'},\r\n payDate: { from: 'fromPayDate', to: 'toPayDate'},\r\n lastFreeDay: { from: 'fromLastFreeDay', to: 'toLastFreeDay'},\r\n eta: { from: 'fromEta', to: 'toEta'},\r\n fEta: { from: 'fromFEta', to: 'toFEta'},\r\n doorDlvETA: { from: 'fromDoorDlvETA', to: 'toDoorDlvETA'},\r\n u2Date: { from: 'fromU2Date', to: 'toU2Date'},\r\n cDocRcvdDate: { from: 'fromCDocRcvdDate', to: 'toCDocRcvdDate'},\r\n eDocSentDate: { from: 'fromEDocSentDate', to: 'toEDocSentDate'},\r\n f7501RcvdDate: { from: 'fromF7501RcvdDate', to: 'toF7501RcvdDate'},\r\n f3461RcvdDate: { from: 'fromF3461RcvdDate', to: 'toF3461RcvdDate'},\r\n inlandNoticeSentDate: { from: 'fromInlandNoticeSentDate', to: 'toInlandNoticeSentDate'},\r\n puInfoSentDate: { from: 'fromPuInfoSentDate', to: 'toPuInfoSentDate'},\r\n doReceiptCfrmdDate: { from: 'fromDoReceiptCfrmdDate', to: 'toDoReceiptCfrmdDate'},\r\n dlvAddrCfrmdDate: { from: 'fromDlvAddrCfrmdDate', to: 'toDlvAddrCfrmdDate'},\r\n doSentDate: { from: 'fromDoSentDate', to: 'toDoSentDate'},\r\n dlvSchdDate: { from: 'fromDlvSchdDate', to: 'toDlvSchdDate'},\r\n actDlvDate: { from: 'fromActDlvDate', to: 'toActDlvDate'},\r\n emptyRtnDate: { from: 'fromEmptyRtnDate', to: 'toEmptyRtnDate'},\r\n podRcvdDate: { from: 'fromPodRcvdDate', to: 'toPodRcvdDate'},\r\n billingCpldDate: { from: 'fromBillingCpldDate', to: 'toBillingCpldDate'},\r\n anPrint: { from: 'fromAnPrint', to: 'toAnPrint'},\r\n anPrintedDate: { from: 'fromANPrintedDate', to: 'toANPrintedDate'},\r\n anFax: { from: 'fromAnFax', to: 'toAnFax'},\r\n anEmail: { from: 'fromAnEmail', to: 'toAnEmail'},\r\n createdAt: { from: 'fromCreatedAt', to: 'toCreatedAt'},\r\n pkgs: { from: 'fromPkgs', to: 'toPkgs'},\r\n trackerDate: { from: 'fromTrackerDate', to: 'toTrackerDate'},\r\n lastTrackedDate: { from: 'fromLastTrackedDate', to: 'toLastTrackedDate'},\r\n fdaHoldDate: { from: 'fromFdaHoldDate', to: 'toFdaHoldDate'},\r\n fdaRlsDate: { from: 'fromFdaRlsDate', to: 'toFdaRlsDate'},\r\n clearDate: { from: 'fromClearDate', to: 'toClearDate'},\r\n cHoldDate: { from: 'fromCHoldDate', to: 'toCHoldDate'},\r\n examOnDate: { from: 'fromExamOnDate', to: 'toExamOnDate'},\r\n examOffDate: { from: 'fromExamOffDate', to: 'toExamOffDate'},\r\n ddpDate: { from: 'fromDdpDate', to: 'toDdpDate'},\r\n lbs: { from: 'fromLbs', to: 'toLbs'},\r\n kgs: { from: 'fromKgs', to: 'toKgs'},\r\n cbm: { from: 'fromCbm', to: 'toCbm'},\r\n trDate: {from: 'fromTrDate', to: 'toTrDate' },\r\n dvnEdi: {from: 'fromDvnEdi', to: 'toDvnEdi' },\r\n confirmDate: {from: 'fromConfirmDate', to: 'toConfirmDate'},\r\n }\r\n}\r\n","import _ from 'lodash';\r\nimport { useEffect, useRef } from 'react';\r\n\r\nfunction useDeepCompareMemoize(value) {\r\n const ref = useRef([]);\r\n const signalRef = useRef(0);\r\n\r\n if (!_.isEqual(value, ref.current)) {\r\n ref.current = _.cloneDeep(value);;\r\n signalRef.current += 1;\r\n }\r\n\r\n return [signalRef.current];\r\n}\r\n\r\n\r\nexport default function useDeepCompareEffect(cb, deps) {\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n return useEffect(cb, useDeepCompareMemoize(deps));\r\n}","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport {JobNames} from '../../framework.core/JobNames';\r\nimport _ from 'lodash';\r\n\r\nexport class BillListItem extends SearchModelBase {\r\n billDate: string | null = null;\r\n fromBillDate: string | null = null;\r\n toBillDate: string | null = null;\r\n vendorName: string = '';\r\n branch: string = '';\r\n dueDate: string | null = null;\r\n fromDueDate: string | null = null;\r\n toDueDate: string | null = null;\r\n currency: string = '';\r\n amount: number|null = null;\r\n fromAmount: number|null = null;\r\n toAmount: number|null = null;\r\n vatAmount: number|null = null;\r\n fromVatAmount: number|null = null;\r\n toVatAmount: number|null = null;\r\n paidAmount: number|null = null;\r\n fromPaidAmount: number|null = null;\r\n toPaidAmount: number|null = null;\r\n balance: number|null = null;\r\n fromBalance: number|null = null;\r\n toBalance: number|null = null;\r\n cAmount: number|null = null;\r\n fromCAmount: number|null = null;\r\n toCAmount: number|null = null;\r\n dutyAmount: number|null = null;\r\n fromDutyAmount: number|null = null;\r\n toDutyAmount: number|null = null;\r\n checkNo: string = '';\r\n paidDate: string | null = null;\r\n fromPaidDate: string | null = null;\r\n toPaidDate: string | null = null;\r\n lastClearDate: string | null = null;\r\n fromLastClearDate: string | null = null;\r\n toLastClearDate: string | null = null;\r\n billNo: string = '';\r\n appPaidDate: string | null = null;\r\n fromAppPaidDate: string | null = null;\r\n toAppPaidDate: string | null = null;\r\n remarks: string = '';\r\n description: string = '';\r\n createdBy: string = '';\r\n updatedDate: string | null = null;\r\n fromUpdatedDate: string | null = null;\r\n toUpdatedDate: string | null = null;\r\n createdDate: string | null = null;\r\n fromCreatedDate: string | null = null;\r\n toCreatedDate: string | null = null;\r\n updatedBy: string = '';\r\n id: number = 0;\r\n blNo: string = '';\r\n refNo: string = '';\r\n jobType: string = '';\r\n tbId: number = 0;\r\n tbName: string = '';\r\n postDate: string | null = null;\r\n draftPaid: boolean = false;\r\n confirmed: boolean = false;\r\n\r\n // cloud\r\n status: string = '';\r\n recognized: string = '';\r\n draft: boolean = false;\r\n mblNo: string = '';\r\n hblNo: string = '';\r\n vendorId: number = 0;\r\n vendorRefNo: string = '';\r\n\r\n private static BillExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'R', width: 35, dataIndex: 'recognized', noNullOrEmptySearch: true, hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 2, text: 'Draft', width: 30, dataIndex: 'draft', type: XCol.XCellType.Bool, noNullOrEmptySearch: true, hiddenInColumnSetup: true}),\r\n // XCol.Create({ col: 3, text: 'Void', width: 35, dataIndex: 'void', type: XCol.XCellType.StrBool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 4, text: 'Date', width: 75, dataIndex: 'billDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 5, text: 'Bill #', width: 100, dataIndex: 'billNo',defaultColumnFocus : true}),\r\n XCol.Create({ col: 6, text: 'BR', width: 40, dataIndex: 'branch', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 7, text: 'Vendor', width: 150, dataIndex: 'vendorName'}),\r\n XCol.Create({ col: 8, text: 'Due Date', width: 75, dataIndex: 'dueDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 9, text: 'CUR', width: 40, dataIndex: 'currency', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 10, text: 'Amount', width: 100, dataIndex: 'amount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 11, text: 'VAT', width: 100, dataIndex: 'vatAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 12, text: 'Paid', width: 100, dataIndex: 'paidAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 13, text: 'Balance', width: 100, dataIndex: 'balance', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 14, text: 'Confirmed', width: 60, dataIndex: 'confirmed', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 15, text: 'C. Amount', width: 100, dataIndex: 'cAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 16, text: 'Duty Amount', width: 100, dataIndex: 'dutyAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 17, text: 'Draft Paid', width: 60, dataIndex: 'draftPaid', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: false}),\r\n XCol.Create({ col: 18, text: 'Check #', width: 80, dataIndex: 'checkNo'}),\r\n XCol.Create({ col: 19, text: 'Vendor Ref. #', width: 100, dataIndex: 'vendorRefNo'}),\r\n XCol.Create({ col: 20, text: 'Paid Date', width: 75, dataIndex: 'paidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 21, text: 'Clear Date', width: 75, dataIndex: 'lastClearDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 22, text: 'B. Rcvd.', width: 50, dataIndex: 'invoiced', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 23, text: 'P. Hold', width: 50, dataIndex: 'hold', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 24, text: 'Apprvd', width: 50, dataIndex: 'approved', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 25, text: 'Sch. Date', width: 75, dataIndex: 'appPaidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 26, text: 'Type', width: 40, dataIndex: 'jobType', align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 27, text: 'Ref. #', width: 100, dataIndex: 'refNo'}),\r\n XCol.Create({ col: 28, text: 'MBL/MAWB #', width: 100, dataIndex: 'mblNo'}),\r\n XCol.Create({ col: 28, text: 'HBL/HAWB #', width: 100, dataIndex: 'hblNo'}),\r\n XCol.Create({ col: 30, text: 'Gen. Remark', width: 120, dataIndex: 'remarks', visible: false}),\r\n XCol.Create({ col: 31, text: 'Create Date', width: 100, dataIndex: 'createdDate', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 32, text: 'Create by', width: 80, dataIndex: 'createdBy'}),\r\n XCol.Create({ col: 33, text: 'Update Date', width: 100, dataIndex: 'updatedDate', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 34, text: 'Update by', width: 80, dataIndex: 'updatedBy'}),\r\n ];\r\n\r\n private static GBillExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Draft', width: 30, dataIndex: 'draft', type: XCol.XCellType.Bool, noNullOrEmptySearch: true, hiddenInColumnSetup: true}),\r\n // XCol.Create({ col: 2, text: 'Void', width: 35, dataIndex: 'void', type: XCol.XCellType.StrBool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 3, text: 'Date', width: 75, dataIndex: 'billDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 4, text: 'G. Bill #', width: 100, dataIndex: 'billNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 5, text: 'BR', width: 40, dataIndex: 'branch', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 6, text: 'Vendor', width: 140, dataIndex: 'vendorName'}),\r\n XCol.Create({ col: 7, text: 'Due Date', width: 75, dataIndex: 'dueDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 8, text: 'CUR', width: 40, dataIndex: 'currency', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 9, text: 'Amount', width: 100, dataIndex: 'amount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 10, text: 'VAT', width: 100, dataIndex: 'vatAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 11, text: 'Paid', width: 100, dataIndex: 'paidAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 12, text: 'Balance', width: 100, dataIndex: 'balance', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 13, text: 'Confirmed', width: 60, dataIndex: 'confirmed', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 14, text: 'C. Amount', width: 100, dataIndex: 'cAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 15, text: 'Draft Paid', width: 60, dataIndex: 'draftPaid', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: false}),\r\n XCol.Create({ col: 16, text: 'Check #', width: 100, dataIndex: 'checkNo'}),\r\n XCol.Create({ col: 17, text: 'Paid Date', width: 75, dataIndex: 'paidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 18, text: 'Clear Date', width: 75, dataIndex: 'lastClearDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 19, text: 'B. Rcvd', width: 50, dataIndex: 'invoiced', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 20, text: 'Block', width: 50, dataIndex: 'block', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 21, text: 'Inc.P', width: 50, dataIndex: 'includePE', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 22, text: 'Xfer Exp', width: 50, dataIndex: 'prepaidExStatus', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 23, text: 'G. Bill Remarks', width: 150, dataIndex: 'remarks'}),\r\n XCol.Create({ col: 24, text: 'Billing Description', width: 150, dataIndex: 'description'}),\r\n XCol.Create({ col: 25, text: 'Create Date', width: 100, dataIndex: 'createdDate', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 26, text: 'Create by', width: 80, dataIndex: 'createdBy'}),\r\n XCol.Create({ col: 27, text: 'Update Date', width: 100, dataIndex: 'updatedDate', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 28, text: 'Update by', width: 80, dataIndex: 'updatedBy'}),\r\n ];\r\n\r\n private static WHBillExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Draft', width: 30, dataIndex: 'draft', type: XCol.XCellType.Bool, noNullOrEmptySearch: true, hiddenInColumnSetup: true }),\r\n //XCol.Create({ col: 2, text: 'Recognize', width: 35, dataIndex: 'recognized', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, hiddenInColumnSetup: true }),\r\n // XCol.Create({ col: 3, text: 'Void', width: 35, dataIndex: 'void', type: XCol.XCellType.StrBool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false }),\r\n //XCol.Create({ col: 4, text: 'P', width: 35, dataIndex: 'period', type: XCol.XCellType.StrBool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 5, text: 'Date', width: 75, dataIndex: 'billDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 6, text: 'Bill #', width: 100, dataIndex: 'billNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 7, text: 'Vendor', width: 150, dataIndex: 'vendorName' }),\r\n XCol.Create({ col: 8, text: 'Due Date', width: 75, dataIndex: 'dueDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 9, text: 'CUR', width: 40, dataIndex: 'currency', align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 10, text: 'Amount', width: 100, dataIndex: 'amount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 11, text: 'VAT', width: 100, dataIndex: 'vatAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 12, text: 'Paid', width: 100, dataIndex: 'paidAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 13, text: 'Balance', width: 100, dataIndex: 'balance', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 14, text: 'Confirmed', width: 60, dataIndex: 'confirmed', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 15, text: 'Draft Paid', width: 60, dataIndex: 'draftPaid', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: false}),\r\n XCol.Create({ col: 16, text: 'Check #', width: 100, dataIndex: 'checkNo' }),\r\n XCol.Create({ col: 17, text: 'Paid Date', width: 75, dataIndex: 'paidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 18, text: 'Clear Date', width: 75, dataIndex: 'lastClearDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 19, text: 'B. Rcvd', width: 50, dataIndex: 'invoiced', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 20, text: 'P. Hold', width: 50, dataIndex: 'hold', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 21, text: 'Apprvd', width: 50, dataIndex: 'approved', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 22, text: 'Sch. Date', width: 75, dataIndex: 'appPaidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 23, text: 'Type', width: 60, dataIndex: 'jobType', align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 24, text: 'Receiving/Shipping ID', width: 140, dataIndex: 'refNo', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 25, text: 'Create Date', width: 100, dataIndex: 'createdDate', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 26, text: 'Create by', width: 80, dataIndex: 'createdBy' }),\r\n XCol.Create({ col: 27, text: 'Update Date', width: 100, dataIndex: 'updatedDate', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 28, text: 'Update by', width: 80, dataIndex: 'updatedBy' }),\r\n ];\r\n\r\n public static getExportCollection(jobName: JobNames, useBranch: boolean, useVat: boolean): XCol.XExportColumn[] {\r\n let returnCloumns;\r\n switch (jobName) {\r\n case JobNames.Bill:\r\n returnCloumns = _.cloneDeep(this.BillExportCollection);\r\n break;\r\n case JobNames.GBill:\r\n returnCloumns = _.cloneDeep(this.GBillExportCollection);\r\n break;\r\n case JobNames.WHBill:\r\n returnCloumns = _.cloneDeep(this.WHBillExportCollection);\r\n break;\r\n default:\r\n returnCloumns = _.cloneDeep(this.BillExportCollection);\r\n break;\r\n }\r\n if (!useVat) returnCloumns = returnCloumns.filter(x => x.dataIndex !== 'vatAmount');\r\n if (!useBranch) returnCloumns = returnCloumns.filter(x => x.dataIndex !== 'branch');\r\n\r\n return returnCloumns;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: BillListItem.prototype.postDate, orderByAscending: false };\r\n\r\n public static formatData(data: BillListItem[]) {\r\n return data.map((d: BillListItem) => ({\r\n ...d,\r\n status : d.draft ? '' : d.status\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n billDate: {from: 'fromBillDate', to: 'toBillDate'},\r\n dueDate: {from: 'fromDueDate', to: 'toDueDate'},\r\n amount: {from: 'fromAmount', to: 'toAmount'},\r\n vatAmount: {from: 'fromVatAmount', to: 'toVatAmount'},\r\n paidAmount: {from: 'fromPaidAmount', to: 'toPaidAmount'},\r\n balance: {from: 'fromBalance', to: 'toBalance'},\r\n cAmount: {from: 'fromCAmount', to: 'toCAmount'},\r\n dutyAmount: {from: 'fromDutyAmount', to: 'toDutyAmount'},\r\n paidDate: {from: 'fromPaidDate', to: 'toPaidDate'},\r\n lastClearDate: {from: 'fromLastClearDate', to: 'toLastClearDate'},\r\n appPaidDate: {from: 'fromAppPaidDate', to: 'toAppPaidDate'},\r\n updatedDate: {from: 'fromUpdatedDate', to: 'toUpdatedDate'},\r\n createdDate: {from: 'fromCreatedDate', to: 'toCreatedDate'},\r\n }\r\n}\r\n","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, {ReactNode, useEffect, useRef, useState} from 'react';\r\nimport {faSearch} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\nimport postal from 'postal';\r\nimport {usePopper} from 'react-popper';\r\n\r\nimport Table from '../../ui/tables/Table';\r\nimport useTableNavigation from '../../ui/tables/useTableNavigation';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport {isCharacterKeyPress} from '../../util';\r\n\r\nimport useTableStorage from '../../hooks/useTableStorage';\r\nimport PrimaryButton from '../PrimaryButton';\r\nimport SecondaryButton from '../SecondaryButton';\r\n\r\nimport {TableColumn} from '../../tableSettings';\r\nimport {focusNextTabable} from '../../util/inputUtils';\r\n\r\nconst LoopupPopup = styled.div`\r\n background-color: white;\r\n box-shadow: rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px;\r\n z-index: 999999999 !important;\r\n\r\n .lookup-footer {\r\n padding-left: 5px;\r\n padding-right: 5px;\r\n padding-bottom: 5px;\r\n }\r\n\r\n .additional-search {\r\n float: left;\r\n width: 200px;\r\n }\r\n\r\n .commands-buttons {\r\n float: left;\r\n width: calc(100% - 200px);\r\n }\r\n\r\n .commands-buttons-left {\r\n float: left;\r\n }\r\n\r\n .commands-buttons-right {\r\n float: right;\r\n }\r\n`;\r\n\r\nconst LookupContainer = styled.div`\r\n position: relative;\r\n width: 100%;\r\n\r\n .ifms-lookup-icon {\r\n position: absolute;\r\n right: 5px;\r\n font-size: 10px;\r\n top: 4px;\r\n color: #a1a1a1;\r\n }\r\n`;\r\n\r\nconst TypeaheadTimeout = 1800;\r\n\r\n// function focusNextTabable(anchorElement:HTMLInputElement) {\r\n// const tabableElements = document.getElementsByClassName('ifms-tabable');\r\n// const validElements = [];\r\n\r\n// if (!tabableElements || tabableElements.length <= 0) {\r\n// return;\r\n// }\r\n\r\n// for (let i = 0; i < tabableElements.length; ++i) {\r\n// const el = tabableElements[i] as HTMLElement;\r\n// if (!isElementFocusable(el)) {\r\n// continue;\r\n// }\r\n\r\n// for (let j = 0; j <= validElements.length; ++j) {\r\n// if (j === validElements.length) {\r\n// validElements.push(el);\r\n// break;\r\n// }\r\n// if (validElements[j].tabIndex <= el.tabIndex) {\r\n// continue;\r\n// }\r\n// validElements.splice(j, 0, el);\r\n// break;\r\n// }\r\n// }\r\n\r\n// if (!validElements || validElements.length <= 0) {\r\n// return;\r\n// }\r\n\r\n// let anchorFound = false;\r\n// for (let i = 0; i < validElements.length; ++i) {\r\n// if (anchorFound) {\r\n// validElements[i].focus();\r\n// return;\r\n// }\r\n\r\n// if (validElements[i] === anchorElement) {\r\n// anchorFound = true;\r\n// }\r\n// }\r\n// }\r\n\r\nexport enum LookupInputType {\r\n AllowInputValue,\r\n RollBackPrevValue,\r\n RollBackPrevValueAllowEmpty,\r\n ClearBlankValue,\r\n}\r\n\r\ninterface LastQuery {\r\n text: string | null,\r\n more: string | null,\r\n};\r\n\r\nfunction LookupField({\r\n query,\r\n placeholder = '',\r\n width = undefined,\r\n columns,\r\n onSelect,\r\n onCancel,\r\n labelProp,\r\n initialValue,\r\n onTextChange,\r\n filter,\r\n disabled = false,\r\n lookupId = undefined,\r\n onTabNext = undefined,\r\n onTabPrevious = undefined,\r\n searchMatchOnTab = false,\r\n hasLookupValue = false,\r\n activator = false,\r\n onFocus = () => {},\r\n onBlur = () => {},\r\n triggerLookupOnTab = false,\r\n focusableWhenDisabled = false,\r\n validationFor = undefined,\r\n backgroundColor = undefined,\r\n maxLength = undefined,\r\n initialData = undefined,\r\n showEmptyTable = true,\r\n customContent,\r\n isMultiple = false,\r\n noBorder = false,\r\n tableHeight = undefined,\r\n focusElementAfterSelect = () => null,\r\n userInputType = 0,\r\n name=undefined,\r\n noRightBorder = false,\r\n noLeftBorder = false,\r\n notFocusNextEleWhenSelectItem = false,\r\n}: {\r\n query: (x: string | null) => Promise>,\r\n onSelect: (x: any) => void,\r\n onCancel: VoidFunction,\r\n labelProp: string,\r\n initialValue: string | null | undefined,\r\n placeholder: string,\r\n width: string | undefined,\r\n columns: Array,\r\n disabled?: boolean,\r\n onTextChange: (text: string) => void,\r\n filter: (data: Array, filterText: string) => number,\r\n lookupId?: string | undefined,\r\n onTabNext?: (() => boolean) | undefined,\r\n onTabPrevious?: (() => boolean) | undefined,\r\n hasLookupValue?: boolean,\r\n searchMatchOnTab: any | undefined,\r\n activator: any | undefined,\r\n onFocus?: (e: React.FocusEvent) => void,\r\n onBlur?: (e: React.FocusEvent) => void,\r\n triggerLookupOnTab?: boolean,\r\n focusableWhenDisabled?: boolean,\r\n validationFor?: string | undefined,\r\n backgroundColor?: string | undefined,\r\n maxLength?: number | undefined,\r\n initialData?: any[] | undefined,\r\n showEmptyTable?: boolean,\r\n isMultiple?: boolean,\r\n noBorder?: boolean,\r\n customContent?: ReactNode,\r\n tableHeight?: string|undefined,\r\n focusElementAfterSelect?: () => HTMLInputElement | HTMLElement | null,\r\n userInputType?: LookupInputType,\r\n name?: string | undefined,\r\n noRightBorder?: boolean,\r\n noLeftBorder?: boolean,\r\n notFocusNextEleWhenSelectItem?: boolean,\r\n}) {\r\n const channel = postal.channel('ifms');\r\n const tableStorage = useTableStorage();\r\n const autocompleteOffGuard = _.uniqueId('autocomplete-off-');\r\n\r\n const [initialized, setInitialized] = useState(false);\r\n const [customTableId] = useState(lookupId ? `${lookupId}-lookuptable` : _.uniqueId('ifms-lookuptable-'));\r\n const [inputId] = useState(!!lookupId ? lookupId : _.uniqueId('ifms-lookup-'));\r\n\r\n const timeout = null;\r\n const [typeQuery, setTypeQuery] = useState('');\r\n const [oldSelectedValue, setOldSelectedValue] = useState(initialValue ?? '');\r\n\r\n const [lastQuery, setLastQuery] = useState({text: null, more: null});\r\n\r\n const [data, _setData] = useState([]);\r\n const [selectedIndex, _setSelectedIndex] = useState(-1);\r\n\r\n const [showPopup, _setShowPopup] = useState(false);\r\n const [referenceElement, _setReferenceElement] = useState(null);\r\n const [popperElement, _setPopperElement] = useState(null);\r\n const [arrowElement, setArrowElement] = useState(null);\r\n const {styles, attributes} = usePopper(referenceElement, popperElement, {\r\n placement: 'bottom-start',\r\n modifiers: [{name: 'arrow', options: {element: arrowElement}}],\r\n strategy: 'fixed'\r\n });\r\n\r\n const {\r\n selectTableCol,\r\n selectTableRow,\r\n tableNavigationCleanup\r\n } = useTableNavigation(customTableId, setSelectedIndex, handleSelect, [], true, true, false, true, undefined, initialized);\r\n\r\n const additionalSearchInput = useRef(null);\r\n\r\n const popperRef = useRef(null);\r\n const referenceRef = useRef(null);\r\n const selectedIndexRef = useRef(-1);\r\n const dataRef = useRef([]);\r\n\r\n const fieldClickRef = useRef(false);\r\n let openLookupSubscription: ISubscriptionDefinition | null = null;\r\n\r\n function subscribeChannels() {\r\n openLookupSubscription = postal.subscribe({\r\n channel: 'ifms',\r\n topic: 'ifms.lookup-open',\r\n callback: (data) => onEnter(data.targetId)\r\n });\r\n }\r\n\r\n function unsubscribeChannels() {\r\n if (openLookupSubscription) {\r\n postal.unsubscribe(openLookupSubscription);\r\n }\r\n }\r\n\r\n function setData(d: any) {\r\n dataRef.current = d;\r\n _setData(d);\r\n }\r\n\r\n function setSelectedIndex(i: number) {\r\n if (i !== selectedIndexRef.current) {\r\n selectedIndexRef.current = i;\r\n _setSelectedIndex(i);\r\n }\r\n }\r\n\r\n function setShowPopup(s: boolean) {\r\n if (!s) {\r\n tableNavigationCleanup();\r\n }\r\n _setShowPopup(s);\r\n }\r\n\r\n function setReferenceElement(e: HTMLInputElement | null) {\r\n referenceRef.current = e;\r\n _setReferenceElement(e);\r\n }\r\n\r\n function setPopperElement(e: HTMLDivElement | null) {\r\n popperRef.current = e;\r\n _setPopperElement(e);\r\n }\r\n\r\n useEffect(() => {\r\n subscribeChannels();\r\n document.addEventListener('click', handleClickOutside, true);\r\n\r\n return () => {\r\n unsubscribeChannels();\r\n document.removeEventListener('click', handleClickOutside, true);\r\n tableNavigationCleanup();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n if (initialData) {\r\n setData(initialData);\r\n setSelectedIndex(0);\r\n setLastQuery((lastQuery) => ({...lastQuery, text: ''}));\r\n setShowPopup(true);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [initialData])\r\n\r\n useEffect(() => {\r\n selectTableRow(showPopup ? 0 : -1);\r\n selectTableCol(showPopup ? 0 : -1);\r\n setInitialized(showPopup);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [showPopup]\r\n );\r\n\r\n useEffect(() => {\r\n if (referenceElement && !activator) {\r\n referenceElement.value = initialValue ?? '';\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [initialValue]\r\n );\r\n\r\n function processTabNext(e: React.KeyboardEvent) {\r\n if(additionalSearchInput.current){\r\n additionalSearchInput.current?.focus();\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n if (onTabNext) {\r\n const tabProcessed = onTabNext();\r\n if (tabProcessed) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n function processTabPrevious(e: React.KeyboardEvent) {\r\n if (onTabPrevious) {\r\n const tabProcessed = onTabPrevious();\r\n if (tabProcessed) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n function typeahead(char: string) {\r\n if (!showPopup) {\r\n return;\r\n }\r\n\r\n const newTypeQuery = `${typeQuery}${char}`;\r\n\r\n const existingIndex = filter(data, newTypeQuery);\r\n if (existingIndex >= 0) {\r\n setSelectedIndex(existingIndex);\r\n selectTableRow(existingIndex);\r\n }\r\n\r\n setTypeQuery(newTypeQuery);\r\n\r\n if (!!timeout) {\r\n clearTimeout(timeout);\r\n }\r\n setTimeout(() => setTypeQuery(''), TypeaheadTimeout);\r\n }\r\n\r\n function handleClickOutside(e: MouseEvent) {\r\n const target = e.target as Element;\r\n if (!popperRef || !referenceRef || !popperRef.current || !referenceRef.current || target?.id === inputId) {\r\n if (showPopup) {\r\n setShowPopup(false);\r\n }\r\n return;\r\n }\r\n\r\n if (!popperRef.current.contains(target) && !referenceRef.current.contains(target)) {\r\n handleCancel();\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n async function onActivateExternal() {\r\n await executeQuery();\r\n }\r\n\r\n async function onEnterWithActivator() {\r\n if (showPopup) {\r\n handleSelect(selectedIndex);\r\n } else {\r\n await executeQuery();\r\n }\r\n }\r\n\r\n async function onEnter(targetId?: string) {\r\n if (!!activator) {\r\n await onEnterWithActivator();\r\n return;\r\n }\r\n\r\n if (!referenceRef.current || (targetId && referenceRef.current.id !== targetId)) {\r\n return;\r\n }\r\n\r\n if (showPopup && referenceRef.current.value === lastQuery.text) {\r\n handleSelect(selectedIndex);\r\n } else {\r\n await executeQuery(referenceRef.current.value);\r\n }\r\n }\r\n\r\n\r\n async function executeQuery(text: string | null = null) {\r\n const queryResult = await query(text);\r\n if (!showEmptyTable && (!queryResult || !queryResult.length)) {\r\n return;\r\n }\r\n setData(queryResult);\r\n if (queryResult.length > 0) {\r\n setSelectedIndex(0);\r\n }\r\n\r\n setLastQuery({...lastQuery, text});\r\n setShowPopup(true);\r\n }\r\n\r\n function handleEscape(e: React.KeyboardEvent) {\r\n if (showPopup) {\r\n handleCancel();\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n async function doSearchMatchOnTab() {\r\n if (!referenceRef.current) {\r\n return;\r\n }\r\n\r\n const searchValue = referenceRef.current.value;\r\n if (!searchValue || searchValue === lastQuery.text) {\r\n return false;\r\n }\r\n\r\n const queryResult = await query(searchValue);\r\n if (!queryResult || queryResult.length <= 0) {\r\n return false;\r\n }\r\n\r\n const exactMatch = queryResult.find(x => x[labelProp] && x[labelProp].toLowerCase() === searchValue);\r\n if (exactMatch) {\r\n setLastQuery({...lastQuery, text: exactMatch[labelProp]});\r\n onSelect(exactMatch);\r\n return false;\r\n } else {\r\n setData(queryResult);\r\n if (queryResult.length > 0) {\r\n setSelectedIndex(0);\r\n }\r\n\r\n setLastQuery({...lastQuery, text: searchValue});\r\n setShowPopup(true);\r\n\r\n if (referenceRef.current) {\r\n referenceRef.current.focus();\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n // function handleClickInsideText() {\r\n // if (showPopup) {\r\n // handleCancel();\r\n // }\r\n // }\r\n\r\n function isEditTableCell(element: Element): boolean {\r\n const divElements = document.querySelectorAll('div[id$=\"-editabletable\"]');\r\n return Array.from(divElements).some(div => div.contains(element));\r\n }\r\n\r\n async function executeLookupOnTab() {\r\n if (referenceRef.current && referenceRef.current.value) {\r\n // Let's try to query, if there is only single result with exact same value, select it. Otherwise, show lookup popup\r\n const queryResult = await query(referenceRef.current.value);\r\n\r\n if (queryResult && queryResult.length === 1 && queryResult[0][labelProp] && queryResult[0][labelProp].toLowerCase() === referenceRef.current.value) {\r\n onSelect(queryResult[0]);\r\n\r\n // Find next tabbable and focus it, since default event propagation needed to be stopped\r\n setTimeout(() => {\r\n if (referenceRef.current)\r\n focusNextTabable(referenceRef.current);\r\n }, 10)\r\n return;\r\n }\r\n }\r\n onEnter();\r\n }\r\n\r\n async function processSpecialKeys(e: React.KeyboardEvent) { \r\n if (!e || !e.keyCode) {\r\n return;\r\n }\r\n\r\n // focusable when disabled fields are actually enabled text fields, change is not allowed\r\n if (disabled) {\r\n if (!(e.ctrlKey && (e.keyCode === 67 || e.keyCode === 65))) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n const tab = 9;\r\n\r\n if (e.keyCode === tab) {\r\n if (triggerLookupOnTab && !!referenceRef.current && !!referenceRef.current.value && !hasLookupValue) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n executeLookupOnTab();\r\n return;\r\n }\r\n if (searchMatchOnTab && !hasLookupValue) {\r\n const stopFurther = await doSearchMatchOnTab();\r\n if (stopFurther) {\r\n e.stopPropagation();\r\n e.preventDefault(); // Typing is not allowed\r\n return;\r\n }\r\n }\r\n\r\n if (e.shiftKey) {\r\n processTabPrevious(e);\r\n } else {\r\n processTabNext(e);\r\n }\r\n return;\r\n }\r\n\r\n switch (e.keyCode) {\r\n case 40: // Arrow down\r\n if (showPopup && (selectedIndex < data.length - 1)) {\r\n setSelectedIndex(selectedIndex + 1);\r\n selectTableRow(selectedIndex + 1);\r\n\r\n } else {\r\n // const parent = e?.target as HTMLElement | undefined;\r\n // const parentId = parent?.id;\r\n // if (!!parentId) {\r\n // channel.publish('ifms.control-navigation', {\r\n // parentId,\r\n // keyCode: e.keyCode\r\n // });\r\n // }\r\n // e.preventDefault();\r\n // e.stopPropagation();\r\n return;\r\n }\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return;\r\n case 27:\r\n handleEscape(e);\r\n return;\r\n case 38: // Arrow up\r\n if (showPopup && (selectedIndex > 0)) {\r\n setSelectedIndex(selectedIndex - 1);\r\n selectTableRow(selectedIndex - 1);\r\n } else {\r\n // const parent = e?.target as HTMLElement | undefined;\r\n // const parentId = parent?.parentElement?.id;\r\n // if (!!parentId) {\r\n // channel.publish('ifms.control-navigation', {\r\n // parentId,\r\n // keyCode: e.keyCode\r\n // });\r\n // }\r\n // e.preventDefault();\r\n // e.stopPropagation();\r\n return;\r\n }\r\n return;\r\n case 9: // Tab\r\n handleCancel();\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return;\r\n case 13: // Enter\r\n onEnter();\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return;\r\n default:\r\n }\r\n\r\n if (showPopup) {\r\n e.stopPropagation();\r\n //e.preventDefault(); // Typing is not allowed\r\n\r\n if (isCharacterKeyPress(e)) {\r\n typeahead(e.key);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n function handleSelect(index: number) {\r\n const customTable = document.getElementById(customTableId);\r\n const isMultipleHeader = customTable?.querySelectorAll(\"[data-column-id='select']\");\r\n if (index < 0 || index > dataRef.current.length - 1) {\r\n handleCancel();\r\n } else {\r\n if (isMultipleHeader && isMultipleHeader.length === 0){\r\n setShowPopup(false);\r\n const referenceElementValue = dataRef.current[index][labelProp] ? dataRef.current[index][labelProp] : '';\r\n if (referenceRef.current) {\r\n referenceRef.current.value = referenceElementValue;\r\n onTextChange(referenceElementValue);\r\n setOldSelectedValue(referenceElementValue);\r\n }\r\n // 선택후에는 값을 지워주도록 수정. 다음번에 영향을 줌.\r\n //setLastQuery({...lastQuery, text: referenceElementValue});\r\n setLastQuery({...lastQuery, text: '', more: ''});\r\n onSelect(dataRef.current[index]);\r\n handleCancel();\r\n\r\n const focusElement = focusElementAfterSelect();\r\n if (focusElement) {\r\n if (focusElement instanceof HTMLInputElement)\r\n focusElement?.select();\r\n else if (focusElement instanceof HTMLElement)\r\n focusElement?.focus();\r\n else return;\r\n }\r\n else {\r\n //focus next tabable field after select\r\n setTimeout(() => {\r\n if (isEditTableCell(referenceRef.current as HTMLInputElement)) {\r\n channel.publish('ifms.editable-table-onEnter', { backFocus: false, changeFocus: true, element: referenceRef.current });\r\n }\r\n else {\r\n if (!notFocusNextEleWhenSelectItem) {\r\n if (referenceRef.current)\r\n focusNextTabable(referenceRef.current)\r\n }\r\n }\r\n }, 10)\r\n }\r\n }\r\n }\r\n }\r\n\r\n function handleOk(selectedIndex: number) {\r\n if (!isMultiple) {\r\n handleSelect(selectedIndex)\r\n } else {\r\n setShowPopup(false);\r\n }\r\n }\r\n\r\n function handleCancel() {\r\n setShowPopup(false);\r\n if (additionalSearchInput && additionalSearchInput.current) {\r\n additionalSearchInput.current.value = '';\r\n }\r\n onCancel();\r\n if (referenceRef.current && !activator) {\r\n referenceRef.current.focus();\r\n //referenceRef.current.select();\r\n }\r\n }\r\n\r\n function handleFilterMore() {\r\n if (additionalSearchInput && additionalSearchInput.current) {\r\n const existingIndex = filter(data, additionalSearchInput.current.value);\r\n if (existingIndex >= 0) {\r\n setSelectedIndex(existingIndex);\r\n selectTableRow(existingIndex);\r\n }\r\n setLastQuery({...lastQuery, more: additionalSearchInput.current.value});\r\n }\r\n }\r\n\r\n function processFilterMoreSpecialKeys(e: React.KeyboardEvent) {\r\n if (!e || !e.keyCode) {\r\n return;\r\n }\r\n\r\n switch (e.keyCode) {\r\n case 40: // Arrow down\r\n if (selectedIndex < data.length - 1) {\r\n setSelectedIndex(selectedIndex + 1);\r\n selectTableRow(selectedIndex + 1);\r\n }\r\n return;\r\n case 27:\r\n handleEscape(e);\r\n return;\r\n case 38: // Arrow up\r\n if (selectedIndex > 0) {\r\n setSelectedIndex(selectedIndex - 1);\r\n selectTableRow(selectedIndex - 1);\r\n }\r\n return;\r\n case 9: // Tab\r\n handleCancel();\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return;\r\n case 13: // Enter\r\n if (additionalSearchInput && additionalSearchInput.current && additionalSearchInput.current.value !== lastQuery.more) {\r\n //handleFilterMore();\r\n executeQuery(additionalSearchInput.current.value);\r\n } else {\r\n handleSelect(selectedIndex);\r\n }\r\n e.stopPropagation(); // Enter Key Event가 이후까지 영향을 주지 않도록 함.\r\n return;\r\n default:\r\n }\r\n }\r\n\r\n function onFindMoreClick() {\r\n handleFilterMore();\r\n if (additionalSearchInput && additionalSearchInput.current) {\r\n additionalSearchInput.current.focus();\r\n }\r\n }\r\n\r\n function handleFocus(e: React.FocusEvent) {\r\n // Grid > Lookup을 동작할 때 창 내부 항목을 클릭하면 Lookup창이 닫히는 문제\r\n // if (showPopup) {\r\n // setShowPopup(false);\r\n // }\r\n\r\n if (onFocus) {\r\n onFocus(e);\r\n }\r\n }\r\n\r\n function onClick(e:React.MouseEvent) {\r\n if (!disabled && !fieldClickRef.current) {\r\n (e.target as HTMLInputElement).select();\r\n fieldClickRef.current = true;\r\n }\r\n }\r\n\r\n function handleBlur(e: React.FocusEvent) {\r\n if (popperRef.current) {\r\n return;\r\n }\r\n\r\n if (_.isEmpty(e.target.value))\r\n setOldSelectedValue('');\r\n\r\n switch (userInputType) {\r\n case LookupInputType.RollBackPrevValue:\r\n e.target.value = oldSelectedValue;\r\n break;\r\n case LookupInputType.RollBackPrevValueAllowEmpty:\r\n if (!_.isEmpty(e.target.value))\r\n e.target.value = oldSelectedValue;\r\n break;\r\n case LookupInputType.ClearBlankValue:\r\n e.target.value = '';\r\n break;\r\n }\r\n\r\n if (onBlur) {\r\n onBlur(e);\r\n }\r\n \r\n fieldClickRef.current = false;\r\n }\r\n\r\n let appliedPopperStyles = {\r\n ...styles.popper,\r\n };\r\n\r\n // if(isMultiple) {\r\n // appliedPopperStyles.height = 250;\r\n // }\r\n\r\n if (!!width) {\r\n appliedPopperStyles = {...appliedPopperStyles, width};\r\n }\r\n\r\n const tableProps = {\r\n customTableId,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n height: tableHeight ?? '250px',\r\n \r\n \r\n columns,\r\n data,\r\n selectable: true,\r\n alternateRows: true,\r\n headersColor: 'white',\r\n // onRowSelected: setSelectedIndex,\r\n // onRowDoubleClick: handleSelect,\r\n selectedRowIndex: selectedIndex,\r\n customStorage: tableStorage,\r\n useHighlightCellOnMouseover: false\r\n };\r\n\r\n let classes = focusableWhenDisabled && disabled\r\n ? 'ifms-lookup e-ifms-input e-outline ifms-tabable e-ifms-focusable-when-disabled'\r\n : 'ifms-lookup e-ifms-input e-outline ifms-tabable';\r\n\r\n if (!disabled) {\r\n classes = `${classes} ifms-tabable-active`;\r\n }\r\n else {\r\n classes = `${classes} selenium-test-disabled`;\r\n }\r\n\r\n let inputStyle:React.CSSProperties = {paddingRight: '20px', backgroundColor};\r\n if (noBorder) {\r\n inputStyle.border = 'none';\r\n }\r\n if (noRightBorder) {\r\n inputStyle.borderRight = 'none';\r\n }\r\n if (noLeftBorder) {\r\n inputStyle.borderLeft = 'none';\r\n }\r\n\r\n return (\r\n <>\r\n {!!activator &&\r\n <>{activator(onActivateExternal, setReferenceElement, processSpecialKeys)}\r\n }\r\n {!activator &&\r\n \r\n {!!customContent ? (\r\n
{ onEnter(); }}>{customContent}
\r\n ) : (\r\n <>\r\n onTextChange(e.target.value)}\r\n onFocus={handleFocus}\r\n onBlur={handleBlur}\r\n onClick={onClick}\r\n style={inputStyle}\r\n //autoComplete={autocompleteOffGuard}\r\n autoComplete=\"off\"\r\n list={autocompleteOffGuard}\r\n data-tooltip=\"-from-value\"\r\n \r\n data-tooltip-onlywhencutoff\r\n data-validationfor={validationFor}\r\n maxLength={maxLength}\r\n />\r\n \r\n \r\n )}\r\n
\r\n }\r\n {showPopup &&\r\n \r\n \r\n
\r\n {//!isMultiple && \r\n (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n  Find\r\n
\r\n
\r\n handleOk(selectedIndex)}>Ok \r\n Cancel\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n \r\n }\r\n \r\n );\r\n\r\n}\r\n\r\nLookupField.defaultProps = {\r\n placeholder: '',\r\n onSelect: () => {},\r\n onTextChange: () => {},\r\n filter: () => -1,\r\n disabled: false,\r\n searchMatchOnTab: false,\r\n triggerLookupOnTab: false,\r\n focusableWhenDisabled: false,\r\n showEmptyTable: true,\r\n isMultiple: false,\r\n noBorder: false,\r\n noRightBorder: false,\r\n noLeftBorder: false,\r\n};\r\n\r\nLookupField.propTypes = {\r\n placeholder: PropTypes.string.isRequired,\r\n query: PropTypes.func.isRequired,\r\n width: PropTypes.string,\r\n columns: PropTypes.array.isRequired,\r\n onSelect: PropTypes.func.isRequired,\r\n onTextChange: PropTypes.func.isRequired,\r\n onFocus: PropTypes.func,\r\n onBlur: PropTypes.func,\r\n onCancel: PropTypes.func.isRequired,\r\n labelProp: PropTypes.string.isRequired,\r\n initialValue: PropTypes.string,\r\n filter: PropTypes.func.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n lookupId: PropTypes.string,\r\n onTabNext: PropTypes.func,\r\n onTabPrevious: PropTypes.func,\r\n searchMatchOnTab: PropTypes.bool.isRequired,\r\n activator: PropTypes.func,\r\n hasLookupValue: PropTypes.bool,\r\n triggerLookupOnTab: PropTypes.bool.isRequired,\r\n focusableWhenDisabled: PropTypes.bool.isRequired,\r\n backgroundColor: PropTypes.string,\r\n maxLength: PropTypes.number,\r\n initialData: PropTypes.array,\r\n showEmptyTable: PropTypes.bool,\r\n isMultiple: PropTypes.bool,\r\n noBorder: PropTypes.bool,\r\n tableHeight: PropTypes.string,\r\n noRightBorder: PropTypes.bool,\r\n noLeftBorder: PropTypes.bool,\r\n};\r\n\r\nexport default React.memo(LookupField);\r\n","import PropTypes from 'prop-types';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\n\r\nimport Select from '../ui/Select';\r\nimport ApplicationContext from '../ApplicationContext';\r\nimport { MoveType } from '../ifmsTypes';\r\nimport { ComboParamsBase, FmsComboType } from '../fms.core/constants';\r\n\r\nfunction MoveTypeDropDown({\r\n value,\r\n onChange = () => {},\r\n disabled,\r\n addAll = false,\r\n addBlank = true,\r\n name=undefined,\r\n maxLength = undefined,\r\n}: {\r\n value:string|null|undefined,\r\n onChange?:(x:string|null, m:MoveType|null) => void,\r\n disabled?: boolean,\r\n addAll?: boolean, // Is ALL offered as an option\r\n addBlank?: boolean, \r\n name?:string|undefined,\r\n maxLength?: number|undefined,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const [data, setData] = useState>([]);\r\n\r\n async function fetchData(api:any) {\r\n //const data = await api.getCodesOceanMoveTypes() as Array;\r\n //setData(data.filter(x => !x.inactive));\r\n var base = new ComboParamsBase();\r\n base.comboType = FmsComboType.MoveType;\r\n const data = await api.loadCodeData([base]);\r\n if (data && data.length > 0) {\r\n setData(data[0].items);\r\n }\r\n //const filteredData = data.filter(x => !x.inactive);\r\n\r\n //if ((value === null || value === undefined) && filteredData && filteredData.length > 0) {\r\n //onChange(filteredData[0].moveType, filteredData[0]);\r\n //}\r\n }\r\n\r\n useEffect(() => {\r\n fetchData(appContext.api);\r\n return () => {\r\n setData([]);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function handleChange(e:any) {\r\n const moveType = !!e && !!e.target && !!e.target.value && data ? data.find(x => x.id === e.target.value) as MoveType : null;\r\n onChange(e.target.value, moveType);\r\n }\r\n\r\n // let displayData = value === null || value === undefined\r\n // ? ['', ...data]\r\n // : data;\r\n\r\n let displayData = [...data];\r\n displayData = addBlank ? ['', ...displayData] : displayData;\r\n displayData = addAll ? ['ALL', ...displayData] : displayData;\r\n \r\n return (\r\n ({ value: x, label: x }))\r\n }\r\n maxLength={maxLength}\r\n />\r\n );\r\n}\r\n\r\nMoveTypeDropDown.defaultProps = {\r\n onChange: () => {},\r\n disabled: false,\r\n dark: false,\r\n};\r\n\r\nMoveTypeDropDown.propTypes = {\r\n value: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport default React.memo(MoveTypeDropDown);\r\n","import { useEffect, useRef } from 'react';\r\nimport { useAppDispatch, useAppSelector } from '../app/hooks';\r\n\r\nimport { setInStorage, removeFromStorage } from '../features/storageSlice';\r\n// import { getOperationKey } from './util';\r\n\r\ninterface IndexByAny {\r\n [key: string]: any,\r\n};\r\n\r\nexport function useTypedStorage(storageName:string, defaultValue:T|null = null) {\r\n const [storageObj, _updateStorage, deleteObjFromStorage] = useStorage(storageName, defaultValue);\r\n const storageObjRef = useRef(null);\r\n\r\n useEffect(() => {\r\n storageObjRef.current = storageObj;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [storageObj]);\r\n\r\n const updateStorage = (value:Partial) => {\r\n _updateStorage(value);\r\n };\r\n\r\n return [storageObj as T|any, updateStorage, deleteObjFromStorage, storageObjRef];\r\n}\r\n\r\nexport default function useStorage(storageName:string, defaultValue:any = null) {\r\n const storageObj = useAppSelector(x => x.storage[storageName]);\r\n const dispatch = useAppDispatch();\r\n const storageObjRef = useRef(null);\r\n\r\n useEffect(() => {\r\n storageObjRef.current = storageObj;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [storageObj]);\r\n\r\n const updateStorage = (value:any) => {\r\n const obj: IndexByAny = {};\r\n obj[storageName] = value;\r\n\r\n dispatch(setInStorage(obj));\r\n };\r\n\r\n const deleteObjFromStorage = () => {\r\n dispatch(removeFromStorage(storageName));\r\n };\r\n\r\n return [storageObj === null || storageObj === undefined ? defaultValue : storageObj, updateStorage, deleteObjFromStorage, storageObjRef];\r\n}\r\n ","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport _ from 'lodash';\r\n\r\nexport enum AihListType {\r\n Normal,\r\n NormalCan,\r\n HblInfo\r\n}\r\n\r\nexport class AiHblListItem extends SearchModelBase {\r\n id: number = 0;\r\n closed: string = '';\r\n shipmentType: string = '';\r\n invStat: string = '';\r\n billStat: string = '';\r\n crDbStat: string = '';\r\n hawbNo: string = '';\r\n branch: string = '';\r\n refNo: string = '';\r\n custFName: string = '';\r\n custSName: string = '';\r\n credit: string = '';\r\n agentName: string = '';\r\n mawbNo: string = '';\r\n cargoNo: string = '';\r\n soNo: string = '';\r\n projectNo: string = '';\r\n shipmentId: string = '';\r\n sMawbNo: string = '';\r\n eta: string | null = null;\r\n fromETA: string | null = null;\r\n toETA: string | null = null;\r\n feta: string | null = null;\r\n fromFETA: string | null = null;\r\n toFETA: string | null = null;\r\n finalDest: string = '';\r\n shipper: string = '';\r\n shipperName: string | null = null;\r\n consignee: string = '';\r\n consigneeName: string | null = null;\r\n notify: string = '';\r\n notifyName: string | null = null;\r\n broker: string = '';\r\n p: string = '';\r\n paidDate: string | null = null;\r\n fromPaidDate: string | null = null;\r\n toPaidDate: string | null = null;\r\n commodity: string = '';\r\n incoTerms: string = '';\r\n pkgs: number|null = null;\r\n fromPkgs: number|null = null;\r\n toPkgs: number|null = null;\r\n lbs: number|null = null;\r\n fromLbs: number|null = null;\r\n toLbs: number|null = null;\r\n kgs: number|null = null;\r\n fromKgs: number|null = null;\r\n toKgs: number|null = null;\r\n operator: string = '';\r\n custRefNo: string = '';\r\n lCode: string = '';\r\n dCode: string = '';\r\n fltNo: string = '';\r\n finalWhse: string = '';\r\n releaseBy: string = '';\r\n releaseDate: string | null = null;\r\n fromReleaseDate: string | null = null;\r\n toReleaseDate: string | null = null;\r\n poNumber: string = '';\r\n hawbRcvdDate: string | null = null;\r\n fromHawbRcvdDate: string | null = null;\r\n toHawbRcvdDate: string | null = null;\r\n hawbRcvdUser: string = '';\r\n plRcvdDate: string | null = null;\r\n fromPLRcvdDate: string | null = null;\r\n toPLRcvdDate: string | null = null;\r\n plRcvdUser: string = '';\r\n cDocRcvdDate: string | null = null;\r\n fromCDocRcvdDate: string | null = null;\r\n toCDocRcvdDate: string | null = null;\r\n cDocRcvdUser: string = '';\r\n eDocSentDate: string | null = null;\r\n fromEDocSentDate: string | null = null;\r\n toEDocSentDate: string | null = null;\r\n eDocSentUser: string = '';\r\n etaCfrmDate: string | null = null;\r\n fromETACfrmDate: string | null = null;\r\n toETACfrmDate: string | null = null;\r\n etaCfrmUser: string = '';\r\n amsCfrmDate: string | null = null;\r\n fromAMSCfrmDate: string | null = null;\r\n toAMSCfrmDate: string | null = null;\r\n amsCfrmUser: string = '';\r\n lastTrackedDate: string | null = null;\r\n fromLastTrackedDate: string | null = null;\r\n toLastTrackedDate: string | null = null;\r\n lastTrackedUser: string = '';\r\n _7501RcvdDate: string | null = null;\r\n from_7501RcvdDate: string | null = null;\r\n to_7501RcvdDate: string | null = null;\r\n _7501RcvdUser: string = '';\r\n _3461RcvdDate: string | null = null;\r\n from_3461RcvdDate: string | null = null;\r\n to_3461RcvdDate: string | null = null;\r\n _3461RcvdUser: string = '';\r\n diSchdDate: string | null = null;\r\n fromDISchdDate: string | null = null;\r\n toDISchdDate: string | null = null;\r\n diSchdUser: string = '';\r\n actDeliveryDate: string | null = null;\r\n fromActDeliveryDate: string | null = null;\r\n toActDeliveryDate: string | null = null;\r\n actDeliveryUser: string = '';\r\n podRcvdDate: string | null = null;\r\n fromPODRcvdDate: string | null = null;\r\n toPODRcvdDate: string | null = null;\r\n podRcvdUser: string = '';\r\n billingCmpIdDate: string | null = null;\r\n fromBillingCmpIdDate: string | null = null;\r\n toBillingCmpIdDate: string | null = null;\r\n billingCmpIdUser: string = '';\r\n mailDate: string | null = null;\r\n fromMailDate: string | null = null;\r\n toMailDate: string | null = null;\r\n mailUser: string = '';\r\n postDate: string | null = null;\r\n fromPostDate: string | null = null;\r\n toPostDate: string | null = null;\r\n aiMblId: number = 0;\r\n confirmDate: string | null = null;\r\n fromConfirmDate: string | null = null;\r\n toConfirmDate: string | null = null;\r\n etd: string | null = null;\r\n itNo: string = '';\r\n issuer: string = '';\r\n recognized: string = '';\r\n status: string = '';\r\n createdAt: string|null = null;\r\n pimsLinkId: number = 0;\r\n\r\n // cloud\r\n fromCreatedAt: string | null = null;\r\n toCreatedAt: string | null = null;\r\n gKgs: number = 0;\r\n fromGKgs: number|null = null;\r\n toGkgs: number|null = null;\r\n carrierName: string = '';\r\n u1ID: string = '';\r\n u2ID: string = '';\r\n u2Date: string | null = null;\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n split: boolean = false;\r\n smanID: string = '';\r\n anSent: boolean = false;\r\n atmeSent: boolean = false;\r\n anSentDate: string | null = null;\r\n fromanSentDate: string | null = null;\r\n toanSentDate: string | null = null;\r\n anSentBy: string = '';\r\n entryDocDate: string | null = null;\r\n fromentryDocDate: string | null = null;\r\n toentryDocDate: string | null = null;\r\n entryDocBy: string = '';\r\n delActDate: string | null = null;\r\n fromdelActDate: string | null = null;\r\n todelActDate: string | null = null;\r\n delActBy: string = '';\r\n emptyRetDate: string | null = null;\r\n fromemptyRetDate: string | null = null;\r\n toemptyRetDate: string | null = null;\r\n emptyRetBy: string = '';\r\n releaseDateForMilestoneAihList: string | null = null; //same data with releasedate\r\n fromReleaseDateForMilestoneAihList: string | null = null;\r\n toReleaseDateForMilestoneAihList: string | null = null;\r\n\r\n // Field is returned from server but it's not in model\r\n customer: number = 0;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'R', width: 30, dataIndex: 'recognized', noNullOrEmptySearch: true, hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 38, text: 'D/ID', width: 35, dataIndex: 'shipmentType', noNullOrEmptySearch: true}),\r\n \r\n XCol.Create({ col: 3, text: 'HAWB', width: 100, dataIndex: 'hawbNo'}),\r\n XCol.Create({ col: 4, text: 'BR', width: 40, dataIndex: 'branch', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 5, text: 'Ref. #', width: 100, dataIndex: 'refNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 6, text: 'Customer', width: 120, dataIndex: 'custSName'}),\r\n XCol.Create({ col: 7, text: 'Credit', width: 60, dataIndex: 'credit', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 8, text: 'A/N', width: 50, dataIndex: 'anSent', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 9, text: 'Agent', width: 120, dataIndex: 'agentName'}),\r\n XCol.Create({ col: 10, text: 'MAWB', width: 100, dataIndex: 'mawbNo'}),\r\n XCol.Create({ col: 11, text: 'S/O', width: 80, dataIndex: 'soNo'}),\r\n XCol.Create({ col: 12, text: 'Project ID', width: 80, dataIndex: 'projectNo'}),\r\n XCol.Create({ col: 13, text: 'Sub MAWB', width: 100, dataIndex: 'sMawbNo', visible: false}),\r\n // XCol.Create({ col: 15, text: 'ATME', width: 50, dataIndex: 'atmeSent', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 14, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 15, text: 'F. ETA', width: 75, dataIndex: 'feta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 16, text: 'Final Destination', width: 120, dataIndex: 'finalDest'}),\r\n XCol.Create({ col: 17, text: 'Shipper', width: 120, dataIndex: 'shipperName', hasCustomTooltip:true}),\r\n XCol.Create({ col: 18, text: 'Consignee', width: 120, dataIndex: 'consigneeName', hasCustomTooltip:true}),\r\n XCol.Create({ col: 19, text: 'Notify', width: 120, dataIndex: 'notifyName', hasCustomTooltip:true}),\r\n XCol.Create({ col: 20, text: 'Broker', width: 120, dataIndex: 'broker'}),\r\n XCol.Create({ col: 21, text: 'Issuer', width: 80, dataIndex: 'issuer'}),\r\n XCol.Create({ col: 22, text: 'P', width: 40, dataIndex: 'p', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 23, text: 'Paid', width: 75, dataIndex: 'paidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 24, text: 'Commodity', width: 120, dataIndex: 'commodity'}),\r\n XCol.Create({ col: 25, text: 'PKG(s)', width: 80, dataIndex: 'pkgs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 26, text: 'LBS', width: 80, dataIndex: 'lbs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 27, text: 'KGS', width: 80, dataIndex: 'kgs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 28, text: 'Sales', width: 80, dataIndex: 'smanID'}),\r\n XCol.Create({ col: 29, text: 'Prep. By', width: 80, dataIndex: 'operator'}),\r\n XCol.Create({ col: 30, text: 'Customer Ref.', width: 100, dataIndex: 'custRefNo'}),\r\n XCol.Create({ col: 31, text: 'Departure', width: 80, dataIndex: 'lCode', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 32, text: 'Destination', width: 80, dataIndex: 'dCode', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 33, text: 'Flight', width: 60, dataIndex: 'fltNo'}),\r\n XCol.Create({ col: 34, text: 'Final W/H', width: 120, dataIndex: 'finalWhse'}),\r\n XCol.Create({ col: 35, text: 'Release To', width: 100, dataIndex: 'releaseBy'}),\r\n XCol.Create({ col: 36, text: 'Release', width: 75, dataIndex: 'releaseDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n // XCol.Create({ col: 43, text: 'Incoterms', width: 80, dataIndex: 'incoTerms', visible: true}),\r\n // XCol.Create({ col: 31, text: 'Carrier', width: 120, dataIndex: 'carrierName'}),\r\n \r\n XCol.Create({ col: 39, text: 'INV', width: 35, dataIndex: 'invStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 40, text: 'BIL', width: 35, dataIndex: 'billStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 41, text: 'CrDb', width: 35, dataIndex: 'crDbStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n \r\n //same showMilestone Check\r\n XCol.Create({ col: 44, text: 'Tracker', width: 75, dataIndex: 'lastTrackedUser'}),\r\n XCol.Create({ col: 45, text: 'Last Tracked', width: 75, dataIndex: 'lastTrackedDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 46, text: 'Send A/N', width: 75, dataIndex: 'anSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 47, text: 'RCV HAWB', width: 75, dataIndex: 'hawbRcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 48, text: 'RCV P/L', width: 75, dataIndex: 'plRcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 49, text: 'Rcv C. Doc', width: 75, dataIndex: 'cDocRcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 50, text: 'Send ATME', width: 75, dataIndex: 'entryDocDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 51, text: 'CFM AMS', width: 75, dataIndex: 'amsCfrmDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 52, text: 'Rcv 7501', width: 75, dataIndex: '_7501RcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 53, text: 'Rcv 3461', width: 75, dataIndex: '_3461RcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 54, text: 'Cfm ETD', width: 75, dataIndex: 'delActDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 55, text: 'CFM ATA', width: 75, dataIndex: 'emptyRetDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 56, text: 'Cargo Release', width: 75, dataIndex: 'releaseDateForMilestoneAihList', type: XCol.XCellType.Date, align: XCol.XAlignType.Center,}),\r\n XCol.Create({ col: 57, text: 'RCV POD', width: 75, dataIndex: 'podRcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 58, text: 'Billing CPLT', width: 75, dataIndex: 'billingCmpIdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n \r\n XCol.Create({ col: 59, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 60, text: 'Create by', width: 100, dataIndex: 'u1ID', visible: false}),\r\n XCol.Create({ col: 61, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 62, text: 'Update by', width: 100, dataIndex: 'u2ID', visible: false}),\r\n //for use tooltip\r\n XCol.Create({ col: 63, text: '', width: 0, dataIndex: 'shipper', hiddenInColumnSetup: true, visible: false}), \r\n XCol.Create({ col: 64, text: '', width: 0, dataIndex: 'consignee', hiddenInColumnSetup: true, visible: false}),\r\n XCol.Create({ col: 64, text: '', width: 0, dataIndex: 'notify', hiddenInColumnSetup: true, visible: false}),\r\n ];\r\n\r\n private static ExportCollection_Can: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'R', width: 30, dataIndex: 'recognized', noNullOrEmptySearch: true, hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 37, text: 'D/ID', width: 35, dataIndex: 'shipmentType', noNullOrEmptySearch: true}),\r\n \r\n XCol.Create({ col: 2, text: 'HAWB', width: 100, dataIndex: 'hawbNo'}),\r\n XCol.Create({ col: 3, text: 'BR', width: 40, dataIndex: 'branch', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 4, text: 'Ref. #', width: 100, dataIndex: 'refNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 5, text: 'Customer', width: 120, dataIndex: 'custSName'}),\r\n XCol.Create({ col: 6, text: 'Credit', width: 60, dataIndex: 'credit', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 7, text: 'A/N', width: 50, dataIndex: 'anSent', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 8, text: 'Agent', width: 120, dataIndex: 'agentName'}),\r\n XCol.Create({ col: 9, text: 'MAWB', width: 100, dataIndex: 'mawbNo'}),\r\n XCol.Create({ col: 10, text: 'S/O', width: 80, dataIndex: 'soNo'}),\r\n XCol.Create({ col: 11, text: 'Project ID', width: 80, dataIndex: 'projectNo'}),\r\n XCol.Create({ col: 12, text: 'Sub MAWB', width: 100, dataIndex: 'sMawbNo', visible: false}),\r\n //XCol.Create({ col: 15, text: 'ATME', width: 50, dataIndex: 'atmeSent', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 13, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 14, text: 'F. ETA', width: 75, dataIndex: 'feta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 15, text: 'Final Destination', width: 120, dataIndex: 'finalDest'}),\r\n XCol.Create({ col: 16, text: 'Shipper', width: 120, dataIndex: 'shipperName', hasCustomTooltip:true}),\r\n XCol.Create({ col: 17, text: 'Consignee', width: 120, dataIndex: 'consigneeName', hasCustomTooltip:true}),\r\n XCol.Create({ col: 18, text: 'Notify', width: 120, dataIndex: 'notifyName', hasCustomTooltip:true}),\r\n XCol.Create({ col: 19, text: 'Broker', width: 120, dataIndex: 'broker'}),\r\n XCol.Create({ col: 20, text: 'Issuer', width: 80, dataIndex: 'issuer'}),\r\n XCol.Create({ col: 21, text: 'P', width: 40, dataIndex: 'p', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 22, text: 'Paid', width: 75, dataIndex: 'paidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 23, text: 'Commodity', width: 120, dataIndex: 'commodity'}),\r\n XCol.Create({ col: 24, text: 'PKG(s)', width: 80, dataIndex: 'pkgs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 25, text: 'LBS', width: 80, dataIndex: 'lbs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 26, text: 'KGS', width: 80, dataIndex: 'kgs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 27, text: 'Sales', width: 80, dataIndex: 'smanID'}),\r\n XCol.Create({ col: 28, text: 'Prep. By', width: 80, dataIndex: 'operator'}),\r\n XCol.Create({ col: 29, text: 'Customer Ref.', width: 100, dataIndex: 'custRefNo'}),\r\n XCol.Create({ col: 30, text: 'Departure', width: 80, dataIndex: 'lCode', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 31, text: 'Destination', width: 80, dataIndex: 'dCode', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 32, text: 'Flight', width: 60, dataIndex: 'fltNo'}),\r\n XCol.Create({ col: 33, text: 'Final W/H', width: 120, dataIndex: 'finalWhse'}),\r\n XCol.Create({ col: 34, text: 'Release To', width: 100, dataIndex: 'releaseBy'}),\r\n XCol.Create({ col: 35, text: 'Release', width: 75, dataIndex: 'releaseDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n // XCol.Create({ col: 43, text: 'Incoterms', width: 80, dataIndex: 'incoTerms'}),\r\n // XCol.Create({ col: 31, text: 'Carrier', width: 120, dataIndex: 'carrierName'}),\r\n \r\n XCol.Create({ col: 38, text: 'INV', width: 35, dataIndex: 'invStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 39, text: 'BIL', width: 35, dataIndex: 'billStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 40, text: 'CrDb', width: 35, dataIndex: 'crDbStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n \r\n //same showMilestone Check\r\n XCol.Create({ col: 43, text: 'Tracker', width: 75, dataIndex: 'lastTrackedUser'}),\r\n XCol.Create({ col: 44, text: 'Last Tracked', width: 75, dataIndex: 'lastTrackedDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 45, text: 'Send A/N', width: 75, dataIndex: 'anSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 46, text: 'RCV HAWB', width: 75, dataIndex: 'hawbRcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 47, text: 'RCV P/L', width: 75, dataIndex: 'plRcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 48, text: 'Rcv C. Doc', width: 75, dataIndex: 'cDocRcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 49, text: 'Send ATME', width: 75, dataIndex: 'entryDocDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 50, text: 'CFM AMS', width: 75, dataIndex: 'amsCfrmDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 51, text: 'Rcv 7501', width: 75, dataIndex: '_7501RcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 52, text: 'Rcv 3461', width: 75, dataIndex: '_3461RcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 53, text: 'Cfm ETD', width: 75, dataIndex: 'delActDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 54, text: 'CFM ATA', width: 75, dataIndex: 'emptyRetDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 55, text: 'Cargo Release', width: 75, dataIndex: 'releaseDateForMilestoneAihList', type: XCol.XCellType.Date, align: XCol.XAlignType.Center,}),\r\n XCol.Create({ col: 56, text: 'RCV POD', width: 75, dataIndex: 'podRcvdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 57, text: 'Billing CPLT', width: 75, dataIndex: 'billingCmpIdDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n \r\n XCol.Create({ col: 58, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 59, text: 'Create by', width: 100, dataIndex: 'u1ID', visible: false}),\r\n XCol.Create({ col: 60, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 61, text: 'Update by', width: 100, dataIndex: 'u2ID', visible: false}),\r\n \r\n //for use tooltip\r\n XCol.Create({ col: 62, text: '', width: 0, dataIndex: 'shipper', hiddenInColumnSetup: true, visible: false}), \r\n XCol.Create({ col: 63, text: '', width: 0, dataIndex: 'consignee', hiddenInColumnSetup: true, visible: false}),\r\n XCol.Create({ col: 64, text: '', width: 0, dataIndex: 'notify', hiddenInColumnSetup: true, visible: false}), \r\n ];\r\n\r\n public static getExportCollection(ltype:AihListType, useBranch: boolean): XCol.XExportColumn[] {\r\n if(ltype === AihListType.NormalCan) return this.ExportCollection_Can;\r\n\r\n const expCollection = _.cloneDeep(this.ExportCollection);\r\n let showInfo = false;\r\n switch(ltype) {\r\n case AihListType.Normal:\r\n showInfo = false;\r\n break;\r\n case AihListType.HblInfo:\r\n showInfo = true;\r\n break;\r\n default:\r\n return [];\r\n }\r\n\r\n const infoCols = [\r\n 'lastTrackedUser',\r\n 'lastTrackedDate',\r\n 'anSentDate',\r\n 'hawbRcvdDate',\r\n 'plRcvdDate',\r\n 'cDocRcvdDate',\r\n 'entryDocDate',\r\n 'amsCfrmDate',\r\n '_7501RcvdDate',\r\n '_3461RcvdDate',\r\n 'delActDate',\r\n 'emptyRetDate',\r\n 'releaseDateForMilestoneAihList',\r\n 'podRcvdDate',\r\n 'billingCmpIdDate',\r\n ];\r\n\r\n let returnCloumns = showInfo\r\n ? expCollection\r\n : expCollection.filter(x => !infoCols.includes(x.dataIndex));\r\n if (!useBranch) returnCloumns = returnCloumns.filter(x => x.dataIndex !== 'branch');\r\n\r\n return returnCloumns;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: AiHblListItem.prototype.createdAt, orderByAscending: false };\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n eta: {from: 'fromETA', to: 'toETA'},\r\n feta: {from: 'fromFETA', to: 'toFETA'},\r\n paidDate: {from: 'fromPaidDate', to: 'toPaidDate'},\r\n pkgs: {from: 'fromPkgs', to: 'toPkgs'},\r\n lbs: {from: 'fromLbs', to: 'toLbs'},\r\n kgs: {from: 'fromKgs', to: 'toKgs'},\r\n releaseDate: {from: 'fromReleaseDate', to: 'toReleaseDate'},\r\n releaseDateForMilestoneAihList: {from: 'fromReleaseDateForMilestoneAihList', to: 'toReleaseDateForMilestoneAihList'},\r\n hawbRcvdDate: {from: 'fromHawbRcvdDate', to: 'toHawbRcvdDate'},\r\n plRcvdDate: {from: 'fromPLRcvdDate', to: 'toPLRcvdDate'},\r\n cDocRcvdDate: {from: 'fromCDocRcvdDate', to: 'toCDocRcvdDate'},\r\n eDocSentDate: {from: 'fromEDocSentDate', to: 'toEDocSentDate'},\r\n etaCfrmDate: {from: 'fromETACfrmDate', to: 'toETACfrmDate'},\r\n amsCfrmDate: {from: 'fromAMSCfrmDate', to: 'toAMSCfrmDate'},\r\n lastTrackedDate: {from: 'fromLastTrackedDate', to: 'toLastTrackedDate'},\r\n _7501RcvdDate: {from: 'from_7501RcvdDate', to: 'to_7501RcvdDate'},\r\n _3461RcvdDate: {from: 'from_3461RcvdDate', to: 'to_3461RcvdDate'},\r\n diSchdDate: {from: 'fromDISchdDate', to: 'toDISchdDate'},\r\n actDeliveryDate: {from: 'fromActDeliveryDate', to: 'toActDeliveryDate'},\r\n podRcvdDate: {from: 'fromPODRcvdDate', to: 'toPODRcvdDate'},\r\n billingCmpIdDate: {from: 'fromBillingCmpIdDate', to: 'toBillingCmpIdDate'},\r\n mailDate: {from: 'fromMailDate', to: 'toMailDate'},\r\n postDate: {from: 'fromPostDate', to: 'toPostDate'},\r\n emptyRetDate: {from: 'fromemptyRetDate', to: 'toemptyRetDate'},\r\n delActDate: {from: 'fromdelActDate', to: 'todelActDate'},\r\n entryDocDate: {from: 'fromentryDocDate', to: 'toentryDocDate'},\r\n anSentDate: {from: 'fromanSentDate', to: 'toanSentDate'},\r\n gKgs: {from: 'fromGKgs', to: 'toGkgs'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n createdAt: {from: 'fromCreatedAt', to: 'toCreatedAt'},\r\n confirmDate: {from: 'fromConfirmDate', to: 'toConfirmDate'},\r\n }\r\n\r\n}\r\n","import React from 'react';\r\nimport {IfmsRoute} from '../../../config/types';\r\n\r\nconst Home = React.lazy(() => import('../Home'));\r\nexport const BillView = React.lazy(() => import('../bill/BillView'));\r\nexport const InvoiceView = React.lazy(() => import('../invoice/InvoiceView'));\r\nexport const CrdbView = React.lazy(() => import('../crdb/CrdbView'));\r\nconst CustomerPaymentView = React.lazy(() => import('../payments/customerPayment/CustomerPaymentView'));\r\nconst AgentPaymentView = React.lazy(() => import('../payments/agentPayment/AgentPaymentView'));\r\nconst BillPaymentView = React.lazy(() => import('../payments/billPayment/BillPaymentView'));\r\nconst CCPaymentView = React.lazy(() => import('../payments/ccPayment/CCPaymentView'));\r\n\r\nexport const GeneralInvoiceView = React.lazy(() => import(\"../gInvoice/GeneralInvoiceView\"));\r\nexport const GeneralBillView = React.lazy(() => import(\"../gBill/GeneralBillView\"));\r\nconst DepositCheckClearView = React.lazy(() => import(\"../bankTransactions/DepositCheckClear/DepositCheckClearView\"));\r\nconst CreditCardClearView = React.lazy(() => import(\"../bankTransactions/CreditCardClear/CreditCardClearView\"));\r\nconst BankReconView = React.lazy(() => import(\"../bankTransactions/BankRecon/BankReconView\"));\r\nconst BankTransferView = React.lazy(() => import(\"../bankTransactions/BankTransfer/BankTransferView\"));\r\nconst CheckClearWithExcelView = React.lazy(() => import(\"../bankTransactions/CheckClear/CheckClearWithExcelView\"));\r\nconst PrepaidExpenseAdjustmentView = React.lazy(() => import(\"../general/prepaidExpenseAdjustment/PrepaidExpenseAdjustmentView\"));\r\nconst PayrollSummaryView = React.lazy(() => import(\"../general/payrollSummary/PayrollSummaryView\"));\r\nconst Payroll2View = React.lazy(() => import(\"../general/payroll2/Payroll2View\"));\r\nconst DepreciationAdjustmentView = React.lazy(() => import(\"../general/DepreciationAdjustment/DepreciationAdjustmentView\"));\r\nconst AmortizationAdjustmentView = React.lazy(() => import(\"../general/AmortizationAdjustment/AmortizationAdjustmentView\"));\r\nconst BadDebtProcessingView = React.lazy(() => import(\"../general/BadDebtProcessing/BadDebtProcessingView\"));\r\nconst SalesTaxReturnView = React.lazy(() => import(\"../general/salesTaxReturn/SalesTaxReturnView\"));\r\nconst JournalView = React.lazy(() => import(\"../general/journal/JournalView\"));\r\nconst PeriodInvoiceView = React.lazy(() => import('../invoice/NewPeriodInvoice'));\r\nconst PeriodCrdbView = React.lazy(() => import('../crdb/NewPeriodCrdb'));\r\nconst PaymentPrepView = React.lazy(() => import('../payments/paymentPrep/PaymentPrepView'));\r\n\r\nconst BusinessIntelligenceView = React.lazy(() => import('../reports/BusinessIntelligenceView'));\r\nconst DailyAccountingSummaryView = React.lazy(() => import('../reports/DailyAccountingSummaryView'));\r\nconst AgingReportView = React.lazy(() => import('../reports/AgingReportView'));\r\nconst IncomeStatementView = React.lazy(() => import('../reports/IncomeStatementView'));\r\nconst TrialBalanceView = React.lazy(() => import('../reports/TrialBalanceView'));\r\nconst BalanceSheetView = React.lazy(() => import('../reports/BalanceSheetView'));\r\nconst GeneralLedgerView = React.lazy(() => import('../reports/GeneralLedgerView'));\r\nconst AccountLedgerByEntityView = React.lazy(() => import('../reports/AccountLedgerByEntityView'));\r\nconst AccountBalanceView = React.lazy(() => import('../reports/AccountBalanceByEntityView'));\r\nconst DeferredReportView = React.lazy(() => import('../../common/reports/DeferredReportView'));\r\n//const ProfitAndVolumeSummaryView = React.lazy(() => import('../../common/reports/ProfitAndVolumeSummaryView'));\r\nconst UndoDepositCheckClearView = React.lazy(() => import(\"../bankTransactions/DepositCheckClear/UndoDepositCheckClearView\"));\r\nconst CancelCreditCardClearView = React.lazy(() => import('../bankTransactions/CreditCardClear/CancelCreditCardClearView'));\r\nconst PaymentHistoryView = React.lazy(() => import('../common/PaymentHistoryView'));\r\nconst BankBalanceView = React.lazy(() => import('../bankTransactions/BankBalance/BankBalanceView'));\r\nconst CustomerVendorViews = React.lazy(() => import('../reports/CustomerVendorStatementView'));\r\nconst AgentStatementView = React.lazy(() => import('../reports/AgentStatementView'));\r\nconst BatchRecogView = React.lazy(() => import('../general/BatchRecog/BatchRecogView'));\r\n\r\nconst AcctInfoView = React.lazy(() => import('../common/AcctView'));\r\n\r\nconst routes: Array = [\r\n {path: '/accounting/home', component: Home},\r\n {path: '/accounting/bill/:mode/:parent/:parentId/:id?', component: BillView},\r\n {path: '/accounting/invoice/:mode/:parent/:parentId/:id?', component: InvoiceView},\r\n {path: '/accounting/periodInvoice/:mode/:id?', component: PeriodInvoiceView},\r\n {path: '/accounting/periodCrdb/:mode/:id?', component: PeriodCrdbView},\r\n {path: '/accounting/crdb/:mode/:parent/:parentId/:id?', component: CrdbView},\r\n {path: '/accounting/acCustomerPayment/:mode/:id?', component: CustomerPaymentView},\r\n {path: '/accounting/acAgentPayment/:mode/:id?', component: AgentPaymentView},\r\n {path: '/accounting/acBillPayment/:mode/:id?', component: BillPaymentView},\r\n {path: '/accounting/acCCPayment/:mode/:id?', component: CCPaymentView},\r\n {path: '/accounting/acGeneralInvoice/:mode/:id?', component: GeneralInvoiceView},\r\n {path: '/accounting/acGeneralBill/:mode/:id?', component: GeneralBillView},\r\n {path: '/accounting/acDepositCheckClear/:mode/:id?', component: DepositCheckClearView},\r\n {path: '/accounting/acCreditCardClear/:mode/:id?', component: CreditCardClearView},\r\n {path: '/accounting/acBankRecon/:mode/:id?', component: BankReconView},\r\n {path: '/accounting/acBankTransfer/:mode/:id?', component: BankTransferView},\r\n {path: '/accounting/acCheckClear/:mode/:id?', component: CheckClearWithExcelView},\r\n {path: '/accounting/acPrepaidExpenseAdjustment/:mode/:id?', component: PrepaidExpenseAdjustmentView},\r\n {path: '/accounting/acPayrollSummary/:mode/:id?', component: PayrollSummaryView},\r\n {path: '/accounting/acPayroll2/:mode/:id?', component: Payroll2View},\r\n {path: '/accounting/acDepreciationAdjustment/:mode/:id?', component: DepreciationAdjustmentView},\r\n {path: '/accounting/acAmortizationAdjustment/:mode/:id?', component: AmortizationAdjustmentView},\r\n {path: '/accounting/acBadDebtProcessing/:mode/:id?', component: BadDebtProcessingView},\r\n {path: '/accounting/acSalesTaxReturn/:mode/:id?', component: SalesTaxReturnView},\r\n {path: '/accounting/acJournal/:mode/:fkey/:seq/:type/:tbType?', component: JournalView},\r\n {path: '/accounting/acPaymentPrep/:mode/:id?', component: PaymentPrepView},\r\n {path: '/accounting/acPaymentHistoryView/:jobName/:jobId/:parent?', component: PaymentHistoryView},\r\n {path: '/accounting/acBankBalanceView', component: BankBalanceView},\r\n\r\n {path: '/accounting/acBusinessIntelligence', component: BusinessIntelligenceView},\r\n {path: '/accounting/acDailyAccountingSummary', component: DailyAccountingSummaryView},\r\n {path: '/accounting/acAging', component: AgingReportView},\r\n {path: '/accounting/acIncomeStatement', component: IncomeStatementView},\r\n {path: '/accounting/acBalanceSheet', component: BalanceSheetView},\r\n {path: '/accounting/acTrialBalance', component: TrialBalanceView},\r\n {path: '/accounting/acGeneralLedger', component: GeneralLedgerView},\r\n {path: '/accounting/acAccountLedger', component: AccountLedgerByEntityView},\r\n {path: '/accounting/acAccountBalance', component: AccountBalanceView},\r\n {path: '/accounting/acDeferredReport', component: DeferredReportView},\r\n {path: '/accounting/acDepositCheckClear', component: DepositCheckClearView},\r\n {path: '/accounting/acUndoDepositCheckClear', component: UndoDepositCheckClearView},\r\n {path: '/accounting/acCreditCardClear', component: CreditCardClearView},\r\n {path: '/accounting/acCancelCreditCardClear', component: CancelCreditCardClearView},\r\n {path: '/accounting/acCheckClearwExcel', component: CheckClearWithExcelView},\r\n {path: '/accounting/acCustomerStatement', component: CustomerVendorViews},\r\n {path: '/accounting/acAgentStatement', component: AgentStatementView},\r\n {path: '/accounting/acSalesCostRecog/:mode/:id?', component: BatchRecogView},\r\n\r\n {path: '/accounting/Acct/:parent/:parentId', component: AcctInfoView},\r\n];\r\n\r\nexport default routes;\r\n","import {TableSettings} from \"../../../tableSettings\";\r\n\r\nexport const oceanExportMblList:TableSettings = {\r\n tableVersion: 10056,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: []\r\n};\r\n\r\nexport const oceanExportHblList:TableSettings = {\r\n tableVersion: 10062,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: []\r\n};\r\n\r\nexport const hblBlDetailsHblBody: TableSettings = {\r\n tableVersion: 1008,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '170px',\r\n headersColor: 'white',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n columns: [\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'chgCodeName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20.56,\r\n },\r\n {\r\n Header: 'Item Description',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 29.1,\r\n },\r\n {\r\n Header: 'Revenue',\r\n accessor: 'preRevenue',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.33,\r\n },\r\n {\r\n Header: 'Cost',\r\n accessor: 'preCost',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.33,\r\n },\r\n {\r\n Header: 'Revenue',\r\n accessor: 'colRevenue',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.33,\r\n },\r\n {\r\n Header: 'Cost',\r\n accessor: 'colCost',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.33,\r\n },\r\n {\r\n Header: 'A',\r\n accessor: 'agentShow',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.07,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.08,\r\n },\r\n ]\r\n};\r\n\r\nexport const oceanExportQuotationList:TableSettings = {\r\n tableVersion: 10048,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'status', Header: 'S', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'quoteDate', Header: 'Date', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'quoteNo', Header: 'Quotation #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'operator', Header: 'Quote By', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'validBy', Header: 'Valid By', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'sName', Header: 'Customer', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'contactName', Header: 'Contact', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', },\r\n { accessor:'hBookingNo', Header: 'Booking #', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'serviceType', Header: 'Move Type', visible:true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'commodity', Header: 'Commodity', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'plofRec', Header: 'Place of Receipt', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'lPort', Header: 'Loading Port', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'discharge', Header: 'Discharge Port', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'plofDel', Header: 'Place of Delivery', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'finalDest', Header: 'Final Destination', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'sManID', Header: 'Salesperson', visible:true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u2Date', Header: 'Update', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'u2ID', Header: 'Update by', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u1ID', Header: 'Create by', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const oceanExportLoadPlanList:TableSettings = {\r\n tableVersion: 10046,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'status', Header: 'S', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'containerNo', Header: 'Container #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'conType', Header: 'Type', visible: true, width: 60, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'refNo', Header: 'Ref. #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'bookingNo', Header: 'Booking #', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'mblNo', Header: 'MBL #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'agentSName', Header: 'Agent Name', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'cutOffDate', Header: 'Cargo Cutoff', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'vessel', Header: 'Vessel Name', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'voyage', Header: 'Voyage #', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'loadingPort', Header: 'Loading Port', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'etd', Header: 'ETD', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'lpU2Date', Header: 'Update', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'lpU2ID', Header: 'Update by', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u1ID', Header: 'Create by', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const hblBlDetailsNoOfPackages:TableSettings = {\r\n tableVersion: 1009,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '94px',\r\n headersColor: 'white',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n columns: [\r\n {\r\n Header: 'Container #',\r\n accessor: 'containerNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 22.22,\r\n },\r\n {\r\n Header: 'Type',\r\n accessor: 'conType',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 19.44,\r\n },\r\n {\r\n Header: 'Seal #',\r\n accessor: 'sealNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 19.44,\r\n },\r\n {\r\n Header: 'Pkg(s)',\r\n accessor: 'pkgs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 19.44,\r\n },\r\n {\r\n Header: 'Select',\r\n accessor: 'agentShow',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.88,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.55,\r\n },\r\n ]\r\n};\r\n\r\nexport const hblBlDetailsDimensions:TableSettings = {\r\n tableVersion: 1005,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '94px',\r\n headersColor: 'white',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n columns: [\r\n {\r\n Header: 'Length',\r\n accessor: 'length',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.27,\r\n },\r\n {\r\n Header: 'Width',\r\n accessor: 'width',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.27,\r\n },\r\n {\r\n Header: 'Height',\r\n accessor: 'height',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.27,\r\n },\r\n {\r\n Header: 'Pkgs',\r\n accessor: 'pcs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15.27,\r\n },\r\n {\r\n Header: 'CBM',\r\n accessor: 'chgWeight',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.66,\r\n },\r\n {\r\n Header: 'Act.Wt(lbs)',\r\n accessor: 'lChgWeight',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.66,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.10,\r\n },\r\n ]\r\n};\r\n\r\nexport const loadPlanDetails:TableSettings = {\r\n tableVersion: 1006,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '400px',\r\n headersColor: 'gray',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.55,\r\n },\r\n {\r\n Header: 'H.Booking #',\r\n accessor: 'hBookingNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 18.51,\r\n },\r\n {\r\n Header: 'Shipper',\r\n accessor: 'shipperName',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 27.77,\r\n },\r\n {\r\n Header: 'PKG',\r\n accessor: 'pkgs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.81,\r\n },\r\n {\r\n Header: 'LBS',\r\n accessor: 'lbs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.81,\r\n },\r\n {\r\n Header: 'CBM',\r\n accessor: 'cbm',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.81,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.37,\r\n },\r\n ]\r\n};\r\n\r\nexport const oceanExportBookingList:TableSettings = {\r\n tableVersion: 10047,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'status', Header: 'S', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'bookDate', Header: 'Date', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'hBookingNo', Header: 'Cust. Book. Rqst #', visible:true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'bookedBy', Header: 'Book By', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'custName', Header: 'Customer', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'custContact', Header: 'Contact', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'consignee', Header: 'Consignee', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'agentName', Header: 'Agent', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'quoteNo', Header: 'Quotation #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: false, filterType: 'text' },\r\n { accessor:'hblNo', Header: 'HBL #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'refNo', Header: 'Ref. #', visible:true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'confirmed', Header:'Book CFM', visible: true, width:75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType:'text'},\r\n { accessor:'cBookingNo', Header: 'Carrier\\'s Book #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', },\r\n { accessor:'portCutOff', Header: 'Cargo Cutoff', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'railCutOff', Header: 'SED Cutoff', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'conType', Header: 'CNTR Type/Qty', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n // { accessor:'pkgs', Header: 'Qty', visible:true, width: 50, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'moveType', Header: 'Move Type', visible:true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'commodity', Header: 'Commodity', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'vessel', Header: 'Vessel Name', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'voyage', Header: 'Voyage #', visible:true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'loadingPort', Header: 'Loading Port', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'bookEtd', Header: 'ETD', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'disCharge', Header: 'Discharge Port', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'bookEta', Header: 'ETA', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'plofRec', Header: 'Place of Receipt', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'plofDel', Header: 'Place of Delivery', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'finalDest', Header: 'Final Destination', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'truckingCompany', Header: 'Trucking Company', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n // { accessor:'puEmptyLoc', Header: 'P/U Empty Container', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'puCargoLocation', Header: 'P/U Cargo Location', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'bookRemark', Header: 'Export Ref. #', visible:true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'exPref', Header: 'Remark', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'createDate', Header: 'Create', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'u1ID', Header: 'Create by', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u2Date', Header: 'Update', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'u2ID', Header: 'Update by', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const oeQuotationBillingInfo:TableSettings = {\r\n tableVersion: 10049,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '240px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.41,\r\n },\r\n {\r\n Header: 'Charge Description',\r\n accessor: 'chargeDesc',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 35.23,\r\n },\r\n {\r\n Header: 'Unit',\r\n accessor: 'unit',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.09,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'qty',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.09,\r\n },\r\n {\r\n Header: 'Buying Rate',\r\n accessor: 'buying',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.09,\r\n },\r\n {\r\n Header: 'Selling Rate',\r\n accessor: 'selling',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.09,\r\n },\r\n {\r\n Header: 'Buying Amount',\r\n accessor: 'tBuying',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.36,\r\n },\r\n {\r\n Header: 'Selling Amount',\r\n accessor: 'tSelling',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.36,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.27,\r\n },\r\n ]\r\n};\r\n\r\nexport const otQuotationBillingInfo:TableSettings = {\r\n tableVersion: 10048,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '240px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.45,\r\n },\r\n {\r\n Header: 'Charge Description',\r\n accessor: 'chargeDesc',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 34.48,\r\n },\r\n {\r\n Header: 'Unit',\r\n accessor: 'unit',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.20,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'qty',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.20,\r\n },\r\n {\r\n Header: 'Buying Rate',\r\n accessor: 'buyRate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.20,\r\n },\r\n {\r\n Header: 'Selling Rate',\r\n accessor: 'sellRate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.20,\r\n },\r\n {\r\n Header: 'Buying Amount',\r\n accessor: 'tBuying',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.49,\r\n },\r\n {\r\n Header: 'Selling Amount',\r\n accessor: 'tSelling',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 11.49,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.29,\r\n },\r\n ]\r\n};\r\n\r\nexport const oeMblContainerDetails:TableSettings = {\r\n tableVersion: 1008,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '120px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.05,\r\n },\r\n {\r\n Header: 'Container #',\r\n accessor: 'containerNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.81,\r\n },\r\n {\r\n Header: 'Type',\r\n accessor: 'conType',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.81,\r\n },\r\n {\r\n Header: 'Seal #',\r\n accessor: 'sealNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.81,\r\n },\r\n {\r\n Header: 'Pkg(s)',\r\n accessor: 'pkgs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.81,\r\n },\r\n {\r\n Header: 'Unit',\r\n accessor: 'pUnit',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.10,\r\n },\r\n {\r\n Header: 'Weight (KGS)',\r\n accessor: 'gKgs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.16,\r\n },\r\n {\r\n Header: 'Weight (LBS)',\r\n accessor: 'gLbs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.16,\r\n },\r\n {\r\n Header: 'Flexi Tank',\r\n accessor: 'isFlexiTank',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.10,\r\n },\r\n {\r\n Header: 'Tank Serial #',\r\n accessor: 'serialNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.45,\r\n },\r\n /*{\r\n Header: 'Del',\r\n accessor: 'commands',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage:3.66,\r\n },*/\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.70,\r\n },\r\n ]\r\n};\r\n\r\nexport const oeMblContainerDetailsNoFlexiTank:TableSettings = {\r\n tableVersion: 1008,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '120px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.05,\r\n },\r\n {\r\n Header: 'Container #',\r\n accessor: 'containerNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 28.36,\r\n },\r\n {\r\n Header: 'Type',\r\n accessor: 'conType',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.81,\r\n },\r\n {\r\n Header: 'Seal #',\r\n accessor: 'sealNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.81,\r\n },\r\n {\r\n Header: 'Pkg(s)',\r\n accessor: 'pkgs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.81,\r\n },\r\n {\r\n Header: 'Unit',\r\n accessor: 'pUnit',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.10,\r\n },\r\n {\r\n Header: 'Weight (KGS)',\r\n accessor: 'gKgs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.16,\r\n },\r\n {\r\n Header: 'Weight (LBS)',\r\n accessor: 'gLbs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.16,\r\n },\r\n /*{\r\n Header: 'Del',\r\n accessor: 'commands',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage:3.66,\r\n },*/\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.70,\r\n },\r\n ]\r\n};\r\n\r\nexport const hblOeHblPoBodyLineItems:TableSettings = {\r\n tableVersion: 1004,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '380px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.67,\r\n },\r\n {\r\n Header: 'Container #',\r\n accessor: 'containerNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.92,\r\n },\r\n {\r\n Header: 'SKU/Product Code',\r\n accessor: 'skuNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10.71,\r\n },\r\n {\r\n Header: 'Description',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.39,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'shipQty',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.92,\r\n },\r\n {\r\n Header: 'Unit',\r\n accessor: 'shipUnit',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.14\r\n },\r\n {\r\n Header: 'Unit Price',\r\n accessor: 'uPrice',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.14,\r\n },\r\n {\r\n Header: 'KGS',\r\n accessor: 'kgs',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.92,\r\n },\r\n {\r\n Header: 'LBS',\r\n accessor: 'lbs',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.92,\r\n },\r\n {\r\n Header: 'P.O #',\r\n accessor: 'poNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.14,\r\n },\r\n {\r\n Header: 'HTS Code',\r\n accessor: 'htsCode',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.14,\r\n },\r\n {\r\n Header: 'C. Origin',\r\n accessor: 'coo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 7.14,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 1.78,\r\n },\r\n ]\r\n};\r\n\r\n\r\n/* More popups */\r\n\r\nexport const bookingPickupDeliveryTable:TableSettings = {\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '150px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Trucking Vendor',\r\n accessor: 'truckingVendor',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: 'Pickup Ref. #',\r\n accessor: 'pickupRefNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: 'Pickup Date',\r\n accessor: 'pickupDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: 'Pickup At',\r\n accessor: 'pickupAt',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: 'Delivery Date',\r\n accessor: 'deliveryDate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: 'Delivery To',\r\n accessor: 'deliveryTo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: 'User',\r\n accessor: 'user',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 10,\r\n },\r\n ]\r\n};\r\n\r\nexport const batchPrintTable:TableSettings = {\r\n tableVersion: 10047,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '222px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'selected',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5,\r\n },\r\n {\r\n Header: 'HBL #',\r\n accessor: 'hblNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20,\r\n },\r\n {\r\n Header: 'Customer',\r\n accessor: 'customerName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 46.66,\r\n },\r\n {\r\n Header: 'Broker',\r\n accessor: 'brokerName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 25,\r\n },\r\n { \r\n Header: '', \r\n accessor: 'scroll', \r\n resizable: false, \r\n sortable: false, \r\n visible: true, \r\n initialWidthPercentage: 3.33, \r\n },\r\n ]\r\n};\r\n\r\nexport const containerLoadPlanTable:TableSettings = {\r\n tableVersion: 1009,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '150px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n { Header: 'House Booking #', accessor: 'hbookingno', resizable: false, sortable: false, visible: true, initialWidthPercentage: 16.17, },\r\n { Header: 'Doc Receipt #', accessor: 'doC_RECEIPTNO', resizable: false, sortable: false, visible: true, initialWidthPercentage: 14.7, },\r\n { Header: 'Qty', accessor: 'pkgs', resizable: false, sortable: false, visible: true, initialWidthPercentage: 11.76, },\r\n { Header: 'LBS', accessor: 'lbs', resizable: false, sortable: false, visible: true, initialWidthPercentage: 11.76, },\r\n { Header: 'CBM', accessor: 'cbm', resizable: false, sortable: false, visible: true, initialWidthPercentage: 11.76, },\r\n { Header: 'Final Destination', accessor: 'finalDest', resizable: false, sortable: false, visible: true, initialWidthPercentage: 14.7, },\r\n { Header: 'Shipper', accessor: 'shipperName', resizable: false, sortable: false, visible: true, initialWidthPercentage: 16.17, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 2.94, },]\r\n};\r\n\r\nexport const commercialInvoiceTable:TableSettings = {\r\n tableVersion: 10016,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n height: '300px',\r\n useStorage: false,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Mark and Numbers',\r\n accessor: 'mark',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 25,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'markPkg',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: 'Description of Packages and Goods',\r\n accessor: 'description',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 30,\r\n },\r\n {\r\n Header: 'Unit Price',\r\n accessor: 'unitPrice',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n ]\r\n};\r\n\r\nexport const packingListTable:TableSettings = {\r\n tableVersion: 1006,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n height: '300px',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Mark and Numbers',\r\n accessor: 'mark',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 25,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'markPkg',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: 'Description of Packages and Goods',\r\n accessor: 'description',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 30,\r\n },\r\n {\r\n Header: 'Weight',\r\n accessor: 'markGross',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: 'Measurement',\r\n accessor: 'markMeasure',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n ]\r\n};\r\n\r\nexport const oceanExportContainerStatusList:TableSettings = {\r\n tableVersion: 1008,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'status', Header: 'S', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'containerNo', Header: 'Container N#', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'ft', Header: 'FT', visible: true, width: 40, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'conType', Header: 'Type', visible: true, width: 60, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'refNo', Header: 'Ref. #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'pickupNo', Header: 'Pickup #', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'sealNo', Header: 'Seal #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n\r\n { accessor:'inDate', Header: 'Gate In', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'outDate', Header: 'Gate Out', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'emptryReturn', Header: 'Empty Return', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'ord', Header: 'Origin', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'atd', Header: 'ATD', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'rAtd', Header: 'Rail ATD', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'rAta', Header: 'Rail RTA', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'puDate', Header: 'Pickup Date', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n // { accessor:'dcDate', Header: 'Deliver Date', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'pkgs', Header: 'Pkgs', visible: true, width: 60, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'kgs', Header: 'KGS', visible: true, width: 60, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'lbs', Header: 'LBS', visible: true, width: 60, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'number' },\r\n { accessor:'mblNo', Header: 'MBL #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'vessel', Header: 'Vessel Name', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'voyage', Header: 'Voyage #', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'eta', Header: 'ETA', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n ]\r\n};","import _ from 'lodash';\r\nimport React from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nimport { useAppDispatch, useAppSelector } from '../app/hooks';\r\nimport { JobMenuItem, moveJobToOperation, removeJobMenuItem, replaceJobMenuItem } from '../features/jobMenuSlice';\r\nimport { popScreenFromStack, replaceScreenUrlOnStack, ScreenStackState, ScreenStackItem, moveScreenToOperation, moveScreenToTop } from '../features/screenStackSlice';\r\nimport { changeOperation } from '../features/operationSlice';\r\n\r\nimport { getOperationKey, stringsEqualIgnoreCase } from '../util';\r\nimport { openNewPage, NavigationType } from '../util/navigationHelpers';\r\nimport useGlobalYesNoDialog from './useGlobalYesNoDialog';\r\nimport constants from '../constants';\r\nimport {getEpochFromDate} from '../dateUtils';\r\nimport fastStorage from \"../fastStorage\";\r\nimport { useStore } from 'react-redux';\r\n\r\nfunction findScreenNames(jobMenuSection:Array, urls:Array, currentScreenUrl:string) {\r\n return jobMenuSection.filter(x =>\r\n !stringsEqualIgnoreCase(currentScreenUrl, x.url) &&\r\n urls.some(u => stringsEqualIgnoreCase(u, x.url))\r\n ).map(x => x.label);\r\n}\r\n\r\ninterface IndexByCleanup {\r\n [key: string]: (() => void),\r\n};\r\nconst CleanupMap:IndexByCleanup = {}; // Here we register cleanup for each screen\r\n\r\ninterface LastScreenQueryResult {\r\n item: ScreenStackItem|undefined,\r\n operation: string,\r\n}\r\n/**\r\n * When standalone operation screen is closed, pick last opened screen of all operations\r\n *\r\n * @param screenStack\r\n */\r\nexport function getLastOpenedRegularScreenOnWholeStack(screenStack:ScreenStackState, currentUrl:string):LastScreenQueryResult {\r\n const allStack = _.orderBy([\r\n ...screenStack.oceanImport.map(x => ({item: x, operation: constants.operations['oceanImport'], epoch: getEpochFromDate(x.timestamp)})),\r\n ...screenStack.oceanExport.map(x => ({item: x, operation: constants.operations['oceanExport'], epoch: getEpochFromDate(x.timestamp)})),\r\n ...screenStack.airImport.map(x => ({item: x, operation: constants.operations['airImport'], epoch: getEpochFromDate(x.timestamp)})),\r\n ...screenStack.airExport.map(x => ({item: x, operation: constants.operations['airExport'], epoch: getEpochFromDate(x.timestamp)})),\r\n ...screenStack.otherShipment.map(x => ({item: x, operation: constants.operations['otherShipment'], epoch: getEpochFromDate(x.timestamp)})),\r\n ...screenStack.accounting.map(x => ({item: x, operation: constants.operations['accounting'], epoch: getEpochFromDate(x.timestamp)})),\r\n ...screenStack.warehousing.map(x => ({item: x, operation: constants.operations['warehousing'], epoch: getEpochFromDate(x.timestamp)})),\r\n ...screenStack.customer.map(x => ({item: x, operation: constants.operations['customer'], epoch: getEpochFromDate(x.timestamp)})),\r\n ...screenStack.standalone.map(x => ({item: x, operation: constants.operations['standalone'], epoch: getEpochFromDate(x.timestamp)})),\r\n ...screenStack.opReport.map(x => ({item: x, operation: constants.operations['opReport'], epoch: getEpochFromDate(x.timestamp)})),\r\n ...screenStack.whReceipt.map(x => ({item: x, operation: constants.operations['whReceipt'], epoch: getEpochFromDate(x.timestamp)})),\r\n ...screenStack.utility.map(x => ({item: x, operation: constants.operations['utility'], epoch: getEpochFromDate(x.timestamp)})),\r\n ...screenStack.billings.map(x => ({item: x, operation: constants.operations['billings'], epoch: getEpochFromDate(x.timestamp)})),\r\n ...screenStack.myEvent.map(x => ({item: x, operation: constants.operations['myEvent'], epoch: getEpochFromDate(x.timestamp)})),\r\n ...screenStack.businessIntell.map(x => ({item: x, operation: constants.operations['businessIntell'], epoch: getEpochFromDate(x.timestamp)})),\r\n ], 'epoch', ['desc']);\r\n\r\n const last = allStack.find(x => x.item.url !== currentUrl);\r\n return {\r\n item: last ? last.item : undefined,\r\n operation: last?.operation ?? constants.operations['home'],\r\n };\r\n}\r\n\r\nexport default function useJobMenus() {\r\n const history = useHistory();\r\n\r\n const dispatch = useAppDispatch();\r\n const operationState = useAppSelector(x => x.operation);\r\n const activeOperation = operationState.operation;\r\n const screenStack = useAppSelector(x => x.screenStack);\r\n const jobMenu = useAppSelector(x => x.jobMenu);\r\n const store = useStore();\r\n\r\n const [showGlobalDialog] = useGlobalYesNoDialog();\r\n\r\n function cleanupUrl(urlParam:string) {\r\n if (urlParam) {\r\n if (CleanupMap[urlParam]) {\r\n CleanupMap[urlParam]();\r\n }\r\n delete CleanupMap[urlParam];\r\n cleanupFastStorage(urlParam)\r\n }\r\n }\r\n\r\n function cleanupFastStorage(urlParam: string) {\r\n //const urlMatchToSearch = !urlParam.includes('common/joblistview') ? getRoutePath(urlParam) : urlParam;\r\n const fastStorageKeys = Object.keys(fastStorage);\r\n //const foundKeys = fastStorageKeys.filter(item => item.includes(urlMatchToSearch));\r\n const foundKeys = fastStorageKeys.filter(item => item.includes(urlParam));\r\n if(foundKeys.length) {\r\n foundKeys.forEach(foundKey => {\r\n delete fastStorage[foundKey];\r\n })\r\n }\r\n }\r\n\r\n const removeSingleJobMenu = (url: string, urlOperation: string) => {\r\n cleanupUrl(url);\r\n\r\n const operationToApplyChangesFor = !!urlOperation\r\n ? urlOperation\r\n : activeOperation;\r\n\r\n dispatch(removeJobMenuItem({\r\n url,\r\n activeOperation: getOperationKey(operationToApplyChangesFor)\r\n }));\r\n dispatch(popScreenFromStack({\r\n url,\r\n activeOperation: getOperationKey(operationToApplyChangesFor)\r\n }));\r\n }\r\n\r\n function hasSingleOpenedScreenStartingWithUrl(urlOperation: string, queryUrl:string) {\r\n if (!queryUrl) {\r\n return false;\r\n }\r\n\r\n const operationToApplyChangesFor = !!urlOperation\r\n ? urlOperation\r\n : activeOperation;\r\n\r\n const operation = getOperationKey(operationToApplyChangesFor);\r\n if (!operation) {\r\n return false;\r\n }\r\n\r\n const storeScreenStack = store.getState().screenStack as ScreenStackState;\r\n const operationScreenStack = storeScreenStack ? storeScreenStack[operation] : screenStack[operation];\r\n\r\n return operationScreenStack.findIndex(x => x.url && x.url.toLowerCase().startsWith(queryUrl.toLowerCase())) >= 0;\r\n }\r\n\r\n \r\n function hasSingleOpenedScreenStartingWithUrlWithoutMe(urlOperation: string, queryUrl:string, ignoreUrl: string) {\r\n if (!queryUrl) {\r\n return false;\r\n }\r\n\r\n const operationToApplyChangesFor = !!urlOperation\r\n ? urlOperation\r\n : activeOperation;\r\n\r\n const operation = getOperationKey(operationToApplyChangesFor);\r\n if (!operation) {\r\n return false;\r\n }\r\n\r\n const storeScreenStack = store.getState().screenStack as ScreenStackState;\r\n const operationScreenStack = storeScreenStack ? storeScreenStack[operation] : screenStack[operation];\r\n\r\n return operationScreenStack.findIndex(x => x.url && x.url.toLowerCase().startsWith(queryUrl.toLowerCase()) && ignoreUrl.toLowerCase() !== x.url.toLowerCase()) >= 0;\r\n }\r\n\r\n\r\n function cleanupAll() {\r\n const storeScreenStack = store.getState().screenStack as ScreenStackState;\r\n\r\n const allJobMenuItemsToCloseOnLogout = [\r\n ...storeScreenStack.home,\r\n ...storeScreenStack.oceanImport,\r\n ...storeScreenStack.oceanExport,\r\n ...storeScreenStack.airImport,\r\n ...storeScreenStack.airExport,\r\n ...storeScreenStack.otherShipment,\r\n ...storeScreenStack.whReceipt,\r\n ...storeScreenStack.accounting,\r\n ...storeScreenStack.warehousing,\r\n ...storeScreenStack.opReport,\r\n ...storeScreenStack.customer,\r\n ...storeScreenStack.standalone,\r\n ...storeScreenStack.utility,\r\n ...storeScreenStack.billings,\r\n ...storeScreenStack.myEvent,\r\n ...storeScreenStack.businessIntell,\r\n ];\r\n\r\n allJobMenuItemsToCloseOnLogout.forEach(x => {\r\n dispatch(removeJobMenuItem({\r\n url: x.url,\r\n activeOperation: null\r\n }));\r\n dispatch(popScreenFromStack({\r\n url: x.url,\r\n activeOperation: null\r\n }));\r\n\r\n cleanupFastStorage(x.url);\r\n });\r\n\r\n }\r\n\r\n function hasSingleOpenedScreenInAnyOperationStartingWithUrl(queryUrl:string) {\r\n return !!queryUrl &&\r\n _.keys(screenStack).some(operation => screenStack[operation].findIndex(x => x.url && x.url.toLowerCase().startsWith(queryUrl.toLowerCase())) >= 0);\r\n }\r\n\r\n function hasSingleOpenedScreenInAnyOperationStartingWithUrlWithoutMe(queryUrl:string, ignoreUrl: string) {\r\n return !!queryUrl &&\r\n _.keys(screenStack).some(operation => screenStack[operation].findIndex(x => x.url \r\n && x.url.toLowerCase().startsWith(queryUrl.toLowerCase()) \r\n && !x.url.toLowerCase().startsWith(ignoreUrl.toLowerCase()) ) >= 0);\r\n }\r\n\r\n function getSingleOpenedScreenInAnyOperationStartingWithUrl(queryUrl: string) {\r\n const storeScreenStack = store.getState().screenStack as ScreenStackState;\r\n\r\n let filterOper = _.find(_.keys(storeScreenStack), (oper) => {\r\n return storeScreenStack[oper].find(s => s.url.toLowerCase().startsWith(queryUrl.toLowerCase())) ? true : false;\r\n }) ?? '';\r\n\r\n let lastScreen = undefined;\r\n if (filterOper) {\r\n lastScreen = storeScreenStack[filterOper].find(x => x.url.toLowerCase().startsWith(queryUrl.toLowerCase()));\r\n }\r\n\r\n return {\r\n item: lastScreen,\r\n operation: filterOper ?? 'home',\r\n };\r\n }\r\n\r\n \r\n function getOpenedScreenInAnyOperationContainWithUrl(queryUrls: string[]) {\r\n const storeScreenStack = store.getState().screenStack as ScreenStackState;\r\n\r\n // make to all lowercase.\r\n queryUrls = queryUrls.map(x=>x.toLowerCase());\r\n\r\n // find opend operation.\r\n let filterOper = _.find(_.keys(storeScreenStack), (oper) => {\r\n return storeScreenStack[oper].find(s => queryUrls.some( q => q.length > s.url.length ? q.indexOf(s.url.toLowerCase()) > -1 : s.url.toLowerCase().indexOf(q) > -1)) ? true : false;\r\n }) ?? '';\r\n\r\n // find opend view url.\r\n let lastScreen = undefined;\r\n if (filterOper) {\r\n lastScreen = storeScreenStack[filterOper].find(x => queryUrls.some( q => q.length > x.url.length ? q.indexOf(x.url.toLowerCase()) > -1 : x.url.toLowerCase().indexOf(q) > -1));\r\n } else {\r\n return null;\r\n }\r\n\r\n return {\r\n item: lastScreen,\r\n operation: filterOper,\r\n };\r\n }\r\n\r\n\r\n function moveToSingleOpenedScreenInAnyOperationStartingWithUrl(oepnRequestUrl: string, queryUrls: string[], needAfterScreenUrl?: boolean | undefined) {\r\n let parentOp = history.location.search.split(\"parentOp=\")[1];\r\n //Invoice~CRDB > View모드로 열었다가 Detail에서 Edit으로 전환하는 경우 , Blop에서 열었으면 sidemenu가 blop가 되어야하고 billing에서 열었으면 billings가 되어야한다.\r\n if (parentOp === undefined && ['invoice', 'bill', 'crdb'].some(op => history.location.pathname.includes(op))) {\r\n if (!!activeOperation && activeOperation === 'Billings') parentOp = 'billings'\r\n }\r\n let requestEditView = oepnRequestUrl.indexOf('/edit') > -1;\r\n let opendeUrls = getOpenedScreenInAnyOperationContainWithUrl(queryUrls);\r\n\r\n if(opendeUrls){\r\n // edit를 더 상위 권한으로 간주, \r\n // view 화면이 열려있는데 edit 모드를 열려고 할 경우엔 view 모드 화면을 닫음.\r\n if(requestEditView && opendeUrls.item && opendeUrls.item.url.toLowerCase().indexOf('/view') > -1){\r\n removeSingleJobMenu(opendeUrls.item.url, opendeUrls.operation);\r\n }else{\r\n // edit 화면이 열려있는데 view 모드를 열겠다고 request 한 경우 열려있는 edit 화면을 다시 보여줌.\r\n oepnRequestUrl = opendeUrls.item?.url??oepnRequestUrl;\r\n parentOp = opendeUrls.operation;\r\n }\r\n\r\n // 이미 열려있는 화면을 다시 찾아서 show.\r\n dispatch(moveJobToOperation({\r\n sourceOperation: opendeUrls.operation,\r\n destinationOperation: parentOp??opendeUrls.operation,\r\n url: oepnRequestUrl,\r\n }));\r\n dispatch(moveScreenToOperation({\r\n sourceOperation: opendeUrls.operation,\r\n destinationOperation: parentOp??opendeUrls.operation,\r\n url: oepnRequestUrl,\r\n }));\r\n \r\n dispatch(moveScreenToTop({\r\n url: oepnRequestUrl,\r\n operation: parentOp??opendeUrls.operation,\r\n }));\r\n\r\n openNewPage(history, oepnRequestUrl, NavigationType.jobMenuSwitch, opendeUrls.item?.metadata, parentOp??opendeUrls.item?.afterScreenUrl);\r\n return;\r\n }\r\n\r\n // 열려있는 화면을 못 찾은 경우. \r\n // 새로 open.\r\n if (needAfterScreenUrl) {\r\n openNewPage(history, oepnRequestUrl, NavigationType.newPage, null, \r\n parentOp ? parentOp : ( history.location.pathname ? history.location.pathname : null));\r\n } else {\r\n openNewPage(history, oepnRequestUrl, NavigationType.newPage, null, parentOp);\r\n }\r\n } \r\n\r\n\r\n async function showSingleDependantScreenMessage(url: string, urlOperation: string, title:React.ReactNode|string|null|undefined) {\r\n const operationToApplyChangesFor = !!urlOperation\r\n ? urlOperation\r\n : activeOperation;\r\n\r\n const operation = getOperationKey(operationToApplyChangesFor);\r\n if (!operation) {\r\n return false;\r\n }\r\n const operationJobMenu = jobMenu[operation];\r\n if (!operationJobMenu) {\r\n return false;\r\n }\r\n\r\n const operationScreenStack = screenStack[operation];\r\n\r\n // Build dependency tree of urls to delete\r\n const urlsToSkip = [];\r\n let query = [url];\r\n\r\n while (query && query.length > 0) {\r\n urlsToSkip.unshift(...query);\r\n // eslint-disable-next-line no-loop-func\r\n query = operationScreenStack.filter(s => query.some(q => stringsEqualIgnoreCase(q, s.parentUrl))).map(x => x.url);\r\n }\r\n\r\n if (urlsToSkip && urlsToSkip.length > 1) {\r\n // This screen has children on the stack. Show confirmation box and wait for confirmation\r\n const result = await showGlobalDialog(\r\n
\r\n

Are you sure?

\r\n\r\n {title}\r\n
\r\n
\r\n {findScreenNames(operationJobMenu, urlsToSkip, operationToApplyChangesFor).map((x, i) => (\r\n
  • {x}
  • \r\n ))}\r\n
    \r\n );\r\n\r\n return result;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n async function canGoBackSingle(urlOperation: string): Promise {\r\n const operationToApplyChangesFor = !!urlOperation\r\n ? urlOperation\r\n : activeOperation;\r\n\r\n const operation = getOperationKey(operationToApplyChangesFor);\r\n if (!operation) {\r\n return true;\r\n }\r\n\r\n // Build dependency tree of urls to delete\r\n const urlsToSkip:Array = [];\r\n let query = [operationToApplyChangesFor];\r\n\r\n const operationScreenStack = screenStack[operation];\r\n\r\n while (query && query.length > 0) {\r\n urlsToSkip.unshift(...query);\r\n // eslint-disable-next-line no-loop-func\r\n query = operationScreenStack.filter(s => query.some(q => stringsEqualIgnoreCase(q, s.parentUrl))).map(x => x.url);\r\n }\r\n\r\n if (urlsToSkip && urlsToSkip.length > 1) {\r\n const operationJobMenu = jobMenu[operation];\r\n if (!operationJobMenu) {\r\n return true;\r\n }\r\n // This screen has children on the stack. Show confirmation box and wait for confirmation\r\n const doClose = await showGlobalDialog(\r\n
    \r\n

    Are you sure?

    \r\n\r\n Are you sure you want to close the screen? There are depending windows open:\r\n
    \r\n
    \r\n {findScreenNames(operationJobMenu, urlsToSkip, operationToApplyChangesFor).map((x, i) => (\r\n
  • {x}
  • \r\n ))}\r\n
    \r\n );\r\n\r\n if (!doClose) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n async function goBackSingle(url: string, urlOperation: string, cb:(() => void)|null = null, backScreenOverride:string|null = null):Promise {\r\n removeSingleJobMenu(url, urlOperation);\r\n \r\n const operationToApplyChangesFor = !!urlOperation\r\n ? urlOperation\r\n : activeOperation;\r\n\r\n const operation = getOperationKey(operationToApplyChangesFor);\r\n if (!operation) {\r\n return;\r\n }\r\n\r\n const storeScreenStack = store.getState().screenStack as ScreenStackState;\r\n const operationScreenStack = storeScreenStack[operation];\r\n\r\n // Build dependency tree of urls to delete\r\n const urlsToSkip:Array = [];\r\n let query = [url];\r\n\r\n while (query && query.length > 0) {\r\n urlsToSkip.unshift(...query);\r\n // eslint-disable-next-line no-loop-func\r\n query = operationScreenStack.filter(s => query.some(q => stringsEqualIgnoreCase(q, s.parentUrl))).map(x => x.url);\r\n }\r\n\r\n let backScreenUrl:string|null = null;\r\n let backScreenMetadata = null;\r\n let backScreenAfterScreenUrl = null;\r\n let found = false;\r\n\r\n // In case of standalone operations it does not make sense to search for\r\n // back screen since it is always the last screen on the whole stack\r\n if (urlOperation !== constants.operations.standalone) {\r\n _.forEachRight(operationScreenStack, x => {\r\n if (!found && urlsToSkip.every(u => !stringsEqualIgnoreCase(u, x.url))) {\r\n backScreenUrl = x.url;\r\n backScreenMetadata = x.metadata;\r\n backScreenAfterScreenUrl = x.afterScreenUrl;\r\n found = true;\r\n }\r\n });\r\n\r\n // If screen has parent defined, redirect to parent no matter the logic\r\n const currentScreenOnStack = operationScreenStack.find(x => stringsEqualIgnoreCase(x.url, url));\r\n if (currentScreenOnStack && currentScreenOnStack.parentUrl) {\r\n backScreenUrl = currentScreenOnStack.parentUrl;\r\n backScreenMetadata = currentScreenOnStack.metadata;\r\n }\r\n\r\n if (!backScreenUrl) {\r\n backScreenUrl = backScreenOverride;\r\n }\r\n }\r\n\r\n if (cb) {\r\n cb();\r\n }\r\n\r\n if (backScreenUrl) {\r\n urlsToSkip.forEach(x => cleanupUrl(x));\r\n openNewPage(history, backScreenUrl, NavigationType.jobMenuSwitch, backScreenMetadata, backScreenAfterScreenUrl);\r\n } else {\r\n // Common operations should always have backscreenUrl url. For standalone operations that is not the case\r\n // In that case we search last opened screen by timestamp nad switch to that operation and that screen\r\n const lastScreenQuery = getLastOpenedRegularScreenOnWholeStack(storeScreenStack, url);\r\n\r\n if (!lastScreenQuery || !lastScreenQuery.item) {\r\n dispatch(changeOperation('Home'));\r\n openNewPage(history, '/home/home', NavigationType.newPage);\r\n } else {\r\n dispatch(changeOperation(lastScreenQuery.operation));\r\n openNewPage(history, lastScreenQuery.item.url, NavigationType.jobMenuSwitch, lastScreenQuery.item.metadata, lastScreenQuery.item.afterScreenUrl);\r\n }\r\n }\r\n }\r\n\r\n function replaceSingleCurrentJobItemWith(newUrl:string, newLabel:any, oldLabel: string, oldUrl: string) {\r\n const locationState = history.location?.state as any;\r\n\r\n dispatch(replaceJobMenuItem({\r\n oldUrl,\r\n oldLabel,\r\n newUrl,\r\n newLabel,\r\n metadata: locationState?.metadata\r\n }));\r\n\r\n dispatch(replaceScreenUrlOnStack({\r\n oldUrl,\r\n newUrl,\r\n metadata: locationState?.metadata\r\n }));\r\n }\r\n\r\n function replaceSingleCurrentJobItemLabelWith(newLabel:string|null, oldLabel: string, url: string) {\r\n const locationState = history.location?.state as any;\r\n\r\n dispatch(replaceJobMenuItem({\r\n oldUrl: url,\r\n oldLabel,\r\n newUrl: url,\r\n newLabel,\r\n metadata: locationState?.metadata\r\n }));\r\n }\r\n\r\n function addSingleCleanupFunction(cleanupFnc: () => void, url: string) {\r\n CleanupMap[url] = cleanupFnc;\r\n }\r\n\r\n return {\r\n canGoBackSingle,\r\n goBackSingle,\r\n removeSingleJobMenu,\r\n showSingleDependantScreenMessage,\r\n hasSingleOpenedScreenStartingWithUrl,\r\n hasSingleOpenedScreenStartingWithUrlWithoutMe,\r\n hasSingleOpenedScreenInAnyOperationStartingWithUrl,\r\n hasSingleOpenedScreenInAnyOperationStartingWithUrlWithoutMe,\r\n getSingleOpenedScreenInAnyOperationStartingWithUrl,\r\n moveToSingleOpenedScreenInAnyOperationStartingWithUrl,\r\n replaceSingleCurrentJobItemWith,\r\n replaceSingleCurrentJobItemLabelWith,\r\n addSingleCleanupFunction,\r\n isFirstRun: (url: string) => !CleanupMap[url],\r\n cleanupFastStorage,\r\n cleanupAll\r\n };\r\n}\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport ApplicationContext from '../ApplicationContext';\r\n\r\nlet countCheck = 0;\r\n\r\nexport default function useSideMenuHeightMonitor(name:string) {\r\n const appContext = useContext(ApplicationContext);\r\n const useDarkMode = appContext.useDarkMode;\r\n useEffect(() => {\r\n initialize();\r\n\r\n return uninitialize;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n adjustTableHeight();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [appContext.appInfoAreaDrawerHeight, appContext.appInfoAreaContent, appContext.useDarkMode]);\r\n\r\n const observer = useRef(null);\r\n const infoAreaVisibleRef = useRef(false);\r\n const scrollPos = useRef(0);\r\n\r\n function initialize() {\r\n initializeEventListeners();\r\n initializeObserver();\r\n }\r\n\r\n function uninitialize() {\r\n uninitializeObserver();\r\n uninitializeEventListeners();\r\n }\r\n\r\n function initializeEventListeners() {\r\n window.addEventListener('resize', onScreenResize);\r\n }\r\n\r\n function uninitializeEventListeners() {\r\n window.removeEventListener('resize', onScreenResize);\r\n }\r\n\r\n function initializeObserver() {\r\n if (observer && observer.current) {\r\n return;\r\n }\r\n\r\n const sideMenuNode = document.getElementById('side-menu-operations-parent');\r\n if (!sideMenuNode) {\r\n return;\r\n }\r\n\r\n const observerConfig = {\r\n attributes: true,\r\n childList: true,\r\n subtree: true,\r\n };\r\n\r\n observer.current = new MutationObserver(observe);\r\n observer.current.observe(sideMenuNode, observerConfig);\r\n }\r\n\r\n function uninitializeObserver() {\r\n if (observer && observer.current) {\r\n observer.current.disconnect();\r\n }\r\n }\r\n\r\n function onScreenResize() {\r\n adjustTableHeight();\r\n }\r\n\r\n function observe() {\r\n // HACK - to avoid infinite loop in typescript. Research and find proper solution\r\n\r\n if (countCheck >= 100) {\r\n countCheck = 0;\r\n return;\r\n }\r\n \r\n ++countCheck;\r\n adjustTableHeight();\r\n }\r\n\r\n function adjustTableHeight() {\r\n const infoArea = document.getElementById('ifms-info-area-drawer');\r\n\r\n if (!infoAreaVisibleRef.current && infoArea && infoArea.dataset.open === 'true') {\r\n setTimeout(() => {\r\n captureTableScrollPosition();\r\n doAdjustTableHeight();\r\n scrollSelectedTableRowIntoView();\r\n }, 200); // To handle animations propely\r\n } else {\r\n const infoAreaWasOpened = !!infoAreaVisibleRef.current && infoArea && infoArea.dataset.open === 'false';\r\n doAdjustTableHeight();\r\n\r\n if (infoAreaWasOpened) {\r\n restoreTableScrollPosition();\r\n }\r\n }\r\n }\r\n\r\n function restoreTableScrollPosition() {\r\n const table = document.getElementById(name);\r\n if (!table) {\r\n return;\r\n }\r\n\r\n table.scrollTo({\r\n top: scrollPos.current,\r\n behavior: 'smooth'\r\n });\r\n }\r\n\r\n function captureTableScrollPosition() {\r\n const table = document.getElementById(name);\r\n if (!table) {\r\n return;\r\n }\r\n\r\n scrollPos.current = table.scrollTop;\r\n }\r\n\r\n function scrollSelectedTableRowIntoView() {\r\n const table = document.getElementById(name);\r\n if (!table) {\r\n return;\r\n }\r\n \r\n const selectedRows = table.getElementsByClassName( !useDarkMode ? 'ifms-side-menu-item-selected-onclick' : 'ifms-side-menu-item-selected-onclick-darkmode');\r\n if (!selectedRows || selectedRows.length <= 0) {\r\n return;\r\n }\r\n\r\n const selectedRow = selectedRows[0];\r\n\r\n selectedRow.scrollIntoView({behavior: 'smooth', block: 'end'});\r\n }\r\n\r\n function doAdjustTableHeight() {\r\n const table = document.getElementById(name);\r\n if (!table) {\r\n return;\r\n }\r\n\r\n const tableScrollbarHeight = table.getBoundingClientRect().height - table.clientHeight;\r\n\r\n let titleBarHeight = 0;\r\n let infoAreaHeight = 0;\r\n\r\n const titleBars = document.getElementsByClassName( !useDarkMode ? 'ifms-side-menu-operation-title' : 'ifms-side-menu-operation-title-darkmode');\r\n if (titleBars && titleBars.length > 0) {\r\n var tbRect = titleBars[0].getBoundingClientRect();\r\n titleBarHeight = tbRect.height;\r\n }\r\n\r\n const tobBars = document.getElementById('ifms-top-bar');\r\n if (tobBars) {\r\n tbRect = tobBars.getBoundingClientRect();\r\n titleBarHeight += tbRect.height;\r\n }\r\n\r\n const infoArea = document.getElementById('ifms-info-area-drawer');\r\n if (infoArea && infoArea.dataset.open === 'true') {\r\n infoAreaHeight = infoArea.clientHeight - tableScrollbarHeight; // In case info area is open don't make list appear above info area\r\n infoAreaVisibleRef.current = true;\r\n } else {\r\n infoAreaVisibleRef.current = false;\r\n }\r\n\r\n const vh = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\r\n\r\n table.style.height = `${vh - titleBarHeight - infoAreaHeight}px`;\r\n }\r\n\r\n return {\r\n };\r\n}\r\n ","export default __webpack_public_path__ + \"static/media/direct_print.6d09f560.svg\";","export default __webpack_public_path__ + \"static/media/direct_print_White.58afd00e.svg\";","export default __webpack_public_path__ + \"static/media/preview_print_disable.9e9c8a8e.svg\";","export default __webpack_public_path__ + \"static/media/direct_print_disable.b02d3944.svg\";","import './ifmsSideMenu.css';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\n\r\nimport { IfmsConfigMenuItem, IfmsConfigOperationMenu } from './config/types';\r\nimport useDeepCompareEffect from './hooks/useDeepCompareEffect';\r\nimport ApplicationContext from './ApplicationContext';\r\nimport useSideMenuHeightMonitor from './hooks/useSideMenuHeightMonitor';\r\nimport previewPrintIcon from './img/preview_print.svg';\r\nimport previewPrintIconWhite from './img/preview_print_White.svg';\r\nimport directPrintIcon from './img/direct_print.svg';\r\nimport directPrintIconWhite from './img/direct_print_White.svg';\r\nimport disablePreviewPrintIcon from './img/preview_print_disable.svg';\r\nimport disableDirectPrintIcon from './img/direct_print_disable.svg';\r\nimport fastStorage from './fastStorage';\r\nimport useGlobalYesNoDialog from './hooks/useGlobalYesNoDialog';\r\nimport _ from 'lodash';\r\nimport { useHistory } from 'react-router';\r\nimport { getRoutePath } from './util/routeUtils';\r\nimport { JobNames } from './framework.core/JobNames';\r\nimport useSystemSettings from './hooks/useSystemSettings';\r\n\r\nexport const IfmsSideMenuWidthNumber = 210;\r\nexport const IfmsSideMenuWidth = `${IfmsSideMenuWidthNumber}px`;\r\n\r\nconst ArrowIconSvgDown = '';\r\nconst ArrowIconSvgUp = '';\r\n\r\n//const AutoCloseDelayMs = 500;\r\n\r\n/*\r\nfunction isHoverElementUnderSelectedSubmenu(hoverElement: Element|null, selectedSubmenuId: string): boolean {\r\n if (!hoverElement) {\r\n return false;\r\n }\r\n\r\n const checkDepth = 5;\r\n let checkingElement = hoverElement;\r\n for (let i = 0; i < checkDepth; ++i) {\r\n if (!checkingElement.id) {\r\n if (!checkingElement.parentElement) {\r\n break;\r\n }\r\n\r\n checkingElement = checkingElement.parentElement;\r\n }\r\n if (checkingElement.id && checkingElement.id.startsWith(selectedSubmenuId)) {\r\n return true;\r\n }\r\n\r\n if (!checkingElement.parentElement) {\r\n break;\r\n }\r\n\r\n checkingElement = checkingElement.parentElement;\r\n }\r\n\r\n return false;\r\n}\r\n*/\r\n\r\nexport function findOpendSideMenuIndexes() {\r\n const elements = document.querySelectorAll('[class*=ifms-side-menu-item-opend]');\r\n\r\n const uniqueClassLists = new Set();\r\n\r\n elements.forEach(element => {\r\n const classList = element.classList;\r\n for (let i = 0; i < classList.length; i++) {\r\n uniqueClassLists.add(classList[i]);\r\n }\r\n });\r\n\r\n return Array.from(uniqueClassLists).filter(x => String(x).startsWith('ifms-side-menu-item-opend'));\r\n}\r\n\r\nexport function getMenuItemKey(operation: string, menuName: string, menuIndex: number): string {\r\n return operation ? `${operation}-${menuName}-${menuIndex}` : `${menuName}-${menuIndex}`;\r\n}\r\nexport function getMenuItemName(operation: string, menuName: string, name: string): string {\r\n return operation ? `${operation}-${menuName}-${name}` : `${menuName}-${name}`;\r\n}\r\n\r\nfunction hasSideMenu(x: IfmsConfigMenuItem): boolean {\r\n return !!x.items && x.items.length > 0;\r\n}\r\n\r\ninterface SubmenuSelection {\r\n operationInProgress: false,\r\n key: string,\r\n submenu: IfmsConfigMenuItem|null,\r\n opened: boolean,\r\n index: number, // For calculating top offset for side menu\r\n // Additional settings passed as properties\r\n operation: string,\r\n topBarHeight: number,\r\n customTopOffset: number|undefined,\r\n customLeftOffset: string|undefined,\r\n customZIndex: number|undefined,\r\n mX: number,\r\n mY: number,\r\n};\r\n\r\nconst StorageMap: Map = new Map();\r\n\r\nfunction get(id: string): SubmenuSelection {\r\n const result = StorageMap.get(id);\r\n if (result === undefined) {\r\n throw new Error('Invalid operation');\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction set(id: string, s:SubmenuSelection) {\r\n StorageMap.set(id, s);\r\n}\r\n\r\n/*\r\nfunction checkAndClosePopup(injectMenuId: string, popupId: string, force: boolean = false) {\r\n const settings = get(injectMenuId);\r\n\r\n if (force) {\r\n const popupContainerId = `${injectMenuId}-popup`;\r\n const existingPopup = document.getElementById(popupContainerId);\r\n if (existingPopup) {\r\n const drawer = existingPopup.childNodes[0] as Element;\r\n drawer.classList.remove('ifms-side-menu-open');\r\n set(injectMenuId, {\r\n ...settings,\r\n operationInProgress: false,\r\n key: '',\r\n submenu: null,\r\n opened: false,\r\n index: 0,\r\n });\r\n }\r\n\r\n const alreadySelected = document.querySelectorAll('.ifms-side-menu-item-selected');\r\n for (let i = 0; i < alreadySelected.length; ++i) {\r\n alreadySelected[i].classList.remove('ifms-side-menu-item-selected');\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (!settings.opened || settings.key !== popupId) {\r\n // Other popup has been opened in the mean time. This operation is outdated\r\n return;\r\n }\r\n\r\n const hoverElement = document.elementFromPoint(settings.mX, settings.mY);\r\n\r\n if (!isHoverElementUnderSelectedSubmenu(hoverElement, popupId)) {\r\n const submenuDom = document.getElementById(settings.key);\r\n if (submenuDom) {\r\n const mouseElements = document.elementsFromPoint(settings.mX, settings.mY);\r\n\r\n if (!mouseElements.some(x => x.id === settings.key)) {\r\n submenuDom.classList.remove('ifms-side-menu-item-selected');\r\n }\r\n }\r\n\r\n const popupContainerId = `${injectMenuId}-popup`;\r\n const existingPopup = document.getElementById(popupContainerId);\r\n if (existingPopup) {\r\n const drawer = existingPopup.childNodes[0] as Element;\r\n drawer.classList.remove('ifms-side-menu-open');\r\n set(injectMenuId, {\r\n ...settings,\r\n operationInProgress: false,\r\n key: '',\r\n submenu: null,\r\n opened: false,\r\n index: 0,\r\n });\r\n }\r\n }\r\n}\r\n\r\nfunction injectPopup(\r\n containerId: string,\r\n submenuKey: string,\r\n submenu: IfmsConfigMenuItem,\r\n index: number,\r\n onMenuItemClicked: (menuItem:IfmsConfigMenuItem) => void,\r\n enableBranch?: boolean,\r\n) {\r\n const popupContainerId = `${containerId}-popup`;\r\n const popupContainer = document.getElementById(popupContainerId);\r\n if (!popupContainer || popupContainer.childElementCount !== 1) {\r\n throw new Error('Invalid operation');\r\n }\r\n\r\n const settings = get(containerId);\r\n\r\n const menuTopOffset = settings.customTopOffset ?? (settings.topBarHeight + 68);\r\n const offsetTop = 30 * index + menuTopOffset - 12; // 12px margin from top to align items\r\n // const width = 200;\r\n let submenuHeight = 0;\r\n\r\n // Mark submenu as selected\r\n const submenuDom = document.getElementById(submenuKey);\r\n if (submenuDom) {\r\n const alreadySelected = document.querySelectorAll('.ifms-side-menu-item-selected');\r\n for (let i = 0; i < alreadySelected.length; ++i) {\r\n alreadySelected[i].classList.remove('ifms-side-menu-item-selected');\r\n }\r\n submenuDom.classList.add('ifms-side-menu-item-selected');\r\n }\r\n\r\n const submenuItems = submenu.items ?? [];\r\n submenuItems.forEach(s => {\r\n submenuHeight += s.metadata?.doubleLineInMenu ? 55 : 30;\r\n });\r\n\r\n const zIndex = settings.customZIndex !== undefined ? (settings.customZIndex - 1) : 998;\r\n\r\n const popup = popupContainer.childNodes[0] as HTMLElement;\r\n\r\n popup.innerHTML = '';\r\n popup.id = `${submenuKey}-popup`;\r\n\r\n for (let i = 0; i < submenuItems.length; ++i) {\r\n const sx = submenuItems[i];\r\n const subMenuItemKey = getMenuItemKey(sx, settings.operation, submenuKey, i);\r\n\r\n const subMenuItem = document.createElement('div');\r\n subMenuItem.id = subMenuItemKey;\r\n subMenuItem.classList.add('ifms-side-menu-item-extended');\r\n if (!!sx.metadata?.doubleLineInMenu) {\r\n subMenuItem.classList.add('ifms-side-menu-item-large');\r\n }\r\n subMenuItem.innerHTML = sx.text as string;\r\n subMenuItem.onclick = () => {\r\n onMenuItemClicked(sx);\r\n checkAndClosePopup(containerId, submenuKey, true);\r\n };\r\n\r\n popup.appendChild(subMenuItem);\r\n }\r\n\r\n // popup.style.width = `${width}px`;\r\n\r\n const paddingTop = 13;\r\n const paddingBottom = 14;\r\n\r\n submenuHeight += (paddingTop + paddingBottom - 6); // last menu item does not have bottom margin (minus 2px to fit the border top and bottom)\r\n\r\n popup.style.left = '180px';\r\n popup.style.height = `${submenuHeight}px`;\r\n popup.style.paddingTop = `${paddingTop}px`;\r\n popup.style.paddingBottom = `${paddingBottom}px`;\r\n\r\n if (settings.customLeftOffset) {\r\n popup.style.transform = `translateX(${settings.customLeftOffset})`;\r\n }\r\n\r\n popup.style.zIndex = `${zIndex}`;\r\n popup.style.top = `${offsetTop}px`;\r\n \r\n popup.classList.add('ifms-side-menu-open');\r\n\r\n set(containerId, {\r\n ...settings,\r\n operationInProgress: false,\r\n key: submenuKey,\r\n submenu: submenu,\r\n opened: true,\r\n index: index,\r\n });\r\n}\r\n*/\r\n\r\nfunction injectSubMenu(\r\n containerId: string,\r\n submenuKey: string,\r\n submenu: IfmsConfigMenuItem,\r\n index: number,\r\n onMenuItemClicked: (menuItem:IfmsConfigMenuItem) => void,\r\n currentUrl:string,\r\n useDarkMode:boolean,\r\n showGlobalYesNoDialog?: (contentParam: string | React.ReactNode) => Promise,\r\n opendOperationData?: any,\r\n targetIndex?:number,\r\n) {\r\n const extendedSubMenuClassName = !useDarkMode ? 'ifms-sub-menu-item-withscroll' : 'ifms-sub-menu-item-withscroll-darkmode' ;\r\n const noClickEventSideMenuClassName = !useDarkMode ? 'ifms-sub-menu-item-withscroll-noclickevent' : 'ifms-sub-menu-item-withscroll-noclickevent-darkmode' ;\r\n const selectedSubMenuClassName = !useDarkMode ? 'ifms-sub-menu-item-selected-onclick' : 'ifms-sub-menu-item-selected-onclick-darkmode' ;\r\n\r\n async function handleClickSubMenu(x: IfmsConfigMenuItem, subMenuItemKey: any, index: number) {\r\n let result = false;\r\n\r\n if (x.moreMenuJobName) {\r\n if (x.metadata.operationMode === 'add') {\r\n return;\r\n }\r\n else {\r\n if (opendOperationData) {\r\n _.mapKeys(fastStorage, (val, key) => {\r\n if (!key.endsWith(getRoutePath(currentUrl))) {\r\n return;\r\n }\r\n\r\n if (val && val.isDirty !== undefined && val.isDirty === true) {\r\n result = true;\r\n }\r\n })\r\n\r\n if (showGlobalYesNoDialog && result) {\r\n const doClose = await showGlobalYesNoDialog(\r\n
    \r\n

    Open {x.text} without saving CHANGES?

    \r\n
    \r\n );\r\n\r\n if (!doClose) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n // const alreadySettingsMenuOpend = document.querySelectorAll('.ifms-sub-menu-item-selected-onclick');\r\n // for (let i = 0; i < alreadySettingsMenuOpend.length; ++i) {\r\n // alreadySettingsMenuOpend[i].className = `${extendedSideMenuClassName} parent-index${index}`;\r\n // }\r\n\r\n // const submenuDom = document.getElementById(subMenuItemKey) as HTMLElement;\r\n // if (submenuDom)\r\n // submenuDom.className = 'ifms-sub-menu-item-selected-onclick';\r\n }\r\n onMenuItemClicked(x);\r\n }\r\n else\r\n onMenuItemClicked(x);\r\n }\r\n\r\n const settings = get(containerId);\r\n\r\n // Mark submenu as selected\r\n const submenuDom = document.getElementById(submenuKey) as HTMLElement;\r\n if (submenuDom) {\r\n submenuDom.classList.add(`ifms-side-menu-item-opend-${index}`);\r\n submenuDom.innerHTML = `${submenuDom.textContent as string} ${ArrowIconSvgUp}`;\r\n }\r\n\r\n if(submenu.metadata?.emptyMenu || submenu.metadata?.hideMenu){\r\n submenuDom.innerHTML = ''\r\n }\r\n\r\n const submenuItems = submenu.items ?? [];\r\n const container = document.getElementById(containerId);\r\n if (!container) {\r\n throw new Error('Cannot render menu. Container is missing: ' + containerId);\r\n }\r\n\r\n for (let i = submenuItems.length - 1; i >= 0; i--) {\r\n if (targetIndex && index !== targetIndex) return;\r\n\r\n const sx = submenuItems[i];\r\n const subMenuItemKey = getMenuItemKey('', submenuKey, i);\r\n\r\n const divElement = document.createElement('div');\r\n divElement.id = subMenuItemKey;\r\n //divElement.classList.add(operation === 'Accounting' || operation === 'Ocean Import' ? extendedSideMenuClassName : 'ifms-side-menu-item-extended');\r\n divElement.classList.add(extendedSubMenuClassName);\r\n // if (!!sx.metadata?.doubleLineInMenu) {\r\n // divElement.classList.add('ifms-side-menu-item-large');\r\n // }\r\n\r\n if (sx.textColor && sx.metadata.operationMode !== 'add') {\r\n divElement.style.color = sx.textColor;\r\n }\r\n\r\n if (submenu.text === 'More Menu') {\r\n if (sx.metadata.operationMode === 'add') {\r\n divElement.classList.remove(extendedSubMenuClassName);\r\n divElement.classList.add(noClickEventSideMenuClassName);\r\n }\r\n }\r\n\r\n divElement.classList.add(`parent-index${index}`)\r\n\r\n if (sx.metadata?.operationMode !== 'add') {\r\n if (sx?.metadata?.isDirectPrint)\r\n divElement.innerHTML = sx.text as string + ` `;\r\n else if (sx.subMenu)\r\n divElement.innerHTML = sx.text as string + ` `;\r\n else\r\n divElement.innerHTML = sx.text as string\r\n }\r\n else {\r\n if (sx?.metadata?.isDirectPrint)\r\n divElement.innerHTML = sx.text as string + ` `;\r\n else if (sx.subMenu)\r\n divElement.innerHTML = sx.text as string + ` `;\r\n else\r\n divElement.innerHTML = sx.text as string\r\n }\r\n\r\n divElement.onclick = () => {\r\n //onMenuItemClicked(sx);\r\n handleClickSubMenu(sx, subMenuItemKey, index);\r\n };\r\n\r\n if(currentUrl === sx.link){\r\n divElement.className = `${selectedSubMenuClassName} parent-index${index}`;\r\n }\r\n \r\n submenuDom.insertAdjacentElement('afterend', divElement);\r\n\r\n if(sx.topLineColor) {\r\n const topLineElement = document.createElement('div');\r\n topLineElement.id = 'ifms-side-menu-extended-topline';\r\n topLineElement.style.borderTop = `2px solid ${sx.topLineColor}`;\r\n //topLineElement.style.paddingBottom = '3px';\r\n topLineElement.style.marginLeft = '30px';\r\n topLineElement.style.marginRight = '10px'\r\n submenuDom.insertAdjacentElement('afterend', topLineElement);\r\n }\r\n }\r\n\r\n set(containerId, {\r\n ...settings,\r\n operationInProgress: false,\r\n key: submenuKey,\r\n submenu: submenu,\r\n opened: true,\r\n index: index,\r\n });\r\n}\r\n\r\nfunction injectMenu(\r\n containerId: string,\r\n menuItems: IfmsConfigMenuItem[],\r\n operation: string,\r\n topBarHeight: number,\r\n onMenuItemClicked: (menuItem:IfmsConfigMenuItem) => void,\r\n useDarkMode:boolean,\r\n changeTitleInAnMenu:boolean,\r\n ediForStGeorgeWarehouse : boolean,\r\n currentUrl:string,\r\n showGlobalYesNoDialog: (contentParam: string | React.ReactNode) => Promise,\r\n customTopOffset?: number|undefined,\r\n customLeftOffset?: string|undefined,\r\n customZIndex?: number|undefined,\r\n opendOperationData?: any,\r\n ) {\r\n const sideMenuClassName = !useDarkMode ? 'ifms-side-menu-item-withscroll' : 'ifms-side-menu-item-withscroll-darkmode' ;\r\n const selectedSideMenuClassName = !useDarkMode ? 'ifms-side-menu-item-selected-onclick' : 'ifms-side-menu-item-selected-onclick-darkmode'; \r\n const emptySideMenuClassName = !useDarkMode ? 'ifms-side-menu-emptyItem' : 'ifms-side-menu-emptyItem-darkmode'; \r\n const noClickEventSideMenuClassName = !useDarkMode ? 'ifms-side-menu-item-withscroll-noclickevent' : 'ifms-side-menu-item-withscroll-noclickevent-darkmode' ;\r\n\r\n function handleClick(x: IfmsConfigMenuItem, menuItemKey: string, menuIndex: number) {\r\n if (operation === 'Settings' || operation === 'Reference Files' || operation === 'Business Intelligence') {\r\n // if (operation === 'Settings' || operation === 'Reference Files' || operation === 'Utilities') {\r\n if (!x.metadata.noSetBackgoundColor) {\r\n const alreadySettingsMenuOpend = document.querySelectorAll(`.${selectedSideMenuClassName}`);\r\n for (let i = 0; i < alreadySettingsMenuOpend.length; ++i) {\r\n alreadySettingsMenuOpend[i].className = sideMenuClassName;\r\n }\r\n const submenuDom = document.getElementById(menuItemKey) as HTMLElement;\r\n if (submenuDom)\r\n submenuDom.className = selectedSideMenuClassName;\r\n }\r\n onMenuItemClicked(x);\r\n return;\r\n }\r\n else {\r\n if (hasSideMenu(x)) { \r\n // Accounting > Adjustment, OI > AMS 메뉴 등\r\n const alreadyMenuOpend = document.querySelectorAll(`.ifms-side-menu-item-opend-${menuIndex}`);\r\n if (alreadyMenuOpend.length > 0) {\r\n const menuDom = document.getElementById(menuItemKey);\r\n if (menuDom) {\r\n for (let i = 0; i < alreadyMenuOpend.length; ++i) {\r\n alreadyMenuOpend[i].classList.remove(`ifms-side-menu-item-opend-${menuIndex}`);\r\n }\r\n menuDom.innerHTML = `${menuDom.textContent as string} ${ArrowIconSvgDown}`;\r\n }\r\n const submenuItems = x.items ?? [];\r\n for (let i = 0; i < submenuItems.length; ++i) {\r\n const subMenuLKey = getMenuItemKey('', menuItemKey, i);\r\n const subMenuDom = document.getElementById(subMenuLKey) as HTMLElement;\r\n if (subMenuDom) subMenuDom.remove();\r\n }\r\n //delete more menu topline\r\n if (x.text === 'More Menu' || (x.items?.length ?? 0 > 0)) {\r\n const topLineEle = document.querySelectorAll(\"[id='ifms-side-menu-extended-topline']\");\r\n for (let i = 0; i < topLineEle.length; i++) {\r\n topLineEle[i].remove();\r\n }\r\n }\r\n }\r\n else {\r\n // if (operation === 'Accounting') //accounting can only open one \r\n // makeUnSelectAllSideMenu(menuItemKey)\r\n\r\n // window.console.log('Submenu click');\r\n injectSubMenu(containerId, menuItemKey, x, menuIndex, onMenuItemClicked, currentUrl, useDarkMode, showGlobalYesNoDialog, opendOperationData);\r\n }\r\n } else {\r\n // const submenuDom = document.getElementById(menuItemKey) as HTMLElement;\r\n // if (submenuDom)\r\n // submenuDom.className = selectedSideMenuClassName;\r\n onMenuItemClicked(x);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n /*\r\n function makeUnSelectAllSideMenu(menuItemKey: string) {\r\n const openMenus = document.querySelectorAll('[class*=ifms-side-menu-item-opend]');\r\n if (openMenus.length > 0) {\r\n for (let i = 0; i < openMenus.length; ++i) {\r\n const opneMenu = openMenus[i];\r\n opneMenu.className = 'ifms-side-menu-item';\r\n opneMenu.innerHTML = `${opneMenu.textContent as string} ${ArrowIconSvgDown}`;\r\n }\r\n const allUnderMenuItemExtended = document.getElementsByClassName('ifms-side-menu-item-extended');\r\n const allUnderMenuItemLarge = document.getElementsByClassName('ifms-side-menu-item-large');\r\n while (allUnderMenuItemExtended.length > 0) {\r\n allUnderMenuItemExtended[0].remove();\r\n }\r\n while (allUnderMenuItemLarge.length > 0) {\r\n allUnderMenuItemLarge[0].remove();\r\n }\r\n }\r\n }\r\n\r\n function handleMouseEnter(x: IfmsConfigMenuItem, menuItemKey: string, menuIndex: number) {\r\n if (hasSideMenu(x)) {\r\n injectPopup(containerId, menuItemKey, x, menuIndex, onMenuItemClicked,enablebranch);\r\n } else {\r\n const alreadySelected = document.querySelectorAll('.ifms-side-menu-item-selected');\r\n for (let i = 0; i < alreadySelected.length; ++i) {\r\n alreadySelected[i].classList.remove('ifms-side-menu-item-selected');\r\n }\r\n }\r\n }\r\n*/\r\n\r\n const container = document.getElementById(containerId);\r\n if (!container) {\r\n throw new Error('Cannot render menu. Container is missing: ' + containerId);\r\n }\r\n\r\n set(containerId, {\r\n operationInProgress: false,\r\n key: '',\r\n submenu: null,\r\n opened: false,\r\n index: 0,\r\n topBarHeight,\r\n customLeftOffset,\r\n customTopOffset,\r\n customZIndex,\r\n operation,\r\n mX: -1,\r\n mY: -1,\r\n });\r\n\r\n container.innerHTML = ''; // Clear all\r\n\r\n // if (operation === 'Utility') {\r\n // if (!showMilestoneInOihList) {\r\n // menuItems[menuItems.findIndex(x => x.text?.toString().includes('OIH B/L Activity Status'))].text = 'OIH B/L Activity Status On'\r\n // }\r\n // if (!showMilestoneInAihList) {\r\n // menuItems[menuItems.findIndex(x => x.text?.toString().includes('AIH B/L Activity Status'))].text = 'AIH B/L Activity Status On'\r\n // }\r\n // }\r\n\r\n for (let i = 0; i < menuItems.length; ++i) {\r\n const menuItem = menuItems[i];\r\n const menuItemKey = getMenuItemKey(operation, 'ifms-side-menu', i);\r\n\r\n const divElement = document.createElement('div');\r\n divElement.id = menuItemKey;\r\n if(menuItem.name){\r\n const menuItemName = getMenuItemName(operation, 'ifms-side-menu', menuItem.name);\r\n // @ts-ignore:next-line\r\n divElement.name = menuItemName;\r\n }\r\n\r\n // if (!menuItem.metadata?.emptyMenu)\r\n // divElement.classList.add(operation === 'Accounting' || operation === 'Ocean Import' ? sideMenuClassName : 'ifms-side-menu-item');\r\n // else\r\n // divElement.classList.add('ifms-side-menu-emptyItem');\r\n if (!menuItem.metadata?.emptyMenu)\r\n divElement.classList.add(sideMenuClassName);\r\n else\r\n divElement.classList.add(emptySideMenuClassName);\r\n\r\n if (menuItem.disableOpertaionView && opendOperationData) {\r\n divElement.classList.add(noClickEventSideMenuClassName);\r\n }\r\n\r\n if (menuItem.textColor) {\r\n divElement.style.color = menuItem.textColor;\r\n }\r\n\r\n // if (!!menuItem.metadata?.doubleLineInMenu) {\r\n // divElement.classList.add('ifms-side-menu-item-large');\r\n // }\r\n if (!menuItem.metadata?.emptyMenu) {\r\n divElement.onclick = () => {\r\n handleClick(menuItem, menuItemKey, i);\r\n }\r\n }\r\n // divElement.onmouseenter = () => {\r\n // handleMouseEnter(menuItem, menuItemKey, i);\r\n // }\r\n\r\n //SideMenu disable 시킴\r\n if(menuItem.disable) { \r\n divElement.style.opacity = '0.2';\r\n divElement.style.pointerEvents = 'none';\r\n }\r\n\r\n if(menuItem.topLineColor) {\r\n const topLineElement = document.createElement('div');\r\n topLineElement.id = 'ifms-side-menu-topline';\r\n topLineElement.style.borderTop = `1px solid ${menuItem.topLineColor}`;\r\n //topLineElement.style.paddingBottom = '3px';\r\n //operation !== 'Accounting' ? topLineElement.style.marginLeft = '22px' : topLineElement.style.marginLeft = '10px';\r\n topLineElement.style.marginLeft = '20px';\r\n topLineElement.style.marginRight = '2px'\r\n if(menuItem.topLineShort) topLineElement.style.width = '105px'\r\n container.appendChild(topLineElement);\r\n }\r\n\r\n divElement.innerHTML =\r\n (hasSideMenu(menuItem) || menuItem.moreMenuJobName) && (!(operation === 'Settings' || operation === 'Reference Files' || operation === 'Billings'))\r\n ?\r\n `${menuItem.text as string} ${ArrowIconSvgDown}`\r\n :\r\n (menuItem.metadata?.isDirectPrint ?\r\n (menuItem.text as string + ` `)\r\n :\r\n (menuItem.text as string)\r\n );\r\n\r\n if (menuItem.subMenu) divElement.innerHTML += ` `;\r\n\r\n container.appendChild(divElement);\r\n\r\n //Default open menu \r\n if ((menuItem.text === 'More Menu' || (operation === \"Accounting\" && menuItem.text === 'Financial Report')) && hasSideMenu(menuItem)) {\r\n // if (menuItem.text === 'More Menu' && hasSideMenu(menuItem)) {\r\n if (!!opendOperationData) {\r\n if (opendOperationData.jobName === JobNames.OIMbl) {\r\n let menuIndex = menuItem.items?.findIndex(x => x.text === 'CFS Manifest');\r\n if (menuIndex !== undefined && !ediForStGeorgeWarehouse)\r\n menuItem.items?.splice(menuIndex, 1);\r\n }\r\n else if (opendOperationData.jobName === JobNames.OIHbl) {\r\n let menuIndex = menuItem.items?.findIndex(x => x.text === 'Arrival Notice' && x.link !== null);\r\n if (menuIndex !== undefined && !changeTitleInAnMenu)\r\n menuItem.items?.splice(menuIndex, 1);\r\n else if (menuIndex !== undefined)\r\n menuItem.items?.splice(menuIndex + 1, 1);\r\n\r\n menuIndex = menuItem.items?.findIndex(x => x.text === 'CFS Release');\r\n if (menuIndex !== undefined && !ediForStGeorgeWarehouse)\r\n menuItem.items?.splice(menuIndex, 1);\r\n }\r\n else if (opendOperationData.jobName === JobNames.AIHbl) {\r\n let menuIndex = menuItem.items?.findIndex(x => x.text === 'Arrival Notice' && x.link !== null);\r\n if (menuIndex !== undefined && !changeTitleInAnMenu)\r\n menuItem.items?.splice(menuIndex, 1);\r\n else if (menuIndex !== undefined)\r\n menuItem.items?.splice(menuIndex + 1, 1);\r\n }\r\n }\r\n injectSubMenu(containerId, menuItemKey, menuItem, i, onMenuItemClicked, currentUrl ?? '', useDarkMode, showGlobalYesNoDialog, opendOperationData);\r\n\r\n //hide more menu in list view\r\n if (menuItem.metadata?.hideMenu)\r\n container.removeChild(divElement);\r\n }\r\n }\r\n\r\n // Create empty popup holder\r\n const popupContainerId = `${containerId}-popup`;\r\n const existingPopup = document.getElementById(popupContainerId);\r\n if (existingPopup) {\r\n existingPopup.innerHTML = '
    '; // Placeholder for drawer\r\n } else {\r\n const popupDivElement = document.createElement('div');\r\n popupDivElement.id = popupContainerId;\r\n popupDivElement.innerHTML = '
    '; // Placeholder for drawer\r\n\r\n // Portal popup into the DOM where they belong to\r\n const parent = document.getElementById('ifms-app-poppers');\r\n parent?.appendChild(popupDivElement);\r\n }\r\n\r\n // if (!(operation === 'Settings' || operation === 'Reference Files' || operation === 'Utilities')) {\r\n // const findOpendMenuIndex = menuItems?.findIndex(x => x.link?.includes(currentUrl ?? '')) ?? 0;\r\n // if (findOpendMenuIndex !== -1) {\r\n // const menuItemKey = getMenuItemKey(undefined, operation, 'ifms-side-menu', findOpendMenuIndex);\r\n // const findOpendSideMenu = document.getElementById(menuItemKey);\r\n // if (findOpendSideMenu)\r\n // findOpendSideMenu.className = selectedSideMenuClassName;\r\n // }\r\n // }\r\n}\r\n\r\nfunction IfmsSideMenu({\r\n parentId,\r\n menuId,\r\n menus,\r\n onMenuItemClicked,\r\n operation,\r\n topBarHeight,\r\n noTitle = false,\r\n customTopOffset = undefined,\r\n customLeftOffset = undefined,\r\n customZIndex = undefined,\r\n enableBranch = false,\r\n opendOperationData,\r\n}: {\r\n parentId: string,\r\n menuId: string,\r\n menus : IfmsConfigOperationMenu|null|undefined,\r\n onMenuItemClicked: (menuItem:IfmsConfigMenuItem) => void,\r\n operation: string,\r\n topBarHeight: number,\r\n noTitle?: boolean,\r\n customTopOffset?: number|undefined,\r\n customLeftOffset?: string|undefined,\r\n customZIndex?: number|undefined,\r\n enableBranch?: boolean,\r\n opendOperationData?: any\r\n}) {\r\n useSideMenuHeightMonitor(parentId);\r\n const history = useHistory();\r\n const injectMenuId = `${menuId}-inject-container`;\r\n const hasJob = !!menus && !!menus.job && menus.job.length > 0;\r\n const hasDownload = !!menus && !!menus.download && menus.download.length > 0;\r\n const hasReport = !!menus && !!menus.report && menus.report.length > 0;\r\n const hasPreReport = !!menus && !!menus.preReport && menus.preReport.length > 0;\r\n const hasOperationReport = !!menus && !!menus.operationReport && menus.operationReport.length > 0;\r\n const hasMoreMenu = !!menus && !!menus.moreMenu && menus.moreMenu.length > 0;\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n \r\n const currentUrl = `${history.location.pathname}${history.location.search}`;\r\n const appcontext = useContext(ApplicationContext);\r\n\r\n const systemSettings = useSystemSettings();\r\n enableBranch = appcontext.systemSettings?.enableBranch??false;\r\n\r\n const renderingMenuItems: IfmsConfigMenuItem[] = [];\r\n\r\n function setupMenu() {\r\n if (hasJob) {\r\n renderingMenuItems.splice(renderingMenuItems.length, 0, ...menus.job);\r\n }\r\n if (hasOperationReport) {\r\n renderingMenuItems.splice(renderingMenuItems.length, 0, ...menus.operationReport!);\r\n }\r\n if (hasDownload) {\r\n renderingMenuItems.splice(renderingMenuItems.length, 0, ...menus.download!);\r\n }\r\n if (hasPreReport) {\r\n renderingMenuItems.splice(renderingMenuItems.length, 0, ...menus.preReport!);\r\n }\r\n if (hasReport) {\r\n renderingMenuItems.splice(renderingMenuItems.length, 0, ...menus.report!);\r\n }\r\n if (hasMoreMenu) {\r\n renderingMenuItems.splice(renderingMenuItems.length, 0, ...menus.moreMenu!);\r\n }\r\n }\r\n\r\n useDeepCompareEffect(() => {\r\n setupMenu();\r\n injectMenu(injectMenuId, renderingMenuItems, operation, topBarHeight, onMenuItemClicked, appcontext.useDarkMode, systemSettings.bl?.changeTitleInAnMenu ?? false, \r\n appcontext.suntekSettings?.edi?.ediForStGeorgeWarehouse ?? false, currentUrl, showGlobalYesNoDialog, customTopOffset, customLeftOffset, customZIndex, opendOperationData);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [operation, menus, appcontext.useDarkMode]\r\n );\r\n\r\n useEffect(()=>{\r\n setupMenu();\r\n\r\n const links = renderingMenuItems.filter(x => (x.items?.length ?? 0) > 0).flatMap(x => x.items?.map(item => item.link) ?? []);\r\n if (links && links.findIndex(x => currentUrl.includes(x ?? '')) !== -1) {\r\n const foundIndex = renderingMenuItems.findIndex(menuItem => {\r\n return menuItem.items && menuItem.items.some(item => item.link === currentUrl);\r\n });\r\n if (foundIndex !== -1) {\r\n const menuItem = renderingMenuItems[foundIndex];\r\n const menuItemKey = getMenuItemKey(operation, 'ifms-side-menu', foundIndex);\r\n\r\n if (!findOpendSideMenuIndexes().some(x => Number(String(x).replace(/[^0-9]/g, \"\")) === foundIndex))\r\n injectSubMenu(injectMenuId, menuItemKey, menuItem, foundIndex, onMenuItemClicked, currentUrl, appcontext.useDarkMode, showGlobalYesNoDialog, opendOperationData, foundIndex);\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n },[currentUrl])\r\n\r\n\r\n useEffect(() => {\r\n document.addEventListener('mousedown', handleClickOutside, true);\r\n document.addEventListener('mousemove', processMouseMove);\r\n return () => {\r\n document.removeEventListener('mousemove', processMouseMove);\r\n document.removeEventListener('mousedown', handleClickOutside, true);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n // Determine if the popup needs to be closed on mouse outside menu or popup window\r\n function processMouseMove(e:MouseEvent) {\r\n const settings = get(injectMenuId);\r\n set(injectMenuId, {\r\n ...get(injectMenuId),\r\n mX: e.clientX,\r\n mY: e.clientY,\r\n });\r\n\r\n if (settings.opened) {\r\n //setTimeout(() => checkAndClosePopup(injectMenuId, settings.key), AutoCloseDelayMs);\r\n }\r\n }\r\n\r\n function handleClickOutside(e:MouseEvent) {\r\n // if the mouse click was over top menu - ignore it\r\n const elements = document.elementsFromPoint(e.clientX, e.clientY);\r\n if (elements.some(x => x.classList.contains('rc-menu-item'))) {\r\n return;\r\n }\r\n\r\n const target = e.target as Node|null;\r\n const sideMenu = document.getElementById(menuId);\r\n if (sideMenu && sideMenu.contains(target)) {\r\n return;\r\n }\r\n\r\n const popupContainerId = `${injectMenuId}-popup`;\r\n const popup = document.getElementById(popupContainerId);\r\n if (popup && popup.contains(target)) {\r\n return;\r\n }\r\n\r\n const reportPopup = document.querySelectorAll('[class^=\"report-popup\"]');\r\n for(let i = 0 ; i \r\n {!noTitle &&\r\n
    \r\n {displayOperation}\r\n
    \r\n }\r\n
    \r\n
    \r\n {/* {operation === 'Accounting' || operation === 'Ocean Import' ?\r\n
    \r\n :\r\n
    \r\n } */}\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default React.memo(IfmsSideMenu);\r\n","import {MutableRefObject, useContext, useEffect, useState} from 'react';\r\nimport {useTypedFastStorage} from '../../hooks/useFastStorage';\r\nimport CheckBox from \"../../ui/CheckBox\";\r\nimport SecondaryButton from \"../../ui/SecondaryButton\";\r\nimport {ApplicableTableSettings} from \"../../tableSettings\";\r\nimport SmartTable from \"../../uiControls/SmartTable\";\r\nimport {DateRenderer, FloatRenderer, NullableCheckboxIconRenderer, TextAlignLeftRenderer} from \"../../uiControls/SmartTableRenderers\";\r\nimport _ from \"lodash\";\r\nimport RadioButton from \"../../ui/RadioButton\";\r\nimport {batchPrintTable} from \"./tableSettings\";\r\nimport {JobNames} from \"../../framework.core/JobNames\";\r\nimport GreenButton from \"../../ui/GreenButton\";\r\nimport Fieldset from \"../common/Fieldset\";\r\nimport Date from \"../../ui/Date\";\r\nimport BranchDropDown from \"../../uiControls/BranchDropDown\";\r\nimport {now} from \"../../dateUtils\";\r\nimport ApplicationContext from \"../../ApplicationContext\";\r\nimport {DocumentType} from \"../../framework.core/DocumentType\";\r\nimport {BatchPrintViewModel} from \"../../fms.core/report/BatchPrintViewModel\";\r\nimport useGlobalOkDialog from '../../hooks/useGlobalOkDialog';\r\nimport useReportViewer from '../../hooks/useReportViewer';\r\nimport { CRDBArgs, InvoiceArgs } from '../../fms.report/args';\r\nimport useGlobalYesNoDialog from '../../hooks/useGlobalYesNoDialog';\r\nimport Number from \"../../ui/Number\";\r\nimport TextBox from '../../ui/TextBox';\r\n\r\ninterface IBatchPrint {\r\n [key: string]: any,\r\n list: BatchPrintViewModel[]\r\n}\r\n\r\ninterface BatchPrintStorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\ninterface BatchPrintViewParams {\r\n id: string | undefined,\r\n onPopupClose?: () => void,\r\n selectedElement: any,\r\n jobName: JobNames,\r\n documentType: DocumentType\r\n};\r\n\r\ninterface BatchPrintLoadedDetailsViewParams {\r\n batchPrint: IBatchPrint,\r\n batchPrintRef: MutableRefObject,\r\n setBatchPrint: (x: Partial) => void,\r\n onPopupClose?: () => void,\r\n documentType: DocumentType,\r\n loadList: () => void\r\n};\r\n\r\nfunction getBatchPrintStorageKeys(): BatchPrintStorageKeys {\r\n return {modelStorage: 'common-more-arrival-notice'}\r\n}\r\n\r\nfunction BatchPrintImpl(params: BatchPrintViewParams) {\r\n\r\n const {modelStorage} = getBatchPrintStorageKeys();\r\n const {selectedElement, documentType} = params;\r\n\r\n const [inStorage, setInStorage, removeBatchPrintFromStorage, batchPrintRef] = useTypedFastStorage(modelStorage, null);\r\n const appContext = useContext(ApplicationContext);\r\n\r\n useEffect(() => {\r\n initialize();\r\n return () => removeBatchPrintFromStorage()\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [selectedElement?.id]\r\n );\r\n\r\n async function loadExisting(): Promise {\r\n return {\r\n sendTo: 'E',\r\n rangeType: 'D',\r\n dateFrom: now(),\r\n dateTo: now(),\r\n branch: 'ALL', //selectedElement?.branch || '',\r\n list: []\r\n }\r\n }\r\n\r\n async function loadList() {\r\n const apiResult = await appContext.api.readBatchPrintList(documentType, inStorage?.rangeType, inStorage?.dateFrom, inStorage?.dateTo, inStorage?.numberFrom, inStorage?.numberTo, inStorage?.branch);\r\n if(apiResult) {\r\n apiResult.forEach((item:any) => {\r\n item.selected = true;\r\n });\r\n setInStorage({list:apiResult}) \r\n }\r\n }\r\n\r\n async function initialize() {\r\n const data = await loadExisting();\r\n setInStorage({...data})\r\n \r\n }\r\n\r\n if (!inStorage) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction SelectRenderer({data, row}: any) {\r\n const toggleSelection = data[row.index].toggleSelection;\r\n const isView = data[row.index].isView;\r\n\r\n return
    \r\n toggleSelection(row.index)} disabled={isView}/>\r\n
    ;\r\n}\r\n\r\nfunction BatchPrintInitializedImpl({\r\n batchPrint,\r\n batchPrintRef,\r\n setBatchPrint,\r\n onPopupClose,\r\n documentType,\r\n loadList,\r\n }: BatchPrintLoadedDetailsViewParams) {\r\n const [selectedIndex, setSelectedIndex] = useState(0)\r\n const appContext = useContext(ApplicationContext)\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const {viewReport} = useReportViewer();\r\n\r\n function onChange(change: Partial) {\r\n setBatchPrint(change);\r\n }\r\n\r\n function toggleSelection(i: number) {\r\n const _list = _.cloneDeep(batchPrint.list);\r\n _list[i].selected = !_list[i].selected;\r\n\r\n onChange({list: _list})\r\n }\r\n\r\n function selectAllInTable() {\r\n let count = 1;\r\n const _list = _.cloneDeep(batchPrint.list);\r\n _list.forEach((item) => {\r\n if(count <= 100) item.selected = true;\r\n else item.selected = false;\r\n count++;}\r\n );\r\n onChange({list: _list})\r\n }\r\n\r\n function clearTable() {\r\n const _list = _.cloneDeep(batchPrint.list);\r\n _list.forEach(item => item.selected = false);\r\n onChange({list: _list})\r\n }\r\n\r\n function getArgs(item: BatchPrintViewModel) {\r\n let title;\r\n let args;\r\n const str = `${item.cusID}|${item.cusName}|${item.cusContact}|${item.cusFax}|${item.cusEmail}`;\r\n if (documentType === DocumentType.InvoiceS){\r\n title = `Invoice [${item.invoiceNo}] for ${item.cusFullName}`;\r\n args = new InvoiceArgs({\r\n docType: DocumentType.InvoiceS,\r\n formCaption: title,\r\n subject: title,\r\n tbId: item.id.toString(),\r\n tbName: \"T_INVOHD\",\r\n toCompanyid: str,\r\n\r\n stamp: appContext.suntekSettings?.accounting?.showPastDueOnInv,\r\n useMultiCur: appContext.suntekSettings?.accounting?.showAmountByCurrencyInInvoice\r\n });\r\n } else if(documentType === DocumentType.CrDbBatch){\r\n title = `CR/DB # [${item.invoiceNo}]`;\r\n args = new CRDBArgs({\r\n docType: DocumentType.CrDbBatch,\r\n formCaption: title,\r\n subject: title,\r\n tbId: item.id.toString(),\r\n toCompanyid: str,\r\n })\r\n }\r\n return args;\r\n }\r\n\r\n async function checkPrintOptions(isPreview: boolean = true) {\r\n let errorMsg = 'you must check at least one of select list';\r\n let title = documentType === DocumentType.InvoiceS ? 'Invoices': 'CrDbs';\r\n let errorMsg2= `you can select up to 100 ${title}\\n but ${batchPrint.list.filter(item =>item.selected).length} ${title} selected\\n Do you want to print 100 ${title}? `;\r\n if (isPreview || batchPrint.sendTo === 'P') {\r\n if (!batchPrint.list.some(item => item.selected)) {\r\n await showGlobalOkDialog(

    {errorMsg}

    , false, \"Error\");\r\n return false;\r\n }else if(batchPrint.list.filter(item => item.selected).length > 100){\r\n const doPrint = await showGlobalYesNoDialog(

    {errorMsg2}

    ,false, 0, true);\r\n if(doPrint){\r\n let count = 0;\r\n batchPrint.list.forEach((x) => {\r\n if(x.selected){\r\n count++;\r\n }\r\n if(count > 100){\r\n x.selected = false;\r\n }\r\n });\r\n onChange({list: batchPrint.list});\r\n } else {\r\n return false;\r\n }\r\n }\r\n \r\n } else {\r\n const selectList = batchPrint.list.filter((item) => item.selected);\r\n if(selectList.length <= 100){\r\n if (batchPrint.sendTo === 'F') {\r\n errorMsg = errorMsg + ` with Fax Number`;\r\n \r\n if(!selectList.some(item => item.useFax)) {\r\n await showGlobalOkDialog(

    {errorMsg}

    , false, \"Error\");\r\n return false;\r\n }\r\n } else if (batchPrint.sendTo === 'E') {\r\n errorMsg = errorMsg + ` with Email Address`;\r\n \r\n if(!selectList.some(item => item.useEmail)) {\r\n await showGlobalOkDialog(

    {errorMsg}

    , false, \"Error\");\r\n return false;\r\n }\r\n } \r\n }else{\r\n await showGlobalOkDialog(

    {errorMsg2}

    , false, \"Error\");\r\n return false;\r\n }\r\n \r\n }\r\n return true;\r\n }\r\n\r\n async function print() {\r\n if (!await checkPrintOptions()) return;\r\n\r\n const selectList = batchPrint.list.filter((item) => item.selected);\r\n let args;\r\n const batchPrintInfos: { tbName: string, tbId: string }[] = []\r\n let tTitle: string = '';\r\n const total = selectList.length;\r\n\r\n for (let i: number = 0; i < selectList.length; i++) {\r\n const row = selectList[i];\r\n if (batchPrintInfos.length === 0) {\r\n tTitle = documentType === DocumentType.InvoiceS ? ` Invoice [${row.invoiceNo}] for ${row.cusFullName}` : ` Credit / Debit [${row.invoiceNo}]`;\r\n if (total > 1) tTitle += ` + ${total - 1}`;\r\n batchPrintInfos.push({ tbName: row.tbName, tbId: String(row.id) });\r\n } else {\r\n if (batchPrintInfos[batchPrintInfos.length - 1].tbName !== row.tbName) {\r\n batchPrintInfos.push({ tbName: row.tbName, tbId: String(row.id) });\r\n } else {\r\n batchPrintInfos[batchPrintInfos.length - 1].tbId += `,${row.id}`;\r\n }\r\n }\r\n }\r\n\r\n if (documentType === DocumentType.InvoiceS) {\r\n //let title = `Invoice Batch Print`;\r\n args = new InvoiceArgs({\r\n docType: documentType,\r\n formCaption: tTitle,\r\n subject: tTitle,\r\n batchPrintInfos: batchPrintInfos,\r\n //tbId: selectedIds,\r\n //tbName: \"T_INVOHD\",\r\n //toCompanyid: selectedToCompanyIds,\r\n\r\n stamp: appContext.suntekSettings?.accounting?.showPastDueDateOnInvoice,\r\n useMultiCur: appContext.suntekSettings?.accounting?.showAmountByCurrencyInInvoice\r\n });\r\n\r\n } \r\n else if (documentType === DocumentType.CrDbBatch) {\r\n args = new CRDBArgs({\r\n docType: documentType,\r\n formCaption: tTitle,\r\n subject: tTitle,\r\n batchPrintInfos: batchPrintInfos,\r\n });\r\n }\r\n if (args) viewReport(args, \"\", true);\r\n }\r\n\r\n// [TodoMark] 240613-mskang Fax버튼 disabled 후 동작구현보류 / Direct Print는 5에서 3.3처럼 바로 저장되게 할 수 없기 때문에 Preview로 변경\r\n async function send() {\r\n if(!await checkPrintOptions(false)) return;\r\n\r\n const selectList = batchPrint.list.filter((item) => item.selected);\r\n for (let i = 0; i < selectList.length; i++) {\r\n switch(batchPrint.sendTo) {\r\n case \"E\":\r\n if(selectList[i].useEmail) {\r\n const args = getArgs(selectList[i]);\r\n if(args) {\r\n const apiResult = await appContext.api.sendEMail(args);\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message??\"Failed to send email\"}

    , false, \"Error\");\r\n }\r\n }\r\n }\r\n break;\r\n case \"F\":\r\n await showGlobalOkDialog(

    {\"not implemented\"}

    , false, \"Error\"); \r\n break;\r\n }\r\n }\r\n };\r\n\r\n const invoiceNoHeaderLabel = documentType === DocumentType.CrDbBatch ? 'CrDb #' : 'Invoice #';\r\n const snameHeaderLabel = documentType === DocumentType.CrDbBatch ? 'Agent' : 'Invoice To';\r\n\r\n const tableOptions: ApplicableTableSettings = {\r\n ...batchPrintTable,\r\n selectable: true,\r\n rowProps: (row: any) => ({onClick: () => setSelectedIndex(row.index)}),\r\n selectedRowIndex: selectedIndex,\r\n tableName: 'batchPrintTable',\r\n data: batchPrint.list.map((x, i) => ({...x, i, toggleSelection})),\r\n rowRenderers: [\r\n {accessor: 'selected', Cell: SelectRenderer},\r\n {accessor: 'invoiceNo', Cell: TextAlignLeftRenderer, Header: () => {invoiceNoHeaderLabel}},\r\n {accessor: 'invoiceDate', Cell: DateRenderer},\r\n {accessor: 'sName', Cell: TextAlignLeftRenderer, Header: () => {snameHeaderLabel}},\r\n {accessor: 'salseperson', Cell: TextAlignLeftRenderer},\r\n {accessor: 'invoiceAmt', Cell: FloatRenderer},\r\n {accessor: 'useFax', Cell: NullableCheckboxIconRenderer},\r\n {accessor: 'useEmail', Cell: NullableCheckboxIconRenderer},\r\n ],\r\n };\r\n\r\n let sendButtonLabel = 'SEND';\r\n if (batchPrint.sendTo === 'E') {\r\n sendButtonLabel += ' EMAIL'\r\n } else if (batchPrint.sendTo === 'F') {\r\n sendButtonLabel += ' FAX'\r\n }\r\n\r\n return (\r\n
    \r\n\r\n
    \r\n
    onChange({ rangeType: 'D' })} />
    \r\n
    onChange({ rangeType: 'N' })} />
    \r\n \r\n {(!batchPrint.rangeType || batchPrint.rangeType === 'D') ? <>\r\n
    \r\n onChange({ dateFrom })} />\r\n
    \r\n\r\n
    \r\n ~\r\n
    \r\n\r\n
    \r\n onChange({ dateTo })} />\r\n
    \r\n\r\n : <>\r\n
    \r\n onChange({ numberFrom: e.target.value })} />\r\n
    \r\n\r\n\r\n
    \r\n ~\r\n
    \r\n\r\n
    \r\n onChange({ numberTo: e.target.value })} />\r\n
    \r\n }\r\n\r\n\r\n
    \r\n {appContext.suntekSettings?.company?.enableBranch &&\r\n <>Branch\r\n }\r\n
    \r\n\r\n
    \r\n {appContext.suntekSettings?.company?.enableBranch &&\r\n onChange({branch})}\r\n addAll={true}\r\n />\r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n Select List\r\n
    \r\n
    \r\n Total Items: {batchPrint.list.length}\r\n
    \r\n
    \r\n Selected Items: {batchPrint.list.filter(item => item.selected).length}\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n ALL\r\n CLEAR\r\n {\r\n loadList()\r\n }}>LIST\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n onChange({sendTo: 'E'})} />\r\n
    \r\n\r\n
    \r\n onChange({sendTo: 'F'})} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n print()}>\r\n PREVIEW\r\n \r\n { \r\n if (batchPrint.sendTo === 'P') print();\r\n else send();\r\n }}>\r\n {sendButtonLabel}\r\n \r\n \r\n CANCEL\r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nconst BatchPrintDetails = ({\r\n onPopupClose,\r\n selectedElement,\r\n jobName,\r\n documentType,\r\n }: { onPopupClose?: () => void, selectedElement: any, documentType: DocumentType, jobName: JobNames }) => {\r\n if (!selectedElement) return null;\r\n\r\n /**\r\n * Implementation note:\r\n * key is important in this case in order to force full List view rerender for different parameters.\r\n */\r\n\r\n return (\r\n \r\n );\r\n};\r\nexport default BatchPrintDetails;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport _ from 'lodash';\r\n\r\nexport class JournalLedgerListItem extends SearchModelBase {\r\n type: string = '';\r\n postDate: string | null = null;\r\n fromPostDate: string | null = null;\r\n toPostDate: string | null = null;\r\n branch: string = '';\r\n groupOrder: number = 0;\r\n seq: number|null = null;\r\n fromSeq: number|null = null;\r\n toSeq: number|null = null;\r\n entity: string = '';\r\n description: string = '';\r\n remark: string = '';\r\n accountNo: string = '';\r\n accountName: string = '';\r\n subCode: string = '';\r\n currency: string = '';\r\n fDebit: number|null = null;\r\n fromFDebit: number|null = null;\r\n toFDebit: number|null = null;\r\n fCredit: number|null = null;\r\n fromFCredit: number|null = null;\r\n toFCredit: number|null = null;\r\n exRate: number|null = null;\r\n fromExRate: number|null = null;\r\n toExRate: number|null = null;\r\n seqOrder: number = 0;\r\n debit: number|null = null;\r\n fromDebit: number|null = null;\r\n toDebit: number|null = null;\r\n credit: number|null = null;\r\n fromCredit: number|null = null;\r\n toCredit: number|null = null;\r\n jourType: string = '';\r\n updateDate: string | null = null;\r\n fromUpdateDate: string | null = null;\r\n toUpdateDate: string | null = null;\r\n updateBy: string = '';\r\n lineColor: string = '';\r\n\r\n // For journal search\r\n tbType: number|null = null;\r\n tbId: number|null = null;\r\n tbName: string|null = null;\r\n tbIndex: string|null = null;\r\n fKey: string|null = null;\r\n mblId: number|null = null;\r\n mtbName: string|null = null;\r\n // UI only\r\n id: number = 0;\r\n\r\n status: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true }),\r\n XCol.Create({ col: 1, text: 'Type', width: 40, dataIndex: 'type'}),\r\n XCol.Create({ col: 2, text: 'Date', width: 75, dataIndex: 'postDate', defaultColumnFocus: true, type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 3, text: 'BR', width: 40, dataIndex: 'branch'}),\r\n XCol.Create({ col: 4, text: 'Seq', width: 40, dataIndex: 'seq', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 5, text: 'Entity', width: 120, dataIndex: 'entity'}),\r\n XCol.Create({ col: 6, text: 'Description', width: 150, dataIndex: 'description'}),\r\n XCol.Create({ col: 7, text: 'Remark', width: 120, dataIndex: 'remark'}),\r\n XCol.Create({ col: 8, text: 'Account #', width: 80, dataIndex: 'accountNo', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 9, text: 'Account Name', width: 150, dataIndex: 'accountName'}),\r\n XCol.Create({ col: 10, text: 'Sub Code', width: 80, dataIndex: 'subCode'}),\r\n XCol.Create({ col: 11, text: 'CUR', width: 40, dataIndex: 'currency'}),\r\n XCol.Create({ col: 12, text: 'Debit', width: 100, dataIndex: 'fDebit', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 13, text: 'Credit', width: 100, dataIndex: 'fCredit', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 14, text: 'Ex.Rate', width: 60, dataIndex: 'exRate', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.0000', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 15, text: 'Debit($$currency)', width: 100, dataIndex: 'debit', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 16, text: 'Credit($$currency)', width: 100, dataIndex: 'credit', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 17, text: 'Journal Type', width: 120, dataIndex: 'jourType'}),\r\n XCol.Create({ col: 18, text: 'Update Date', width: 100, dataIndex: 'updateDate', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 19, text: 'Update by', width: 80, dataIndex: 'updateBy'})\r\n ];\r\n\r\n\r\n public static getExportCollection(useBranch: boolean): XCol.XExportColumn[] {\r\n let returnCloumns = _.cloneDeep(this.ExportCollection);\r\n if (!useBranch) returnCloumns = returnCloumns.filter(x => x.dataIndex !== 'branch');\r\n return returnCloumns;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: JournalLedgerListItem.prototype.postDate, orderByAscending: false };\r\n\r\n public static formatData(data: JournalLedgerListItem[]) {\r\n return data.map((d: JournalLedgerListItem, i) => ({\r\n ...d,\r\n id: i + 1, \r\n //id: d.tbId,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n postDate: {from: 'fromPostdate', to: 'toPostdate'},\r\n updateDate: {from: 'fromUpdateDate', to: 'toUpdateDate'},\r\n fDebit: {from: 'fromFDebit', to: 'toFDebit'},\r\n fCredit: {from: 'fromFCredit', to: 'toFCredit'},\r\n exRate: {from: 'fromExRate', to: 'toExRate'},\r\n debit: {from: 'fromDebit', to: 'toDebit'},\r\n credit: {from: 'fromCredit', to: 'toCredit'},\r\n seq: {from: 'fromSeq', to: 'toSeq'},\r\n }\r\n}\r\n","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect, useState } from 'react';\r\nimport NumberFormat from 'react-number-format';\r\nimport postal from 'postal';\r\nimport { setCaretPosition } from '../util';\r\nimport { selectInput } from '../util/inputUtils';\r\n\r\nfunction areValuesSame(v1Param: number | null | undefined, v2Param: number | null | undefined) {\r\n let v1 = v1Param;\r\n let v2 = v2Param;\r\n\r\n if (v1Param === null || v1Param === undefined || isNaN(v1Param)) {\r\n v1 = null;\r\n }\r\n\r\n if (v2Param === null || v2Param === undefined || isNaN(v2Param)) {\r\n v2 = null;\r\n }\r\n\r\n return v1 === v2;\r\n}\r\n\r\nfunction setCaretPositionToEnd(elemId: string) {\r\n const elem = document.getElementById(elemId) as HTMLInputElement;\r\n const value = elem.value;\r\n const caretPos = value ? value.length : 0;\r\n\r\n setCaretPosition(elem, caretPos);\r\n\r\n setTimeout(() => {\r\n setCaretPosition(elem, caretPos);\r\n }, 0);\r\n}\r\n\r\ninterface ExternalValueChangeRequest {\r\n external: boolean,\r\n value: number | null,\r\n}\r\n\r\n/**\r\n * @deprecated instead use Float with decimals = 0\r\n */\r\nfunction Number({\r\n value,\r\n onChange = () => { },\r\n onEnter = undefined,\r\n disabled = false,\r\n min = undefined,\r\n max = undefined,\r\n // dark,\r\n floatId = undefined,\r\n onBlur = undefined,\r\n noborder = false,\r\n ...other\r\n}: {\r\n value: number | null | undefined,\r\n onChange?: (x: number | null) => void,\r\n disabled?: boolean,\r\n onEnter?: (() => void) | undefined,\r\n min?: number | undefined,\r\n max?: number | undefined,\r\n floatId?: string | undefined,\r\n onBlur?: (() => Promise) | undefined,\r\n noborder?: boolean,\r\n [x: string]: any\r\n}) {\r\n const dark = false;\r\n\r\n const inputId = floatId || _.uniqueId('ifms-float-');\r\n const channel = postal.channel('ifms');\r\n const [//isTabPrevious\r\n , setIsTabPrevious] = useState(false);\r\n\r\n const [externalValueChangeRequest, setExternalValueChangeRequest] = useState({ external: false, value: null });\r\n\r\n let channelSubscription: ISubscriptionDefinition | null = null;\r\n\r\n function subscribeChannels() {\r\n channelSubscription = postal.subscribe({\r\n channel: 'ifms',\r\n topic: 'ifms.set-number',\r\n callback: onValueChangeRequestByParent,\r\n });\r\n }\r\n\r\n function unsubscribeChannels() {\r\n if (channelSubscription) {\r\n postal.unsubscribe(channelSubscription);\r\n }\r\n }\r\n\r\n function isCell(element: HTMLInputElement): boolean {\r\n const divElements = document.querySelectorAll('div[id$=\"-editabletable\"]');\r\n return Array.from(divElements).some(div => div.contains(element));\r\n }\r\n\r\n async function handleKeyDown(e: KeyboardEvent) {\r\n setIsTabPrevious(e.key === 'Tab' && e.shiftKey);\r\n\r\n if (e.key === 'Enter') {\r\n const target = e.target as HTMLInputElement\r\n if (onBlur && isCell(target)) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n const result = await onBlur();\r\n setTimeout(() => {\r\n if (result)\r\n channel.publish('ifms.editable-table-onEnter', { backFocus: false, changeFocus: true, element: target });\r\n else {\r\n selectInput(target)\r\n }\r\n }, 10);\r\n }\r\n }\r\n };\r\n\r\n function initializeEvent() {\r\n document.getElementById(inputId)?.addEventListener('keydown', handleKeyDown);\r\n }\r\n\r\n function unInitializeEvent() {\r\n document.getElementById(inputId)?.addEventListener('keydown', handleKeyDown);\r\n }\r\n\r\n useEffect(() => {\r\n if (inputId) {\r\n initializeEvent();\r\n return unInitializeEvent;\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [inputId]);\r\n\r\n useEffect(() => {\r\n // Implementation note:\r\n // The idea here is to not call handlers directly in postal callback, but to set state to avoid calling old version of react event handler (problems with references)\r\n if (!externalValueChangeRequest.external) {\r\n return;\r\n }\r\n\r\n doHandleChange(externalValueChangeRequest.value);\r\n setTimeout(() => setCaretPositionToEnd(inputId), 200);\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [externalValueChangeRequest]);\r\n\r\n useEffect(() => {\r\n subscribeChannels();\r\n\r\n return () => {\r\n unsubscribeChannels();\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n function onValueChangeRequestByParent({ parentId, number }: { parentId: string, number: number | null }) {\r\n const current = document.getElementById(inputId);\r\n\r\n if (current?.parentElement?.id === parentId) {\r\n setExternalValueChangeRequest({ external: true, value: number });\r\n }\r\n }\r\n\r\n // function onKeyDown(e:React.KeyboardEvent) {\r\n // const up = 38;\r\n // const down = 40;\r\n // if (e.keyCode === up || e.keyCode === down) {\r\n // // const parentId = (e?.target as Element|null)?.parentElement?.id;\r\n // // if (!!parentId) {\r\n // // channel.publish('ifms.control-navigation', {\r\n // // parentId,\r\n // // keyCode: e.keyCode\r\n // // });\r\n // // }\r\n // // e.preventDefault();\r\n // // e.stopPropagation();\r\n // }\r\n // }\r\n\r\n async function handleBlur(e: React.FocusEvent) {\r\n const target = e.target as HTMLInputElement;\r\n const relatedTarget = e.relatedTarget as HTMLElement;\r\n if (relatedTarget?.dataset?.nocellvalidate === 'true') {\r\n return;\r\n }\r\n if (relatedTarget?.classList.contains(\"ReactModal__Content\")) {\r\n return;\r\n }\r\n\r\n if (onBlur) {\r\n const result = await onBlur();\r\n setTimeout(() => {\r\n if (result) {\r\n // if (!isTabPrevious)\r\n // focusNextTabable(target);\r\n // else\r\n // focusTabableByIndex(getCurrentTabableIndex(target) - 1);\r\n }\r\n else \r\n selectInput(target)\r\n }, 10);\r\n }\r\n }\r\n\r\n function handleChange(n: any) {\r\n doHandleChange(n.floatValue);\r\n }\r\n\r\n function doHandleChange(floatValue: any) {\r\n if (min !== null && min !== undefined && floatValue !== null && floatValue !== undefined) {\r\n if (floatValue < min) {\r\n return;\r\n }\r\n }\r\n if (max !== null && max !== undefined && floatValue !== null && floatValue !== undefined) {\r\n if (floatValue > max) {\r\n return;\r\n }\r\n }\r\n\r\n if (!areValuesSame(value, floatValue)) {\r\n const newVal = floatValue !== undefined ? floatValue : null; // Small changed to be able to use change event with lodash merge (which ignores undefined values)\r\n onChange(newVal);\r\n }\r\n }\r\n\r\n function onClick(e: React.MouseEvent) {\r\n if (!disabled) {\r\n (e.target as HTMLInputElement).select();\r\n }\r\n }\r\n\r\n let cssClass = dark ? 'e-ifms-float e-ifms-input-dark e-outline ifms-tabable' : 'e-ifms-float e-ifms-input e-outline ifms-tabable';\r\n if (noborder) {\r\n cssClass = `${cssClass} ifms-noborder-input`;\r\n }\r\n if (!disabled) {\r\n cssClass = `${cssClass} ifms-tabable-active`;\r\n }\r\n\r\n\r\n const componentValue = value !== null && value !== undefined ? value : '';\r\n\r\n return (\r\n {\r\n if (!values.value) {\r\n return true;\r\n }\r\n\r\n const minCheck = min === null || min === undefined || (values.floatValue ?? 0) >= min;\r\n const maxCheck = max === null || max === undefined || (values.floatValue ?? 0) <= max;\r\n\r\n return minCheck && maxCheck;\r\n }}\r\n {..._.omit(other, ['dark'])}\r\n />\r\n );\r\n}\r\n\r\nNumber.defaultProps = {\r\n onChange: () => { },\r\n disabled: false,\r\n dark: false,\r\n noborder: false,\r\n};\r\n\r\nNumber.propTypes = {\r\n onChange: PropTypes.func.isRequired,\r\n onEnter: PropTypes.func,\r\n value: PropTypes.number,\r\n min: PropTypes.number,\r\n max: PropTypes.number,\r\n dark: PropTypes.bool.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n floatId: PropTypes.string,\r\n onBlur: PropTypes.func,\r\n noborder: PropTypes.bool.isRequired,\r\n};\r\n\r\n\r\nexport default React.memo(Number);\r\n","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\n\r\nexport class OmContainer extends TrackableEntity {\r\n id: number = 0;\r\n mblId: number = 0;\r\n containerNo: string = '';\r\n conType: string = '';\r\n sealNo: string = '';\r\n sealNo2: string = '';\r\n sealNo3: string = '';\r\n pkgs: number = 0;\r\n pUnit: string = '';\r\n kgs: number = 0;\r\n lbs: number = 0;\r\n gKgs: number = 0;\r\n gLbs: number = 0;\r\n netKgs: number = 0;\r\n cbm: number = 0;\r\n goDate: string | null = null;\r\n lastFreeDay: string | null = null;\r\n pickupNo: string = '';\r\n pickupLoc: string = '';\r\n inDate: string | null = null;\r\n outDate: string | null = null;\r\n emptyReturn: string | null = null;\r\n ord: string | null = null;\r\n loadDate: string | null = null;\r\n atd: string | null = null;\r\n ata: string | null = null;\r\n unloadDate: string | null = null;\r\n cfsDate: string | null = null;\r\n rAtd: string | null = null;\r\n rAta: string | null = null;\r\n puDate: string | null = null;\r\n dcDate: string | null = null;\r\n inDateLoc: string = '';\r\n outDateLoc: string = '';\r\n emptyReturnLoc: string = '';\r\n ordLoc: string = '';\r\n loadDateLoc: string = '';\r\n atdLoc: string = '';\r\n ataLoc: string = '';\r\n unloadDateLoc: string = '';\r\n cfsDateLoc: string = '';\r\n rAtdLoc: string = '';\r\n rAtaLoc: string = '';\r\n puDateLoc: string = '';\r\n dcDateLoc: string = '';\r\n carrierRls: string | null = null;\r\n bookingDate: string | null = null;\r\n customRls: string | null = null;\r\n carrierRlsLoc: string = '';\r\n bookingLoc: string = '';\r\n customRlsLoc: string = '';\r\n amsLinkUserID: string = '';\r\n amsLinkId: number = 0;\r\n amsLinkDate: string | null = null;\r\n pimsLinkUserId: string = '';\r\n pimsLinkId: number = 0;\r\n pimsLinkDate: string | null = null;\r\n order: number = 0;\r\n isFlexiTank: boolean = false;\r\n tankSize: string = '';\r\n fitBy: string = '';\r\n fitByDate: string | null = null;\r\n commodity: string = '';\r\n loadAmount: number = 0;\r\n puNo: string = '';\r\n ftLoadDate: string | null = null;\r\n ftLoadDay: string | null = null;\r\n ftLoadTime: string | null = null;\r\n gallon: number = 0;\r\n hts: string = '';\r\n payload: number = 0;\r\n capacity: number = 0;\r\n serialNo: string = '';\r\n flexiAction: string = '';\r\n hasHblLink: boolean = false;\r\n oimBlId: number = 0;\r\n\r\n // UI\r\n select: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('flexiAction', 'hasHblLink', 'oimBlId');\r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n\r\n // Called from View to make SQLList by passing arg\r\n getDbMappings(isImport:any):IDictionary {\r\n if(typeof isImport !== 'boolean'){\r\n isImport = isImport === 'oimContainerList';\r\n }\r\n return OmContainer.getFieldMappings(isImport);\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'tankSize': new DBMappingInfo({ field: 'F_TANKSIZE', table: 'T_OOMCONTAINER' }),\r\n 'fitByDate': new DBMappingInfo({ field: 'F_FITBYDATE', table: 'T_OOMCONTAINER' }),\r\n 'commodity': new DBMappingInfo({ field: 'F_COMMODITY', table: 'T_OOMCONTAINER' }),\r\n 'payload': new DBMappingInfo({ field: 'F_PAYLOAD', table: 'T_OOMCONTAINER' }),\r\n 'capacity': new DBMappingInfo({ field: 'F_CAPACITY', table: 'T_OOMCONTAINER' }),\r\n 'puNo': new DBMappingInfo({ field: 'F_PUNO', table: 'T_OOMCONTAINER' }),\r\n 'ftLoadDate': new DBMappingInfo({ field: 'F_FTLOADDATE', table: 'T_OOMCONTAINER' }),\r\n 'containerNo': new DBMappingInfo({ field: 'F_CONTAINERNO', table: 'T_OOMCONTAINER' }),\r\n 'conType': new DBMappingInfo({ field: 'F_CONTYPE', table: 'T_OOMCONTAINER' }),\r\n 'sealNo': new DBMappingInfo({ field: 'F_SEALNO', table: 'T_OOMCONTAINER' }),\r\n 'pkgs': new DBMappingInfo({ field: 'F_PKGS', table: 'T_OOMCONTAINER' }),\r\n 'pUnit': new DBMappingInfo({ field: 'F_UNIT', table: 'T_OOMCONTAINER' }),\r\n 'sealNo2': new DBMappingInfo({ field: 'F_SEALNO2', table: 'T_OOMCONTAINER' }),\r\n 'sealNo3': new DBMappingInfo({ field: 'F_SEALNO3', table: 'T_OOMCONTAINER' }),\r\n 'serialNo': new DBMappingInfo({ field: 'F_SERIALNO', table: 'T_OOMCONTAINER' }),\r\n 'netKgs': new DBMappingInfo({ field: 'F_NETKGS', table: 'T_OOMCONTAINER' }),\r\n 'gKgs': new DBMappingInfo({ field: 'F_GROSSKGS', table: 'T_OOMCONTAINER' }),\r\n 'gLbs': new DBMappingInfo({ field: 'F_GROSSLBS', table: 'T_OOMCONTAINER' }),\r\n 'cbm': new DBMappingInfo({ field: 'F_CBM', table: 'T_OOMCONTAINER' }),\r\n 'gallon': new DBMappingInfo({ field: 'F_GALLON', table: 'T_OOMCONTAINER' }),\r\n 'hts': new DBMappingInfo({ field: 'F_HTS', table: 'T_OOMCONTAINER' }),\r\n 'isFlexiTank': new DBMappingInfo({ field: 'F_ISFLEXITANK', table: 'T_OOMCONTAINER' }),\r\n 'id': new DBMappingInfo({ field: 'F_ID', table: 'T_OOMCONTAINER' }),\r\n 'mblId': new DBMappingInfo({ field: 'f_oomblid', table: 'T_OOMCONTAINER' }),\r\n 'bookingDate': new DBMappingInfo({ field: 'f_bookingdate', table: 'T_OOMCONTAINER' }),\r\n 'bookingLoc': new DBMappingInfo({ field: 'f_booking_loc', table: 'T_OOMCONTAINER' }),\r\n 'ord': new DBMappingInfo({ field: 'f_ord', table: 'T_OOMCONTAINER' }),\r\n 'ordLoc': new DBMappingInfo({ field: 'f_ord_loc', table: 'T_OOMCONTAINER' }),\r\n 'inDate': new DBMappingInfo({ field: 'f_indate', table: 'T_OOMCONTAINER' }),\r\n 'inDateLoc': new DBMappingInfo({ field: 'f_indate_loc', table: 'T_OOMCONTAINER' }),\r\n 'loadDate': new DBMappingInfo({ field: 'f_loaddate', table: 'T_OOMCONTAINER' }),\r\n 'loadDateLoc': new DBMappingInfo({ field: 'f_loaddate_loc', table: 'T_OOMCONTAINER' }),\r\n 'atd': new DBMappingInfo({ field: 'f_atd', table: 'T_OOMCONTAINER' }),\r\n 'atdLoc': new DBMappingInfo({ field: 'f_atd_loc', table: 'T_OOMCONTAINER' }),\r\n 'ata': new DBMappingInfo({ field: 'f_ata', table: 'T_OOMCONTAINER' }),\r\n 'ataLoc': new DBMappingInfo({ field: 'f_ata_loc', table: 'T_OOMCONTAINER' }),\r\n 'unloadDate': new DBMappingInfo({ field: 'f_unloaddate', table: 'T_OOMCONTAINER' }),\r\n 'unloadDateLoc': new DBMappingInfo({ field: 'f_unloaddate_loc', table: 'T_OOMCONTAINER' }),\r\n 'puDate': new DBMappingInfo({ field: 'f_pudate', table: 'T_OOMCONTAINER' }),\r\n 'puDateLoc': new DBMappingInfo({ field: 'f_pudate_loc', table: 'T_OOMCONTAINER' }),\r\n 'dcDate': new DBMappingInfo({ field: 'f_dcdate', table: 'T_OOMCONTAINER' }),\r\n 'dcDateLoc': new DBMappingInfo({ field: 'f_dcdate_loc', table: 'T_OOMCONTAINER' }),\r\n\r\n };\r\n\r\n static dicFieldMappings4Import:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_Id', table: 'T_OIMCONTAINER' }),\r\n 'mblId': new DBMappingInfo({ field: 'F_OIMBLId', table: 'T_OIMCONTAINER' }),\r\n 'containerNo': new DBMappingInfo({ field: 'F_ContainerNo', table: 'T_OIMCONTAINER' }),\r\n 'conType': new DBMappingInfo({ field: 'F_ConType', table: 'T_OIMCONTAINER' }),\r\n 'sealNo': new DBMappingInfo({ field: 'F_SealNo', table: 'T_OIMCONTAINER' }),\r\n 'lastFreeDay': new DBMappingInfo({ field: 'F_LastFreeDay', table: 'T_OIMCONTAINER' }),\r\n 'goDate': new DBMappingInfo({ field: 'F_GODate', table: 'T_OIMCONTAINER' }),\r\n 'pickupNo': new DBMappingInfo({ field: 'F_PickupNo', table: 'T_OIMCONTAINER' }),\r\n 'pickupLoc': new DBMappingInfo({ field: 'F_PickupLoc', table: 'T_OIMCONTAINER' }),\r\n 'emptyReturn': new DBMappingInfo({ field: 'F_EmptyReturn', table: 'T_OIMCONTAINER' }),\r\n 'pkgs': new DBMappingInfo({ field: 'F_Pkgs', table: 'T_OIMCONTAINER' }),\r\n 'kgs': new DBMappingInfo({ field: 'F_KGS', table: 'T_OIMCONTAINER' }),\r\n 'lbs': new DBMappingInfo({ field: 'F_LBS', table: 'T_OIMCONTAINER' }),\r\n 'inDate': new DBMappingInfo({ field: 'F_InDate', table: 'T_OIMCONTAINER' }),\r\n 'outDate': new DBMappingInfo({ field: 'F_OutDate', table: 'T_OIMCONTAINER' }),\r\n //'pUnit': new DBMappingInfo({ field: 'F_UNIT', table: 'T_OIMCONTAINER' }),\r\n 'bookingDate': new DBMappingInfo({ field: 'f_bookingdate', table: 'T_OIMCONTAINER' }),\r\n 'bookingLoc': new DBMappingInfo({ field: 'f_booking_loc', table: 'T_OIMCONTAINER' }),\r\n 'ord': new DBMappingInfo({ field: 'f_ord', table: 'T_OIMCONTAINER' }),\r\n 'ordLoc': new DBMappingInfo({ field: 'f_ord_loc', table: 'T_OIMCONTAINER' }),\r\n 'inDateLoc': new DBMappingInfo({ field: 'f_indate_loc', table: 'T_OIMCONTAINER' }),\r\n 'loadDate': new DBMappingInfo({ field: 'f_loaddate', table: 'T_OIMCONTAINER' }),\r\n 'loadDateLoc': new DBMappingInfo({ field: 'f_loaddate_loc', table: 'T_OIMCONTAINER' }),\r\n 'atd': new DBMappingInfo({ field: 'f_atd', table: 'T_OIMCONTAINER' }),\r\n 'atdLoc': new DBMappingInfo({ field: 'f_atd_loc', table: 'T_OIMCONTAINER' }),\r\n 'carrierRls': new DBMappingInfo({ field: 'f_carrierrls', table: 'T_OIMCONTAINER' }),\r\n 'carrierRlsLoc': new DBMappingInfo({ field: 'f_carrierrls_loc', table: 'T_OIMCONTAINER' }),\r\n 'customRls': new DBMappingInfo({ field: 'f_customrls', table: 'T_OIMCONTAINER' }),\r\n 'customRlsLoc': new DBMappingInfo({ field: 'f_customrls_loc', table: 'T_OIMCONTAINER' }),\r\n 'ata': new DBMappingInfo({ field: 'f_ata', table: 'T_OIMCONTAINER' }),\r\n 'ataLoc': new DBMappingInfo({ field: 'f_ata_loc', table: 'T_OIMCONTAINER' }),\r\n 'unloadDate': new DBMappingInfo({ field: 'f_unloaddate', table: 'T_OIMCONTAINER' }),\r\n 'unloadDateLoc': new DBMappingInfo({ field: 'f_unloaddate_loc', table: 'T_OIMCONTAINER' }),\r\n 'cfsDate': new DBMappingInfo({ field: 'f_cfsdate', table: 'T_OIMCONTAINER' }),\r\n 'cfsDateLoc': new DBMappingInfo({ field: 'f_cfsdate_loc', table: 'T_OIMCONTAINER' }),\r\n 'rAtd': new DBMappingInfo({ field: 'f_ratd', table: 'T_OIMCONTAINER' }),\r\n 'rAtdLoc': new DBMappingInfo({ field: 'f_ratd_loc', table: 'T_OIMCONTAINER' }),\r\n 'rAta': new DBMappingInfo({ field: 'f_rata', table: 'T_OIMCONTAINER' }),\r\n 'rAtaLoc': new DBMappingInfo({ field: 'f_rata_loc', table: 'T_OIMCONTAINER' }),\r\n 'puDate': new DBMappingInfo({ field: 'f_pudate', table: 'T_OIMCONTAINER' }),\r\n 'puDateLoc': new DBMappingInfo({ field: 'f_pudate_loc', table: 'T_OIMCONTAINER' }),\r\n 'outDateLoc': new DBMappingInfo({ field: 'f_outdate_loc', table: 'T_OIMCONTAINER' }),\r\n 'dcDate': new DBMappingInfo({ field: 'f_dcdate', table: 'T_OIMCONTAINER' }),\r\n 'dcDateLoc': new DBMappingInfo({ field: 'f_dcdate_loc', table: 'T_OIMCONTAINER' }),\r\n 'emptyReturnLoc': new DBMappingInfo({ field: 'f_emptyreturn_loc', table: 'T_OIMCONTAINER' }),\r\n\r\n };\r\n\r\n static getFieldMappings = (isImport:boolean):IDictionary => {\r\n return isImport ? this.dicFieldMappings4Import : this.dicFieldMappings;\r\n };\r\n\r\n}\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport _ from 'lodash';\r\n\r\nexport enum OimListType {\r\n Normal,\r\n NormalCan,\r\n UseLot\r\n}\r\n\r\nexport class OiMblListItem extends SearchModelBase {\r\n closed: string = '';\r\n isClosed: boolean|null = null;\r\n shipmentType: string = '';\r\n invStat: string = '';\r\n billStat: string = '';\r\n crDbStat: string = '';\r\n refNo: string = '';\r\n hblCount: string = '';\r\n lotNo: string = '';\r\n branch: string = '';\r\n mblNo: string = '';\r\n agentId: number = 0;\r\n agentName: string = '';\r\n agentRefNo: string = '';\r\n vessel: string = '';\r\n voyage: string = '';\r\n acctCarrier: string = '';\r\n etd: string | null = null;\r\n fromEtd: string | null = null;\r\n toEtd: string | null = null;\r\n eta: string | null = null;\r\n fromEta: string | null = null;\r\n toEta: string | null = null;\r\n fEta: string | null = null;\r\n fromFEta: string | null = null;\r\n toFEta: string | null = null;\r\n moveType: string = '';\r\n eBl: boolean|null = null;\r\n expRls: boolean|null = null;\r\n oblDate: string | null = null;\r\n fromOblDate: string | null = null;\r\n toOblDate: string | null = null;\r\n rlsDate: string | null = null;\r\n fromRlsDate: string | null = null;\r\n toRlsDate: string | null = null;\r\n pnlDate: string | null = null;\r\n fromPnlDate: string | null = null;\r\n toPnlDate: string | null = null;\r\n finalDest: string = '';\r\n cyLocation: string = '';\r\n loadingPort: string = '';\r\n svccNo: string = '';\r\n containerNo: string = '';\r\n conType: string = '';\r\n operator: string = '';\r\n oFrt: string = '';\r\n paidDate: string | null = null;\r\n fromPaidDate: string | null = null;\r\n toPaidDate: string | null = null;\r\n oFrtCfrm: boolean|null = null;\r\n sMblNo: string = '';\r\n createdAt: string | null = null;\r\n fromCreatedAt: string | null = null;\r\n toCreatedAt: string | null = null;\r\n finalWhse: string = '';\r\n dvnEdi: string | null = null;\r\n fromDvnEdi: string | null = null;\r\n toDvnEdi: string | null = null;\r\n canShareFile: boolean = false;\r\n disCharge: string = '';\r\n postDate: string | null = null;\r\n pimsLinkId: number = 0;\r\n amsLinkId: number = 0;\r\n id: number = 0;\r\n cargoNo: string = '';\r\n custSName: string = '';\r\n sname: string = '';\r\n oFrtHold: boolean|null = null; // HOLD\r\n emptyRtnName: string = '';\r\n recognized: string = '';\r\n\r\n /**\r\n * A/D/PC (Period Closed)/OC (Operaion Closed)\r\n */\r\n status: string = '';\r\n\r\n // cloud\r\n /**\r\n * L = LCL, F = FCL, O = Consol\r\n */\r\n lclFcl: string = '';\r\n u2Date: string | null = null;\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n u2ID: string = '';\r\n u1ID: string = '';\r\n projectNo: string = '';\r\n canBeDeleted: boolean = false;\r\n\r\n trType: string = ''\r\n trStatus:string=''\r\n trStatusDesc:string=''\r\n // trStatus2 : string = ''; // <250213 jhlee - RQ 컬럼이랑 동일한 상태를 표시. RQ 컬럼과 Track 컬럼을 분리한 이유는 아이콘을 클릭했을 때 각각 Tracking Request와 Container Tracking 정보를 띄우기 위함. />\r\n trDate: string | null = null;\r\n fromTrDate: string | null = null;\r\n toTrDate: string | null = null;\r\n\r\n //Track Event\r\n lastEvent: string = '';\r\n lastEventDate: string | null = null;\r\n\r\n //te: boolean = false;\r\n //re: boolean = false;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true, visible: true }),\r\n XCol.Create({ col: 1, text: 'R', width: 30, dataIndex: 'recognized', hiddenInColumnSetup: true, visible: true, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 2, text: 'D/ID', width: 35, dataIndex: 'shipmentType', align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 3, text: 'Cargo', width: 80, dataIndex: 'lclFcl', visible: true, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 4, text: 'Ref. #', width: 100, dataIndex: 'refNo', defaultColumnFocus: true, visible: true }),\r\n XCol.Create({ col: 5, text: 'RQ', width: 210, dataIndex: 'trStatus' }),\r\n // XCol.Create({ col: 5, text: 'T', width: 50, dataIndex: 'trStatus2' }),\r\n //XCol.Create({ col: 6, text: 'R', width: 50, dataIndex: 're', visible: true }),\r\n\r\n // XCol.Create({ col: 7, text: 'Last Event', width: 85, dataIndex: 'lastEvent', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 8, text: 'BR', width: 40, dataIndex: 'branch', align: XCol.XAlignType.Center, visible: true }),\r\n XCol.Create({ col: 9, text: 'HBL(s)', width: 40, dataIndex: 'hblCount', visible: true, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 10, text: 'Lot ID', width: 80, dataIndex: 'lotNo', visible: true }),\r\n XCol.Create({ col: 11, text: 'MBL', width: 100, dataIndex: 'mblNo', visible: true }),\r\n XCol.Create({ col: 12, text: 'Project ID', width: 100, dataIndex: 'projectNo', visible: true }),\r\n XCol.Create({ col: 13, text: 'Agent', width: 120, dataIndex: 'agentName', visible: true }),\r\n XCol.Create({ col: 14, text: 'Agent Ref', width: 100, dataIndex: 'agentRefNo', visible: true }),\r\n XCol.Create({ col: 15, text: 'Vessel', width: 120, dataIndex: 'vessel', visible: true }),\r\n XCol.Create({ col: 16, text: 'Voyage', width: 60, dataIndex: 'voyage', visible: true }),\r\n XCol.Create({ col: 17, text: 'Freight Vendor', width: 120, dataIndex: 'acctCarrier', visible: true }),\r\n XCol.Create({ col: 18, text: 'ETD', width: 75, dataIndex: 'etd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: true }),\r\n XCol.Create({ col: 19, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: true }),\r\n XCol.Create({ col: 20, text: 'F.ETA', width: 75, dataIndex: 'fEta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: true }),\r\n XCol.Create({ col: 21, text: 'Move Type', width: 80, dataIndex: 'moveType', visible: true, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 22, text: 'Container', width: 110, dataIndex: 'containerNo', visible: true }),\r\n XCol.Create({ col: 23, text: 'Type', width: 60, dataIndex: 'conType', visible: true }),\r\n XCol.Create({ col: 24, text: 'E-B/L', width: 50, dataIndex: 'eBl', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, visible: true, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 25, text: 'EXP RLS', width: 50, dataIndex: 'expRls', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, visible: true, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 26, text: 'MBL RCVD', width: 75, dataIndex: 'oblDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 27, text: 'Carrier RLS', width: 75, dataIndex: 'rlsDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 28, text: 'CrDb RCVD', width: 75, dataIndex: 'pnlDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 29, text: 'Place of Delivery', width: 120, dataIndex: 'finalDest', visible: true }),\r\n XCol.Create({ col: 30, text: 'CY Location', width: 100, dataIndex: 'cyLocation', visible: true }),\r\n XCol.Create({ col: 31, text: 'Loading Port', width: 120, dataIndex: 'loadingPort', visible: true }),\r\n XCol.Create({ col: 32, text: 'Svc Contract', width: 90, dataIndex: 'svccNo', visible: false }),\r\n XCol.Create({ col: 33, text: 'Prep.', width: 60, dataIndex: 'operator', visible: false }),\r\n XCol.Create({ col: 34, text: 'FRT CHRG', width: 60, dataIndex: 'oFrt', align: XCol.XAlignType.Center, visible: true }),\r\n XCol.Create({ col: 35, text: 'Paid', width: 75, dataIndex: 'paidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 36, text: 'FRT CFM', width: 60, dataIndex: 'oFrtCfrm', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, visible: true, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 37, text: 'HOLD', width: 40, dataIndex: 'oFrtHold', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, visible: true, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 38, text: 'Sub MBL', width: 80, dataIndex: 'sMblNo', visible: false }),\r\n XCol.Create({ col: 39, text: 'CFS Location', width: 100, dataIndex: 'finalWhse', visible: true }),\r\n XCol.Create({ col: 40, text: 'Devan EDI', width: 75, dataIndex: 'dvnEdi', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 41, text: 'Discharge Port', width: 120, dataIndex: 'disCharge', visible: true }),\r\n XCol.Create({ col: 42, text: 'Tracking Date', width: 100, dataIndex: 'trDate', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: true }),\r\n \r\n XCol.Create({ col: 45, text: 'INV', width: 35, dataIndex: 'invStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false }),\r\n XCol.Create({ col: 46, text: 'BIL', width: 35, dataIndex: 'billStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false }),\r\n XCol.Create({ col: 47, text: 'CrDb', width: 35, dataIndex: 'crDbStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false }),\r\n \r\n XCol.Create({ col: 48, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 49, text: 'Create by', width: 80, dataIndex: 'u1ID', visible: false }),\r\n XCol.Create({ col: 50, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 51, text: 'Update by', width: 80, dataIndex: 'u2ID', visible: false }),\r\n ];\r\n\r\n private static ExportCollection_Can: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true, visible: true }),\r\n XCol.Create({ col: 1, text: 'R', width: 30, dataIndex: 'recognized', hiddenInColumnSetup: true, visible: true, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 2, text: 'D/ID', width: 35, dataIndex: 'shipmentType', align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 3, text: 'Cargo', width: 80, dataIndex: 'lclFcl', visible: true, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 4, text: 'Ref. #', width: 100, dataIndex: 'refNo', defaultColumnFocus: true, visible: true }),\r\n\r\n // XCol.Create({ col: 5, text: 'T', width: 30, dataIndex: 'trStatus2', visible: true }),\r\n //XCol.Create({ col: 6, text: 'R', width: 30, dataIndex: 're', visible: true }),\r\n\r\n // XCol.Create({ col: 7, text: 'Last Event', width: 85, dataIndex: 'lastEvent', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 8, text: 'HBL(s)', width: 40, dataIndex: 'hblCount', visible: true, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 9, text: 'MBL', width: 100, dataIndex: 'mblNo', visible: true }),\r\n XCol.Create({ col: 10, text: 'Project ID', width: 100, dataIndex: 'projectNo', visible: true }),\r\n XCol.Create({ col: 11, text: 'BR', width: 40, dataIndex: 'branch', align: XCol.XAlignType.Center, visible: true }),\r\n XCol.Create({ col: 12, text: 'Agent', width: 120, dataIndex: 'agentName', visible: true }),\r\n XCol.Create({ col: 13, text: 'Agent Ref', width: 100, dataIndex: 'agentRefNo', visible: false }),\r\n XCol.Create({ col: 14, text: 'Vessel', width: 120, dataIndex: 'vessel', visible: true }),\r\n XCol.Create({ col: 15, text: 'Voyage', width: 60, dataIndex: 'voyage', visible: true }),\r\n XCol.Create({ col: 16, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: true }),\r\n XCol.Create({ col: 17, text: 'F.ETA', width: 75, dataIndex: 'fEta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: true }),\r\n XCol.Create({ col: 18, text: 'Move Type', width: 80, dataIndex: 'moveType', visible: true, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 19, text: 'Container', width: 90, dataIndex: 'containerNo', visible: true }),\r\n XCol.Create({ col: 20, text: 'E-B/L', width: 50, dataIndex: 'eBl', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, visible: true, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 21, text: 'Sub MBL', width: 80, dataIndex: 'sMblNo', visible: false }),\r\n XCol.Create({ col: 22, text: 'CFS Location', width: 100, dataIndex: 'finalWhse', visible: true }),\r\n XCol.Create({ col: 23, text: 'Devan EDI', width: 75, dataIndex: 'dvnEdi', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 24, text: 'Tracking Date', width: 100, dataIndex: 'trDate', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: true }),\r\n\r\n XCol.Create({ col: 26, text: 'INV', width: 35, dataIndex: 'invStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false }),\r\n XCol.Create({ col: 27, text: 'BIL', width: 35, dataIndex: 'billStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false }),\r\n XCol.Create({ col: 28, text: 'CrDb', width: 35, dataIndex: 'crDbStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false }),\r\n\r\n XCol.Create({ col: 29, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 30, text: 'Create by', width: 80, dataIndex: 'u1ID', visible: false }),\r\n XCol.Create({ col: 31, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 32, text: 'Update by', width: 80, dataIndex: 'u2ID', visible: false }),\r\n\r\n // XCol.Create({ col: 12, text: 'Exp Rls', width: 50, dataIndex: 'expRls', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, visible: true, noNullOrEmptySearch: true}),\r\n // XCol.Create({ col: 15, text: 'Freight Vendor', width: 120, dataIndex: 'acctCarrier', visible: true}),\r\n // XCol.Create({ col: 16, text: 'ETD', width: 75, dataIndex: 'etd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: true}),\r\n // XCol.Create({ col: 21, text: 'Loading Port', width: 120, dataIndex: 'loadingPort', visible: true}),\r\n // XCol.Create({ col: 22, text: 'Discharge Port', width: 120, dataIndex: 'disCharge', visible: true}),\r\n // XCol.Create({ col: 23, text: 'Place of Delivery', width: 120, dataIndex: 'finalDest', visible: false}),\r\n // XCol.Create({ col: 26, text: 'Type', width: 60, dataIndex: 'conType', visible: true}),\r\n // XCol.Create({ col: 27, text: 'CY Location', width: 100, dataIndex: 'cyLocation', visible: true}),\r\n // XCol.Create({ col: 29, text: 'MBL Rcvd', width: 75, dataIndex: 'oblDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false}),\r\n // XCol.Create({ col: 30, text: 'Carrier Rlsd', width: 75, dataIndex: 'rlsDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false}),\r\n // XCol.Create({ col: 31, text: 'CrDb Rcvd', width: 75, dataIndex: 'pnlDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false}),\r\n // XCol.Create({ col: 32, text: 'Lot No', width: 80, dataIndex: 'lotNo', visible: false}),\r\n // XCol.Create({ col: 33, text: 'Svc Contract No', width: 90, dataIndex: 'svccNo', visible: false}),\r\n ];\r\n\r\n public static getExportCollection(ltype: OimListType, useTrackingService: boolean, useBranch: boolean): XCol.XExportColumn[] {\r\n if (ltype === OimListType.NormalCan) return this.ExportCollection_Can;\r\n\r\n let expCollection = _.cloneDeep(this.ExportCollection);\r\n // // normal\r\n if (ltype === OimListType.Normal) {\r\n expCollection = expCollection.filter(x => x.dataIndex !== \"lotNo\");\r\n expCollection = expCollection.filter(x => x.dataIndex !== \"cargoNo\");\r\n }\r\n\r\n if (ltype === OimListType.UseLot) expCollection = expCollection.filter(x => x.dataIndex !== \"cargoNo\");\r\n if (!useTrackingService) expCollection = expCollection.filter(x => x.dataIndex !== 'trDate');\r\n if (!useBranch) expCollection = expCollection.filter(x => x.dataIndex !== 'branch');\r\n return expCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: OiMblListItem.prototype.id, orderByAscending: false };\r\n\r\n public static formatData(data: OiMblListItem[]) {\r\n return data.map((d: OiMblListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n etd: {from: 'fromEtd', to: 'toEtd' },\r\n eta: {from: 'fromEta', to: 'toEta' },\r\n fEta: {from: 'fromFEta', to: 'toFEta' },\r\n oblDate: {from: 'fromOblDate', to: 'toOblDate' },\r\n rlsDate: {from: 'fromRlsDate', to: 'toRlsDate' },\r\n pnlDate: {from: 'fromPnlDate', to: 'toPnlDate' },\r\n createdAt: {from: 'fromCreatedAt', to: 'toCreatedAt' },\r\n dvnEdi: {from: 'fromDvnEdi', to: 'toDvnEdi' },\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date' },\r\n trDate: {from: 'fromTrDate', to: 'toTrDate' },\r\n paidDate: {from: 'fromPaidDate', to: 'toPaidDate' },\r\n }\r\n\r\n}\r\n","import {EdiAcHd} from './EdiAcHd';\r\nimport {EdiAcDetail} from './EdiAcDetail';\r\nimport {RevisionHistory} from './RevisionHistory';\r\n\r\nexport class AcctHistHd {\r\n invoiceNo: string = '';\r\n billName: string = '';\r\n postDate: string | null = null;\r\n invoiceDate: string | null = null;\r\n dueDate: string | null = null;\r\n confirmDate: string | null = null;\r\n confirmActionDate: string | null = null;\r\n amount: number = 0;\r\n advRecAmount: number = 0;\r\n paidAmt: number = 0;\r\n historyHDList: EdiAcHd[] = [];\r\n historyDetaillAllList: EdiAcDetail[] = [];\r\n historyDetailList: EdiAcDetail[] = [];\r\n revisionHistList: RevisionHistory[] = [];\r\n\r\n fromDate: string | null = null;\r\n toDate: string | null = null;\r\n reportType: string = '';\r\n}\r\n\r\nexport enum AcctHistoryType {\r\n DInvoHistory = 'DInvoHistory',\r\n DApHistory = 'DApHistory',\r\n DCrDbHistory = 'DCrDbHistory',\r\n InvoHistory = 'InvoHistory',\r\n ApHistory = 'ApHistory',\r\n CrDbHistory = 'CrDbHistory'\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport Select from '../ui/Select';\r\nimport useSystemSettings from '../hooks/useSystemSettings';\r\nimport useSuntekSettings from '../hooks/useSuntekSettings';\r\n\r\nfunction BranchDropDown({\r\n value,\r\n onChange = () => {},\r\n disabled = false,\r\n isSetup = false,\r\n selectId = undefined,\r\n addAll = false,\r\n maxLength = undefined,\r\n name=undefined,\r\n inactive = false,\r\n}: {\r\n value: string,\r\n onChange?: (x:string) => void,\r\n disabled?: boolean,\r\n isSetup?: boolean,\r\n selectId?: string|undefined,\r\n addAll?: boolean, // Is ALL offered as an option\r\n maxLength?: number|undefined,\r\n name?:string|undefined,\r\n inactive?: boolean,\r\n}) {\r\n const systemSettings = useSystemSettings();\r\n const suntekSettings = useSuntekSettings();\r\n\r\n const hqBranch = suntekSettings.company?.hqBranch ?? '';\r\n\r\n //const data = systemSettings.branches\r\n // ? ( addAll ? [\"ALL\", ...systemSettings.branches] : [...systemSettings.branches] )\r\n // : [];\r\n\r\n let branchDetails = systemSettings.branchDetails;\r\n if (!inactive) {\r\n branchDetails = systemSettings.branchDetails?.filter(x => x.inactive === false);\r\n }\r\n const data = branchDetails ? ( addAll ? [\"ALL\", ...branchDetails.map(x => x.branch)] : [...branchDetails.map(x => x.branch)]) : [];\r\n\r\n function handleChange(e:React.ChangeEvent) {\r\n onChange(e.target.value);\r\n } \r\n\r\n const displayData = isSetup || systemSettings.enableBranch\r\n ? data.map(x => ({\r\n value: x,\r\n label: x === hqBranch ? `${x} (HQ)` : x\r\n }))\r\n : [];\r\n \r\n const actualValue = value; \r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nBranchDropDown.defaultProps = {\r\n onChange: () => {},\r\n disabled: false,\r\n dark: false,\r\n isSetup: false,\r\n inactive: false\r\n};\r\n\r\nBranchDropDown.propTypes = {\r\n value: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n selectId: PropTypes.string,\r\n isSetup: PropTypes.bool.isRequired, // if this control is called in Setup View, set true\r\n inactive: PropTypes.bool\r\n};\r\n\r\nexport default BranchDropDown;\r\n","import PropTypes from 'prop-types';\r\nimport React, { useRef, useState } from 'react';\r\nimport { faSearch } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nimport LeftRightSplit from '../ui/LeftRightSplit';\r\nimport TextBoxUncontrolled from '../ui/TextBoxUncontrolled';\r\nimport SecondaryButton from '../ui/SecondaryButton';\r\n\r\nfunction ClearableSearch({ initialValue, onSearch }:{initialValue: string, onSearch: (x:string|null) => void}) {\r\n const textRef = useRef(null);\r\n const [search, setSearch] = useState(false);\r\n const searchButton = search ? 'Clear Search' : 'Search'\r\n function handleSearch() {\r\n if (textRef && textRef.current) {\r\n if(textRef.current.value !== ''){\r\n onSearch(textRef.current.value);\r\n setSearch(true);\r\n }\r\n }\r\n }\r\n\r\n function clearSearch() {\r\n if (textRef && textRef.current) {\r\n textRef.current.value = '';\r\n onSearch(null);\r\n setSearch(false);\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n }\r\n right={\r\n
    \r\n {\r\n if(search) clearSearch();\r\n else handleSearch();\r\n }}>\r\n {searchButton}\r\n \r\n
    \r\n }\r\n />\r\n );\r\n}\r\n\r\nClearableSearch.defaultProps = {\r\n onSearch: () => {},\r\n};\r\n\r\nClearableSearch.propTypes = {\r\n onSearch: PropTypes.func.isRequired,\r\n initialValue: PropTypes.string,\r\n};\r\n\r\nexport default React.memo(ClearableSearch);\r\n","import PropTypes from 'prop-types';\r\nimport React, {useContext} from 'react';\r\n\r\nimport LookupField from '../../ui/lookup/LookupField';\r\nimport {TextAlignLeftRenderer} from '../SmartTableRenderers';\r\n\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport {TableColumn} from '../../tableSettings';\r\nimport { SQLIndex } from '../../fms.core/constants';\r\nimport { LookupPort } from '../../fms.data/lookup';\r\nimport { ListResult } from '../../framework.core/data/ListResult';\r\nimport useGlobalOkDialog from '../../hooks/useGlobalOkDialog';\r\n\r\nfunction OceanUnPortLookupField({\r\n initialValue = '',\r\n onSelect = () => {},\r\n placeholder = undefined,\r\n onTextChange = () => {},\r\n disabled = false,\r\n lookupId = undefined,\r\n onTabNext = undefined,\r\n onTabPrevious = undefined,\r\n searchBy = 'un',\r\n searchMatchOnTab = false,\r\n hasLookupValue = false,\r\n maxLength = undefined,\r\n onBlur,\r\n ...other\r\n}: {\r\n disabled?: boolean,\r\n initialValue?: string,\r\n onSelect?: (x:LookupPort) => void,\r\n placeholder?: string|undefined,\r\n onTextChange?: (text:string|undefined) => void,\r\n lookupId?: string|undefined,\r\n onTabNext?: (() => boolean)|undefined,\r\n onTabPrevious?: (() => boolean)|undefined,\r\n searchBy: 'portName' | 'us' | 'un' | 'unWithPortName',\r\n searchMatchOnTab?: boolean,\r\n hasLookupValue?: boolean,\r\n maxLength?: number|undefined,\r\n onBlur?: () => void,\r\n [x:string]: any,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n function getProps() {\r\n let queryTerm = 'unPortName';\r\n let labelProp = 'unCode';\r\n \r\n switch (searchBy) {\r\n case 'portName':\r\n queryTerm = 'portNameLookup';\r\n labelProp = 'portName';\r\n break;\r\n case 'un':\r\n queryTerm = 'unPortName'; \r\n labelProp = 'code';\r\n break;\r\n case 'us':\r\n queryTerm = 'usPortName';\r\n labelProp = 'usCode';\r\n break;\r\n case 'unWithPortName': \r\n queryTerm = 'unCodeWithPortName';\r\n labelProp = 'unCodeWithPortName';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return { queryTerm, labelProp };\r\n }\r\n\r\n async function queryPorts(queryString:string|null) {\r\n const apiResult:ListResult|null = await appContext.api.getLookupItems(SQLIndex.POLCode, queryString ?? '');\r\n //return apiResult?.data?.entities;\r\n if(!apiResult || !apiResult.success){\r\n showGlobalOkDialog(

    {apiResult?.message || 'Could not get list !!!'}

    );\r\n return [];\r\n }\r\n return apiResult.entities;\r\n\r\n // const search = {\r\n // general1: getProps().queryTerm,\r\n // generalText1: queryString,\r\n // orderBy: 'portName',\r\n // orderByAscending: true,\r\n // pageSize: 100,\r\n // };\r\n\r\n // const apiResult = await appContext.api.getCodesOceanUnPorts(search);\r\n\r\n // return apiResult && apiResult.data ? apiResult.data : [];\r\n }\r\n\r\n function onCancel() {\r\n }\r\n\r\n function filter(data:Array, filterText:string) {\r\n return data.findIndex(x => x.portName && x.portName.toLowerCase().startsWith(filterText.toLowerCase()));\r\n }\r\n\r\n const columns:Array = [\r\n { Header: 'UN Port Name', accessor: 'portName', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 400, Cell: TextAlignLeftRenderer },\r\n { Header: 'UN Code', accessor: 'code', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 80, Cell: TextAlignLeftRenderer },\r\n { Header: 'US Code', accessor: 'usCode', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 80, Cell: TextAlignLeftRenderer },\r\n ];\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nOceanUnPortLookupField.defaultProps = {\r\n onSelect: () => {},\r\n onTextChange: () => {},\r\n disabled: false,\r\n searchBy: 'un',\r\n searchMatchOnTab: false,\r\n};\r\n\r\nOceanUnPortLookupField.propTypes = {\r\n initialValue: PropTypes.string,\r\n onSelect: PropTypes.func.isRequired,\r\n onTextChange: PropTypes.func.isRequired,\r\n placeholder: PropTypes.string,\r\n disabled: PropTypes.bool.isRequired,\r\n lookupId: PropTypes.string,\r\n onTabNext: PropTypes.func,\r\n onTabPrevious: PropTypes.func,\r\n searchBy: PropTypes.oneOf(['portName', 'us', 'un', 'unWithPortName']).isRequired,\r\n searchMatchOnTab: PropTypes.bool.isRequired,\r\n hasLookupValue: PropTypes.bool,\r\n maxLength: PropTypes.number,\r\n onBlur: PropTypes.func\r\n};\r\n\r\n\r\nexport default React.memo(OceanUnPortLookupField);\r\n","import { MutableRefObject, useContext, useEffect, useState, useRef, useMemo } from 'react';\r\nimport { useTypedFastStorage } from '../../hooks/useFastStorage';\r\nimport SecondaryButton from \"../../ui/SecondaryButton\";\r\nimport { ApplicableTableSettings } from \"../../tableSettings\";\r\nimport SmartTable, { SmartTableHandle } from \"../../uiControls/SmartTable\";\r\nimport { historyViewMainDetailTable, historyViewBillingDetailTable, historyViewRevisionTable } from \"./tableSettings\";\r\nimport { JobNames } from \"../../framework.core/JobNames\";\r\nimport Date from \"../../ui/Date\";\r\nimport InlineInputControlRow from '../../ui/layout/InlineInputControlRow';\r\nimport TextBox from '../../ui/TextBox';\r\nimport Float from '../../ui/Float';\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport { AcctHistHd, AcctHistoryType } from '../../fms.core/AcctHistHd';\r\nimport useGlobalOkDialog from '../../hooks/useGlobalOkDialog';\r\nimport { ApiResult } from '../../framework.core/data/ApiResult';\r\nimport { DateRenderer, DateTimeRenderer, FloatRenderer, NumberedIndicatorRenderer, TextAlignLeftRenderer, TextRenderer } from '../../uiControls/SmartTableRenderers';\r\nimport PrimaryInverseButton from '../../ui/PrimaryInverseButton';\r\nimport useTableNavigation from '../../ui/tables/useTableNavigation';\r\nimport { compareIso, formatDateTime, getCurrentYear, getDate, getDiffDays, now } from '../../dateUtils';\r\nimport useSystemSettings from '../../hooks/useSystemSettings';\r\nimport useReportViewer from '../../hooks/useReportViewer';\r\nimport { CRDBArgs, InvoiceArgs } from '../../fms.report/args';\r\nimport { DocumentType } from '../../framework.core/DocumentType';\r\nimport useGlobalYesNoDialog from '../../hooks/useGlobalYesNoDialog';\r\nimport _ from 'lodash';\r\nimport Label from '../../ui/Label';\r\nimport RadioButton from '../../ui/RadioButton';\r\n\r\ninterface HistoryViewStorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\ninterface HistoryViewParams {\r\n onPopupClose?: () => void,\r\n jobId: number,\r\n jobName: JobNames,\r\n jobType: string | null,\r\n};\r\n\r\ninterface HistoryViewLoadedParams {\r\n historyView: AcctHistHd,\r\n historyViewRef: MutableRefObject,\r\n setHistoryView: (x: Partial) => void,\r\n jobId: number,\r\n jobName: JobNames,\r\n jobType: string | null,\r\n onPopupClose?: () => void,\r\n fromDate: string | null,\r\n toDate: string | null,\r\n setFromDate: React.Dispatch>,\r\n setToDate: React.Dispatch>,\r\n};\r\n\r\nfunction getHistoryViewStorageKeys(): HistoryViewStorageKeys {\r\n return { modelStorage: 'common-history-view' }\r\n}\r\n\r\nfunction HistoryViewImpl(params: HistoryViewParams) {\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n \r\n const { modelStorage } = getHistoryViewStorageKeys();\r\n const { jobId, jobName, jobType, onPopupClose } = params;\r\n \r\n const [inStorage, setInStorage, removeFromStorage, storageRef] = useTypedFastStorage(modelStorage, null);\r\n\r\n const defaultDate = getDate(`${getCurrentYear()}-01-01T00:00:00`);\r\n const [fromDate, setFromDate] = useState(defaultDate);\r\n const [toDate, setToDate] = useState(now());\r\n \r\n useEffect(() => {\r\n initialize();\r\n return () => removeFromStorage()\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [jobId]\r\n );\r\n\r\n async function loadExisting(): Promise {\r\n const apiResult: ApiResult = await appContext.api.getAcctHistory(jobName, jobId, jobType, false, fromDate, toDate);\r\n\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(apiResult?.message || 'Cannot load data');\r\n if (onPopupClose) {\r\n onPopupClose();\r\n }\r\n\r\n return null;\r\n }\r\n \r\n return apiResult.result;\r\n }\r\n\r\n async function initialize() {\r\n const data = await loadExisting();\r\n if (data) {\r\n setInStorage({ ...data });\r\n }\r\n }\r\n\r\n if (!inStorage) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction HistoryViewInitializedImpl({\r\n historyView,\r\n historyViewRef,\r\n setHistoryView,\r\n onPopupClose,\r\n jobId,\r\n jobName,\r\n jobType,\r\n fromDate,\r\n toDate,\r\n setFromDate,\r\n setToDate,\r\n}: HistoryViewLoadedParams) {\r\n const [selectedRow, setSelectedRow] = useState(historyView.historyHDList.length - 1);\r\n const systemSettings = useSystemSettings();\r\n const appContext = useContext(ApplicationContext);\r\n const useDarkMode = appContext.useDarkMode;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const { viewReport } = useReportViewer();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n\r\n const defaultDate = getDate(`${getCurrentYear()}-01-01T00:00:00`);\r\n\r\n useTableNavigation('historyViewMainDetailTable', setSelectedRow, setSelectedRow, [], false, true);\r\n\r\n const billingTableRef = useRef(null);\r\n\r\n function onBillingTableInitialized() {\r\n if (billingTableRef.current && jobName === JobNames.CrDb) {\r\n billingTableRef.current.showColumn('currency', false, false);\r\n }\r\n }\r\n\r\n function onInvoTableInitialized() {\r\n const focusElement = document.getElementById(`historyViewMainDetailTable-row-${selectedRow}`) as HTMLInputElement;\r\n if (focusElement) {\r\n focusElement.scrollIntoView({ behavior: 'smooth', block: 'end' });\r\n }\r\n }\r\n\r\n function getNoLabel(): string {\r\n if ([JobNames.Invoice, JobNames.GInvo, JobNames.WHStorageInv].includes(jobName)) {\r\n return 'Invoice #';\r\n }\r\n if ([JobNames.Bill, JobNames.GBill].includes(jobName)) {\r\n return 'Bill #';\r\n }\r\n if (jobName === JobNames.CrDb) {\r\n return 'Cr/DB #';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n function getToLabel(): string {\r\n if ([JobNames.Invoice, JobNames.GInvo, JobNames.WHStorageInv].includes(jobName)) {\r\n return 'Invoice To';\r\n }\r\n if ([JobNames.Bill, JobNames.GBill].includes(jobName)) {\r\n return 'Vendor Name';\r\n }\r\n if (jobName === JobNames.CrDb) {\r\n return 'Agent Name';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n function getCustNameLabel(): string {\r\n if ([JobNames.Invoice, JobNames.GInvo, JobNames.WHStorageInv].includes(jobName)) {\r\n return 'Customer';\r\n }\r\n if ([JobNames.Bill, JobNames.GBill].includes(jobName)) {\r\n return 'Vendor';\r\n }\r\n if (jobName === JobNames.CrDb) {\r\n return 'Agent';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n function getDateLabel(): string {\r\n if ([JobNames.Invoice, JobNames.GInvo, JobNames.WHStorageInv].includes(jobName)) {\r\n return 'Inv. Date';\r\n }\r\n if ([JobNames.Bill, JobNames.GBill].includes(jobName)) {\r\n return 'Bill Date';\r\n }\r\n if (jobName === JobNames.CrDb) {\r\n return 'Cr/DB Date';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n /*\r\n function getDisplayLabel(): string {\r\n if ([JobNames.Invoice, JobNames.GInvo, JobNames.WHStorageInv].includes(jobName)) {\r\n return 'Invoice';\r\n }\r\n if ([JobNames.Bill, JobNames.GBill].includes(jobName)) {\r\n return 'Bill';\r\n }\r\n if (jobName === JobNames.CrDb) {\r\n return 'CrDb';\r\n }\r\n\r\n return '';\r\n }\r\n */\r\n\r\n function getAcctTypeByJobName(jobName: string) {\r\n switch (jobName) {\r\n case JobNames.Invoice:\r\n case JobNames.GInvo:\r\n case JobNames.WHStorageInv:\r\n case JobNames.WHInvoice:\r\n return AcctHistoryType.InvoHistory;\r\n case JobNames.Bill:\r\n case JobNames.GBill:\r\n return AcctHistoryType.ApHistory;\r\n case JobNames.CrDb:\r\n return AcctHistoryType.CrDbHistory;\r\n }\r\n }\r\n\r\n function PrintRenderer({ row }: any) {\r\n return print(row.index)}>\r\n Print\r\n \r\n }\r\n\r\n async function print(rowIndex: number) {\r\n let args;\r\n let vSubject;\r\n let sRInvoID = '';\r\n if (historyView.revisionHistList[rowIndex].id <= 0) return;\r\n\r\n\r\n switch (getAcctTypeByJobName(jobName)) {\r\n\r\n case 'InvoHistory':\r\n vSubject = `Invoice[${historyView.revisionHistList[rowIndex].invoNo}]`\r\n if (historyView.revisionHistList.length - 1 !== rowIndex) {\r\n\r\n if (rowIndex === 0) {\r\n sRInvoID = historyView.revisionHistList[rowIndex].id.toString();\r\n } else {\r\n sRInvoID = historyView.revisionHistList[rowIndex - 1].id.toString() + \",\" + historyView.revisionHistList[rowIndex].id.toString();\r\n } \r\n args = new InvoiceArgs({\r\n docType: DocumentType.Invoice,\r\n formCaption: vSubject,\r\n subject: vSubject,\r\n stamp: appContext.suntekSettings?.accounting?.showPastDueOnInv,\r\n useMultiCur: appContext.suntekSettings?.accounting?.showCurAmountInInv,\r\n toCompanyid: `${await appContext.api.getRList(historyView.revisionHistList[rowIndex].id.toString(), 'T_RINVOHD', 'F_BillTo')}`,\r\n tbName: 'T_RINVOHD',\r\n tbId: 'R' + sRInvoID\r\n });\r\n viewReport(args, \"\", true);\r\n } else {\r\n\r\n const printMsg = await showGlobalYesNoDialog(\r\n
    \r\n

    Do you want to Print?

    \r\n
    \r\n ,false, 0, true);\r\n\r\n if (printMsg) {\r\n args = new InvoiceArgs({\r\n docType: DocumentType.Invoice,\r\n formCaption: vSubject,\r\n subject: vSubject,\r\n stamp: appContext.suntekSettings?.accounting?.showPastDueOnInv,\r\n useMultiCur: appContext.suntekSettings?.accounting?.showCurAmountInInv,\r\n toCompanyid: `${await appContext.api.getRList(historyView.revisionHistList[rowIndex].id.toString(), 'T_INVOHD', 'F_BillTo')}`,\r\n tbName: 'T_RINVOHD',\r\n tbId: historyView.revisionHistList[rowIndex].id.toString()\r\n });\r\n viewReport(args, \"\", true);\r\n }\r\n\r\n }\r\n break;\r\n\r\n case 'CrDbHistory':\r\n vSubject = `Cr/Db Note [CrDb No: ${historyView.revisionHistList[rowIndex].invoNo}]`;\r\n if (historyView.revisionHistList.length - 1 !== rowIndex) {\r\n args = new CRDBArgs({\r\n docType: DocumentType.CRDB,\r\n formCaption: vSubject,\r\n subject: vSubject,\r\n toCompanyid: `${await appContext.api.getRList(historyView.revisionHistList[rowIndex].id.toString(), 'T_RCRDBHD', 'F_Agent')}`,\r\n tbName: 'T_RINVOHD',\r\n tbId: 'R' + historyView.revisionHistList[rowIndex].id.toString()\r\n });\r\n viewReport(args, \"\", true);\r\n } else {\r\n\r\n const printMsg = await showGlobalYesNoDialog(\r\n
    \r\n

    Do you want to print?

    \r\n
    \r\n ,false, 0, true);\r\n\r\n if (printMsg) {\r\n args = new CRDBArgs({\r\n docType: DocumentType.CRDB,\r\n formCaption: vSubject,\r\n subject: vSubject,\r\n toCompanyid: `${await appContext.api.getRList(historyView.revisionHistList[rowIndex].id.toString(), 'T_CRDBHD', 'F_Agent')}`,\r\n tbName: 'T_RINVOHD',\r\n tbId: historyView.revisionHistList[rowIndex].id.toString()\r\n });\r\n viewReport(args, \"\", true);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n function validAllDeleteHistoryDate() {\r\n if (!fromDate || !toDate) return;\r\n \r\n if (getDiffDays(toDate, fromDate) < 0) {\r\n showGlobalOkDialog(\"Start date cannot be set later than end date.\");\r\n return;\r\n }\r\n }\r\n\r\n async function loadHistorysearchData() {\r\n validAllDeleteHistoryDate();\r\n\r\n const apiResult: ApiResult = await appContext.api.getAcctHistory(jobName, jobId, jobType, false, fromDate, toDate);\r\n\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(apiResult?.message || 'Cannot load data');\r\n if (onPopupClose) {\r\n onPopupClose();\r\n }\r\n\r\n return null;\r\n }\r\n\r\n setHistoryView({\r\n ...apiResult.result,\r\n fromDate,\r\n toDate\r\n });\r\n }\r\n\r\n const mainTableOptions: ApplicableTableSettings = {\r\n ...historyViewMainDetailTable,\r\n height: '120px',\r\n selectable: true,\r\n rowProps: (row: any) => ({ onClick: () => setSelectedRow(row.index) }),\r\n selectedRowIndex: selectedRow,\r\n customTableId: 'historyViewMainDetailTable',\r\n tableName: 'historyViewMainDetailTable',\r\n data: historyView.historyHDList,\r\n rowRenderers: [\r\n { accessor: 'indicator', Cell: NumberedIndicatorRenderer },\r\n { accessor: 'ediDate', Cell: DateTimeRenderer },\r\n { accessor: 'ediId', Cell: TextAlignLeftRenderer },\r\n { accessor: 'refNo', Cell: TextAlignLeftRenderer },\r\n { accessor: 'currency', Cell: TextRenderer },\r\n { accessor: 'amount', Cell: FloatRenderer },\r\n { accessor: 'invoNo', Cell: TextAlignLeftRenderer, Header: () => {getNoLabel()} },\r\n { accessor: 'invoDate', Cell: DateRenderer, Header: () => {getDateLabel()} },\r\n { accessor: 'custName', Cell: TextAlignLeftRenderer, Header: () => {getCustNameLabel()} },\r\n { accessor: 'dueDate', Cell: DateRenderer },\r\n { accessor: 'custName', Cell: TextAlignLeftRenderer },\r\n ],\r\n };\r\n\r\n const billingDetailTableSettings = { ...historyViewBillingDetailTable, columns: historyViewBillingDetailTable.columns.map(c => ({ ...c })) };\r\n\r\n const billingDetailTableOptions: ApplicableTableSettings = {\r\n ...billingDetailTableSettings,\r\n height: '120px',\r\n selectable: true,\r\n tableName: 'historyViewBillingDetailTable',\r\n data: selectedRow >= 0 ? historyView.historyDetaillAllList.filter(x => x.ediHdId === historyView.historyHDList[selectedRow].id) : [],\r\n rowRenderers: [\r\n { accessor: 'indicator', Cell: NumberedIndicatorRenderer },\r\n { accessor: 'seqNo', Cell: TextAlignLeftRenderer },\r\n { accessor: 'chgTypeDesc', Cell: TextAlignLeftRenderer },\r\n { accessor: 'code', Cell: TextAlignLeftRenderer },\r\n { accessor: 'description', Cell: TextAlignLeftRenderer },\r\n { accessor: 'currency', Cell: TextRenderer },\r\n { accessor: 'amount', Cell: FloatRenderer },\r\n ],\r\n };\r\n\r\n const revisionTableOptions: ApplicableTableSettings = {\r\n ...historyViewRevisionTable,\r\n selectable: true,\r\n tableName: 'historyViewRevisionTable',\r\n height: '252px',\r\n data: historyView.revisionHistList,\r\n rowRenderers: [\r\n { accessor: 'indicator', Cell: NumberedIndicatorRenderer },\r\n // { accessor: 'printa', Cell: () => Print},\r\n { accessor: 'printa', Cell: PrintRenderer },\r\n { accessor: 'u2Date', Cell: DateRenderer },\r\n { accessor: 'invoNo', Cell: TextAlignLeftRenderer, Header: () => {getNoLabel()} },\r\n ],\r\n };\r\n\r\n const isRecogField = useMemo(() => { \r\n if ([\"OIM\", \"OIH\", \"OOM\", \"OOH\", \"AIM\", \"AIH\", \"AOM\", \"AOH\", \"OTH\"].includes(jobType ?? '')) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }, [jobType])\r\n\r\n return (\r\n
    \r\n <>\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n {isRecogField &&
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    }\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n {isRecogField &&
    \r\n \r\n \r\n \r\n
    }\r\n
    \r\n\r\n
    \r\n
    \r\n <> \r\n \r\n\r\n
    \r\n
    \r\n Billing Detail\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {(jobName !== JobNames.Bill && jobName !== JobNames.GBill) &&\r\n
    \r\n \r\n
    \r\n }\r\n
    \r\n\r\n
    \r\n \r\n CLOSE\r\n \r\n
    \r\n \r\n\r\n {/* jhlee 250109 - Delete History popup -> detail로 변경 */}\r\n {/* {viewDeleteHistory &&\r\n
    \r\n
    \r\n <> \r\n\r\n \r\n
    \r\n
    \r\n {\r\n if (selectedFromDate && compareIso(getDate(selectedFromDate) ?? '', getDate(now()) ?? '') > 0) {\r\n showGlobalOkDialog('You cannot enter future date.');\r\n setHistoryView({ fromDate: defaultDate });\r\n } else {\r\n setHistoryView({ fromDate: selectedFromDate })};\r\n setFromDate(selectedFromDate);\r\n } \r\n }\r\n /> \r\n
    \r\n\r\n
    \r\n ~\r\n
    \r\n\r\n
    \r\n {\r\n if (selectedToDate && compareIso(getDate(selectedToDate) ?? '', getDate(now()) ?? '') > 0) {\r\n showGlobalOkDialog(\"You cannot enter future date.\");\r\n setHistoryView({ toDate: now() });\r\n } else {\r\n setHistoryView({ toDate: selectedToDate })};\r\n setToDate(selectedToDate)\r\n }\r\n }\r\n />\r\n
    \r\n\r\n
    \r\n { await loadHistorysearchData() }}>List\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n Billing Detail\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n {(jobName !== JobNames.Bill && jobName !== JobNames.GBill && !viewDeleteHistory) &&\r\n
    \r\n \r\n
    \r\n }\r\n
    \r\n } */}\r\n
    \r\n );\r\n}\r\n\r\nconst HistoryViewDetails = ({\r\n onPopupClose,\r\n selectedElement,\r\n jobId,\r\n jobName,\r\n jobType,\r\n}: { onPopupClose?: () => void, selectedElement?: any, jobId: number, jobName: JobNames, jobType: string | null }) => {\r\n /**\r\n * Implementation note:\r\n * key is important in this case in order to force full List view rerender for different parameters.\r\n */\r\n\r\n if (selectedElement) {\r\n jobId = selectedElement.id;\r\n switch (jobName) {\r\n case JobNames.OpInvoice:\r\n case JobNames.Invoice:\r\n jobName = JobNames.Invoice;\r\n break;\r\n\r\n case JobNames.OpBill:\r\n case JobNames.Bill:\r\n jobName = JobNames.Bill;\r\n break;\r\n case JobNames.OpCrDb:\r\n case JobNames.CrDb:\r\n jobName = JobNames.CrDb;\r\n break;\r\n }\r\n jobType = selectedElement.jobType;\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\nexport default HistoryViewDetails;\r\n","import _ from 'lodash';\r\nimport { createSlice, Draft, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport AuthService from '../security/AuthService';\r\n\r\nimport { User } from '../ifmsTypes';\r\n\r\nconst authService = new AuthService();\r\n\r\nexport interface LoginState {\r\n user: User|null,\r\n};\r\n\r\nconst initialState:LoginState = { user: null };\r\n\r\nfunction doChangeUserIconUrl(currentState: Draft, iconUrl: string) {\r\n if (currentState && currentState.user)\r\n currentState.user.userIcon = iconUrl;\r\n}\r\n\r\n/**\r\n * Slice for controlling login user data\r\n */\r\nconst loginSlice = createSlice({\r\n name: 'login',\r\n initialState,\r\n reducers: {\r\n loginUser: (state, action: PayloadAction) => {\r\n state.user = action.payload;\r\n },\r\n logoutUser: () => {\r\n authService.removeUser();\r\n return _.cloneDeep(initialState);\r\n },\r\n changeUserIconUrl: (state, action: PayloadAction<{ url: string }>) => {\r\n doChangeUserIconUrl(state, action.payload.url);\r\n },\r\n reset: () => {\r\n // From here we can take action only at this \"login\" state\r\n // But, as we have taken care of this particular \"reset\" action\r\n // in rootReducer, we can use it to CLEAR the complete Redux Store's state\r\n },\r\n }\r\n});\r\n\r\nexport default loginSlice.reducer;\r\n\r\nexport const { loginUser, logoutUser, reset, changeUserIconUrl } = loginSlice.actions;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class MyEventListItem extends SearchModelBase {\r\n id: number = 0;\r\n mCntrId: number = 0;\r\n hCntrId: number = 0;\r\n mblId: number = 0;\r\n hblId: number = 0;\r\n eventStatus: string = '';\r\n containerNo: string = '';\r\n mblNo: string = '';\r\n // trStatus: string = '';\r\n te: boolean = false; // MBL List > T와 동일한 컬럼\r\n cargo: string = '';\r\n hblNo: string = '';\r\n pod: string = '';\r\n eta: string | null = null;\r\n lastFreeDay: string | null = null;\r\n vesselArrivalDate: string | null = null;\r\n unloadVesselDate: string | null = null;\r\n railDepartureDate: string | null = null;\r\n railArrivalDate: string | null = null;\r\n anSentDate: string | null = null;\r\n mblCarrierRlsDate: string | null = null; // MBL Carrier Release 필드를 업데이트 할지 판단하기 위한 용도\r\n carrierRlsDate: string | null = null;\r\n customsRlsDate: string | null = null;\r\n pickupAvailableDate: string | null = null;\r\n pickupDate: string | null = null;\r\n emptyCntrRtnDate: string | null = null;\r\n billingsDate: string | null = null;\r\n consignee: string | null = null;\r\n // trType: string | null = null;\r\n // trDate: string | null = null;\r\n\r\n anPastDays: number = 0;\r\n carrierRlsPastDays: number = 0;\r\n customsRlsPastDays: number = 0;\r\n carrierRlsFromEtaPastDays: number = 0;\r\n customsRlsFromEtaPastDays: number = 0;\r\n demurragePastDays: number = 0;\r\n detentionPastDays: number = 0;\r\n billingPastDays: number = 0;\r\n\r\n fromEtaDate: string | null = null;\r\n toEtaDate: string | null = null;\r\n\r\n fromLfdDate: string | null = null;\r\n toLfdDate: string | null = null;\r\n\r\n fromVesselArrivalDate: string | null = null;\r\n toVesselArrivalDate: string | null = null;\r\n\r\n fromUnloadVesselDate: string | null = null;\r\n toUnloadVesselDate: string | null = null;\r\n\r\n fromRailDepartureDate: string | null = null;\r\n toRailDepartureDate: string | null = null;\r\n\r\n fromRailArrivalDate: string | null = null;\r\n toRailArrivalDate: string | null = null;\r\n\r\n fromANSentDate: string | null = null;\r\n toANSentDate: string | null = null;\r\n\r\n fromCarrierRlsDate: string | null = null;\r\n toCarrierRlsDate: string | null = null;\r\n\r\n fromCustomsRlsDate: string | null = null;\r\n toCustomsRlsDate: string | null = null;\r\n\r\n fromPickupAvailableDate: string | null = null;\r\n toPickupAvailableDate: string | null = null;\r\n\r\n fromPickupDate: string | null = null;\r\n toPickupDate: string | null = null;\r\n\r\n fromEmptyCntrRtnDate: string | null = null;\r\n toEmptyCntrRtnDate: string | null = null;\r\n\r\n fromBillingsDate: string | null = null;\r\n toBillingsDate: string | null = null;\r\n\r\n // fromTrDate: string | null = null;\r\n // toTrDate: string | null = null;\r\n\r\n preparedBy: string | null = null;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true, sortable: false}),\r\n XCol.Create({ col: 1, text: 'My Events', width: 125, dataIndex: 'eventStatus'}),\r\n XCol.Create({ col: 2, text: 'CNTR #', width: 100, dataIndex: 'containerNo', defaultColumnFocus: true}),\r\n XCol.Create({ col: 3, text: 'MBL #', width: 100, dataIndex: 'mblNo'}),\r\n // XCol.Create({ col: 4, text: 'TR', width: 30, dataIndex: 'trStatus', align: XCol.XAlignType.Center}),\r\n // XCol.Create({ col: 4, text: 'T', width: 30, dataIndex: 'te', type: XCol.XCellType.Bool, noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 4, text: 'Cargo', width: 50, dataIndex: 'cargo'}),\r\n XCol.Create({ col: 5, text: 'HBL #', width: 100, dataIndex: 'hblNo'}),\r\n XCol.Create({ col: 6, text: 'POD', width: 100, dataIndex: 'pod'}),\r\n XCol.Create({ col: 7, text: 'A/N Sent', width: 75, dataIndex: 'anSentDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 8, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 9, text: 'LFD', width: 75, dataIndex: 'lastFreeDay', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 10, text: 'Vessel ARR', width: 75, dataIndex: 'vesselArrivalDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 11, text: 'Vessel ULD', width: 75, dataIndex: 'unloadVesselDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 12, text: 'Rail DEP', width: 75, dataIndex: 'railDepartureDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 13, text: 'Rail ARR', width: 75, dataIndex: 'railArrivalDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 14, text: 'Carrier Rel.', width: 75, dataIndex: 'carrierRlsDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 15, text: 'Cust Rel.', width: 75, dataIndex: 'customsRlsDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 16, text: 'Pickup Avail', width: 75, dataIndex: 'pickupAvailableDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 17, text: 'Pickup', width: 75, dataIndex: 'pickupDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 18, text: 'Emp RTN', width: 75, dataIndex: 'emptyCntrRtnDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 19, text: 'Billings', width: 75, dataIndex: 'billingsDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 20, text: 'Consignee', width: 110, dataIndex: 'consignee' }),\r\n // XCol.Create({ col: 22, text: 'Req Date', width: 75, dataIndex: 'trDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n ];\r\n\r\n public static getExportCollection(useTrackingService:boolean = false): XCol.XExportColumn[] {\r\n let returnCloumns = this.ExportCollection;\r\n // Req Date 컬럼 제거\r\n //if (!useTrackingService) returnCloumns = returnCloumns.filter(x => x.dataIndex !== 'trDate');\r\n return returnCloumns;\r\n };\r\n\r\n public static OrderBy = { orderBy: MyEventListItem.prototype.id, orderByAscending: false };\r\n\r\n public static formatData(data: MyEventListItem[]) {\r\n return data.map((d: MyEventListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n eta: {from: 'fromEtaDate', to: 'toEtaDate'},\r\n lastFreeDay: {from: 'fromLfdDate', to: 'toLfdDate'},\r\n vesselArrivalDate: {from: 'fromVesselArrivalDate', to: 'toVesselArrivalDate'},\r\n unloadVesselDate: {from: 'fromUnloadVesselDate', to: 'toUnloadVesselDate'},\r\n railDepartureDate: {from: 'fromRailDepartureDate', to: 'toRailDepartureDate'},\r\n railArrivalDate: {from: 'fromRailArrivalDate', to: 'toRailArrivalDate'},\r\n anSentDate: {from: 'fromANSentDate', to: 'toANSentDate'},\r\n carrierRlsDate: {from: 'fromCarrierRlsDate', to: 'toCarrierRlsDate'},\r\n customsRlsDate: {from: 'fromCustomsRlsDate', to: 'toCustomsRlsDate'},\r\n pickupAvailableDate: {from: 'fromPickupAvailableDate', to: 'toPickupAvailableDate'},\r\n pickupDate: {from: 'fromPickupDate', to: 'toPickupDate'},\r\n emptyCntrRtnDate: {from: 'fromEmptyCntrRtnDate', to: 'toEmptyCntrRtnDate'},\r\n billingsDate: {from: 'fromBillingsDate', to: 'toBillingsDate'},\r\n // trDate: {from: 'fromTrDate', to: 'toTrDate'},\r\n };\r\n}\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport React from \"react\";\r\n\r\nexport interface GlobalOkDialogState {\r\n show: boolean,\r\n resolve: ((value: void | PromiseLike) => void)|null,\r\n content: React.ReactNode | null,\r\n hideOkButton: boolean,\r\n top: string|null,\r\n inform: string,\r\n warning: string,\r\n error: string,\r\n type:'info'|'error'|'warning',\r\n};\r\n\r\nexport interface GlobalOkDialogData {\r\n resolve: ((value: void | PromiseLike) => void)|null,\r\n content: React.ReactNode | null,\r\n hideOkButton?: boolean,\r\n top?: string|null,\r\n inform?: string,\r\n warning?: string,\r\n error?: string,\r\n type:'info'|'error'|'warning',\r\n\r\n};\r\n\r\nconst initialState:GlobalOkDialogState = {\r\n show: false,\r\n resolve: null,\r\n content: null,\r\n hideOkButton: false,\r\n top: null,\r\n inform:'',\r\n warning:'',\r\n error:'',\r\n type:'info',\r\n\r\n};\r\n\r\n/**\r\n * Slice for controlling Global Ok Dialog\r\n */\r\nconst globalOkDialogSlice = createSlice({\r\n name: 'globalOkDialog',\r\n initialState,\r\n reducers: {\r\n showGlobalOkDialog: (state, action: PayloadAction) => {\r\n state.show = true;\r\n state.resolve = action.payload.resolve;\r\n state.content = action.payload.content;\r\n state.hideOkButton = action.payload.hideOkButton ?? false;\r\n state.top = action.payload.top ?? null;\r\n\r\n state.type = action.payload.type ?? 'info';\r\n\r\n state.inform = action.payload.type === 'info' ? '' : 'none';\r\n state.warning = action.payload.type === 'warning'? '' : 'none';\r\n state.error = action.payload.type === 'error'? '' : 'none';\r\n\r\n },\r\n hideGlobalOkDialog: (state) => {\r\n state.show = false;\r\n state.resolve = null;\r\n state.content = null;\r\n state.hideOkButton = false;\r\n state.top = null;\r\n state.type = 'info';\r\n \r\n },\r\n }\r\n});\r\n\r\nexport default globalOkDialogSlice.reducer;\r\n\r\nexport const { showGlobalOkDialog, hideGlobalOkDialog } = globalOkDialogSlice.actions;\r\n","import {TrackableEntity} from '../data/ChangeTrackable';\r\nimport { IDictionary } from '../data/TrackingModule';\r\nimport { DBMappingInfo } from '../../framework.core/data/DBMappingInfo';\r\n\r\nexport class PimsContainer extends TrackableEntity {\r\n id: number = 0;\r\n bookingId: number = 0;\r\n cntrNo: string = '';\r\n cntrType: string = '';\r\n sealNo1: string = '';\r\n sealNo2: string = '';\r\n pickupNo: string = '';\r\n airId: number = 0;\r\n estWeight: number = 0;\r\n estWeightUnit: string = '';\r\n createdBy: string = '';\r\n createdAt: string = '';\r\n updatedBy: string = '';\r\n updatedAt: string = '';\r\n lastMSDesc: string = '';\r\n msBooking: string | null = null;\r\n msPickup: string | null = null;\r\n msOriginReceipt: string | null = null;\r\n msLoadedOnVessel: string | null = null;\r\n msShipDeparture: string | null = null;\r\n msCarrierReleased: string | null = null;\r\n msCustomsReleased: string | null = null;\r\n msShipArrival: string | null = null;\r\n msUpLoadedFromVessel: string | null = null;\r\n msDeliveryCFS: string | null = null;\r\n msRailDeparture: string | null = null;\r\n msRailArrival: string | null = null;\r\n msAvailablePickup: string | null = null;\r\n msPickupDelivery: string | null = null;\r\n msDeliveryCustomer: string | null = null;\r\n msEmptyCntrRtn: string | null = null;\r\n locBooking: string = '';\r\n locContainerDispatched: string = '';\r\n locInGate: string = '';\r\n locLoadedOnVessel: string = '';\r\n locVesselDeparture: string = '';\r\n locCarrierReleased: string = '';\r\n locCustomsReleased: string = '';\r\n locVesselArrival: string = '';\r\n locUpLoadedFromVessel: string = '';\r\n locDeliveryCFS: string = '';\r\n locRailDeparture: string = '';\r\n locRailArrival: string = '';\r\n locAvailablePickup: string = '';\r\n locOutGate: string = '';\r\n locDeliveryCustomer: string = '';\r\n locEmptyCntrRtn: string = '';\r\n mCntrId: number = 0;\r\n hCntrId: number = 0;\r\n kgs: number = 0;\r\n lbs: number = 0;\r\n cbm: number = 0;\r\n cft: number = 0;\r\n shipQty: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('id', 'bookingId', 'cntrNo', 'cntrType', 'sealNo1', 'sealNo2', 'estWeight', 'estWeightUnit', 'createdBy', 'createdAt', 'updatedBy', 'updatedAt', 'lastMSIndex', 'lastMSDesc', 'totQty', 'mCntrId', 'hCntrId', 'kgs', 'lbs', 'cbm', 'cft', 'shipQty');\r\n this.getdateProps.push('createdAt', 'updatedAt'); \r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n\r\n getDbMappings(isAir:boolean):IDictionary {\r\n return PimsContainer.getFieldMappings(isAir);\r\n }\r\n\r\n static _seaDicFieldMappings:IDictionary = {\r\n 'pickupNo': new DBMappingInfo({ field: 'f_pickupno', table: '@TbName' }),\r\n 'msBooking': new DBMappingInfo({ field: 'f_bookingdate', table: '@TbName' }),\r\n 'msPickup': new DBMappingInfo({ field: 'f_ord', table: '@TbName' }),\r\n 'msOriginReceipt': new DBMappingInfo({ field: 'f_indate', table: '@TbName' }),\r\n 'msLoadedOnVessel': new DBMappingInfo({ field: 'f_loaddate', table: '@TbName' }),\r\n 'msShipDeparture': new DBMappingInfo({ field: 'f_atd', table: '@TbName' }),\r\n 'msCarrierReleased': new DBMappingInfo({ field: 'f_carrierrls', table: '@TbName' }),\r\n 'msCustomsReleased': new DBMappingInfo({ field: 'f_customrls', table: '@TbName' }),\r\n 'msShipArrival': new DBMappingInfo({ field: 'f_ata', table: '@TbName' }),\r\n 'msUpLoadedFromVessel': new DBMappingInfo({ field: 'f_unloaddate', table: '@TbName' }),\r\n 'msDeliveryCFS': new DBMappingInfo({ field: 'f_cfsdate', table: '@TbName' }),\r\n 'msRailDeparture': new DBMappingInfo({ field: 'f_ratd', table: '@TbName' }),\r\n 'msRailArrival': new DBMappingInfo({ field: 'f_rata', table: '@TbName' }),\r\n 'msAvailablePickup': new DBMappingInfo({ field: 'f_pudate', table: '@TbName' }),\r\n 'msPickupDelivery': new DBMappingInfo({ field: 'f_outdate', table: '@TbName' }),\r\n 'msDeliveryCustomer': new DBMappingInfo({ field: 'f_dcdate', table: '@TbName' }),\r\n 'msEmptyCntrRtn': new DBMappingInfo({ field: 'f_emptyreturn', table: '@TbName' }),\r\n 'locBooking': new DBMappingInfo({ field: 'f_booking_loc', table: '@TbName' }),\r\n 'locContainerDispatched': new DBMappingInfo({ field: 'f_ord_loc', table: '@TbName' }),\r\n 'locInGate': new DBMappingInfo({ field: 'f_indate_loc', table: '@TbName' }),\r\n 'locLoadedOnVessel': new DBMappingInfo({ field: 'f_loaddate_loc', table: '@TbName' }),\r\n 'locVesselDeparture': new DBMappingInfo({ field: 'f_atd_loc', table: '@TbName' }),\r\n 'locCarrierReleased': new DBMappingInfo({ field: 'f_carrierrls_loc', table: '@TbName' }),\r\n 'locCustomsReleased': new DBMappingInfo({ field: 'f_customrls_loc', table: '@TbName' }),\r\n 'locVesselArrival': new DBMappingInfo({ field: 'f_ata_loc', table: '@TbName' }),\r\n 'locUpLoadedFromVessel': new DBMappingInfo({ field: 'f_unloaddate_loc', table: '@TbName' }),\r\n 'locDeliveryCFS': new DBMappingInfo({ field: 'f_cfsdate_loc', table: '@TbName' }),\r\n 'locRailDeparture': new DBMappingInfo({ field: 'f_ratd_loc', table: '@TbName' }),\r\n 'locRailArrival': new DBMappingInfo({ field: 'f_rata_loc', table: '@TbName' }),\r\n 'locAvailablePickup': new DBMappingInfo({ field: 'f_pudate_loc', table: '@TbName' }),\r\n 'locOutGate': new DBMappingInfo({ field: 'f_outdate_loc', table: '@TbName' }),\r\n 'locDeliveryCustomer': new DBMappingInfo({ field: 'f_dcdate_loc', table: '@TbName' }),\r\n 'locEmptyCntrRtn': new DBMappingInfo({ field: 'f_emptyreturn_loc', table: '@TbName' }),\r\n 'mCntrId': new DBMappingInfo({ field: 'f_id', table: '@TbName' }),\r\n 'id': new DBMappingInfo({ field: 'F_PIMSLINKID', table: '@TbName' }),\r\n\r\n };\r\n\r\n static _airDicFieldMappings:IDictionary = {\r\n 'pickupNo': new DBMappingInfo({ field: 'f_pickupno', table: '@TbName' }),\r\n 'msPickup': new DBMappingInfo({ field: 'f_pickupdate', table: '@TbName' }),\r\n 'msShipDeparture': new DBMappingInfo({ field: 'f_atd', table: '@TbName' }),\r\n 'msCustomsReleased': new DBMappingInfo({ field: 'f_customrls', table: '@TbName' }),\r\n 'msShipArrival': new DBMappingInfo({ field: 'f_ata', table: '@TbName' }),\r\n 'msAvailablePickup': new DBMappingInfo({ field: 'f_avail', table: '@TbName' }),\r\n 'msDeliveryCustomer': new DBMappingInfo({ field: 'f_delivery', table: '@TbName' }),\r\n 'locContainerDispatched': new DBMappingInfo({ field: 'f_pickuploc', table: '@TbName' }),\r\n 'locVesselDeparture': new DBMappingInfo({ field: 'f_atdloc', table: '@TbName' }),\r\n 'locCustomsReleased': new DBMappingInfo({ field: 'f_custmrlsloc', table: '@TbName' }),\r\n 'locVesselArrival': new DBMappingInfo({ field: 'f_ataloc', table: '@TbName' }),\r\n 'locAvailablePickup': new DBMappingInfo({ field: 'f_availloc', table: '@TbName' }),\r\n 'locDeliveryCustomer': new DBMappingInfo({ field: 'f_delvloc', table: '@TbName' }),\r\n 'id': new DBMappingInfo({ field: 'F_Id', table: '@TbName' }),\r\n\r\n };\r\n\r\n // Called from View to make SQLList by passing arg\r\n static getFieldMappings = (isAir:boolean):IDictionary => {\r\n if(isAir) return this._airDicFieldMappings;\r\n else return this._seaDicFieldMappings;\r\n };\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, {useContext} from 'react';\r\nimport {TableColumn} from \"../../tableSettings\";\r\nimport {TextAlignLeftRenderer} from \"../SmartTableRenderers\";\r\nimport {SQLIndex} from \"../../fms.core/constants\";\r\nimport ApplicationContext from \"../../ApplicationContext\";\r\nimport LookupField from \"../../ui/lookup/LookupField\";\r\nimport {CompanyLookupProps} from \"./CompanyLookupField\";\r\nimport {LookupAccountCode} from \"../../fms.data/lookup\";\r\n\r\ninterface NewCountryLookupProps extends Omit{\r\n onSelect: (x: LookupAccountCode) => void,\r\n glType : string,\r\n opType : string,\r\n subType : string,\r\n searchStartWith : boolean\r\n}\r\n\r\nconst columns: Array = [\r\n {\r\n Header: 'Account Code',\r\n accessor: 'code',\r\n resizable: true,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 100,\r\n Cell: TextAlignLeftRenderer\r\n },\r\n {\r\n Header: 'Account Name',\r\n accessor: 'name',\r\n resizable: true,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 280,\r\n Cell: TextAlignLeftRenderer\r\n },\r\n];\r\n\r\nconst GlNoLookupField = ({\r\n initialValue = '',\r\n onSelect = () => {\r\n },\r\n placeholder = undefined,\r\n onTextChange = () => {\r\n },\r\n disabled = false,\r\n lookupId = undefined,\r\n onTabNext = undefined,\r\n onTabPrevious = undefined,\r\n companyItems = undefined,\r\n onFocus = () => {\r\n },\r\n onBlur = () => {\r\n },\r\n focusableWhenDisabled = false,\r\n glType = '',\r\n opType = '',\r\n subType = '',\r\n searchStartWith = false,\r\n ...others\r\n }: NewCountryLookupProps) => {\r\n\r\n const appContext = useContext(ApplicationContext);\r\n\r\n async function queryCompanies(queryString: string | null) {\r\n const apiResult = await appContext.api.getLookupItems(SQLIndex.GLNo, queryString);\r\n let data = apiResult?.entities ?? [] ;\r\n\r\n if(glType === 'cost'){\r\n data = data.filter((x: LookupAccountCode) => x.glType === 'C');\r\n\r\n if(subType === 'DS')\r\n data = data.filter((x: LookupAccountCode) => x.glSubGroup === 'DS');\r\n else if(subType === 'IDS')\r\n data = data.filter((x: LookupAccountCode) => x.glSubGroup === 'IDS'); \r\n else if(subType === 'TS')\r\n data = data.filter((x: LookupAccountCode) => x.glSubGroup === 'TS');\r\n }\r\n else if(glType === 'sales'){\r\n data = data.filter((x: LookupAccountCode) => x.glType === 'I');\r\n\r\n if(subType === 'DS')\r\n data = data.filter((x: LookupAccountCode) => x.glSubGroup === 'DS');\r\n else if(subType === 'IDS')\r\n data = data.filter((x: LookupAccountCode) => x.glSubGroup === 'IDS'); \r\n else if(subType === 'TS')\r\n data = data.filter((x: LookupAccountCode) => x.glSubGroup === 'TS');\r\n }else if(glType === 'expense'){\r\n data = data.filter((x: LookupAccountCode) => (x.code.startsWith('431') || x.code.startsWith('45')));\r\n }else if(glType === 'income'){\r\n data = data.filter((x: LookupAccountCode) => x.code.startsWith('55'));\r\n }else if(glType === 'general'){ // income + expense\r\n data = data.filter((x: LookupAccountCode) => (x.code.startsWith('431') || x.code.startsWith('45') || x.code.startsWith('55')));\r\n }else if(glType === 'payroll'){\r\n data = data.filter((x: LookupAccountCode) => ['431210', '431220', '431230', '431310'].indexOf(x.code) >= 0);\r\n }\r\n\r\n switch(opType){\r\n case 'OI':\r\n data = data.filter((x: LookupAccountCode) => x.glGroup.startsWith('I'));\r\n break;\r\n case 'OE':\r\n data = data.filter((x: LookupAccountCode) => x.glGroup.startsWith('E'));\r\n break;\r\n case 'AI':\r\n data = data.filter((x: LookupAccountCode) => x.glGroup.startsWith('A'));\r\n break;\r\n case 'AE':\r\n data = data.filter((x: LookupAccountCode) => x.glGroup.startsWith('P'));\r\n break;\r\n case 'WH':\r\n data = data.filter((x: LookupAccountCode) => x.glGroup.startsWith('W'));\r\n break;\r\n case 'OT':\r\n data = data.filter((x: LookupAccountCode) => x.glGroup.startsWith('T'));\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if(searchStartWith && queryString)\r\n data = data.filter((x: LookupAccountCode) => x.code.startsWith(queryString));\r\n\r\n return apiResult?.success ? data : [];\r\n }\r\n\r\n function onCancel() {\r\n }\r\n\r\n function filter(data: Array, filterText: string) {\r\n return data.findIndex(x => x.code && x.code.toLowerCase().startsWith(filterText.toLowerCase()));\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nGlNoLookupField.defaultProps = {\r\n onSelect: () => {\r\n },\r\n onTextChange: () => {\r\n },\r\n filterName: 'code',\r\n disabled: false,\r\n focusableWhenDisabled: false,\r\n opType: '',\r\n glType: '',\r\n subType : '',\r\n searchStartWith : false\r\n};\r\n\r\nGlNoLookupField.propTypes = {\r\n initialValue: PropTypes.string,\r\n onSelect: PropTypes.func.isRequired,\r\n onTextChange: PropTypes.func.isRequired,\r\n placeholder: PropTypes.string,\r\n filterName: PropTypes.string.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n lookupId: PropTypes.string,\r\n onTabNext: PropTypes.func,\r\n onTabPrevious: PropTypes.func,\r\n companyItems: PropTypes.array,\r\n onBlur: PropTypes.func,\r\n onFocus: PropTypes.func,\r\n focusableWhenDisabled: PropTypes.bool.isRequired,\r\n opType: PropTypes.string,\r\n glType: PropTypes.string,\r\n subType: PropTypes.string, \r\n searchStartWith: PropTypes.bool,\r\n};\r\n\r\n\r\nexport default React.memo(GlNoLookupField);","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\ntype TextBoxUncontrolledProps = {\r\n initialValue:string,\r\n placeholder:string,\r\n onChange: (e:React.ChangeEvent) => void,\r\n disabled: boolean,\r\n onEnter?: (() => void)|undefined,\r\n onTabNext?: (() => boolean)|undefined,\r\n maxLength?: number|undefined,\r\n [x:string]: any\r\n focusable?: boolean,\r\n noborder?: boolean,\r\n};\r\nconst TextBoxUncontrolled = React.forwardRef(({\r\n initialValue,\r\n placeholder,\r\n onChange,\r\n disabled,\r\n onEnter,\r\n onTabNext,\r\n maxLength = undefined,\r\n focusable = true,\r\n noborder = false,\r\n ...other\r\n}, ref) => {\r\n const dark = false;\r\n \r\n let cssClass = dark ? 'e-ifms-input-dark e-outline ifms-tabable' : 'e-ifms-input e-outline ifms-tabable';\r\n if (noborder) {\r\n cssClass = `${cssClass} ifms-noborder-input`;\r\n }\r\n if ( focusable && !disabled) {\r\n cssClass = `${cssClass} ifms-tabable-active`;\r\n }\r\n\r\n function processTabNext(e:React.KeyboardEvent) {\r\n if (onTabNext) {\r\n const tabProcessed = onTabNext();\r\n if (tabProcessed) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n function onKeyDown(e:React.KeyboardEvent) {\r\n const tab = 9;\r\n const enterKey = 13;\r\n\r\n if (e.keyCode === tab) {\r\n if (!e.shiftKey) {\r\n processTabNext(e);\r\n }\r\n }\r\n if (e.keyCode === enterKey) {\r\n if (onEnter) {\r\n onEnter();\r\n }\r\n }\r\n }\r\n\r\n return (\r\n \r\n );\r\n});\r\n\r\nTextBoxUncontrolled.defaultProps = {\r\n onChange: () => {},\r\n initialValue: '',\r\n disabled: false,\r\n dark: false,\r\n placeholder: '',\r\n};\r\n\r\nTextBoxUncontrolled.propTypes = {\r\n onChange: PropTypes.func.isRequired,\r\n onEnter: PropTypes.func,\r\n initialValue: PropTypes.string.isRequired,\r\n placeholder: PropTypes.string.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n onTabNext: PropTypes.func,\r\n maxLength: PropTypes.number,\r\n};\r\n\r\nexport default React.memo(TextBoxUncontrolled);\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport _ from 'lodash';\r\n\r\nexport enum OemListType {\r\n Normal = 0,\r\n UseLot\r\n}\r\n\r\n/*const mapSearchFields: any = {\r\n general1: 'generalText1',\r\n general2: 'generalText2',\r\n general3: 'generalText3',\r\n date: {from: 'dateFrom', to: 'dateTo'},\r\n date1: {from: 'dateFrom1', to: 'dateTo1'},\r\n date2: {from: 'dateFrom2', to: 'dateTo2'},\r\n location1: 'location1Text',\r\n location2: 'location2Text',\r\n location3: 'location3Text',\r\n number: {from: 'numberFrom', to: 'numberFrom'},\r\n number1: {from: 'numberFrom1', to: 'numberTo1'},\r\n number2: {from: 'numberFrom2', to: 'numberTo2'},\r\n}*/\r\n\r\nexport class OeMblListItem extends SearchModelBase {\r\n closed: string = '';\r\n shipmentType: string = '';\r\n invStat: string = '';\r\n billStat: string = '';\r\n crDbStat: string = '';\r\n refNo: string = '';\r\n hblCount: string = '';\r\n lotNo: string = '';\r\n branch: string = '';\r\n bookingNo: string = '';\r\n mblNo: string = '';\r\n agentId: number = 0;\r\n agentSName: string = '';\r\n vessel: string = '';\r\n cutOffDate: string | null = null;\r\n fromCutOffDate: string | null = null;\r\n toCutOffDate: string | null = null;\r\n etd: string | null = null;\r\n fromEtd: string | null = null;\r\n toEtd: string | null = null;\r\n eta: string | null = null;\r\n fromEta: string | null = null;\r\n toEta: string | null = null;\r\n svccNo: string = '';\r\n containerNo: string = '';\r\n conType: string = '';\r\n loadingPort: string = '';\r\n disCharge: string = '';\r\n voyage: string = '';\r\n carrierSName: string = '';\r\n pLofRec: string = '';\r\n createdAt: string | null = null;\r\n postDate: string | null = null;\r\n id: number = 0;\r\n pimsLinkId: number = 0;\r\n emptyRtnName: string = '';\r\n finalDest: string = '';\r\n recognized: string = '';\r\n status: string = '';\r\n\r\n // cloud\r\n /**\r\n * 1 = Coload, C=Consol, '' = None\r\n */\r\n coload:string = '';\r\n\r\n /**\r\n * F = FCL, L=LCL, O = FAK\r\n */\r\n lclfcl: string = '';\r\n moveType: string = '';\r\n blType: string = '';\r\n agentRefNo: string = '';\r\n bookCfrm: string | null = null;\r\n fromBookCfrm: string | null = null;\r\n toBookFrom: string | null = null;\r\n sedSent: string | null = null;\r\n fromSedSent: string | null = null;\r\n toSedSent: string | null = null;\r\n dlvrToCarr: string | null = null;\r\n fromDlvrToCarr: string | null = null;\r\n toDlvrToCarr: string | null = null;\r\n u2Date: string | null = null;\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n u2ID: string = '';\r\n u1ID: string = '';\r\n projectNo: string='';\r\n paidStatus: string = '';\r\n paidDate: string | null = null;\r\n fromPaidDate: string | null = null;\r\n toPaidDate: string | null = null;\r\n fromCreatedAt: string | null = null;\r\n toCreatedAt: string | null = null;\r\n\r\n //Track Event\r\n lastEvent: string = '';\r\n lastEventDate: string | null = null;\r\n \r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', align: XCol.XAlignType.Center, hiddenInColumnSetup: true }),\r\n XCol.Create({ col: 1, text: 'R', width: 30, dataIndex: 'recognized', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, hiddenInColumnSetup: true }),\r\n XCol.Create({ col: 30, text: 'D/ID', width: 35, dataIndex: 'shipmentType', align: XCol.XAlignType.Center, noNullOrEmptySearch: true }),\r\n \r\n XCol.Create({ col: 2, text: 'Cargo', width: 80, dataIndex: 'lclFcl', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 3, text: 'Ref. #', width: 100, dataIndex: 'refNo', defaultColumnFocus: true }),\r\n XCol.Create({ col: 4, text: 'Last Event', width: 85, dataIndex: 'lastEvent', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 6, text: 'BR', width: 40, dataIndex: 'branch' }),\r\n XCol.Create({ col: 7, text: 'HBL(s)', width: 40, dataIndex: 'hblCount', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 8, text: 'Lot ID', width: 80, dataIndex: 'lotNo' }),\r\n XCol.Create({ col: 9, text: 'Carrier Booking', width: 100, dataIndex: 'bookingNo' }),\r\n XCol.Create({ col: 10, text: 'MBL', width: 100, dataIndex: 'mblNo' }),\r\n XCol.Create({ col: 11, text: 'Project ID', width:100, dataIndex:'projectNo' }),\r\n XCol.Create({ col: 12, text: 'Agent', width: 120, dataIndex: 'agentSName' }),\r\n XCol.Create({ col: 13, text: 'Vessel', width: 120, dataIndex: 'vessel' }),\r\n XCol.Create({ col: 14, text: 'CUTOFF', width: 75, dataIndex: 'cutOffDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 15, text: 'ETD', width: 75, dataIndex: 'etd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 16, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 17, text: 'Org. B/L Type', width: 80, dataIndex: 'blType', visible: false }),\r\n XCol.Create({ col: 18, text: 'Move Type', width: 80, dataIndex: 'moveType', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 19, text: 'SVC Contract', width: 80, dataIndex: 'svccNo', visible: false }),\r\n XCol.Create({ col: 20, text: 'Container', width: 90, dataIndex: 'containerNo' }),\r\n XCol.Create({ col: 21, text: 'Type', width: 60, dataIndex: 'conType' }),\r\n XCol.Create({ col: 22, text: 'Loading Port', width: 120, dataIndex: 'loadingPort' }),\r\n XCol.Create({ col: 23, text: 'Discharge Port', width: 120, dataIndex: 'disCharge' }),\r\n XCol.Create({ col: 24, text: 'Voyage', width: 60, dataIndex: 'voyage' }),\r\n XCol.Create({ col: 25, text: 'Freight Vendor', width: 120, dataIndex: 'carrierSName' }),\r\n XCol.Create({ col: 26, text: 'Place of Receipt', width: 120, dataIndex: 'pLofRec', visible: false }),\r\n XCol.Create({ col: 27, text: 'FRT CHRG', width: 60, dataIndex: 'paidStatus' }),\r\n XCol.Create({ col: 28, text: 'Paid', width: 75, dataIndex: 'paidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n \r\n XCol.Create({ col: 31, text: 'INV', width: 35, dataIndex: 'invStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false }),\r\n XCol.Create({ col: 32, text: 'BIL', width: 35, dataIndex: 'billStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false }),\r\n XCol.Create({ col: 33, text: 'CrDb', width: 35, dataIndex: 'crDbStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false }),\r\n \r\n XCol.Create({ col: 34, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 35, text: 'Create by', width: 80, dataIndex: 'u1ID', visible: false }),\r\n XCol.Create({ col: 36, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false }),\r\n XCol.Create({ col: 37, text: 'Update by', width: 80, dataIndex: 'u2ID', visible: false }),\r\n\r\n // XCol.Create({ col: 7, text: 'Co-Loading', width: 60, dataIndex: 'coload', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n //XCol.Create({ col: 17, text: 'Agent Ref. No', width: 100, dataIndex: 'agentRefNo', visible: false }),\r\n //XCol.Create({ col: 19, text: 'Carrier Book', width: 75, dataIndex: 'bookCfrm', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n //XCol.Create({ col: 20, text: 'SED Cutoff', width: 75, dataIndex: 'sedSent', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n //XCol.Create({ col: 29, text: 'Final Destination', width: 120, dataIndex: 'finalDest', visible: false }),\r\n // XCol.Create({ col: 23, text: 'Cutoff Date', width: 75, dataIndex: 'cutOffDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n ];\r\n\r\n public static getExportCollection(ltype:OemListType, useBranch: boolean): XCol.XExportColumn[] {\r\n let expCollection = _.cloneDeep(this.ExportCollection);\r\n if (ltype === OemListType.Normal) expCollection = expCollection.filter(x => x.dataIndex !== \"lotNo\");\r\n if (!useBranch) expCollection = expCollection.filter(x => x.dataIndex !== 'branch');\r\n return expCollection;\r\n };\r\n\r\n public static MapOeSearchFields: {[key: string]: {[key: string]: string}} = {\r\n cutOffDate: {from: 'fromCutOffDate', to: 'toCutOffDate'},\r\n etd: {from: 'fromEtd', to: 'toEtd'},\r\n eta: {from: 'fromEta', to: 'toEta'},\r\n bookCfrm: {from: 'fromBookCfrm', to: 'toBookFrom'},\r\n sedSent: {from: 'fromSedSent', to: 'toSedSent'},\r\n dlvrToCarr: {from: 'fromDlvrToCarr', to: 'toDlvrToCarr'},\r\n createdAt: {from: 'fromCreatedAt', to: 'toCreatedAt'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n paidDate: {from: 'fromPaidDate', to: 'toPaidDate'},\r\n }\r\n\r\n public static OrderBy = {orderBy: OeMblListItem.prototype.id, orderByAscending: false};\r\n\r\n public static formatData(data: OeMblListItem[]) {\r\n // return data.sort((a, b) => (!a.u2Date || !b.u2Date || a.u2Date < b.u2Date) ? 1 : -1).map((d: OeMblListItem) => ({\r\n return data.map((d: OeMblListItem) => ({\r\n ...d, coload: d.coload === '1',\r\n }));\r\n }\r\n}\r\n","/**\r\n * Revision History\r\n * \r\n * 12/31/2021 ptkim Add\r\n */\r\nimport {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport _ from 'lodash';\r\n\r\nexport enum OehListType {\r\n Normal,\r\n UseLot\r\n}\r\nexport class OeHblListItem extends SearchModelBase {\r\n closed: string = '';\r\n shipmentType: string = '';\r\n invStat: string = '';\r\n billStat: string = '';\r\n crDbStat: string = '';\r\n hblNo: string = '';\r\n lotNo: string = '';\r\n branch: string = '';\r\n credit: string = '';\r\n custSName: string = '';\r\n customer: number = 0\r\n refNo: string = '';\r\n mblNo: string = '';\r\n smanId: string = '';\r\n soNo: string = '';\r\n projectNo: string = '';\r\n shipmentID: string = '';\r\n sName: string = '';\r\n shipperName: string | null = null;\r\n cName: string = '';\r\n consigneeName: string | null = null;\r\n nName: string = '';\r\n notifyName: string | null = null;\r\n aName: string = '';\r\n commodity: string = '';\r\n payStat: string = '';\r\n payDate: string | null = null;\r\n fromPayDate: string | null = null;\r\n toPayDate: string | null = null;\r\n bookingNo: string = '';\r\n hBookingNo: string = '';\r\n vessel: string = '';\r\n cutOffDate: string | null = null;\r\n fromCutOffDate: string | null = null;\r\n toCutOffDate: string | null = null;\r\n etd: string | null = null;\r\n fromEtd: string | null = null;\r\n toEtd: string | null = null;\r\n eta: string | null = null;\r\n fromEta: string | null = null;\r\n toEta: string | null = null;\r\n expRef: string = '';\r\n containerNo: string = '';\r\n conType: string = '';\r\n loadingPort: string = '';\r\n disCharge: string = '';\r\n pkgs: number = 0;\r\n fromPkgs: number|null = null;\r\n toPkgs: number|null = null;\r\n cbm: number = 0;\r\n fromCbm: number|null = null;\r\n toCbm: number|null = null;\r\n kgs: number = 0;\r\n fromKgs: number|null = null;\r\n toKgs: number|null = null;\r\n issuedBy: string = '';\r\n bookRemark: string = '';\r\n docRcptNo: string = '';\r\n plofRec: string = '';\r\n plofDel: string = '';\r\n postDate: string | null = null;\r\n pimsLinkId: number = 0;\r\n id: number = 0;\r\n u1ID: string = '';\r\n u2ID: string = '';\r\n createdAt: string | null = null;\r\n u2Date: string | null = null;\r\n acctCloseBy: string = '';\r\n acctCloseDate: string | null = null;\r\n pCloseDate: string | null = null;\r\n autoOpCloseBy: string = '';\r\n opCloseBy: string = '';\r\n opCloseDate: string | null = null;\r\n oeMblId: number = 0;\r\n confirmDate: string | null = null;\r\n fromConfirmDate: string | null = null;\r\n toConfirmDate: string | null = null;\r\n recognized: string = '';\r\n status: string = '';\r\n custRefNo: string = '';\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n fromCreatedAt: string | null = null;\r\n toCreatedAt: string | null = null;\r\n //Track Event\r\n lastEvent: string = '';\r\n lastEventDate: string | null = null\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', align: XCol.XAlignType.Center, hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'R', width: 30, dataIndex: 'recognized', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 39, text: 'D/ID', width: 40, dataIndex: 'shipmentType', align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n \r\n XCol.Create({ col: 2, text: 'HBL', width: 100, dataIndex: 'hblNo'}),\r\n XCol.Create({ col: 3, text: 'Last Event', width: 85, dataIndex: 'lastEvent', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 5, text: 'BR', width: 40, dataIndex: 'branch', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 6, text: 'Customer', width: 120, dataIndex: 'custSName'}),\r\n XCol.Create({ col: 7, text: 'Credit', width: 60, dataIndex: 'credit', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 8, text: 'Ref. #', width: 100, dataIndex: 'refNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 9, text: 'MBL', width: 100, dataIndex: 'mblNo'}),\r\n XCol.Create({ col: 10, text: 'Sales', width: 80, dataIndex: 'smanId'}),\r\n XCol.Create({ col: 11, text: 'S/O', width: 80, dataIndex: 'soNo', visible: true}),\r\n XCol.Create({ col: 12, text: 'Project ID', width: 80, dataIndex: 'projectNo', visible: true}),\r\n XCol.Create({ col: 13, text: 'Shipper', width: 120, dataIndex: 'shipperName', hasCustomTooltip:true}),\r\n XCol.Create({ col: 14, text: 'Consignee', width: 120, dataIndex: 'consigneeName', hasCustomTooltip:true}),\r\n XCol.Create({ col: 15, text: 'Notify', width: 120, dataIndex: 'notifyName', hasCustomTooltip:true}),\r\n XCol.Create({ col: 16, text: 'Agent', width: 120, dataIndex: 'aName'}),\r\n XCol.Create({ col: 17, text: 'Commodity', width: 120, dataIndex: 'commodity'}),\r\n XCol.Create({ col: 18, text: 'P', width: 40, dataIndex: 'payStat', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 19, text: 'Paid Date', width: 75, dataIndex: 'payDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 20, text: 'Carrier Booking', width: 100, dataIndex: 'bookingNo'}),\r\n XCol.Create({ col: 21, text: 'H. Booking', width: 120, dataIndex: 'hBookingNo'}),\r\n XCol.Create({ col: 22, text: 'Vessel', width: 120, dataIndex: 'vessel'}),\r\n XCol.Create({ col: 23, text: 'CUTOFF', width: 75, dataIndex: 'cutOffDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 24, text: 'ETD', width: 75, dataIndex: 'etd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 25, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 26, text: 'Export Ref.', width: 100, dataIndex: 'expRef'}),\r\n XCol.Create({ col: 27, text: 'Container', width: 90, dataIndex: 'containerNo'}),\r\n XCol.Create({ col: 28, text: 'Type', width: 60, dataIndex: 'conType'}),\r\n XCol.Create({ col: 29, text: 'Loading Port', width: 120, dataIndex: 'loadingPort'}),\r\n XCol.Create({ col: 30, text: 'Discharge Port', width: 120, dataIndex: 'disCharge'}),\r\n XCol.Create({ col: 31, text: 'PKG(s)', width: 60, dataIndex: 'pkgs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 32, text: 'CBM', width: 60, dataIndex: 'cbm', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.000', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 33, text: 'KGS', width: 60, dataIndex: 'kgs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 34, text: 'Issued', width: 90, dataIndex: 'issuedBy'}),\r\n XCol.Create({ col: 35, text: 'Dock Receipt', width: 100, dataIndex: 'docRcptNo', visible: false}),\r\n XCol.Create({ col: 36, text: 'Place of Receipt', width: 120, dataIndex: 'plofRec', visible: false}),\r\n XCol.Create({ col: 37, text: 'Place of Delivery', width: 120, dataIndex: 'plofDel', visible: false}),\r\n \r\n XCol.Create({ col: 40, text: 'INV', width: 40, dataIndex: 'invStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 41, text: 'BIL', width: 40, dataIndex: 'billStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 42, text: 'CrDb', width: 40, dataIndex: 'crDbStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n \r\n XCol.Create({ col: 43, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime, visible: false,}),\r\n XCol.Create({ col: 44, text: 'Create by', width: 80, dataIndex: 'u1ID', visible: false}),\r\n XCol.Create({ col: 45, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, visible: false,}),\r\n XCol.Create({ col: 46, text: 'Update by', width: 80, dataIndex: 'u2ID', visible: false}),\r\n \r\n //for use tooltip\r\n XCol.Create({ col: 47, text: '', width: 0, dataIndex: 'sName', hiddenInColumnSetup: true, visible: false}), \r\n XCol.Create({ col: 48, text: '', width: 0, dataIndex: 'cName', hiddenInColumnSetup: true, visible: false}),\r\n XCol.Create({ col: 49, text: '', width: 0, dataIndex: 'nName', hiddenInColumnSetup: true, visible: false}),\r\n\r\n //XCol.Create({ col: 14, text: 'Cust. Ref. No', width: 100, dataIndex: 'custRefNo', visible: false}),\r\n // XCol.Create({ col: 22, text: 'MX', width: 40, dataIndex: 'ooMblID', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n ];\r\n\r\n\r\n \r\n public static getExportCollection(ltype:OehListType, useBranch: boolean): XCol.XExportColumn[] {\r\n let expCollection = _.cloneDeep(this.ExportCollection);\r\n if(ltype === OehListType.Normal) expCollection = expCollection.filter(x => x.dataIndex !== \"lotNo\");\r\n if (!useBranch) expCollection = expCollection.filter(x => x.dataIndex !== 'branch');\r\n return expCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: OeHblListItem.prototype.createdAt, orderByAscending: false };\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n payDate: {from: 'fromPayDate', to: 'toPayDate'},\r\n cutOffDate: {from: 'fromCutOffDate', to: 'toCutOffDate'},\r\n etd: {from: 'fromEtd', to: 'toEtd'},\r\n eta: {from: 'fromEta', to: 'toEta'},\r\n pkgs: {from: 'fromPkgs', to: 'toPkgs'},\r\n cbm: {from: 'fromCbm', to: 'toCbm'},\r\n kgs: {from: 'fromKgs', to: 'toKgs'},\r\n createdAt: {from: 'fromCreatedAt', to: 'toCreatedAt'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n confirmDate: {from: 'fromConfirmDate', to: 'toConfirmDate'},\r\n }\r\n}\r\n","import React from 'react';\r\nimport { IfmsRoute }from '../../../config/types';\r\n\r\nconst Home = React.lazy(() => import('../Home'));\r\nexport const OeMblView = React.lazy(() => import(\"../mbl/OeMblView\"));\r\nexport const OeHblView = React.lazy(() => import(\"../hbl/OeHblView\"));\r\nconst OeQuotationView = React.lazy(() => import(\"../quotation/OeQuotationView\"));\r\nconst OeLoadPlanView = React.lazy(() => import(\"../loadPlan/OeLoadPlanView\"));\r\nexport const OeBookingView = React.lazy(() => import(\"../booking/OeBookingView\"));\r\nconst OeMblBillingsView = React.lazy(() => import('../mbl/OeMBillingsView'));\r\nconst OeHblBillingsView = React.lazy(() => import('../hbl/OeHBillingsView'));\r\nconst AesFilingView = React.lazy(() => import('../../reports/AesFilingView'));\r\nconst CorrectionNoticeView = React.lazy(() => import('../../reports/CorrectionNoticeView'));\r\nconst PickupDeliveryView = React.lazy(() => import('../../reports/PickupDeliveryView'));\r\nconst BatchPrintView = React.lazy(() => import('../mbl/more/BatchPrintView'));\r\nconst ContainerLoadPlanView = React.lazy(() => import('../mbl/more/ContainerLoadPlanView'));\r\nconst AgentDocumentPackageView = React.lazy(() => import('../../reports/AgentDocumentPackageView'));\r\nconst FolderLabelView = React.lazy(() => import('../../reports/FolderLabelView'));\r\nconst CargoManifestView = React.lazy(() => import('../../reports/CargoManifestView'));\r\nconst SendBlView = React.lazy(() => import('../../reports/SendBlView'));\r\nconst PrintHblView = React.lazy(() => import('../hbl/more/PrintHblView'));\r\nconst BankDraftView = React.lazy(() => import('../../reports/BankDraftView'));\r\nconst CertificateOfOriginView = React.lazy(() => import('../../reports/CertificateOfOriginView'));\r\nconst DocumentPackageView = React.lazy(() => import('../../reports/DocumentPackageView'));\r\nconst CommercialInvoiceView = React.lazy(() => import('../../reports/CommercialInvoiceView'));\r\nconst ShippingAdviceView = React.lazy(() => import('../../reports/ShippingAdviceView'));\r\nconst AirLabelView = React.lazy(() => import('../../reports/AirLabelView'));\r\nconst MemoListView = React.lazy(() => import('../../reports/MemoListView'));\r\nconst ItTeNoticeView = React.lazy(() => import('../../reports/ItTeNoticeView'));\r\nconst PackageLabelView = React.lazy(() => import('../../reports/PackageLabelView'));\r\nconst StraightBlView = React.lazy(() => import('../../reports/StraightBlView'));\r\nconst ShipmentReportView = React.lazy(() => import('../reports/ShipmentReportView'));\r\nconst BrokerageReportView = React.lazy(() => import('../reports/BrokerageReportView'));\r\nconst DownloadView = React.lazy(() => import('../../common/DownloadView'));\r\n\r\nconst routes:Array = [\r\n {path: '/oceanExport/home', component: Home},\r\n {path: '/oceanExport/mbl/:mode/:id?/:tabIndex?/:createEntity?', component: OeMblView},\r\n {path: '/oceanExport/hbl/:mode/:id?/:tabIndex?/:createEntity?', component: OeHblView},\r\n {path: '/oceanExport/quotation/:mode/:id?', component: OeQuotationView},\r\n {path: '/oceanExport/loadPlan/:mode/:id?', component: OeLoadPlanView},\r\n {path: '/oceanExport/booking/:mode/:id?', component: OeBookingView},\r\n {path: '/oceanExport/viewBillings/mbl/:id?', component: OeMblBillingsView},\r\n {path: '/oceanExport/viewBillings/hbl/:id?', component: OeHblBillingsView},\r\n\r\n //OEM Moremenu\r\n {path: '/oceanExport/oemBatchPrint', component: BatchPrintView},\r\n {path: '/oceanExport/agentDocumentPackage', component: AgentDocumentPackageView},\r\n {path: '/oceanExport/containerLoadPlan', component: ContainerLoadPlanView},\r\n {path: '/oceanExport/cargoManifest', component: CargoManifestView},\r\n {path: '/oceanExport/sendBl', component: SendBlView},\r\n\r\n //OEH Moremenu\r\n {path: '/oceanExport/printHbl', component: PrintHblView},\r\n {path: '/oceanExport/bankDraft', component: BankDraftView},\r\n {path: '/oceanExport/certificateOfOrigin', component: CertificateOfOriginView},\r\n {path: '/oceanExport/commercialInvoice', component: CommercialInvoiceView},\r\n {path: '/oceanExport/packingList', component: CommercialInvoiceView},\r\n {path: '/oceanExport/documentPackage', component: DocumentPackageView},\r\n {path: '/oceanExport/itTeNotice', component: ItTeNoticeView},\r\n {path: '/oceanExport/packageLabel', component: PackageLabelView},\r\n {path: '/oceanExport/straightBl', component: StraightBlView},\r\n {path: '/oceanExport/memoCustomerList', component: MemoListView},\r\n\r\n //common Moremenu\r\n {path: '/oceanExport/aesFiling', component: AesFilingView},\r\n {path: '/oceanExport/correctionNotice', component: CorrectionNoticeView},\r\n {path: '/oceanExport/pickupDelivery', component: PickupDeliveryView},\r\n { path: '/oceanExport/memoList', component: MemoListView },\r\n { path: '/oceanExport/airLabel', component: AirLabelView },\r\n { path: '/oceanExport/shippingAdvice', component: ShippingAdviceView },\r\n { path: '/oceanExport/folderLabel', component: FolderLabelView },\r\n \r\n //report\r\n { path: '/oceanExport/shipmentReport', component: ShipmentReportView },\r\n { path: '/oceanExport/brokerageReport', component: BrokerageReportView },\r\n //Download\r\n { path: '/oceanExport/download/:jobName?/:id?', component: DownloadView },\r\n];\r\n\r\nexport default routes;\r\n","import React from 'react';\r\nimport { IfmsRoute }from '../../../config/types';\r\n\r\nexport const WhReceiptView = React.lazy(() => import(\"../receipt/WhReceiptView\"));\r\nexport const WhReceivingView = React.lazy(() => import(\"../receiving/WhReceivingView\"));\r\nexport const WhShippingView = React.lazy(() => import(\"../shipping/WhShippingView\"));\r\nconst WhStorageInvoiceView = React.lazy(() => import(\"../storageInvoice/WhStorageInvoiceView\"));\r\nconst WhCompanyView = React.lazy(() => import(\"../company/WhCompanyView\"));\r\nconst WhItemView = React.lazy(() => import(\"../item/WhItemView\"));\r\nconst WhLocView = React.lazy(() => import(\"../location/WhLocationView\"));\r\nconst ReceiptLabelView = React.lazy(() => import(\"../../reports/ReceiptLabelView\"));\r\nconst ReceivedCargoStatusView = React.lazy(() => import(\"../../reports/ReceivedCargoStatusView\"));\r\n\r\nconst PickupDeliveryView = React.lazy(() => import('../../reports/PickupDeliveryView')); //\r\nconst StraightBlView = React.lazy(() => import('../../reports/StraightBlView')); //\r\n\r\nconst QtyReportView = React.lazy(() => import('../reports/QtyReportView'));\r\nconst routes:Array = [\r\n // {path: '/warehousing/home', component: Home},\r\n {path: '/warehousing/receipt/:mode/:id?/:tabIndex?/:createEntity?', component: WhReceiptView},\r\n {path: '/warehousing/receiving/:mode/:id?/:tabIndex?/:createEntity?', component: WhReceivingView},\r\n {path: '/warehousing/shipping/:mode/:id?/:tabIndex?/:createEntity?', component: WhShippingView},\r\n {path: '/warehousing/storageInvoice/:mode/:id?', component: WhStorageInvoiceView},\r\n {path: '/warehousing/company/:mode/:id?', component: WhCompanyView},\r\n {path: '/warehousing/item/:mode/:id?', component: WhItemView},\r\n {path: '/warehousing/loc/:mode/:id?', component: WhLocView},\r\n\r\n //MoreMenu\r\n { path: '/warehousing/pickupDelivery', component: PickupDeliveryView },\r\n { path: '/warehousing/straightBl', component: StraightBlView },\r\n\r\n { path: '/warehousing/chargeItemSummary', component: QtyReportView },\r\n { path: '/warehousing/customerInNOut', component: QtyReportView },\r\n //Freight Receipt MoreMenu\r\n { path: '/warehousing/receiptLabel', component: ReceiptLabelView },\r\n { path: '/warehousing/receivedcargostatus', component: ReceivedCargoStatusView },\r\n\r\n];\r\n\r\nexport default routes;\r\n","/**\r\n * FmsModAccount\r\n */\r\nimport { CmdType } from \"../../fms.core/ApHd\";\r\nimport { SQLField, SQLInfo, SQLType } from \"../../framework.core/data/SQLInfo\";\r\nimport { getTbNameByJobName } from \"../../framework.core/JobNames\";\r\nimport { isNullOrEmpty } from \"../../util\";\r\n\r\nexport function SaveNewJournalByMaster(mblJobName:string, mblJobId:number, userID: string):SQLInfo|null {\r\n if(!mblJobName || mblJobId <= 0) return null;\r\n\r\n // ifms.net에서는 TBName을 사용했으나, cloud에서는 jobName을 넘겨서 backend에서 tbName으로 변환하도록 한다. \r\n // (JobHelper.GetTBNameByJobName을 frontend에서 사용하지 않기 위하여)\r\n return new SQLInfo({\r\n tableName: SQLInfo.SaveNewJournalByMaster,\r\n type: SQLType.Execute,\r\n fields: [\r\n new SQLField({ fieldName: \"\", propertyName: \"jobName\", value: mblJobName }),\r\n new SQLField({ fieldName: \"\", propertyName: \"TBId\", value: mblJobId }),\r\n new SQLField({ fieldName: \"\", propertyName: \"LoginId\", value: userID }),\r\n ]\r\n });\r\n}\r\n\r\nexport function SaveNewJournalByTask(jobName: string, jobId: number, userId: string = '', seqNo: number = 0): SQLInfo|null {\r\n if(!jobName) return null;\r\n\r\n const tbName = getTbNameByJobName(jobName);\r\n\r\n return new SQLInfo({\r\n tableName: SQLInfo.SaveNewJournalByTask,\r\n type: SQLType.Execute,\r\n fields: [\r\n new SQLField({ fieldName: \"\", propertyName: \"TBName\", value: isNullOrEmpty(tbName) ? jobName : tbName }),\r\n new SQLField({ fieldName: \"\", propertyName: \"TBId\", value: jobId }),\r\n new SQLField({ fieldName: \"\", propertyName: \"LoginId\", value: userId }),\r\n new SQLField({ fieldName: \"\", propertyName: \"SeqNo\", value: seqNo }),\r\n ]\r\n });\r\n}\r\n\r\nexport function fsGetShortNameByChgType(vChgType: number): string {\r\n let tRet = '';\r\n switch(vChgType) {\r\n case 1: tRet = \"Sales/DS\"; break;\r\n case 2: tRet = \"Collect4Agent\"; break;\r\n case 3:\r\n case 4: tRet = \"Sales/IDS\"; break;\r\n case 5: tRet = \"Debit Memo\"; break;\r\n case 6: tRet = \"Sales/DS\"; break;\r\n case 7: tRet = \"PS Sales Only\"; break;\r\n case 9: tRet = \"Other Sales\"; break;\r\n case 27: tRet = \"PS Sales Only\"; break;\r\n\r\n case 11: tRet = \"Cost/DS\"; break;\r\n case 12: tRet = \"Loan2Agent\"; break;\r\n case 13:\r\n case 14: tRet = \"Cost/IDS\"; break;\r\n case 15: tRet = \"Credit Memo\"; break;\r\n case 16: tRet = \"Cost/DS\"; break;\r\n case 17: tRet = \"PS Cost Only\"; break;\r\n case 19: tRet = \"Other Cost\"; break;\r\n case 37: tRet = \"PS Cost Only\"; break;\r\n\r\n case 8: tRet = \"Duty Agent\"; break;\r\n case 10: tRet = \"Duty Customer\"; break;\r\n case 18: tRet = \"Duty Agent\"; break;\r\n case 20: tRet = \"Duty Customer\"; break;\r\n case 40: tRet = \"Duty Customer\"; break;\r\n\r\n default: tRet = \"Unknown\"; break;\r\n }\r\n return tRet;\r\n}\r\n\r\nexport function updateStatusInvoData(jobName:string, oldId:number, newId:number, cmdType:number) {\r\n const sqlInfos:Array = [];\r\n const tbName = getTbNameByJobName(jobName);\r\n switch(cmdType) {\r\n case CmdType.Credit:\r\n // set f_isCredit for existing billing\r\n sqlInfos.push(new SQLInfo({\r\n tableName: tbName,\r\n type: SQLType.Update,\r\n key: new SQLField({ fieldName: 'f_id', propertyName: 'OriginInvId', value: oldId}),\r\n fields: [\r\n new SQLField({ fieldName: 'f_iscredit', propertyName: \"@@tsql\", value:\"'1'\"}),\r\n ]\r\n }));\r\n\r\n // settings for credit billing\r\n sqlInfos.push(new SQLInfo({\r\n tableName: tbName,\r\n type: SQLType.Update,\r\n key: new SQLField({ fieldName: 'f_id', propertyName: 'id', value: newId }),\r\n fields: [\r\n new SQLField({ fieldName: \"f_iscredit\", propertyName: \"@@tsql\", value: \"'2'\"}),\r\n new SQLField({ fieldName: \"f_OriginInvId\", propertyName: \"OriginInvId\", value: oldId})\r\n ]\r\n }));\r\n break;\r\n case CmdType.Void:\r\n // Mark orginal billing\r\n sqlInfos.push(new SQLInfo({\r\n tableName: tbName,\r\n type: SQLType.Update,\r\n key: new SQLField({ fieldName: 'f_id', propertyName: \"OriginInvId\", value: oldId}),\r\n fields: [\r\n new SQLField({ fieldName: \"f_void\", propertyName: \"@@tsql\", value: \"'1'\"})\r\n ]\r\n }));\r\n\r\n // Mark void billing\r\n sqlInfos.push(new SQLInfo({\r\n tableName: tbName,\r\n type: SQLType.Update,\r\n key: new SQLField({ fieldName: \"f_id\", propertyName: \"id\", value: newId}),\r\n fields: [\r\n new SQLField({ fieldName: \"f_void\", propertyName: \"@@tsql\", value: \"'2'\"}),\r\n new SQLField({ fieldName: \"f_OriginInvId\", propertyName: \"OriginInvId\", value: oldId})\r\n ]\r\n }));\r\n break;\r\n\r\n case CmdType.CancelCredit:\r\n // mark credit billing\r\n sqlInfos.push(new SQLInfo({\r\n tableName: tbName,\r\n type: SQLType.Update,\r\n key: new SQLField({ fieldName: \"f_id\", propertyName: \"OriginInvId\", value: oldId}),\r\n fields: [\r\n new SQLField({ fieldName: \"f_Void\", propertyName: \"@@tsql\", value: \"'1'\"}),\r\n new SQLField({ fieldName: \"f_iscredit\", propertyName: \"@@tsql\", value: \"0\"})\r\n ]\r\n }));\r\n\r\n // mark credit void billing\r\n sqlInfos.push(new SQLInfo({\r\n tableName: tbName,\r\n type: SQLType.Update,\r\n key: new SQLField({ fieldName: \"f_id\", propertyName: \"id\", value: newId }),\r\n fields: [\r\n new SQLField({ fieldName: \"f_Void\", propertyName: \"@@tsql\", value: \"'2'\"}),\r\n new SQLField({ fieldName: \"f_iscredit\", propertyName: \"@@tsql\", value: \"'0'\"}),\r\n new SQLField({ fieldName: \"f_originInvId\", propertyName: \"OriginInvId\", value: oldId})\r\n ]\r\n }));\r\n\r\n // clear isCredit\r\n sqlInfos.push(new SQLInfo({\r\n tableName: tbName,\r\n type: SQLType.Update,\r\n fields: [\r\n new SQLField({ fieldName: \"f_iscredit\", propertyName: \"@@tsql\", value: \"'0'\"}),\r\n // \r\n new SQLField({ fieldName: \"F_PaidAmt\", propertyName: \"@@tsql\", value: \"0\"}),\r\n new SQLField({ fieldName: \"F_CheckNo\", propertyName: \"@@tsql\", value: \"''\"}),\r\n new SQLField({ fieldName: \"F_PaidDate\", propertyName: \"LastPaidDate\", value: null}),\r\n ],\r\n where: `F_ID = (Select F_OriginInvId from ${tbName} where F_ID = ${oldId}) and ` +\r\n `(Select Count(*) from ${tbName} where F_OriginInvId = (Select F_OriginInvId from ${tbName} where F_ID = ${oldId}) AND F_IsCredit = 2) = 0`\r\n }));\r\n break;\r\n\r\n case CmdType.CancelVoid:\r\n // clear void from voided billing \r\n sqlInfos.push(new SQLInfo({\r\n tableName: tbName,\r\n type: SQLType.Update,\r\n fields: [\r\n new SQLField({ fieldName: \"f_void\", propertyName: \"@@tsql\", value: \"'0'\"})\r\n ],\r\n where: `F_ID = (Select F_OriginInvId from ${tbName} where F_ID = ${oldId})`\r\n }));\r\n break;\r\n }\r\n return sqlInfos;\r\n}\r\n\r\nexport function matchAdvanceInPayment(tbName:string, tbId:number, newDate:string|null, glNo:string, userID:string): SQLInfo|null {\r\n if(!tbName || tbId <= 0) return null;\r\n return new SQLInfo({\r\n tableName: SQLInfo.MatchAdvanceInPayment,\r\n type: SQLType.Execute,\r\n fields: [\r\n new SQLField({ fieldName: \"\", propertyName: \"TBName\", value: tbName}),\r\n new SQLField({ fieldName: \"\", propertyName: \"TBId\", value: tbId}),\r\n new SQLField({ fieldName: \"\", propertyName: \"NewDate\", value: newDate}),\r\n new SQLField({ fieldName: \"\", propertyName: \"GlNo\", value: glNo}),\r\n new SQLField({ fieldName: \"\", propertyName: \"LoginID\", value: userID})\r\n ]\r\n });\r\n}\r\n\r\nexport function setStatusAll(mTbName:string, mTbId:number, isSet:boolean): SQLInfo[] | null {\r\n if(!mTbName || mTbId <= 0) return null;\r\n\r\n let hTbName = \"\";\r\n let hFieldName = \"\";\r\n const statusValue = isSet ? 1 : 0;\r\n\r\n switch(mTbName){\r\n case \"T_OIMMAIN\":\r\n hTbName = \"T_OIHMAIN\";\r\n hFieldName = \"F_OIMBLID\";\r\n break;\r\n case \"T_OOMMAIN\":\r\n hTbName = \"T_OOHMAIN\";\r\n hFieldName = \"F_OOMBLID\";\r\n break;\r\n case \"T_AIMMAIN\":\r\n hTbName = \"T_AIHMAIN\";\r\n hFieldName = \"F_AIMBLID\";\r\n break;\r\n case \"T_AOMMAIN\":\r\n hTbName = \"T_AOHMAIN\";\r\n hFieldName = \"F_AOMBLID\";\r\n break;\r\n }\r\n\r\n const sqlInfos: SQLInfo[] = [];\r\n sqlInfos.push(new SQLInfo({\r\n tableName: mTbName,\r\n type: SQLType.Update,\r\n fields: [\r\n new SQLField({ fieldName: \"f_completebill\", propertyName: \"completebill\", value: statusValue}),\r\n new SQLField({ fieldName: \"f_completeinvo\", propertyName: \"completeinvo\", value: statusValue}),\r\n new SQLField({ fieldName: \"f_completecrdb\", propertyName: \"completecrdb\", value: statusValue}),\r\n ],\r\n key: new SQLField({ fieldName: 'f_id', propertyName: 'Id', value: mTbId}),\r\n }));\r\n\r\n if(hTbName) {\r\n sqlInfos.push(new SQLInfo({\r\n tableName: hTbName,\r\n type: SQLType.Update,\r\n fields: [\r\n new SQLField({ fieldName: \"f_completebill\", propertyName: \"completebill\", value: statusValue}),\r\n new SQLField({ fieldName: \"f_completeinvo\", propertyName: \"completeinvo\", value: statusValue}),\r\n new SQLField({ fieldName: \"f_completecrdb\", propertyName: \"completecrdb\", value: statusValue}),\r\n ],\r\n key: new SQLField({ fieldName: hFieldName, propertyName: hFieldName, value: mTbId}),\r\n }));\r\n }\r\n\r\n if(sqlInfos.length === 0) return null;\r\n else return sqlInfos;\r\n}\r\n\r\nexport function checkCompleteBLForm(mTbName:string, mTbId:number, recogDate:string, userId:string, isSet:boolean): SQLInfo | null {\r\n if(!mTbName || mTbId <= 0) return null;\r\n\r\n let viewName = \"\";\r\n switch(mTbName){\r\n case \"T_OIMMAIN\":\r\n viewName = \"V_OIMSTATUS\";\r\n break;\r\n case \"T_OOMMAIN\":\r\n viewName = \"V_OOMSTATUS\";\r\n break;\r\n case \"T_AIMMAIN\":\r\n viewName = \"V_AIMSTATUS\";\r\n break;\r\n case \"T_AOMMAIN\":\r\n viewName = \"V_AOMSTATUS\";\r\n break;\r\n case \"T_GENMAIN\":\r\n viewName = \"V_GENSTATUS\"; \r\n break;\r\n default:\r\n return null;\r\n }\r\n\r\n if (isSet) {\r\n return new SQLInfo({\r\n tableName: mTbName,\r\n type: SQLType.Update,\r\n conditionalString: `(SELECT F_BL FROM ${viewName} WHERE F_ID = ${mTbId}) = 'C'`,\r\n fields: [\r\n new SQLField({ fieldName: \"F_ConfirmedBy\", propertyName: \"ConfirmedBy\", value: userId}),\r\n new SQLField({ fieldName: \"F_ConfirmDate\", propertyName: \"ConfirmDate\", value: recogDate}),\r\n new SQLField({ fieldName: \"F_ConfirmActionDate\", propertyName: \"ConfirmActionDate\", value: 'getDate()'}),\r\n ],\r\n key: new SQLField({ fieldName: 'f_id', propertyName: 'Id', value: mTbId}),\r\n });\r\n }\r\n else {\r\n return new SQLInfo({\r\n tableName: mTbName,\r\n type: SQLType.Update,\r\n fields: [\r\n new SQLField({ fieldName: \"F_ConfirmedBy\", propertyName: \"ConfirmedBy\", value: ''}),\r\n new SQLField({ fieldName: \"F_ConfirmDate\", propertyName: \"ConfirmDate\", value: null }),\r\n new SQLField({ fieldName: \"F_ConfirmActionDate\", propertyName: \"ConfirmActionDate\", value: null }),\r\n ],\r\n key: new SQLField({ fieldName: 'f_id', propertyName: 'Id', value: mTbId}),\r\n });\r\n }\r\n}\r\n\r\nexport function checkDutyEntitiesFromDetail(details: any, indexExclude: number = -1) {\r\n let dutyCustomer = false, dutyAgent = false;\r\n if (details) {\r\n for (let i = 0; i < details.length; i++) {\r\n if (i !== indexExclude && [8, 10, 18, 20, 40].indexOf(details[i].chgType) >= 0) {\r\n if ([10, 20, 40].indexOf(details[i].chgType) >= 0) {\r\n dutyCustomer = true;\r\n } else {\r\n dutyAgent = true;\r\n }\r\n }\r\n }\r\n }\r\n return { dutyCustomer, dutyAgent };\r\n}\r\n\r\nexport function updateStatusOP(jobName:string, jobIds:string, invoiced:boolean) {\r\n return new SQLInfo({\r\n tableName: SQLInfo.UpdateStatusOP,\r\n type: SQLType.Execute,\r\n fields: [\r\n new SQLField({ fieldName: \"\", propertyName: \"jobName\", value: jobName}),\r\n new SQLField({ fieldName: \"\", propertyName: \"jobIds\", value: jobIds}),\r\n new SQLField({ fieldName: \"\", propertyName: \"invoiced\", value: invoiced}),\r\n ],\r\n });\r\n}\r\n\r\nexport function acctUpdateStatusOP(jobName:string, jobIds:string, invoiced:boolean) { //whereField\r\n return new SQLInfo({\r\n tableName: SQLInfo.UpdateStatusOP,\r\n type: SQLType.Execute,\r\n fields: [],\r\n whereFields:[\r\n new SQLField({ fieldName: \"\", propertyName: \"jobName\", value: jobName}),\r\n new SQLField({ fieldName: \"\", propertyName: \"jobIds\", value: jobIds}),\r\n new SQLField({ fieldName: \"\", propertyName: \"invoiced\", value: invoiced}),\r\n ]\r\n });\r\n}","import PropTypes from 'prop-types';\r\nimport React, {useContext, useEffect, useRef, useState} from 'react';\r\n\r\nimport Select, {SelectItem} from '../ui/Select';\r\nimport ApplicationContext from \"../ApplicationContext\";\r\nimport {BankParams} from \"../fms.core/constants\";\r\nimport useSystemSettings from '../hooks/useSystemSettings';\r\n\r\nconst BadBankName = 'BAD AR BANK';\r\n\r\ninterface IBank {\r\n bankName: string;\r\n bankNameWithCur: string;\r\n bankAcc: string;\r\n currency: string;\r\n id: number;\r\n defaultBank: boolean,\r\n rGlNo:string,\r\n //\r\n ediType: string ,\r\n ediDateColumn: number,\r\n ediDateFormat: string ,\r\n ediAmtColumn: number ,\r\n ediChkNegative: number,\r\n ediChkNoColumn: number ,\r\n ediChkCondi: string ,\r\n ediChkCondiCol: number,\r\n ediStartRow: number,\r\n}\r\n\r\nfunction BankDropDown({\r\n value,\r\n onChange = () => {},\r\n disabled = false,\r\n selectId,\r\n autoSetDefault = false,\r\n noBadBank = false,\r\n localBank = false,\r\n placeholder = undefined,\r\n currencyBank = undefined,\r\n name = undefined,\r\n}: {\r\n value: number | null | undefined,\r\n disabled?: boolean,\r\n onChange?: (x: IBank | null) => void,\r\n selectId?: string,\r\n autoSetDefault?: boolean,\r\n noBadBank?: boolean,\r\n localBank?: boolean,\r\n placeholder?: string|undefined,\r\n currencyBank? : string|undefined,\r\n name?: string|undefined,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const systemSettings = useSystemSettings();\r\n const primaryCurrency = systemSettings.primaryCurrency ?? 'USD';\r\n \r\n const [data, _setData] = useState>([]);\r\n const dataRef = useRef>([]);\r\n\r\n function setData(d: Array) {\r\n dataRef.current = d;\r\n _setData(d);\r\n }\r\n\r\n async function fetchData(api: any) {\r\n const data = await api.loadCodeData([new BankParams()]);\r\n\r\n if (data && data.length > 0) {\r\n setData(noBadBank\r\n ? (localBank ? data[0].items.filter((x:IBank) => x.bankName !== BadBankName && x.currency === primaryCurrency) : data[0].items.filter((x:IBank) => x.bankName !== BadBankName))\r\n : (localBank ? data[0].items.filter((x:IBank) => x.currency === primaryCurrency) : data[0].items)\r\n );\r\n\r\n if (currencyBank) {\r\n setData(data[0].items.filter((x:IBank) => x.currency === currencyBank));\r\n }\r\n\r\n if (autoSetDefault && (value === null || value === undefined || value === 0)) {\r\n const defaultBank = data[0].items.find((x:IBank) => x.defaultBank);\r\n if (defaultBank) {\r\n onChange(defaultBank);\r\n }\r\n }\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n fetchData(appContext.api);\r\n return () => {_setData([]);}\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function handleChange(e: React.ChangeEvent) {\r\n if (!e.target.value) {\r\n const defaultBank = dataRef.current?.find((x:IBank) => x.defaultBank);\r\n if(autoSetDefault && defaultBank){\r\n e.target.value = defaultBank?.id.toString()??''; \r\n } else{\r\n e.target.value = dataRef.current[0].id.toString()??'';\r\n }\r\n }\r\n onChange(dataRef.current?.find(d => d.id === Number(e.target.value)) || null);\r\n }\r\n\r\n const displayData: Array = [\r\n ...data.map(x => ({value: x.id ?? 0, label: x.bankNameWithCur ?? ''}))\r\n ];\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nBankDropDown.defaultProps = {\r\n onChange: () => {\r\n },\r\n disabled: false,\r\n dark: false,\r\n autoSetDefault: false,\r\n noBadBank: false,\r\n localBank: false,\r\n};\r\n\r\nBankDropDown.propTypes = {\r\n value: PropTypes.number,\r\n onChange: PropTypes.func.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n selectId: PropTypes.string,\r\n autoSetDefault: PropTypes.bool.isRequired,\r\n noBadBank: PropTypes.bool.isRequired,\r\n localBank: PropTypes.bool.isRequired,\r\n placeholder: PropTypes.string,\r\n};\r\n\r\nexport default React.memo(BankDropDown);\r\n","// import * as XLSX from 'xlsx/xlsx.mjs';\r\nimport * as XLSX from 'xlsx-js-style';\r\nimport { JobNames } from '../framework.core/JobNames';\r\nimport { formatDateTime,formatDate, now } from '../dateUtils';\r\nimport { Decimalformat } from '../components/common/commonExportFormat';\r\nimport moment from 'moment';\r\nimport fastStorage from '../fastStorage';\r\nimport {storageKeyMap} from '../hooks/useSetEditedId';\r\n\r\n\r\nfunction toColumnName(num) {\r\n for (var ret = '', a = 1, b = 26; (num -= a) >= 0; a = b, b *= 26) {\r\n ret = String.fromCharCode(parseInt((num % b) / a) + 65) + ret;\r\n }\r\n return ret;\r\n}\r\n\r\nexport function exportDomTableIntoExcel(domId, title, userId, jobName, listview, appcontext) {\r\n const oiQuotation = 'ifms-list-data-/common/joblistview/oeQuotation/oceanExport?parentOp=oceanImport';\r\n const oeQuotation = 'ifms-list-data-/common/joblistview/oeQuotation/oceanExport?parentOp=oceanExport';\r\n const aiQuotation = 'ifms-list-data-/common/joblistview/aeQuotation/airExport?parentOp=airImport';\r\n const aeQuotation = 'ifms-list-data-/common/joblistview/aeQuotation/airExport?parentOp=airExport';\r\n\r\n const wb = XLSX.utils.book_new();\r\n wb.Props = {\r\n Title: title,\r\n Subject: title,\r\n Author: userId,\r\n CreatedDate: new Date(),\r\n };\r\n\r\n // sheetname max 31. 공통 부분은 짧게 줄임.\r\n title = title.replace('Accounting', 'Acct');\r\n title = title.replace('Ocean Import', 'OI');\r\n title = title.replace('Ocean Export', 'OE');\r\n title = title.replace('Air Import','AI');\r\n title = title.replace('Air Export','AE');\r\n title = title.replace('Other Shipment','Other Ship');\r\n title = title.replace('Warehousing', 'WH');\r\n title = title.replace('Customer List', 'Cust List');\r\n title = title.replace('Report (Manager)', 'Report');\r\n title = title.replace('Recog History', 'Batch Recog');\r\n title = title.replace(/[\\\\\\/\\?\\*\\[\\]\\:]/g, '_'); \r\n wb.SheetNames.push(title);\r\n\r\n const wsObjects = [];\r\n\r\n const table = document.getElementById(domId);\r\n const columnWidths = [];\r\n\r\n const listDataStorageKey = `ifms-list-data-${storageKeyMap.get(jobName)}`;\r\n let listData;\r\n\r\n if (jobName === 'SQUOT') {\r\n listData = fastStorage[oiQuotation] ?? fastStorage[oeQuotation];\r\n } else if (jobName === 'AQUOT') {\r\n listData = fastStorage[aiQuotation] ?? fastStorage[aeQuotation];\r\n } else listData = fastStorage[listDataStorageKey];\r\n\r\n if (table && !!listData) {\r\n const rowHeaderColumns = table.querySelectorAll('div[id*=\"header\"]');\r\n const generalRow = table.querySelectorAll('div[role=\"row\"]');\r\n const firstRow = generalRow[1];\r\n const excelColType = listview.getExportRenderers(appcontext);\r\n const headerName = {};\r\n if (listData && !!firstRow) {\r\n listData.forEach((r, ri) => {\r\n let rowObj = {};\r\n rowHeaderColumns.forEach((c, ci) => {\r\n if (ci === 0) return;\r\n if (ri === 0) {\r\n columnWidths.push(c.getBoundingClientRect().width);\r\n }\r\n let header = rowHeaderColumns[ci].innerText ?? '';\r\n if (Object.keys(rowObj).some(key => key === header))\r\n header = header + 'Duptemp' + ci;\r\n const headerKey = rowHeaderColumns[ci].dataset.columnId ?? ''; \r\n let specialRenderer = excelColType.find((x) => x.accessor === headerKey)?.changedValue;\r\n\r\n if (headerKey === 'status')\r\n rowObj[header] = (r[headerKey] === 'PC' ? 'Period Close' : '');\r\n else if (!!specialRenderer)\r\n rowObj[header] = specialRenderer(r);\r\n else if (!!firstRow.querySelectorAll(`div[id*=${headerKey}-]`)) {\r\n const firstElemet = firstRow.querySelectorAll(`div[id*=${headerKey}-]`)[0];\r\n if (firstElemet === undefined)\r\n rowObj[header] = r[headerKey] ?? '';\r\n else if (firstElemet.className.includes('-check-box'))\r\n rowObj[header] = r[headerKey] ? 'checked' : '';\r\n else if (firstElemet.className.includes('datetime'))\r\n rowObj[header] = formatDateTime(r[headerKey]);\r\n else if (firstElemet.className.includes('date'))\r\n rowObj[header] = formatDate(r[headerKey]);\r\n else if (firstElemet.className.includes('float'))\r\n rowObj[header] = Decimalformat(r[headerKey], 2);\r\n else\r\n rowObj[header] = r[headerKey] ?? '';\r\n }\r\n else\r\n rowObj[header] = r[headerKey] ?? '';\r\n\r\n if (ri === 0) {\r\n headerName[header] = header.includes('Duptemp') ? header.substring(0, header.indexOf('Duptemp')) : (headerKey === 'trStatus2' ? 'T' : header);\r\n }\r\n });\r\n if (ri === 0)\r\n wsObjects.push(headerName);\r\n wsObjects.push(rowObj);\r\n });\r\n\r\n const ws = XLSX.utils.json_to_sheet(wsObjects,{skipHeader: true});\r\n\r\n ws[\"!cols\"] = columnWidths.map(x => ({ wpx: x }));\r\n if (wsObjects.length > 0) {\r\n // Set up range under filter columns\r\n ws['!autofilter'] = { ref: `A1:${toColumnName(Object.keys(wsObjects[0]).length)}${wsObjects.length}` };\r\n }\r\n \r\n wb.Sheets[title] = ws;\r\n \r\n const fileTitle = `${title}-${formatDateTime(now())}.xlsx`.replaceAll(' ', '-').toLowerCase();\r\n \r\n XLSX.writeFile(wb, fileTitle, { compression: true});\r\n }\r\n }\r\n}\r\n\r\nexport function exportCodeDataIntoExcel(data, title, columns) {\r\n const wb = XLSX.utils.book_new();\r\n wb.Props = {\r\n Title: title,\r\n Subject: title,\r\n CreatedDate: new Date(),\r\n };\r\n\r\n title = title.replace(/[\\\\\\/\\?\\*\\[\\]\\:]/g, '_');\r\n wb.SheetNames.push(title);\r\n\r\n const wsObjects = [];\r\n const columnWidths = [];\r\n\r\n if (data) {\r\n data.forEach((r, ri) => {\r\n const rowObj = {};\r\n columns.forEach((c, ci) => {\r\n if (ri === 0) {\r\n columnWidths.push(columns[ci].width);\r\n }\r\n const header = columns[ci].dataIndex;\r\n const headerKey = columns[ci].text;\r\n if (headerKey === 'Inactive')\r\n rowObj[headerKey] = (r[header] === true ? 'Checked' : '');\r\n else if(headerKey === 'Inactive Date')\r\n rowObj[headerKey] = formatDate(r[header]);\r\n else\r\n rowObj[headerKey] = r[header];\r\n });\r\n\r\n wsObjects.push(rowObj);\r\n });\r\n }\r\n const ws = XLSX.utils.json_to_sheet(wsObjects);\r\n\r\n ws[\"!cols\"] = columnWidths.map(x => ({ wpx: x }));\r\n if (wsObjects.length > 0) {\r\n // Set up range under filter columns\r\n ws['!autofilter'] = { ref: `A1:${toColumnName(Object.keys(wsObjects[0]).length)}${wsObjects.length}` };\r\n }\r\n\r\n wb.Sheets[title] = ws;\r\n\r\n\r\n const fileTitle = `${title}-${formatDateTime(now())}.xlsx`.replaceAll(' ', '-').toLowerCase();\r\n\r\n XLSX.writeFile(wb, fileTitle, { compression: true });\r\n}\r\n\r\nexport function readExcel(data) {\r\n const workBook = XLSX.read(data);\r\n const rows = XLSX.utils.sheet_to_json(workBook.Sheets[workBook.SheetNames[0]], {header:[\"A\",\"B\",\"C\",\"D\",\"E\"], defval : '' });\r\n\r\n\r\n // workBook.SheetNames.forEach(function (sheetName) {\r\n // console.log('SheetName: ' + sheetName);\r\n // let rows = XLSX.utils.sheet_to_json(workBook.Sheets[sheetName]);\r\n // console.log(JSON.stringify(rows));\r\n // })\r\n return rows;\r\n}\r\n\r\nfunction ExcelCCReader(bankDate, checkNo, bankAmount) {\r\n this.bankDate = bankDate\r\n this.checkNo = checkNo\r\n this.bankAmount = bankAmount\r\n}\r\n\r\nfunction ExcelWHPReader(billCode, billDesc, rate, qty, isVat, whType, whRefID) {\r\n this.billCode = billCode\r\n this.billDesc = billDesc\r\n this.rate = rate\r\n this.qty = qty\r\n this.isVat = isVat\r\n this.whType = whType\r\n this.whRefID = whRefID\r\n}\r\n\r\nfunction ExcelJournalReader(glNo, comType, comId, desc, debit, credit) {\r\n this.glNo = glNo\r\n this.comType = comType\r\n this.comId = comId\r\n this.desc = desc\r\n this.debit = debit\r\n this.credit = credit\r\n}\r\n\r\nexport function readClearExcel(data, startRow, heading, dateformat, neg) {\r\n const list = new Array();\r\n const workBook = XLSX.read(data, {type: \"string\"});\r\n\r\n //heading = [\"bankDate\", \"checkNo\", \"bankAmount\",\"checkCondi\",\"dateFormat\",\"cehckCondiString\"];\r\n\r\n const rows = XLSX.utils.sheet_to_json(workBook.Sheets[workBook.SheetNames[0]], { header: 1, defval: ''});\r\n\r\n rows.forEach(row => {\r\n if (!row[heading[0]] || !row[heading[1]] || ((!row[heading[3]])&& heading[5].length !== 0)) return;\r\n if (row[heading[0]] === '' || row[heading[1]] === '') return;\r\n if ( !isNaN(Number(row[heading[3]])) || !row[heading[3]].includes(heading[5])) return;\r\n if (!moment(row[heading[0]], dateformat).isValid()) return;\r\n if (isNaN(Number(row[heading[2]]))) return;\r\n // if (isNaN(Number(row[heading[3]]))) return;\r\n\r\n let bankDate = moment.utc(row[heading[0]]).format(dateformat);\r\n let checkNo = row[heading[1]];\r\n checkNo = checkNo.replace(heading[5], \"\");\r\n checkNo = checkNo.replace(\"SUBSTITUTE CHECK\", \"\");\r\n checkNo = checkNo.replace(\"CHECK\", \"\");\r\n checkNo = checkNo.replace(\"Check #\", \"\");\r\n checkNo = checkNo.replace(\"Check\", \"\");\r\n checkNo = checkNo.replace(\" \", \"\");\r\n\r\n let bankAmount = Number(row[heading[2]]);\r\n if (neg) bankAmount = -1 * bankAmount;\r\n\r\n list.push(new ExcelCCReader(bankDate, checkNo, bankAmount));\r\n });\r\n return list;\r\n}\r\n\r\nexport function readJournalExcel(data) {\r\n const list = new Array();\r\n const workBook = XLSX.read(data, {type: \"string\"});\r\n const rows = XLSX.utils.sheet_to_json(workBook.Sheets[workBook.SheetNames[0]], { header: 1, defval: ''});\r\n\r\n // Columns : Account Code, ComType, ComId, Description, Debit, Credit\r\n\r\n rows.forEach((row, i) => {\r\n if (i <= 0) return; // skip first row\r\n if (!row[0]) return;\r\n\r\n const glNo = row[0];\r\n const comType = row[1];\r\n const comId = row[2];\r\n const desc = row[3];\r\n const debit = Number(row[4]);\r\n const credit = Number(row[5]);\r\n\r\n list.push(new ExcelJournalReader(glNo, comType, comId, desc, debit, credit));\r\n });\r\n return list;\r\n}\r\n\r\nexport function readPeriodInvoiceExcel(data, heading) {\r\n const list = new Array();\r\n const workBook = XLSX.read(data, {type: \"string\"});\r\n\r\n const rows = XLSX.utils.sheet_to_json(workBook.Sheets[workBook.SheetNames[0]], { header: 1, defval: ''});\r\n\r\n rows.forEach(row => {\r\n if (!row[heading[0]] || !row[heading[2]] || !row[heading[6]] || !row[heading[7]] ) return;\r\n if (isNaN(Number(row[heading[2]] ?? 0)) || isNaN(Number(row[heading[3]] ?? 0)) || !isNaN(Number(row[heading[6]] ?? 0))) return;\r\n if (row[heading[0]] === '' || row[heading[2]] === '' || row[heading[6]] === '' || row[heading[7]] === '') return;\r\n if (!['whr','whs'].includes(row[heading[6]].toLowerCase())) return;\r\n \r\n\r\n let billCode = row[heading[0]];\r\n let billDesc = row[heading[1]];\r\n let rate = Number(row[heading[2]]);\r\n let qty = Number(row[heading[3]]);\r\n let isVat = row[heading[5]];\r\n let whType = row[heading[6]];\r\n let whRefID = row[heading[7]];\r\n\r\n list.push(new ExcelWHPReader(billCode, billDesc, rate, qty, isVat, whType, whRefID));\r\n });\r\n return list;\r\n}\r\n\r\nexport function taxReturnWithXLExport(title,tbId,userId,addData){\r\n const wb = XLSX.utils.book_new();\r\n wb.Props = {\r\n Title: title,\r\n Subject: title,\r\n Author: userId,\r\n CreatedDate: new Date(),\r\n };\r\n wb.SheetNames.push(title);\r\n\r\n const wsObjects = [];\r\n const headerName =[];\r\n const table = document.getElementById(tbId);\r\n const columnWidths = [];\r\n\r\n if(table){\r\n if(addData){\r\n addData.forEach((a) => {\r\n wsObjects.push(a);\r\n })\r\n }\r\n const rows = table.querySelectorAll('div[role=\"row\"]');\r\n rows.forEach((r, ri) => {\r\n if(r.id && r.id.includes('-header-row')) {\r\n return;\r\n }\r\n const rowObj = [];\r\n const columns = r.querySelectorAll('div[role=\"cell\"]');\r\n columns.forEach((c, ci) => {\r\n if (ri === 1){\r\n columnWidths.push(c.getBoundingClientRect().width);\r\n }\r\n const header = table.querySelector(`#${c.id.substring(0, c.id.indexOf('-cell-'))}-header-${ci}`);\r\n const headerKey = header?.innerText ?? ``;\r\n \r\n if(headerKey !== 'Select' && headerKey !== 'No'){\r\n if (ri === 1){\r\n headerName.push(headerKey);\r\n }\r\n rowObj.push(c.innerText);\r\n }\r\n });\r\n wsObjects.push(rowObj);\r\n });\r\n wsObjects.splice(addData.length,0,headerName);\r\n }\r\n const ws = XLSX.utils.aoa_to_sheet(wsObjects);\r\n ws[\"!cols\"] = columnWidths.map(x => ({ wpx: x }));\r\n wb.Sheets[title] = ws;\r\n\r\n const fileTitle = `${title}-${formatDateTime(now())}.xlsx`.replaceAll(' ', '-').toLowerCase();\r\n XLSX.writeFile(wb, fileTitle, { compression: true });\r\n}\r\n\r\nexport function paymentToolWithXLExport(domId, title, userId, headerInfo, useBranch) {\r\n const wb = XLSX.utils.book_new();\r\n wb.Props = {\r\n Title: title,\r\n Subject: title,\r\n Author: userId,\r\n CreatedDate: new Date(),\r\n };\r\n\r\n wb.SheetNames.push(title);\r\n\r\n const wsObjects = [];\r\n const table = document.getElementById(domId);\r\n const columnWidths = [];\r\n const headerName =[];\r\n const headerName1 =[];\r\n const headerName2 =[];\r\n\r\n if (table) {\r\n // Type, Period \r\n if (headerInfo) {\r\n headerInfo.forEach(x => {\r\n wsObjects.push(x);\r\n });\r\n }\r\n\r\n const rows = table.querySelectorAll('div[role=\"row\"]');\r\n rows.forEach((r, ri) => {\r\n if (r.id && r.id.includes('-header-row')) {\r\n return;\r\n }\r\n const rowObj = [];\r\n let isSelect = false;\r\n let columnHorizontal = '';\r\n const columns = r.querySelectorAll('div[role=\"cell\"]');\r\n columns.forEach((c, ci) => {\r\n const header = table.querySelector(`#${c.id.substring(0, c.id.indexOf('-cell-'))}-header-${ci}`);\r\n const headerKey = header?.innerText;\r\n\r\n if (headerKey !== 'No') {\r\n if (ri === 1) {\r\n if (headerKey) {\r\n headerName.push(headerKey);\r\n columnWidths.push(c.getBoundingClientRect().width);\r\n }\r\n }\r\n\r\n if (headerKey) {\r\n if(c.innerHTML.includes('ifms-table-align-left')){\r\n columnHorizontal = 'left';\r\n }\r\n else if(c.innerHTML.includes('ifms-table-align-right')){\r\n columnHorizontal = 'right';\r\n }\r\n else {\r\n columnHorizontal = 'center';\r\n }\r\n rowObj.push({v:c.innerText, t:\"s\", s:{alignment: {horizontal: columnHorizontal}}});\r\n } else if (ci === (useBranch ? 23 : 22)) { // 선택 된 항목만 출력\r\n if (c.getElementsByClassName('e-ifms-checkbox-icon-base e-ifms-checkbox').length > 0) isSelect = true;\r\n }\r\n }\r\n });\r\n\r\n if (isSelect) wsObjects.push(rowObj);\r\n });\r\n\r\n // Header Column Cell Merge : Header Column 이름이 변경 될 경우 수정 필요\r\n const firstColHeader = headerName.map(x => {\r\n if (x.includes(\"(Bill)\")) return x.replace(\" (Bill)\", \"\");\r\n else if (x.includes(\"(Due)\")) return x.replace(\" (Due)\", \"\");\r\n else if ([\"Bill Amount\", \"Due Amount\", \"Amount\"].includes(x)) return \"Total\";\r\n else return x\r\n });\r\n const secondColHeader = headerName.map(x => {\r\n if (x.includes(\"(Bill)\")) return \"Bill\";\r\n else if (x.includes(\"(Due)\")) return \"Due\";\r\n else return x\r\n });\r\n\r\n firstColHeader.forEach((c) => {\r\n headerName1.push({v:c, t:\"s\", s:{font:{bold: true}, alignment: {horizontal: 'center', vertical: 'center'}, \r\n border:{top:{style:'medium', color:'black'},\r\n right:{style:'medium', color:'black'},\r\n bottom:{style:'medium', color:'black'},\r\n left:{style:'medium', color:'black'}}}});\r\n });\r\n secondColHeader.forEach((c) => {\r\n headerName2.push({v:c, t:\"s\", s:{font:{bold: true}, alignment: {horizontal: 'center', vertical: 'center'}, \r\n border:{top:{style:'medium', color:'black'},\r\n right:{style:'medium', color:'black'},\r\n bottom:{style:'medium', color:'black'},\r\n left:{style:'medium', color:'black'}}}});\r\n });\r\n\r\n wsObjects.splice(headerInfo.length, 0, headerName2);\r\n wsObjects.splice(headerInfo.length, 0, headerName1);\r\n }\r\n const ws = XLSX.utils.aoa_to_sheet(wsObjects);\r\n\r\n if (wsObjects.length > 0) {\r\n ws[\"!cols\"] = columnWidths.map(x => ({ wpx: x }));\r\n // Set up range under filter columns\r\n // ws['!autofilter'] = { ref: `A5:${toColumnName(Object.keys(wsObjects[headerInfo.length]).length)}${wsObjects.length}` };\r\n if (useBranch) {\r\n ws['!merges'] = [\r\n {s: { r:0, c:0 }, e: { r:0, c:17 }}, // Title\r\n {s: { r:3, c:0 }, e: { r:4, c:0 }}, // Date\r\n {s: { r:3, c:1 }, e: { r:4, c:1 }}, // BR \r\n {s: { r:3, c:2 }, e: { r:4, c:2 }}, // Bill No \r\n {s: { r:3, c:3 }, e: { r:4, c:3 }}, // Customer\r\n {s: { r:3, c:4 }, e: { r:4, c:4 }}, // Ref. No\r\n {s: { r:3, c:5 }, e: { r:4, c:5 }}, // B/L No\r\n {s: { r:3, c:6 }, e: { r:4, c:6 }}, // CUR\r\n {s: { r:3, c:7 }, e: { r:3, c:8 }}, // AR\r\n {s: { r:3, c:9 }, e: { r:3, c:10 }}, // AP\r\n {s: { r:3, c:11 }, e: { r:3, c:12 }}, // Duty AR\r\n {s: { r:3, c:13 }, e: { r:3, c:14 }}, // Duty AP\r\n {s: { r:3, c:15 }, e: { r:3, c:17 }}, // Total\r\n ]\r\n } else {\r\n ws['!merges'] = [\r\n {s: { r:0, c:0 }, e: { r:0, c:16 }}, // Title\r\n {s: { r:3, c:0 }, e: { r:4, c:0 }}, // Date\r\n {s: { r:3, c:1 }, e: { r:4, c:1 }}, // Bill No \r\n {s: { r:3, c:2 }, e: { r:4, c:2 }}, // Customer \r\n {s: { r:3, c:3 }, e: { r:4, c:3 }}, // Ref. No\r\n {s: { r:3, c:4 }, e: { r:4, c:4 }}, // B/L No\r\n {s: { r:3, c:5 }, e: { r:4, c:5 }}, // CUR\r\n {s: { r:3, c:6 }, e: { r:3, c:7 }}, // AR\r\n {s: { r:3, c:8 }, e: { r:3, c:9 }}, // AP\r\n {s: { r:3, c:10 }, e: { r:3, c:11 }}, // Duty AR\r\n {s: { r:3, c:12 }, e: { r:3, c:13 }}, // Duty AP\r\n {s: { r:3, c:14 }, e: { r:3, c:16 }}, // Total\r\n ]\r\n }\r\n }\r\n wb.Sheets[title] = ws;\r\n \r\n const fileTitle = `${title}-${formatDateTime(now())}.xlsx`.replaceAll(' ', '-').toLowerCase();\r\n XLSX.writeFile(wb, fileTitle, { compression: true });\r\n}\r\n\r\nexport function depositSlipWithXLExport(title, domId, userId, headerInfo){\r\n const wb = XLSX.utils.book_new();\r\n wb.Props = {\r\n Title: title,\r\n Subject: title,\r\n Author: userId,\r\n CreatedDate: new Date(),\r\n };\r\n\r\n wb.SheetNames.push(title);\r\n\r\n const wsObjects = [];\r\n const headerName = [];\r\n const table = document.getElementById(domId);\r\n const columnWidths = [];\r\n\r\n if(table){\r\n if(headerInfo){\r\n headerInfo.forEach(x=>{\r\n wsObjects.push(x);\r\n });\r\n }\r\n const rows = table.querySelectorAll('div[role=\"row\"]');\r\n rows.forEach((r,ri) => {\r\n if(r.id && r.id.includes('-header-row')){\r\n return;\r\n }\r\n const rowObj = [];\r\n let isSelect = false;\r\n let columnHorizontal = '';\r\n const columns = r.querySelectorAll('div[role=\"cell\"]');\r\n columns.forEach((c, ci) => {\r\n const header = table.querySelector(`#${c.id.substring(0, c.id.indexOf('-cell-'))}-header-${ci}`);\r\n const headerKey = header?.innerText;\r\n \r\n if(headerKey !== 'No' && headerKey !== 'Deposit'){\r\n if (ri === 1) {\r\n if (headerKey) {\r\n headerName.push({v:headerKey, t:\"s\", s:{font:{bold: true}, alignment: {horizontal: 'center'}, \r\n border:{top:{style:'medium', color:'black'},\r\n right:{style:'medium', color:'black'},\r\n bottom:{style:'medium', color:'black'},\r\n left:{style:'medium', color:'black'}}}});\r\n columnWidths.push(c.getBoundingClientRect().width);\r\n }\r\n }\r\n if(c.innerHTML.includes('ifms-table-align-left')){\r\n columnHorizontal = 'left';\r\n }\r\n else if(c.innerHTML.includes('ifms-table-align-right')){\r\n columnHorizontal = 'right';\r\n }\r\n else {\r\n columnHorizontal = 'center';\r\n }\r\n rowObj.push({v:c.innerText, t:\"s\", s:{alignment: {horizontal: columnHorizontal}}});\r\n }\r\n if(ci === 8){\r\n if (c.getElementsByClassName('e-ifms-checkbox').length > 0) isSelect = true;\r\n }\r\n });\r\n if(isSelect) wsObjects.push(rowObj);\r\n });\r\n wsObjects.splice((headerInfo.length),0,headerName);\r\n } \r\n\r\n\r\n const ws = XLSX.utils.aoa_to_sheet(wsObjects);\r\n ws[\"!cols\"] = columnWidths.map(x => ({ wpx: x }));\r\n ws[\"!merges\"] = [\r\n {s: { r:0, c:0 }, e: { r:0, c:6 }}, // Title\r\n ]\r\n wb.Sheets[title] = ws;\r\n const fileTitle = `${title}-${formatDateTime(now())}.xlsx`.replaceAll(' ', '-').toLowerCase();\r\n XLSX.writeFile(wb, fileTitle, { compression: true });\r\n\r\n}\r\n\r\nexport function salesCostBatchRecogWithXLExport(title, tbId, userId, addData, listData) {\r\n const wb = XLSX.utils.book_new();\r\n wb.Props = {\r\n Title: title,\r\n Subject: title,\r\n Author: userId,\r\n CreatedDate: new Date(),\r\n };\r\n wb.SheetNames.push(title);\r\n\r\n const wsObjects = [];\r\n const headerName = [];\r\n const table = document.getElementById(tbId);\r\n const rowHeaderColumns = table.querySelectorAll('div[id*=\"header\"]');\r\n const generalRow = table.querySelectorAll('div[role=\"row\"]');\r\n const firstRow = generalRow[1];\r\n let columnWidths = [];\r\n\r\n let closedColumnIndex = -1;\r\n \r\n rowHeaderColumns.forEach((c, ci) => {\r\n if (ci === 0) return;\r\n \r\n columnWidths.push(c.getBoundingClientRect().width);\r\n \r\n let header = c.innerText ?? '';\r\n const headerKey = c.dataset.columnId ?? '';\r\n\r\n if (headerKey !== 'action' && headerKey !== 'scroll') {\r\n if (headerName.includes(header)) {\r\n header = header + 'Duptemp' + ci;\r\n }\r\n \r\n headerName.push(\r\n header.includes('Duptemp') \r\n ? header.substring(0, header.indexOf('Duptemp'))\r\n : (headerKey === 'trStatus2' ? 'T' : header)\r\n );\r\n\r\n if (headerKey === 'closed') {\r\n closedColumnIndex = headerName.length - 1;\r\n }\r\n }\r\n });\r\n\r\n // + 컬럼에서 Period Close 데이터가 있으면 너비 2배로 늘리기\r\n if (closedColumnIndex !== -1 && listData.some(r => r['closed'] === 2)) {\r\n columnWidths[closedColumnIndex] *= 2;\r\n }\r\n\r\n if (addData && addData.length > 0) {\r\n addData.forEach((data, index) => {\r\n if (index === 0) {\r\n wsObjects.push(data);\r\n } else {\r\n // 두 번째 데이터부터 첫 번째 값은 A열, 두 번째 값은 D열에 위치\r\n let row = [];\r\n row[0] = data[0];\r\n row[3] = data[1];\r\n wsObjects.push(row);\r\n }\r\n });\r\n }\r\n\r\n wsObjects.push(headerName);\r\n\r\n if (listData && !!firstRow) {\r\n listData.forEach((r, rIndex) => {\r\n let rowObj = [];\r\n\r\n rowHeaderColumns.forEach((c, ci) => {\r\n if (ci === 0) return; \r\n \r\n const headerKey = c.dataset.columnId ?? '';\r\n\r\n if (headerKey !== 'action' && headerKey !== 'scroll') {\r\n if (!!firstRow.querySelectorAll(`div[id*=${headerKey}-]`)) {\r\n const firstElement = firstRow.querySelectorAll(`div[id*=${headerKey}-]`)[0];\r\n\r\n if (firstElement === undefined) {\r\n if (headerKey === 'indicator') {\r\n rowObj.push((rIndex + 1) ?? '');\r\n } else if(headerKey === 'recogDate' || headerKey === 'firstDate') {\r\n rowObj.push(moment(r[headerKey]).format('YYYY-MM-DD'));\r\n } else if (headerKey === 'closed') {\r\n rowObj.push(r[headerKey] === 2 ? 'Period Close' : '');\r\n } else if(headerKey === 'selected') {\r\n rowObj.push(String(r[headerKey]).toLowerCase() === 'true' || r[headerKey] === 1 ? 1 : 0);\r\n } else {\r\n rowObj.push(r[headerKey] ?? '');\r\n }\r\n }\r\n else if (firstElement.className.includes('datetime'))\r\n rowObj.push(formatDateTime(r[headerKey]));\r\n else if (firstElement.className.includes('date'))\r\n rowObj.push(formatDate(r[headerKey]));\r\n else if (firstElement.className.includes('float'))\r\n rowObj.push(Decimalformat(r[headerKey], 2));\r\n else\r\n rowObj.push(r[headerKey] ?? '');\r\n }\r\n else {\r\n rowObj.push(r[headerKey] ?? '');\r\n }\r\n }\r\n });\r\n\r\n wsObjects.push(rowObj);\r\n });\r\n }\r\n\r\n const ws = XLSX.utils.aoa_to_sheet(wsObjects);\r\n ws[\"!cols\"] = columnWidths.map(x => ({ wpx: x }));\r\n\r\n if (wsObjects.length > 0) {\r\n ws['!autofilter'] = { ref: `A5:${toColumnName(headerName.length)}${wsObjects.length}` };\r\n }\r\n\r\n wb.Sheets[title] = ws;\r\n \r\n const fileTitle = `${title}-${formatDateTime(now())}.xlsx`.replaceAll(' ', '-').toLowerCase();\r\n XLSX.writeFile(wb, fileTitle, { compression: true });\r\n}\r\n","import { useContext } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { useHistory } from 'react-router';\r\n\r\nimport { setInStorage } from '../features/storageSlice';\r\n\r\nimport { FilterStorageVersion, getInitialSearch } from '../filtering';\r\n\r\nimport fastStorage from '../fastStorage';\r\n\r\nimport ApplicationContext from '../ApplicationContext';\r\nimport { SearchModelBase } from '../fms.data/models/SearchModelBase';\r\nimport { addMonths, nowDate } from '../dateUtils';\r\nimport _ from 'lodash';\r\n\r\n/**\r\n * Hook for setting screen filters from other screens.\r\n * For example: MBL list screen wants to set RefNo filter for HBL list screen before\r\n * redirecting to show only related HBLs.\r\n *\r\n * @export\r\n * @return {*} \r\n */\r\nexport default function useExternalScreenFilter() {\r\n const appContext = useContext(ApplicationContext);\r\n const history = useHistory();\r\n\r\n const dispatch = useDispatch();\r\n\r\n function getInitialSearchWithPageSizeFromSettings() {\r\n return {\r\n ...getInitialSearch(history, appContext.user?.id ?? null),\r\n pageSize: appContext.defaultPageSize\r\n }\r\n }\r\n\r\n /**\r\n * setFilterForScreenExternally\r\n *\r\n * @param {string} url - url of screen to set filter for\r\n * @param {string} columnId - columnId (accessor in data object) filter is for\r\n * @param {string} columnLabel - label of column\r\n * @param {string} text - filter text\r\n * @param {*} orderBy - order by accessor\r\n * @param {boolean} orderByAscending - true for ascending, false for descending ordering\r\n */\r\n function setFilterForScreenExternally(url:string, columnId:string, columnLabel:string, text:string|number, orderBy:any, orderByAscending:boolean, startWithEntry:boolean = true,\r\n searchModel:SearchModelBase|null = null, columnIdEx:string|null = null, textEx:string|number|null = null, isExpressSearch = false, switchList = false) {\r\n const otherStorageKey = `filter-${FilterStorageVersion}-${url}`;\r\n const otherFilterOrdersStorageKey = `filter-order-${FilterStorageVersion}-${url}`;\r\n const otherStorageExternalSetKey = `filter-external-set-${FilterStorageVersion}-${url}`;\r\n const otherStorageExternalSetSourceKey = `filter-external-set-source-${FilterStorageVersion}-${url}`;\r\n const todayBefore3Month = addMonths(nowDate(), -3);\r\n const dataStorageKey = `ifms-list-data-${url}`;\r\n\r\n const filterObj = {\r\n ...getInitialSearchWithPageSizeFromSettings(),\r\n ...searchModel, //\r\n ...{\r\n general1: columnId,\r\n generalText1: text?.toString(),\r\n orderBy,\r\n orderByAscending,\r\n dateFrom: isExpressSearch ? todayBefore3Month : null,\r\n date: isExpressSearch ? searchModel?.expressSearchCol??'' : ''\r\n },\r\n };\r\n const filterOrdersObj = isExpressSearch ? \r\n [{\r\n columnId: searchModel?.expressSearchCol, slot: 'date', type: 'date', label: 'Create', value: `${todayBefore3Month} ~`, switchList: switchList\r\n }, \r\n {\r\n // columnId, slot: 'general1', type: 'general', label: columnLabel, value: text\r\n columnId: (columnIdEx && textEx !== null ? columnIdEx : columnId), slot: 'general1', type: 'general', label: columnLabel, value: (textEx !== null ? textEx : text), switchList: switchList\r\n }]\r\n :[{\r\n // columnId, slot: 'general1', type: 'general', label: columnLabel, value: text\r\n columnId: (columnIdEx && textEx !== null ? columnIdEx : columnId), slot: 'general1', type: 'general', label: columnLabel, value: (textEx !== null ? textEx : text), switchList: switchList\r\n }];\r\n\r\n\r\n\r\n const currentUrl = `${history.location.pathname}${history.location.search}`;\r\n\r\n const obj:any = {};\r\n obj[otherStorageKey] = filterObj;\r\n obj[otherStorageExternalSetKey] = filterObj;\r\n obj[otherStorageExternalSetSourceKey] = currentUrl;\r\n obj[otherFilterOrdersStorageKey] = filterOrdersObj;\r\n\r\n // Delete the data for the screen (if exists) to make sure next time screen is opened, this new filter is used\r\n delete fastStorage[dataStorageKey];\r\n\r\n // <240827.dwshin 불필요하게 List 2번 fatch 하도록 되는 상황이 발생해서 우선 comment out.\r\n // // 이전에 적용된 필터를 삭제\r\n // dispatch(removeFromStorage(otherStorageKey));\r\n // dispatch(removeFromStorage(otherStorageExternalSetKey));\r\n // dispatch(removeFromStorage(otherStorageExternalSetSourceKey));\r\n // dispatch(removeFromStorage(otherFilterOrdersStorageKey));\r\n // 240827.dwshin>\r\n \r\n // 새로운 필터 옵션 적용\r\n dispatch(setInStorage(obj));\r\n }\r\n\r\n function setFilterForSearchModel(url:string, searchModel:SearchModelBase|null = null, filterOrdersObj:[]) {\r\n const otherStorageKey = `filter-${FilterStorageVersion}-${url}`;\r\n const otherFilterOrdersStorageKey = `filter-order-${FilterStorageVersion}-${url}`;\r\n const otherStorageExternalSetKey = `filter-external-set-${FilterStorageVersion}-${url}`;\r\n const otherStorageExternalSetSourceKey = `filter-external-set-source-${FilterStorageVersion}-${url}`;\r\n const dataStorageKey = `ifms-list-data-${url}`;\r\n\r\n let initialFilter = getInitialSearchWithPageSizeFromSettings();\r\n let filterObj = {\r\n ...initialFilter,\r\n ..._.pick(searchModel, Object.keys(initialFilter))\r\n };\r\n\r\n const currentUrl = `${history.location.pathname}${history.location.search}`;\r\n\r\n const obj:any = {};\r\n obj[otherStorageKey] = filterObj;\r\n obj[otherStorageExternalSetKey] = filterObj;\r\n obj[otherStorageExternalSetSourceKey] = currentUrl;\r\n obj[otherFilterOrdersStorageKey] = filterOrdersObj;\r\n\r\n // Delete the data for the screen (if exists) to make sure next time screen is opened, this new filter is used\r\n delete fastStorage[dataStorageKey];\r\n\r\n // <240827.dwshin 불필요하게 List 2번 fatch 하도록 되는 상황이 발생해서 우선 comment out.\r\n // // 이전에 적용된 필터를 삭제\r\n // dispatch(removeFromStorage(otherStorageKey));\r\n // dispatch(removeFromStorage(otherStorageExternalSetKey));\r\n // dispatch(removeFromStorage(otherStorageExternalSetSourceKey));\r\n // dispatch(removeFromStorage(otherFilterOrdersStorageKey));\r\n // 240827.dwshin>\r\n \r\n // 새로운 필터 옵션 적용\r\n dispatch(setInStorage(obj));\r\n }\r\n\r\n return {setFilterForScreenExternally, setFilterForSearchModel};\r\n}","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\n\r\nexport class HblInven extends TrackableEntity {\r\n id: number = 0;\r\n tbName: string = '';\r\n tbId: number = 0;\r\n seq: number = 0;\r\n length: number = 0;\r\n width: number = 0;\r\n height: number = 0;\r\n pcs: number = 0;\r\n chgWeight: number = 0;\r\n lChgWeight: number = 0;\r\n state: string = '';\r\n volCm: boolean = false;\r\n inventId: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('id', 'state', 'inventId');\r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n return HblInven.dicFieldMappings;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_Id', table: 'T_AOINV' }),\r\n 'length': new DBMappingInfo({ field: 'F_LENGTH', table: 'T_AOINV' }),\r\n 'width': new DBMappingInfo({ field: 'F_WIDTH', table: 'T_AOINV' }),\r\n 'height': new DBMappingInfo({ field: 'F_HEIGHT', table: 'T_AOINV' }),\r\n 'pcs': new DBMappingInfo({ field: 'F_PCS', table: 'T_AOINV' }),\r\n 'chgWeight': new DBMappingInfo({ field: 'F_CHGWEIGHT', table: 'T_AOINV' }),\r\n 'lChgWeight': new DBMappingInfo({ field: 'F_LCHGWEIGHT', table: 'T_AOINV' }),\r\n 'tbId': new DBMappingInfo({ field: 'F_TBID', table: 'T_AOINV' }),\r\n 'tbName': new DBMappingInfo({ field: 'F_TBNAME', table: 'T_AOINV' }),\r\n };\r\n}\r\n","export default __webpack_public_path__ + \"static/media/container_tracking-black.94943a01.svg\";","import {TrackableEntity} from './data/ChangeTrackable';\r\n\r\nexport class PimsCntrEvent extends TrackableEntity {\r\n pimsCntrId: number = 0;\r\n cntrNo: string = '';\r\n pickupNo: string = '';\r\n name: string = '';\r\n datetime: string | null = null;\r\n date: string|null = null;\r\n time: string|null = null;\r\n locName: string = '';\r\n lastDate: string | null = null;\r\n check: boolean = false;\r\n seq: number = 0;\r\n isVisible: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key=undefined;\r\n Object.assign(this, init);\r\n this.noTrackProps.push('pimsCntrId', 'cntrNo', 'pickupNo', 'name', 'lastDate', 'check', 'seq', 'isVisible',\r\n 'date', 'time');\r\n }\r\n\r\n // get date() { \r\n // return formatDate(this.datetime);\r\n // }\r\n // set date(val:string|null) { \r\n // // Replace before T to value\r\n // if(!val) return;\r\n // const result = dateTextToIso(val);\r\n // if(result.valid) this.datetime = result.iso;\r\n // }\r\n\r\n // get time() { \r\n // return getTime(this.datetime); \r\n // }\r\n // set time(val:string|null) {\r\n // // HH:mm\r\n // if(!val) return;\r\n // // Replace time part of datetime\r\n // const tindex = this.datetime?.indexOf('T')??-1;\r\n // if(tindex < 0) return;\r\n // this.datetime = this.datetime?.substring(0, tindex + 1) + val + ':00';\r\n // }\r\n}\r\n","import _ from \"lodash\";\r\nimport { createSlice } from \"@reduxjs/toolkit\";\r\n\r\nexport interface ListScreenSettingsState {\r\n showMemo: boolean,\r\n}\r\n\r\nconst initialState:ListScreenSettingsState = {\r\n showMemo: false,\r\n};\r\n\r\n/**\r\n * Slice for controlling List Screen Settings\r\n */\r\nconst listScreenSettingsSlice = createSlice({\r\n name: 'listScreenSettingsSlice',\r\n initialState,\r\n reducers: {\r\n toggleMemo: (state) => {\r\n state.showMemo = !state.showMemo;\r\n },\r\n resetListScreenSettings: () => _.cloneDeep(initialState),\r\n }\r\n});\r\n\r\nexport default listScreenSettingsSlice.reducer;\r\n\r\nexport const {\r\n toggleMemo,\r\n resetListScreenSettings,\r\n} = listScreenSettingsSlice.actions;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport _ from 'lodash';\r\n\r\nexport class WhReciptsListItem extends SearchModelBase {\r\n refNo: string = '';\r\n branch: string = '';\r\n receivedDate: string | null = null;\r\n fromReceivedDate: string | null = null;\r\n toReceivedDate: string | null = null;\r\n truckBLNo: string = '';\r\n amount: number|null = null;\r\n toAmount: number|null = null;\r\n fromAmount: number|null = null;\r\n hazGoods: boolean|null = null;\r\n poNo: string = '';\r\n blNo: string = '';\r\n maker: string = '';\r\n sName: string = '';\r\n sName1: string = '';\r\n commodity: string = '';\r\n postDate: string | null = null;\r\n id: number = 0;\r\n shipper: number = 0;\r\n createdAt: string | null = null;\r\n fromCreatedAt: string | null = null;\r\n toCreatedAt: string | null = null;\r\n u1ID: string = '';\r\n u2ID: string = '';\r\n u2Date: string | null = null;\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n receivedBy: string = '';\r\n shipped: boolean|null = null;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Freight Receipt #', width: 100, dataIndex: 'refNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 2, text: 'BR', width: 40, dataIndex: 'branch'}),\r\n XCol.Create({ col: 3, text: 'Received Date', width: 75, dataIndex: 'receivedDate', type: XCol.XCellType.Date}),\r\n XCol.Create({ col: 4, text: 'Received by', width: 75, dataIndex: 'receivedBy'}),\r\n XCol.Create({ col: 5, text: 'Truck B/L #', width: 100, dataIndex: 'truckBLNo'}),\r\n XCol.Create({ col: 6, text: 'P.O #', width: 100, dataIndex: 'poNo'}),\r\n XCol.Create({ col: 7, text: 'B/L #', width: 100, dataIndex: 'blNo'}),\r\n XCol.Create({ col: 8, text: 'Shipped', width: 60, dataIndex: 'shipped', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 9, text: 'Shipper', width: 120, dataIndex: 'sName'}),\r\n XCol.Create({ col: 10, text: 'Maker', width: 120, dataIndex: 'maker'}),\r\n XCol.Create({ col: 11, text: 'Consignee', width: 120, dataIndex: 'sName1'}),\r\n XCol.Create({ col: 12, text: 'Commodity', width: 150, dataIndex: 'commodity'}),\r\n XCol.Create({ col: 13, text: 'Amount', width: 100, dataIndex: 'amount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 14, text: 'Hazardous', width: 60, dataIndex: 'hazGoods', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 15, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime}),\r\n XCol.Create({ col: 16, text: 'Create by', width: 80, dataIndex: 'u1ID'}),\r\n XCol.Create({ col: 17, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime}),\r\n XCol.Create({ col: 18, text: 'Update by', width: 80, dataIndex: 'u2ID'}),\r\n ];\r\n\r\n\r\n public static getExportCollection(useBranch: boolean): XCol.XExportColumn[] {\r\n let returnCloumns = _.cloneDeep(this.ExportCollection);\r\n if (!useBranch) returnCloumns = returnCloumns.filter(x => x.dataIndex !== 'branch');\r\n return returnCloumns;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: WhReciptsListItem.prototype.createdAt, orderByAscending: false };\r\n\r\n public static formatData(data: WhReciptsListItem[]) {\r\n return data.map((d: WhReciptsListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n receivedDate: {from: 'fromReceivedDate', to: 'toReceivedDate'},\r\n createdAt: {from: 'fromCreatedAt', to: 'toCreatedAt'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n amount: {from: 'fromAmount', to: 'toAmount'},\r\n }\r\n}\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class WhRcvListItem extends SearchModelBase {\r\n status: string = '';\r\n closed: string = '';\r\n invStat: string = '';\r\n billStat: string = '';\r\n crDbStat: string = '';\r\n isVoid: number = 0;\r\n receiveNo: string = '';\r\n branch: string = '';\r\n centerNo: string = '';\r\n receiveDate: string | null = null;\r\n orderDate: string | null = null;\r\n rcvStatus: string = '';\r\n p: string = '';\r\n poNo: string = '';\r\n soNo: string = '';\r\n vendor: string = '';\r\n trucker: string = '';\r\n remark: string = '';\r\n palletRemark: string = '';\r\n id: number = 0;\r\n fromReceiveDate: string | null = null;\r\n toReceiveDate: string | null = null;\r\n fromOrderDate: string | null = null;\r\n toOrderDate: string | null = null;\r\n createdAt: string | null = null; \r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n u2Date: string | null = null;\r\n fromCreatedAt: string | null = null;\r\n toCreatedAt: string | null = null;\r\n u2ID: string = '';\r\n u1ID: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n // XCol.Create({ col: 1, text: 'V', width: 35, dataIndex: 'isVoid', type: XCol.XCellType.StrBool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false }),\r\n XCol.Create({ col: 2, text: 'Receiving ID', width: 100, dataIndex: 'receiveNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 3, text: 'Customer (WH)', width: 120, dataIndex: 'centerNo'}),\r\n XCol.Create({ col: 4, text: 'In Date', width: 75, dataIndex: 'receiveDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 5, text: 'Order Date', width: 75, dataIndex: 'orderDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 6, text: 'Status', width: 80, dataIndex: 'rcvStatus'}),\r\n XCol.Create({ col: 7, text: 'Paid', width: 40, dataIndex: 'p', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 8, text: 'S/O #', width: 80, dataIndex: 'soNo'}),\r\n XCol.Create({ col: 9, text: 'Ship From', width: 100, dataIndex: 'vendor'}),\r\n XCol.Create({ col: 10, text: 'Carrier', width: 100, dataIndex: 'trucker'}),\r\n XCol.Create({ col: 11, text: 'Pallet', width: 100, dataIndex: 'palletRemark'}),\r\n XCol.Create({ col: 12, text: 'Remark', width: 150, dataIndex: 'remark'}),\r\n XCol.Create({ col: 13, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 14, text: 'Create by', width: 80, dataIndex: 'u1ID'}),\r\n XCol.Create({ col: 15, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 16, text: 'Update by', width: 80, dataIndex: 'u2ID'}),\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n // 2023-10-19 jhchoi : Void 컬럼 제거(추후에 사용할 경우 주석 제거)\r\n // return this.ExportCollection;\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: WhRcvListItem.prototype.createdAt, orderByAscending: false };\r\n\r\n public static formatData(data: WhRcvListItem[]) {\r\n return data.map((d: WhRcvListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n receiveDate: {from: 'fromReceiveDate', to: 'toReceiveDate'},\r\n orderDate: {from: 'fromOrderDate', to: 'toOrderDate'},\r\n createdAt: {from: 'fromCreatedAt', to: 'toCreatedAt'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n }\r\n}\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class WhShipListItem extends SearchModelBase {\r\n closed: string = '';\r\n invStat: string = '';\r\n billStat: string = '';\r\n crDbStat: string = '';\r\n shipNo: string = '';\r\n branch: string = '';\r\n centerNo: string = '';\r\n shipToNo: string = '';\r\n name: string = '';\r\n shipStatus: string = '';\r\n shipDate: string | null = null;\r\n orderDate: string | null = null;\r\n p: string = '';\r\n poNo: string = '';\r\n totalQty: number|null = null;\r\n trucker: string = '';\r\n remark: string = '';\r\n palletRemark: string = '';\r\n id: number = 0;\r\n fromShipDate: string | null = null;\r\n toShipDate: string | null = null;\r\n fromOrderDate: string | null = null;\r\n toOrderDate: string | null = null;\r\n fromTotalQty: number|null = null;\r\n toTotalQty: number|null = null;\r\n createdAt: string | null = null;\r\n status: string = '';\r\n fromCreatedAt: string | null = null;\r\n toCreatedAt: string | null = null;\r\n u2Date: string | null = null;\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n u2ID: string = '';\r\n u1ID: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n // XCol.Create({ col: 1, text: 'V', width: 40, dataIndex: 'isVoid', type: XCol.XCellType.StrBool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 2, text: 'Shipping ID', width: 100, dataIndex: 'shipNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 3, text: 'Customer (WH)', width: 120, dataIndex: 'centerNo'}),\r\n XCol.Create({ col: 4, text: 'Out Date', width: 75, dataIndex: 'shipDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 5, text: 'Order Date', width: 75, dataIndex: 'orderDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 6, text: 'Status', width: 80, dataIndex: 'shipStatus'}),\r\n XCol.Create({ col: 7, text: 'Paid', width: 40, dataIndex: 'p', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 8, text: 'Order #', width: 80, dataIndex: 'poNo'}),\r\n XCol.Create({ col: 9, text: 'Total Qty', width: 80, dataIndex: 'totalQty', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 10, text: 'Ship To', width: 100, dataIndex: 'shipToNo'}),\r\n XCol.Create({ col: 11, text: 'Carrier', width: 100, dataIndex: 'trucker'}),\r\n XCol.Create({ col: 12, text: 'Pallet', width: 100, dataIndex: 'palletRemark'}),\r\n XCol.Create({ col: 13, text: 'Remark', width: 150, dataIndex: 'remark'}),\r\n XCol.Create({ col: 14, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime}),\r\n XCol.Create({ col: 15, text: 'Create by', width: 80, dataIndex: 'u1ID'}),\r\n XCol.Create({ col: 16, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime}),\r\n XCol.Create({ col: 17, text: 'Update by', width: 80, dataIndex: 'u2ID'}),\r\n ];\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n // 2023-10-19 jhchoi : Void 컬럼 제거(추후에 사용할 경우 주석 제거)\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: WhShipListItem.prototype.createdAt, orderByAscending: false };\r\n\r\n public static formatData(data: WhShipListItem[]) {\r\n return data.map((d: WhShipListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n shipDate: {from: 'fromShipDate', to: 'toShipDate'},\r\n orderDate: {from: 'fromOrderDate', to: 'toOrderDate'},\r\n totalQty: {from: 'fromTotalQty', to: 'toTotalQty'},\r\n createdAt: {from: 'fromCreatedAt', to: 'toCreatedAt'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n }\r\n}\r\n","/**\r\n * Revision History\r\n * 01/19/2022 ptkim Create\r\n * 03/11/2022 hykim Modified\r\n */\r\n import {SearchModelBase} from './SearchModelBase';\r\n import * as XCol from '../../framework.core/XExportColumn';\r\n \r\n export class OeBookingListItem extends SearchModelBase {\r\n id: number = 0;\r\n hBookingNo: string = '';\r\n hblNo: string = '';\r\n custName: string = '';\r\n refNo: string = '';\r\n cBookingNo: string = '';\r\n agentName: string = '';\r\n commodity: string = '';\r\n vessel: string = '';\r\n voyage: string = '';\r\n etd: string | null = null;\r\n fromEtd: string | null = null;\r\n toEtd: string | null = null;\r\n plofRec: string = '';\r\n loadingPort: string = '';\r\n disCharge: string = '';\r\n finalDest: string = '';\r\n plofDel: string = '';\r\n truckingCompany: string = '';\r\n truckingCompanyName: string | null = null;\r\n puCargoLocation: string = '';\r\n puCargoLocationName: string | null = null;\r\n moveType: string = '';\r\n portCutOff: string | null = null;\r\n fromPortCutOff: string | null = null;\r\n toPortCutOff: string | null = null;\r\n railCutOff: string | null = null;\r\n fromRailCutOff: string | null = null;\r\n toRailCutOff: string | null = null;\r\n bookRemark: string = '';\r\n exPref: string = '';\r\n createDate: string | null = null;\r\n fromCreateDate: string | null = null;\r\n toCreateDate: string | null = null;\r\n usLCode: string = '';\r\n unLCode: string = '';\r\n usDCode: string = '';\r\n unDCode: string = '';\r\n bookEtd: string | null = null;\r\n bookEta: string | null = null;\r\n agent: number = 0;\r\n carrier: number = 0;\r\n carrName: string = '';\r\n vesselCarrier: number = 0;\r\n vCarrName: string = '';\r\n status: string = '';\r\n bookDate: string | null = null;\r\n fromBookDate: string | null = null;\r\n toBookDate: string | null = null;\r\n bookedBy: string = '';\r\n quoteNo: string = '';\r\n consignee: string = '';\r\n conTypeAndQty: string = '';\r\n conType: string = '';\r\n pkgs: number = 0;\r\n fromBookEtd: string | null = null;\r\n toBookEtd: string | null = null;\r\n fromBookEta: string | null = null;\r\n toBookEta: string | null = null;\r\n puEmptyLoc: string = '';\r\n u2Date: string | null = null;\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n u2ID: string = '';\r\n u1ID: string = '';\r\n\r\n // Cloud Only\r\n puEmptyLocId: number = 0;\r\n rcveWhseId: number = 0;\r\n rcveWhse: string = '';\r\n confirmed: boolean = false;\r\n custContact: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true, sortable: false}),\r\n XCol.Create({ col: 1, text: 'Date', width: 75, dataIndex: 'bookDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 2, text: 'Booking #', width: 100, dataIndex: 'hBookingNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 3, text: 'Book by', width: 80, dataIndex: 'bookedBy'}),\r\n XCol.Create({ col: 4, text: 'Customer', width: 120, dataIndex: 'custName'}),\r\n //XCol.Create({ col: 5, text: 'Contact', width: 120, dataIndex: 'custContact'}),\r\n XCol.Create({ col: 5, text: 'Consignee', width: 120, dataIndex: 'consignee'}),\r\n XCol.Create({ col: 6, text: 'Agent', width: 120, dataIndex: 'agentName'}),\r\n XCol.Create({ col: 7, text: 'Quotation #', width: 100, dataIndex: 'quoteNo'}),\r\n XCol.Create({ col: 8, text: 'HBL #', width: 100, dataIndex: 'hblNo'}),\r\n XCol.Create({ col: 9, text: 'Ref. #', width: 100, dataIndex: 'refNo'}),\r\n XCol.Create({ col: 10, text: 'Book CFM', width:75, dataIndex: 'confirmed', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 11, text: 'Carrier\\'s Book #', width: 100, dataIndex: 'cBookingNo'}),\r\n XCol.Create({ col: 12, text: 'Cargo Cutoff', width: 75, dataIndex: 'portCutOff', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 13, text: 'SED Cutoff', width: 75, dataIndex: 'railCutOff', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 14, text: 'CNTR Type/Qty', width: 120, dataIndex: 'conTypeAndQty'}),\r\n // XCol.Create({ col: 14, text: 'Qty', width: 80, dataIndex: 'pkgs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 15, text: 'Move Type', width: 80, dataIndex: 'moveType', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 16, text: 'Commodity', width: 120, dataIndex: 'commodity'}),\r\n XCol.Create({ col: 17, text: 'Vessel Name', width: 120, dataIndex: 'vessel'}),\r\n XCol.Create({ col: 18, text: 'Voyage #', width: 80, dataIndex: 'voyage'}),\r\n XCol.Create({ col: 19, text: 'Loading Port', width: 120, dataIndex: 'loadingPort'}),\r\n XCol.Create({ col: 20, text: 'ETD', width: 75, dataIndex: 'bookEtd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 21, text: 'Discharge Port', width: 120, dataIndex: 'disCharge'}),\r\n XCol.Create({ col: 22, text: 'ETA', width: 75, dataIndex: 'bookEta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 23, text: 'Place of Receipt', width: 120, dataIndex: 'plofRec', visible: false}),\r\n XCol.Create({ col: 24, text: 'Place of Delivery', width: 120, dataIndex: 'plofDel', visible: false}),\r\n XCol.Create({ col: 25, text: 'Final Destination', width: 120, dataIndex: 'finalDest', visible: false}),\r\n XCol.Create({ col: 26, text: 'Trucking Vendor', width: 120, dataIndex: 'truckingCompanyName', hasCustomTooltip:true}),\r\n // XCol.Create({ col: 27, text: 'P\\'up Empty Cont. Loc', width: 250, dataIndex: 'puEmptyLoc'}),\r\n XCol.Create({ col: 27, text: 'P/U Cargo Location', width: 120, dataIndex: 'puCargoLocationName', hasCustomTooltip:true}),\r\n XCol.Create({ col: 28, text: 'Export Ref. #', width: 100, dataIndex: 'exPref'}),\r\n XCol.Create({ col: 29, text: 'Remark', width: 150, dataIndex: 'bookRemark', visible: false}),\r\n XCol.Create({ col: 30, text: 'Create Date', width: 100, dataIndex: 'createDate', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 31, text: 'Create by', width: 80, dataIndex: 'u1ID'}),\r\n XCol.Create({ col: 32, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 33, text: 'Update by', width: 80, dataIndex: 'u2ID'}),\r\n\r\n //for use tooltip\r\n XCol.Create({ col: 34, text: '', width: 0, dataIndex: 'truckingCompany', hiddenInColumnSetup: true, visible: false}), \r\n XCol.Create({ col: 35, text: '', width: 0, dataIndex: 'puCargoLocation', hiddenInColumnSetup: true, visible: false}),\r\n ];\r\n \r\n \r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n \r\n public static MapOeSearchFields: {[key: string]: {[key: string]: string}} = {\r\n bookDate: {from: 'fromBookDate', to: 'toBookDate'},\r\n bookEta: {from: 'fromBookEta', to: 'toBookEta'},\r\n bookEtd: {from: 'fromBookEtd', to: 'toBookEtd'},\r\n portCutOff: {from: 'fromPortCutOff', to: 'toPortCutOff'},\r\n railCutOff: {from: 'fromRailCutOff', to: 'toRailCutOff'},\r\n dlvrToCarr: {from: 'fromDlvrToCarr', to: 'toDlvrToCarr'},\r\n createDate: {from: 'fromCreateDate', to: 'toCreateDate'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n }\r\n \r\n public static OrderBy = { orderBy: OeBookingListItem.prototype.createDate, orderByAscending: false };\r\n \r\n public static formatData(data: OeBookingListItem[]) {\r\n return data.map((d: OeBookingListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n \r\n }\r\n ","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class BatchRecogListItem extends SearchModelBase {\r\n actionDate: string = '';\r\n fromActionDate: string = '';\r\n toActionDate: string = '';\r\n actionUser: string = '';\r\n operation: string = '';\r\n periodFromDate: string = '';\r\n fromPeriodFromDate: string = '';\r\n ToPeriodFromDate: string = '';\r\n periodToDate: string = '';\r\n fromPeriodToDate: string = '';\r\n ToPeriodToDate: string = '';\r\n recogDate: string = '';\r\n fromRecogDate: string = '';\r\n ToRecogDate: string = '';\r\n recogCount: number = 0;\r\n fromRecogCount: number = 0;\r\n ToRecogCount : number = 0;\r\n estMargin: number = 0;\r\n FromEstMargin: number = 0;\r\n ToEstMargin: number = 0;\r\n \r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Action Date', width: 150, dataIndex: 'actionDate',type: XCol.XCellType.DateTime}),\r\n XCol.Create({ col: 1, text: 'User', width: 100, dataIndex: 'actionUser'}),\r\n XCol.Create({ col: 2, text: 'Operation', width: 120, dataIndex: 'operation'}),\r\n XCol.Create({ col: 3, text: 'From Date', width: 80, dataIndex: 'periodFromDate', type: XCol.XCellType.Date}),\r\n XCol.Create({ col: 4, text: 'To Date', width: 80, dataIndex: 'periodToDate', type: XCol.XCellType.Date}),\r\n XCol.Create({ col: 5, text: 'Recog Date', width: 80, dataIndex: 'recogDate', type: XCol.XCellType.Date}),\r\n XCol.Create({ col: 6, text: 'Item Count', width: 70, dataIndex: 'recogCount', type: XCol.XCellType.Double, formatString: '#,##0'}),\r\n XCol.Create({ col: 7, text: 'Est. Margin', width: 100, dataIndex: 'estMargin', type: XCol.XCellType.Double, formatString: '#,##0.00'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: BatchRecogListItem.prototype.actionDate, orderByAscending: true };\r\n\r\n public static formatData(data: BatchRecogListItem[]) {\r\n return data.map((d: BatchRecogListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n actionDate: {from: 'fromActionDate', to: 'toActionDate'},\r\n periodFromDate: {from: 'fromPeriodFromDate', to: 'ToPeriodFromDate'},\r\n periodToDate: {from: 'fromPeriodToDate', to: 'ToPeriodToDate'},\r\n recogDate: {from: 'fromRecogDate', to: 'ToRecogDate'},\r\n recogCount: {from: 'fromRecogCount', to: 'ToRecogCount'},\r\n estMargin: {from: 'FromEstMargin', to: 'ToEstMargin'}\r\n }\r\n\r\n}\r\n","import { SQLIndex } from '../../fms.core/constants';\r\nimport {TextValue} from '../../framework.core/data/TextValue';\r\n\r\nexport class CheckLookup {\r\n textValue: TextValue | null = null;\r\n labelName: string = '';\r\n sqlIndex: SQLIndex = SQLIndex.Unknown;\r\n\r\n constructor(init?:Partial) {\r\n Object.assign(this, init);\r\n }\r\n}\r\n","export class TextValue {\r\n Text:string = \"\";\r\n Value:string = \"\";\r\n IntValue:number = 0;\r\n\r\n constructor(init:Partial) {\r\n if(init) {\r\n this.Text = init.Text??\"\";\r\n this.Value = init.Value??\"\";\r\n this.IntValue = init.IntValue??0;\r\n }\r\n }\r\n}","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport {IDictionary} from './data/TrackingModule';\r\nimport {DBMappingInfo} from '../framework.core/data/DBMappingInfo';\r\nimport {AcctBLHd} from './AcctBLHd';\r\nimport {ApDetail} from './ApDetail';\r\nimport {OpAcct} from './OpAcct';\r\nimport { APInfoDetail } from './APInfoDetail';\r\nimport { AcctHeadType, FormSubType, FormType } from '../fms.enum';\r\nimport _ from 'lodash';\r\n\r\n/**\r\n * Index of action buttons\r\n */\r\nexport enum CmdType {\r\n None = -1,\r\n Amend = 0, // Also 5\r\n Credit,\r\n Void,\r\n Confirm,\r\n Cancel, // Also 7, 9, 11, 13\r\n PaidAmend = 5, \r\n CancelCredit = 6,\r\n CancelVoid = 8,\r\n ReceiveCredit = 10,\r\n CancelRCredit = 12\r\n}\r\nexport class ApHd extends TrackableEntity {\r\n id: number = 0;\r\n vendorId: number = 0;\r\n vendorName: string = '';\r\n vendorRefNo: string = '';\r\n refNo: string = '';\r\n dutyCustomerId: number = 0;\r\n dutyAgentId: number = 0;\r\n dutyCustomerName: string = '';\r\n dutyAgentName: string = '';\r\n branch: string = '';\r\n billNo: string = '';\r\n billDate: string | null = null;\r\n postDate: string | null = null;\r\n terms: number = 0;\r\n dueDate: string | null = null;\r\n currency: string = '';\r\n currencyDecimal: number = 0;\r\n billAmt: number = 0;\r\n paidAmt: number = 0;\r\n advRecAmt: number = 0;\r\n advRecDisplayAmt: number = 0;\r\n displayPaidAmt: number = 0;\r\n balanceDue: number = 0;\r\n lastPaidChkNo: string = '';\r\n lastPaidDate: string | null = null;\r\n billReceived: boolean = false;\r\n confirmed: boolean = false;\r\n useLocalLanguage: boolean = false;\r\n prepaidExStatus: boolean = false;\r\n block: boolean = false;\r\n billMemo: string = '';\r\n exRate1: number = 0;\r\n exRate2: number = 0;\r\n exRate3: number = 0;\r\n exRate4: number = 0;\r\n tVatAmt: number = 0;\r\n tlAmount: number = 0;\r\n payGlNo: string = '';\r\n descript: string = '';\r\n dutyAmt: number = 0;\r\n dutyLAmt: number = 0;\r\n cAmount: number = 0;\r\n invCur1: string = '';\r\n invCur2: string = '';\r\n invCur3: string = '';\r\n invCur4: string = '';\r\n invCur1Decimal: number = 0;\r\n invCur2Decimal: number = 0;\r\n invCur3Decimal: number = 0;\r\n invCur4Decimal: number = 0;\r\n void: number = 0;\r\n isCredit: number = 0;\r\n hold: boolean = false;\r\n holdUser: string = '';\r\n holdReason: string = '';\r\n remarksYN: boolean = false;\r\n remarks: string = '';\r\n remarkUser: string = '';\r\n approved: boolean = false;\r\n appPaidDate: string | null = null;\r\n approvedUser: string = '';\r\n tbName: string = '';\r\n tbId: number = 0;\r\n u1Id: string = '';\r\n u1Date: string | null = null;\r\n u2Id: string = '';\r\n u2Date: string | null = null;\r\n agent: number = 0;\r\n jobName: string = '';\r\n isHybrid: boolean = false;\r\n originId: number = 0;\r\n originDepoId: number = 0;\r\n originDepoDetailId: number = 0;\r\n originAmt: number = 0;\r\n orgPaidAmt: number = 0;\r\n orgAdvRecAmt: number = 0;\r\n creditBillingCode: string = '';\r\n etf: string = '';\r\n isSalesTaxReturn: boolean = false;\r\n voidDate: string | null = null;\r\n voidBy: string = '';\r\n blHdInfo: AcctBLHd | null = null;\r\n billDetail: ApDetail[] = [];\r\n opAccts: OpAcct[] = [];\r\n draftPaid: boolean = false;\r\n \r\n invDBCur1: string = '';\r\n invDBCur2: string = '';\r\n invDBCur3: string = '';\r\n invDBCur4: string = '';\r\n apInfoDetailList: APInfoDetail[] = [];\r\n\r\n pcurTotal: number = 0;\r\n cur1Total: number = 0;\r\n cur2Total: number = 0;\r\n cur3Total: number = 0;\r\n cur4Total: number = 0;\r\n\r\n isLockCur1: boolean = false;\r\n isLockCur2: boolean = false;\r\n isLockCur3: boolean = false;\r\n isLockCur4: boolean = false;\r\n \r\n // cloud\r\n draft: boolean = false;\r\n displayDraft: boolean = false;\r\n isTaxReturn: boolean = false;\r\n attentionTo: string = '';\r\n cannotDraft: boolean = false;\r\n jobType: string = '';\r\n lastPaymentId: number = 0;\r\n lastPaymentType: string = '';\r\n lastPaymentETF: number = 0;\r\n lastPaymentIsAgentPay: number = 0;\r\n /**\r\n * For GetJobSalesCost\r\n */\r\n crDbNo: string = '';\r\n\r\n /**\r\n * To control view\r\n */\r\n hdIsClosed: boolean = false;\r\n hdOpType: AcctHeadType = AcctHeadType.None;\r\n hdSubType: FormSubType = FormSubType.None;\r\n formType: FormType = FormType.None;\r\n srcJobName: string = '';\r\n srcJobId: number = 0;\r\n availableCurrencies: string[] = [];\r\n creditDate: string|null = null;\r\n creditBy: string|null = null;\r\n enableDutyAgent: boolean = false;\r\n enableDutyCustomer: boolean = false;\r\n priCurTotal: number = 0;\r\n maxBillNoLength: number = 25;\r\n hdMaxCreditAmt: number = 0;\r\n hdOriginPaidAmt: number = 0;\r\n hdOriginInvAmt: number = 0;\r\n hdOriginId: number = 0;\r\n hdPreOriginId: number = 0;\r\n hdPrePaymentId: number = 0;\r\n\r\n // Charge Type 항목을 설정하기 위해서 추가\r\n usedDutyType: number = 0;\r\n isDutyJob: boolean = false;\r\n useDutyItem: number = 0;\r\n tableType: string = '';\r\n // Charge Type End\r\n\r\n // Credit Card Payment 기능을 위한 필드\r\n ccPay: boolean = false;\r\n creditCardPaidTo: number = 0; \r\n creditCardId: number = 0;\r\n ccPrefix: string | null = '';\r\n ccRefNo: string = '';\r\n ccRefNo2: string | null = '';\r\n type: string = '';\r\n exRate: number = 0;\r\n ccAmt: number = 0;\r\n // Credit Card Payment End\r\n\r\n // for cloud\r\n isUserAction: boolean = false;\r\n // defaultCreditCardName: string | null = '';\r\n defaultCreditCardId: number = 0;\r\n defaultCCEntity: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n //Object.assign(this, init);\r\n this.applyInitDataExcludingNull(this, init);\r\n this.noTrackProps.push('id', 'dutyCustomerName', 'dutyAgentName', 'currencyDecimal',\r\n 'invCur1Decimal', 'invCur2Decimal', 'jobName', 'isHybrid', 'originId', 'originDepoId', 'originDepoDetailId', 'originAmt', 'orgPaidAmt', 'orgAdvRecAmt', 'creditBillingCode', 'etf', 'isSalesTaxReturn', 'voidDate', 'voidBy', 'blHdInfo', 'apInfoDetailList',\r\n 'availableCurrencies', 'creditDate', 'creditBy', 'enableDutyAgent', 'enableDutyCustomer',\r\n 'hdIsClosed', 'hdOpType', 'priCurTotal', 'maxBillNoLength', 'paidAmt', 'displayPaidAmt', 'balanceDue', 'hdSubType', 'formType', 'tVatAmt', 'isDutyJob', 'usedDutyType', 'useDutyItem', 'tableType', 'ccPrefix', 'ccRefNo2',\r\n 'defaultCreditCardId', 'defaultCCEntity', 'displayDraft', 'isUserAction');\r\n this.getdateProps.push('u1Date', 'u2Date'); \r\n if(this.id === 0) this.id = this.GetNextId();\r\n\r\n if(this.billDetail.length > 0) {\r\n this.billDetail = this.billDetail.map(d => new ApDetail(d));\r\n } else {\r\n this.billDetail = [];\r\n }\r\n\r\n if(this.opAccts.length > 0) {\r\n this.opAccts = this.opAccts.map(o => new OpAcct(o));\r\n } else {\r\n this.opAccts = [];\r\n }\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n const dicmap = ApHd.dicFieldMappings;\r\n _.keys(ApDetail.dicFieldMappings).forEach(k => {\r\n dicmap[`billDetail.${k}`] = ApDetail.dicFieldMappings[k];\r\n });\r\n\r\n _.keys(OpAcct.dicFieldMappings).forEach(k => {\r\n dicmap[`opAccts.${k}`] = OpAcct.dicFieldMappings[k];\r\n });\r\n return dicmap;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_Id', table: 'T_APHD' }),\r\n 'tbName': new DBMappingInfo({ field: 'F_TBName', table: 'T_APHD' }),\r\n 'tbId': new DBMappingInfo({ field: 'F_TBId', table: 'T_APHD' }),\r\n 'vendorId': new DBMappingInfo({ field: 'F_PayTo', table: 'T_APHD' }),\r\n 'creditCardId': new DBMappingInfo({ field: 'F_CreditCardId', table: 'T_APHD' }),\r\n 'creditCardPaidTo': new DBMappingInfo({ field: 'F_CCPayTo', table: 'T_APHD' }),\r\n 'vendorRefNo': new DBMappingInfo({ field: 'F_YourRef', table: 'T_APHD' }),\r\n 'refNo': new DBMappingInfo({ field: 'F_RefNo', table: 'T_APHD' }),\r\n 'dutyCustomerId': new DBMappingInfo({ field: 'F_DutyEntity', table: 'T_APHD' }),\r\n 'dutyAgentId': new DBMappingInfo({ field: 'F_DutyAgent', table: 'T_APHD' }),\r\n 'billNo': new DBMappingInfo({ field: 'F_InvoiceNo', table: 'T_APHD' }),\r\n 'billDate': new DBMappingInfo({ field: 'F_InvoiceDate', table: 'T_APHD' }),\r\n 'postDate': new DBMappingInfo({ field: 'F_PostDate', table: 'T_APHD' }),\r\n 'terms': new DBMappingInfo({ field: 'F_Terms', table: 'T_APHD' }),\r\n 'dueDate': new DBMappingInfo({ field: 'F_DueDate', table: 'T_APHD' }),\r\n 'currency': new DBMappingInfo({ field: 'F_Currency', table: 'T_APHD' }),\r\n 'billAmt': new DBMappingInfo({ field: 'F_InvoiceAmt', table: 'T_APHD' }),\r\n 'billReceived': new DBMappingInfo({ field: 'F_Invoiced', table: 'T_APHD' }),\r\n 'confirmed': new DBMappingInfo({ field: 'F_Confirmed', table: 'T_APHD' }),\r\n 'useLocalLanguage': new DBMappingInfo({ field: 'F_UseLocalLanguage', table: 'T_APHD' }),\r\n 'prepaidExStatus': new DBMappingInfo({ field: 'F_PrepaidExStatus', table: 'T_APHD' }),\r\n 'block': new DBMappingInfo({ field: 'F_Block', table: 'T_APHD' }),\r\n 'billMemo': new DBMappingInfo({ field: 'F_Memo', table: 'T_APHD' }),\r\n 'invDBCur1': new DBMappingInfo({ field: 'f_cur1', table: 'T_APHD' }),\r\n 'invDBCur2': new DBMappingInfo({ field: 'f_cur2', table: 'T_APHD' }),\r\n 'invDBCur3': new DBMappingInfo({ field: 'f_cur3', table: 'T_APHD' }),\r\n 'invDBCur4': new DBMappingInfo({ field: 'f_cur4', table: 'T_APHD' }),\r\n 'exRate1': new DBMappingInfo({ field: 'f_exrate1', table: 'T_APHD' }),\r\n 'exRate2': new DBMappingInfo({ field: 'f_exrate2', table: 'T_APHD' }),\r\n 'exRate3': new DBMappingInfo({ field: 'f_exrate3', table: 'T_APHD' }),\r\n 'exRate4': new DBMappingInfo({ field: 'f_exrate4', table: 'T_APHD' }),\r\n 'tVatAmt': new DBMappingInfo({ field: 'f_tvatamt', table: 'T_APHD' }),\r\n 'tlAmount': new DBMappingInfo({ field: 'f_tlamount', table: 'T_APHD' }),\r\n 'payGlNo': new DBMappingInfo({ field: 'f_payglno', table: 'T_APHD' }),\r\n 'descript': new DBMappingInfo({ field: 'f_descript', table: 'T_APHD' }),\r\n 'dutyAmt': new DBMappingInfo({ field: 'f_dutyamt', table: 'T_APHD' }),\r\n 'dutyLAmt': new DBMappingInfo({ field: 'f_dutylamt', table: 'T_APHD' }),\r\n 'cAmount': new DBMappingInfo({ field: 'f_camount', table: 'T_APHD' }),\r\n 'agent': new DBMappingInfo({ field: 'F_Agent', table: 'T_APHD' }),\r\n 'hold': new DBMappingInfo({ field: 'F_Hold', table: 'T_APHD' }),\r\n 'holdReason': new DBMappingInfo({ field: 'F_HoldReason', table: 'T_APHD' }),\r\n 'holdUser': new DBMappingInfo({ field: 'F_HoldUser', table: 'T_APHD' }),\r\n 'remarksYN': new DBMappingInfo({ field: 'F_RemarksYN', table: 'T_APHD' }),\r\n 'remarks': new DBMappingInfo({ field: 'F_Remarks', table: 'T_APHD' }),\r\n 'remarkUser': new DBMappingInfo({ field: 'F_RemkUser', table: 'T_APHD' }),\r\n 'approved': new DBMappingInfo({ field: 'F_Approved', table: 'T_APHD' }),\r\n 'approvedUser': new DBMappingInfo({ field: 'F_ApprovedUser', table: 'T_APHD' }),\r\n 'appPaidDate': new DBMappingInfo({ field: 'F_AppPaidDate', table: 'T_APHD' }),\r\n 'branch': new DBMappingInfo({ field: 'F_ApBranch', table: 'T_APHD' }),\r\n 'u1Id': new DBMappingInfo({ field: 'f_u1id', table: 'T_APHD' }),\r\n 'u1Date': new DBMappingInfo({ field: 'f_u1date', table: 'T_APHD' }),\r\n 'u2Id': new DBMappingInfo({ field: 'f_u2id', table: 'T_APHD' }),\r\n 'u2Date': new DBMappingInfo({ field: 'f_u2date', table: 'T_APHD' }),\r\n 'draft': new DBMappingInfo({ field: 'f_draft', table: 'T_APHD' }),\r\n 'attentionTo': new DBMappingInfo({ field: 'AttTo', table: 'T_APHD' }),\r\n };\r\n\r\n setChildTrackable(value: boolean): void {\r\n if(this.billDetail.length > 0) {\r\n this.billDetail.forEach(c => c.trackable = value);\r\n }\r\n }\r\n}\r\n","import {IGeneralWithList} from \"../../../../ifmsTypes\";\r\nimport React, {MutableRefObject, useContext, useEffect} from \"react\";\r\nimport {useTypedFastStorage} from \"../../../../hooks/useFastStorage\";\r\nimport Fieldset from \"../../../common/Fieldset\";\r\nimport RadioButton from \"../../../../ui/RadioButton\";\r\nimport SecondaryButton from \"../../../../ui/SecondaryButton\";\r\nimport { BillListItem } from \"../../../../fms.data/models/BillListItem\";\r\nimport useReportViewer from \"../../../../hooks/useReportViewer\";\r\nimport { CheckReqCommonArgs } from \"../../../../fms.report/args\";\r\nimport { DocumentType } from \"../../../../framework.core/DocumentType\";\r\nimport ApplicationContext from \"../../../../ApplicationContext\";\r\n\r\ninterface PrintBillStorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\ninterface PrintBillViewParams {\r\n id: string | undefined,\r\n selectedElement: BillListItem,\r\n onPopupClose?: () => void\r\n};\r\n\r\ninterface PrintBillLoadedDetailsViewParams {\r\n printBill: IGeneralWithList,\r\n printBillRef: MutableRefObject,\r\n setPrintBill: (x: Partial) => void,\r\n selectedElement: BillListItem,\r\n onPopupClose?: () => void,\r\n};\r\n\r\nfunction getPrintBillStorageKeys(): PrintBillStorageKeys {\r\n return {modelStorage: 'print-bill-report'}\r\n}\r\n\r\nfunction PrintBillImpl(params: PrintBillViewParams) {\r\n const {selectedElement} = params;\r\n const {modelStorage} = getPrintBillStorageKeys();\r\n\r\n const [inStorage, setInStorage, removePrintBillFromStorage, printBillRef] = useTypedFastStorage(modelStorage, null);\r\n\r\n useEffect(() => {\r\n initialize();\r\n return () => {\r\n removePrintBillFromStorage()\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n async function loadExisting() {\r\n return {\r\n printOption: 'C'\r\n }\r\n }\r\n\r\n async function initialize() {\r\n const data = await loadExisting();\r\n setInStorage({...data})\r\n }\r\n\r\n if (!inStorage) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction PrintBillInitializedImpl({\r\n printBill,\r\n printBillRef,\r\n setPrintBill,\r\n selectedElement,\r\n onPopupClose,\r\n }: PrintBillLoadedDetailsViewParams) {\r\n const { viewReport } = useReportViewer();\r\n const appContext = useContext(ApplicationContext)\r\n\r\n function onChange(change: Partial) {\r\n setPrintBill(change);\r\n }\r\n\r\n async function print(){\r\n let title = '';\r\n switch(printBill.printOption){\r\n case 'C': title = \"Check Request (Detail)\"; break;\r\n case 'D': title = \"Check Request\"; break;\r\n case 'M': title = \"Messenger Slip\"; break;\r\n case 'A': title = \"Account Payable\"; break;\r\n }\r\n title = title + ` [${selectedElement.billNo}]` \r\n const payto = await appContext.api.getRList(selectedElement.id.toString(), 'T_APHD', 'F_Payto');\r\n const args = new CheckReqCommonArgs({\r\n docType: DocumentType.CheckReq,\r\n formCaption: title,\r\n subject: title,\r\n\r\n tbId: selectedElement.id.toString(),\r\n tbName: 'T_APHD',\r\n requestBy: appContext.user?.id??'',\r\n branch: appContext.suntekSettings?.company?.defaultBranch,\r\n reportType: printBill.printOption,\r\n toCompanyid: payto?.toString(),\r\n })\r\n viewReport(args, \"\", true);\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    onChange({printOption: 'C'})}/>\r\n
    \r\n
    onChange({printOption: 'M'})}/>\r\n
    \r\n
    \r\n
    \r\n
    onChange({printOption: 'D'})}/>\r\n
    \r\n
    onChange({printOption: 'A'})}/>\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n print()\r\n }}>\r\n OK\r\n \r\n \r\n CANCEL\r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nconst PrintBillDetails = ({\r\n onPopupClose,\r\n selectedElement\r\n }: { onPopupClose?: () => void, selectedElement?: any }) => {\r\n // const { id } = useParams();\r\n\r\n /**\r\n * Implementation note:\r\n * key is important in this case in order to force full List view rerender for different parameters.\r\n */\r\n\r\n return (\r\n \r\n );\r\n};\r\nexport default PrintBillDetails;","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport _ from 'lodash';\r\n\r\nexport class AiMblListItem extends SearchModelBase {\r\n id: number = 0;\r\n closed: string = '';\r\n shipmentType: string = '';\r\n invStat: string = '';\r\n billStat: string = '';\r\n crDbStat: string = '';\r\n mawbNo: string = '';\r\n branch: string = '';\r\n refNo: string = '';\r\n hblStat: string = '';\r\n agentName: string = '';\r\n agentRefNo: string = '';\r\n lCode: string = '';\r\n firstEntry: string = '';\r\n dCode: string = '';\r\n discharge: string = '';\r\n etd: string | null = null;\r\n fromETD: string | null = null;\r\n toETD: string | null = null;\r\n entryDate: string | null = null;\r\n fromEntryDate: string | null = null;\r\n toEntryDate: string | null = null;\r\n eta: string | null = null;\r\n fromETA: string | null = null;\r\n toETA: string | null = null;\r\n smawbNo: string = '';\r\n fltNo: string = '';\r\n vendorName: string = '';\r\n postDate: string | null = null;\r\n recognized: string = '';\r\n paidStatus: string = '';\r\n paidDate: string | null = null;\r\n fromPaidDate: string | null = null;\r\n toPaidDate: string | null = null;\r\n status: string = '';\r\n createdAt: string|null = null;\r\n pimsLinkId: number = 0;\r\n\r\n // cloud\r\n cargoMode: string = '';\r\n carrierName: string = '';\r\n customsRlsd: boolean = false;\r\n atmeSent: boolean = false;\r\n customsHold: boolean = false;\r\n fLocationName: string = '';\r\n commodity: string = '';\r\n pkgs: number = 0;\r\n fromPkgs: number = 0;\r\n toPkgs: number = 0;\r\n grossWeight: number = 0;\r\n fromGrossWeight: number = 0;\r\n toGrossWeight: number = 0;\r\n chgWeight: number = 0;\r\n fromChgWeight: number = 0;\r\n toChgWeight: number = 0;\r\n lChgWeight: number = 0;\r\n fromLChgWeight: number = 0;\r\n toLChgWeight: number = 0;\r\n\r\n fromCreatedAt: string | null = null;\r\n toCreatedAt: string | null = null;\r\n updateDate: string | null = null;\r\n fromUpdateDate: string | null = null;\r\n toUpdateDate: string | null = null;\r\n updateBy: string = '';\r\n createBy: string = '';\r\n directBl: boolean = false;\r\n projectNo: string = '';\r\n \r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'R', width: 30, dataIndex: 'recognized', noNullOrEmptySearch: true, hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 25, text: 'D/ID', width: 35, dataIndex: 'shipmentType', noNullOrEmptySearch: true}),\r\n \r\n // XCol.Create({ col: 6, text: 'Cargo', width: 160, dataIndex: 'cargoMode'}),\r\n XCol.Create({ col: 2, text: 'MAWB', width: 100, dataIndex: 'mawbNo'}),\r\n XCol.Create({ col: 3, text: 'BR', width: 40, dataIndex: 'branch', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 4, text: 'Ref. #', width: 100, dataIndex: 'refNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 5, text: 'HAWB(s)', width: 50, dataIndex: 'hblStat', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 6, text: 'Agent', width: 120, dataIndex: 'agentName'}),\r\n XCol.Create({ col: 7, text: 'Project ID', width: 100, dataIndex: 'projectNo'}),\r\n XCol.Create({ col: 8, text: 'Agent Ref.', width: 100, dataIndex: 'agentRefNo'}),\r\n XCol.Create({ col: 9, text: 'Departure', width: 60, dataIndex: 'lCode', align: XCol.XAlignType.Center}),\r\n // XCol.Create({ col: 14, text: 'ATME', width: 50, dataIndex: 'atmeSent', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n // XCol.Create({ col: 15, text: 'CC', width: 50, dataIndex: 'customsRlsd', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n // XCol.Create({ col: 16, text: 'CH', width: 50, dataIndex: 'customsHold', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n //XCol.Create({ col: 17, text: 'Carrier', width: 120, dataIndex: 'carrierName'}),\r\n XCol.Create({ col: 10, text: 'First Entry', width: 60, dataIndex: 'firstEntry', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 11, text: 'Destination', width: 60, dataIndex: 'dCode', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 12, text: 'ETD', width: 75, dataIndex: 'etd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 13, text: 'Entry Date', width: 75, dataIndex: 'entryDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 14, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 15, text: 'Freight Location', width: 120, dataIndex: 'fLocationName'}),\r\n XCol.Create({ col: 16, text: 'PKG(s)', width: 80, dataIndex: 'pkgs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 17, text: 'KGS', width: 80, dataIndex: 'chgWeight', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}), \r\n XCol.Create({ col: 18, text: 'LBS', width: 80, dataIndex: 'lChgWeight', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 19, text: 'Commodity', width: 120, dataIndex: 'commodity', visible: false}),\r\n XCol.Create({ col: 20, text: 'Flight', width: 60, dataIndex: 'fltNo'}),\r\n // XCol.Create({ col: 29, text: 'Sub MAWB No', width: 100, dataIndex: 'smawbNo', visible: false}),\r\n XCol.Create({ col: 21, text: 'Freight Vendor', width: 120, dataIndex: 'vendorName'}),\r\n XCol.Create({ col: 22, text: 'FrtChrg', width: 75, dataIndex: 'paidStatus'}),\r\n XCol.Create({ col: 23, text: 'Paid', width: 75, dataIndex: 'paidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n \r\n XCol.Create({ col: 26, text: 'INV', width: 35, dataIndex: 'invStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 27, text: 'BIL', width: 35, dataIndex: 'billStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 28, text: 'CrDb', width: 35, dataIndex: 'crDbStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n \r\n XCol.Create({ col: 29, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 30, text: 'Create by', width: 100, dataIndex: 'u1ID', visible: false}),\r\n XCol.Create({ col: 31, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 32, text: 'Update by', width: 100, dataIndex: 'u2ID', visible: false}),\r\n ];\r\n\r\n\r\n public static getExportCollection(useBranch: boolean): XCol.XExportColumn[] {\r\n let returnCloumns = _.cloneDeep(this.ExportCollection);\r\n if (!useBranch) returnCloumns = returnCloumns.filter(x => x.dataIndex !== 'branch');\r\n return returnCloumns;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: AiMblListItem.prototype.createdAt, orderByAscending: false };\r\n\r\n public static formatData(data: AiMblListItem[]) {\r\n return data.map((d: AiMblListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n etd: {from: 'fromETD', to: 'toETD'},\r\n entryDate: {from: 'fromEntryDate', to: 'toEntryDate'},\r\n eta: {from: 'fromETA', to: 'toETA'},\r\n pkgs: {from: 'fromPkgs', to: 'toPkgs'},\r\n grossWeight: {from: 'fromGrossWeight', to: 'toGrossWeight'},\r\n chgWeight: {from: 'fromChgWeight', to: 'toChgWeight'},\r\n lChgWeight: {from: 'fromLChgWeight', to: 'toLChgWeight'},\r\n updateDate: {from: 'fromUpdateDate', to: 'toUpdateDate'},\r\n createdAt: {from: 'fromCreatedAt', to: 'toCreatedAt'},\r\n paidDate: {from: 'fromPaidDate', to: 'toPaidDate'},\r\n }\r\n}\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport _ from 'lodash';\r\n\r\nexport class AeMblListItem extends SearchModelBase {\r\n id: number = 0;\r\n closed: string = '';\r\n isClosed: boolean|null = null;\r\n shipmentType: string = '';\r\n invStat: string = '';\r\n billStat: string = '';\r\n crDbStat: string = '';\r\n postDate: string | null = null;\r\n mawbNo: string = '';\r\n branch: string = '';\r\n refNo: string = '';\r\n hblCount: string = '';\r\n agentId: number = 0;\r\n agentName: string = '';\r\n blEdi: boolean|null = null;\r\n shipperId: number = 0;\r\n shipperName: string = '';\r\n blType: string = '';\r\n notifyId: number = 0;\r\n notifyName: string = '';\r\n pkgs: number = 0;\r\n fromPkgs: number|null = null;\r\n toPkgs: number|null = null;\r\n fltNo: string = '';\r\n lCode: string = '';\r\n dCode: string = '';\r\n etd: string | null = null;\r\n fromEtd: string | null = null;\r\n toEtd: string | null = null;\r\n eta: string | null = null;\r\n fromEta: string | null = null;\r\n toEta: string | null = null;\r\n blDate: string | null = null;\r\n fromBlDate: string | null = null;\r\n toBlDate: string | null = null;\r\n lChgWeight: number|null = null;\r\n fromLChgWeight: number|null = null;\r\n toLChgWeight: number|null = null;\r\n lGrossWeight: number|null = null;\r\n fromLGrossWeight: number|null = null;\r\n toLGrossWeight: number|null = null;\r\n chgWeight: number|null = null;\r\n fromChgWeight: number|null = null;\r\n toChgWeight: number|null = null;\r\n grossWeight: number|null = null;\r\n fromGrossWeight: number|null = null;\r\n toGrossWeight: number|null = null;\r\n carrierSpotNo: string = '';\r\n pimsLinkId: number = 0;\r\n createdAt: string | null = null; \r\n fromCreatedAt: string | null = null;\r\n toCreatedAt: string | null = null;\r\n recognized: string = '';\r\n paidStatus: string = '';\r\n paidDate: string | null = null;\r\n fromPaidDate: string | null = null;\r\n status: string = '';\r\n cargoMode: string = '';\r\n agentRefNo: string = '';\r\n carrierName: string = '';\r\n issuingCarrierName: string = '';\r\n u2Date: string | null = null;\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n u2ID: string = '';\r\n u1ID: string = '';\r\n payableToName: string ='';\r\n firstTo: string = '';\r\n projectNo: string = '';\r\n to1: string = '';\r\n to2: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'R', width: 30, dataIndex: 'recognized', noNullOrEmptySearch: true, hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 29, text: 'D/ID', width: 35, dataIndex: 'shipmentType', noNullOrEmptySearch: true}),\r\n \r\n XCol.Create({ col: 2, text: 'MAWB', width: 100, dataIndex: 'mawbNo'}),\r\n XCol.Create({ col: 3, text: 'BR', width: 40, dataIndex: 'branch', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 4, text: 'Project ID', width: 100, dataIndex: 'projectNo'}),\r\n XCol.Create({ col: 5, text: 'Ref. #', width: 100, dataIndex: 'refNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 6, text: 'HAWB(s)', width: 50, dataIndex: 'hblCount', align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 7, text: 'Shipper/Co-Loader', width: 120, dataIndex: 'shipperName'}),\r\n XCol.Create({ col: 8, text: 'Agent', width: 120, dataIndex: 'agentName'}),\r\n XCol.Create({ col: 9, text: 'Issuing Carrier', width: 120, dataIndex: 'issuingCarrierName'}),\r\n XCol.Create({ col: 10, text: 'Flight', width: 60, dataIndex: 'fltNo'}),\r\n XCol.Create({ col: 11, text: 'First To', width: 80, dataIndex: 'firstTo', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 12, text: 'Departure', width: 60, dataIndex: 'lCode', align: XCol.XAlignType.Center}),\r\n //XCol.Create({ col: 13, text: 'Agent Ref No', width: 100, dataIndex: 'agentRefNo', visible: false,}),\r\n //XCol.Create({ col: 15, text: 'Freight Vendor', width: 120, dataIndex: 'payableToName'}),\r\n //XCol.Create({ col: 16, text: 'Carrier', width: 120, dataIndex: 'carrierName'}),\r\n XCol.Create({ col: 13, text: 'To 1', width: 60, dataIndex: 'to1'}),\r\n XCol.Create({ col: 14, text: 'To 2', width: 60, dataIndex: 'to2'}),\r\n XCol.Create({ col: 15, text: 'Destination', width: 80, dataIndex: 'dCode', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 16, text: 'ETD', width: 75, dataIndex: 'etd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 17, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 18, text: 'B/L Type', width: 80, dataIndex: 'blType', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 19, text: 'B/L Date', width: 86, dataIndex: 'blDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 20, text: 'PKG(s)', width: 80, dataIndex: 'pkgs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 21, text: 'C. Weight(Lbs)', width: 80, dataIndex: 'lChgWeight', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 22, text: 'G. Weight(Lbs)', width: 80, dataIndex: 'lGrossWeight', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 23, text: 'C. Weight(Kg)', width: 80, dataIndex: 'chgWeight', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.0', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 24, text: 'G. Weight(Kg)', width: 80, dataIndex: 'grossWeight', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.0', noNullOrEmptySearch: true}),\r\n // XCol.Create({ col: 13, text: 'B/L EDI', width: 60, dataIndex: 'blEdi', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: false}),\r\n XCol.Create({ col: 25, text: 'Carrier Spot', width: 120, dataIndex: 'carrierSpotNo', visible: false}),\r\n XCol.Create({ col: 26, text: 'FrtChrg', width: 75, dataIndex: 'paidStatus'}),\r\n XCol.Create({ col: 27, text: 'Paid', width: 75, dataIndex: 'paidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n \r\n XCol.Create({ col: 30, text: 'INV', width: 35, dataIndex: 'invStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 31, text: 'BIL', width: 35, dataIndex: 'billStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 32, text: 'CrDb', width: 40, dataIndex: 'crDbStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n \r\n XCol.Create({ col: 33, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 34, text: 'Create by', width: 100, dataIndex: 'u1ID', visible: false}),\r\n XCol.Create({ col: 35, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 36, text: 'Update by', width: 100, dataIndex: 'u2ID', visible: false}),\r\n ];\r\n\r\n\r\n public static getExportCollection(useBranch: boolean): XCol.XExportColumn[] {\r\n let returnCloumns = _.cloneDeep(this.ExportCollection);\r\n if (!useBranch) returnCloumns = returnCloumns.filter(x => x.dataIndex !== 'branch');\r\n return returnCloumns;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: AeMblListItem.prototype.createdAt, orderByAscending: false };\r\n\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n etd: {from: 'fromEtd', to: 'toEtd'},\r\n eta: {from: 'fromEta', to: 'toEta'},\r\n blDate: {from: 'fromBlDate', to: 'toBlDate'},\r\n lChgWeight: {from: 'fromLChgWeight', to: 'toLChgWeight'},\r\n lGrossWeight: {from: 'fromLGrossWeight', to: 'toLGrossWeight'},\r\n chgWeight: {from: 'fromChgWeight', to: 'toChgWeight'},\r\n grossWeight: {from: 'fromGrossWeight', to: 'toGrossWeight'},\r\n createdAt: {from: 'fromCreatedAt', to: 'toCreatedAt'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n paidDate: {from: 'fromPaidDate', to: 'toPaidDate'},\r\n pkgs: {from: 'fromPkgs', to: 'toPkgs'},\r\n }\r\n}\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport _ from 'lodash';\r\n\r\nexport class AeHblListItem extends SearchModelBase {\r\n id: number = 0;\r\n closed: string = '';\r\n isClosed: boolean|null = null;\r\n shipmentType: string = '';\r\n invStat: string = '';\r\n billStat: string = '';\r\n crDbStat: string = '';\r\n postDate: string = '';\r\n hawbNo: string = '';\r\n branch: string = '';\r\n refNo: string = '';\r\n agentName: string = '';\r\n mawbNo: string = '';\r\n soNo: string = '';\r\n projectNo: string = '';\r\n shipmentId: string = '';\r\n blDate: string | null = null;\r\n fromBlDate: string | null = null;\r\n toBlDate: string | null = null;\r\n fltNo: string = '';\r\n etd: string | null = null;\r\n fromEtd: string | null = null;\r\n toEtd: string | null = null;\r\n hEtd: string | null = null;\r\n fromHEtd: string | null = null;\r\n toHEtd: string | null = null;\r\n eta: string | null = null;\r\n fromEta: string | null = null;\r\n toEta: string | null = null;\r\n lCode: string = '';\r\n dCode: string = '';\r\n shipper: string = '';\r\n shipperName: string | null = null;\r\n lcNo: string = '';\r\n consignee: number = 0;\r\n consigneeName: string | null = null;\r\n cName: string = '';\r\n notify: number = 0;\r\n notifyName: string | null = null;\r\n nName: string = '';\r\n customer: number|null = null;\r\n custSName: string = '';\r\n credit: string = '';\r\n paidStat: string = '';\r\n paidDate: string | null = null;\r\n fromPaidDate: string | null = null;\r\n toPaidDate: string | null = null;\r\n issuedBy: string = '';\r\n expRefNo: string = '';\r\n kgs: number|null = null;\r\n fromKgs: number|null = null;\r\n toKgs: number|null = null;\r\n lbs: number|null = null;\r\n fromLbs: number|null = null;\r\n toLbs: number|null = null;\r\n chgKgs: number|null = null;\r\n fromChgKgs: number|null = null;\r\n toChgKgs: number|null = null;\r\n chgLbs: number|null = null;\r\n fromChgLbs: number|null = null;\r\n toChgLbs: number|null = null;\r\n pimsLinkId: number = 0;\r\n u1ID: string = '';\r\n u1Date: string | null = null;\r\n u2ID: string = '';\r\n u2Date: string | null = null;\r\n aeMblId: number = 0;\r\n confirmDate: string | null = null;\r\n fromConfirmDate: string | null = null;\r\n toConfirmDate: string | null = null;\r\n acctCloseBy: string = '';\r\n acctCloseDate: string | null = null;\r\n pCloseDate: string | null = null;\r\n autoOpCloseBy: string = '';\r\n opCloseBy: string = '';\r\n opCloseDate: string | null = null;\r\n recognized: string = '';\r\n status: string = '';\r\n blType: string = '';\r\n custRefNo: string = '';\r\n salesperson: string = '';\r\n commodity: string = '';\r\n issuingCarrier: string = '';\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n fromU1Date: string | null = null;\r\n toU1Date: string | null = null;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'R', width: 30, dataIndex: 'recognized', noNullOrEmptySearch: true, hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 35, text: 'D/ID', width: 35, dataIndex: 'shipmentType', noNullOrEmptySearch: true,}),\r\n \r\n // XCol.Create({ col: 6, text: 'B/L Type', width: 80, dataIndex: 'blType', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 2, text: 'HAWB', width: 100, dataIndex: 'hawbNo'}),\r\n XCol.Create({ col: 3, text: 'BR', width: 40, dataIndex: 'branch', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 4, text: 'Ref. #', width: 100, dataIndex: 'refNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 5, text: 'Agent', width: 120, dataIndex: 'agentName'}),\r\n XCol.Create({ col: 6, text: 'MAWB', width: 100, dataIndex: 'mawbNo'}),\r\n XCol.Create({ col: 7, text: 'S/O', width: 80, dataIndex: 'soNo'}),\r\n XCol.Create({ col: 8, text: 'Project ID', width: 80, dataIndex: 'projectNo'}),\r\n XCol.Create({ col: 9, text: 'B/L Date', width: 75, dataIndex: 'blDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 10, text: 'Flight', width: 60, dataIndex: 'fltNo'}),\r\n XCol.Create({ col: 11, text: 'M.ETD', width: 75, dataIndex: 'etd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 12, text: 'ETD', width: 75, dataIndex: 'hEtd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 13, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 14, text: 'Departure', width: 60, dataIndex: 'lCode', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 15, text: 'Destination', width: 60, dataIndex: 'dCode', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 16, text: 'Shipper', width: 120, dataIndex: 'shipperName', hasCustomTooltip:true}),\r\n XCol.Create({ col: 17, text: 'L/C', width: 100, dataIndex: 'lcNo', visible: false}),\r\n XCol.Create({ col: 18, text: 'Consignee', width: 120, dataIndex: 'consigneeName', hasCustomTooltip:true}),\r\n XCol.Create({ col: 19, text: 'Notify', width: 120, dataIndex: 'notifyName', hasCustomTooltip:true}),\r\n XCol.Create({ col: 20, text: 'Customer', width: 120, dataIndex: 'custSName'}),\r\n //XCol.Create({ col: 13, text: 'Cust. Ref. No', width: 100, dataIndex: 'custRefNo'}),\r\n XCol.Create({ col: 21, text: 'Issuer', width: 120, dataIndex: 'issuingCarrier'}),\r\n XCol.Create({ col: 22, text: 'Credit', width: 60, dataIndex: 'credit', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 23, text: 'P', width: 40, dataIndex: 'paidStat'}),\r\n XCol.Create({ col: 24, text: 'Paid Date', width: 75, dataIndex: 'paidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 25, text: 'Issued by', width: 80, dataIndex: 'issuedBy'}),\r\n XCol.Create({ col: 26, text: 'Export Ref.', width: 100, dataIndex: 'expRefNo'}),\r\n XCol.Create({ col: 27, text: 'Commodity', width: 120, dataIndex: 'commodity'}),\r\n XCol.Create({ col: 28, text: 'PKG(s)', width: 80, dataIndex: 'pkgs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 29, text: 'KGS', width: 80, dataIndex: 'kgs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.0', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 30, text: 'LBS', width: 80, dataIndex: 'lbs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 31, text: 'CHRG KGS', width: 80, dataIndex: 'chgKgs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.0', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 32, text: 'CHRG LBS', width: 80, dataIndex: 'chgLbs', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 33, text: 'Sales', width: 80, dataIndex: 'salesperson'}),\r\n \r\n XCol.Create({ col: 36, text: 'INV', width: 35, dataIndex: 'invStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false }),\r\n XCol.Create({ col: 37, text: 'BIL', width: 35, dataIndex: 'billStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false }),\r\n XCol.Create({ col: 38, text: 'CrDb', width: 35, dataIndex: 'crDbStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false }),\r\n \r\n XCol.Create({ col: 39, text: 'Create Date', width: 100, dataIndex: 'u1Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 40, text: 'Create by', width: 100, dataIndex: 'u1ID', visible: false}),\r\n XCol.Create({ col: 41, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 42, text: 'Update by', width: 100, dataIndex: 'u2ID', visible: false}),\r\n\r\n //for use tooltip\r\n XCol.Create({ col: 43, text: '', width: 0, dataIndex: 'shipper', hiddenInColumnSetup: true, visible: false}), \r\n XCol.Create({ col: 44, text: '', width: 0, dataIndex: 'cName', hiddenInColumnSetup: true, visible: false}),\r\n XCol.Create({ col: 45, text: '', width: 0, dataIndex: 'nName', hiddenInColumnSetup: true, visible: false}),\r\n ];\r\n\r\n\r\n public static getExportCollection(useBranch: boolean): XCol.XExportColumn[] {\r\n let returnCloumns = _.cloneDeep(this.ExportCollection);\r\n if (!useBranch) returnCloumns = returnCloumns.filter(x => x.dataIndex !== 'branch');\r\n return returnCloumns;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: AeHblListItem.prototype.u1Date, orderByAscending: false };\r\n\r\n public static formatData(data: AeHblListItem[]) {\r\n return data.map((d: AeHblListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n blDate: {from: 'fromBlDate', to: 'toBlDate'},\r\n etd: {from: 'fromEtd', to: 'toEtd'},\r\n hEtd: {from: 'fromHEtd', to: 'toHEtd'},\r\n eta: {from: 'fromEta', to: 'toEta'},\r\n paidDate: {from: 'fromPaidDate', to: 'toPaidDate'},\r\n pkgs: {from: 'fromPkgs', to: 'toPkgs'},\r\n kgs: {from: 'fromKgs', to: 'toKgs'},\r\n lbs: {from: 'fromLbs', to: 'toLbs'},\r\n chgKgs: {from: 'fromChgKgs', to: 'toChgKgs'},\r\n chgLbs: {from: 'fromChgLbs', to: 'toChgLbs'},\r\n u1Date: {from: 'fromU1Date', to: 'toU1Date'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n confirmDate: {from: 'fromConfirmDate', to: 'toConfirmDate'},\r\n }\r\n\r\n}\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport _ from 'lodash';\r\n\r\nexport class OtherOperationListItem extends SearchModelBase {\r\n id: number = 0;\r\n closed: string = '';\r\n shipmentType: string = '';\r\n invStat: string = '';\r\n billStat: string = '';\r\n crDbStat: string = '';\r\n refNo: string = '';\r\n branch: string = '';\r\n category: string = '';\r\n postDate: string | null = null;\r\n fromPostDate: string | null = null;\r\n toPostDate: string | null = null;\r\n pStatus: string = '';\r\n mblNo: string = '';\r\n hblNo: string = '';\r\n vessel: string = '';\r\n container: string = '';\r\n customerName: string = '';\r\n shipper: string = '';\r\n consignee: string = '';\r\n customerRefNo: string = '';\r\n loadingPort: string = '';\r\n dischargePort: string = '';\r\n finalDestination: string = '';\r\n acctCloseBy: string = '';\r\n acctCloseDate: string | null = null;\r\n pCloseDate: string | null = null;\r\n autoOpCloseBy: string = '';\r\n opCloseBy: string = '';\r\n opCloseDate: string | null = null;\r\n u1ID: string = '';\r\n u1Date: string | null = null;\r\n fromU1Date: string | null = null;\r\n toU1Date: string | null = null;\r\n u2ID: string = '';\r\n u2Date: string | null = null;\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n recognized: string = '';\r\n status: string = '';\r\n agent: number = 0;\r\n agentName: string = '';\r\n salesPerson: string = '';\r\n location: string = '';\r\n commodity: string = '';\r\n pkgs: number = 0;\r\n fromPkgs: number|null = null;\r\n toPkgs: number|null = null;\r\n unit: string = '';\r\n operator: string = '';\r\n paidDate: string = '';\r\n kgs: number = 0;\r\n fromKgs: number|null = null;\r\n toKgs: number|null = null;\r\n lbs: number = 0;\r\n fromLbs: number|null = null;\r\n toLbs: number|null = null;\r\n confirmDate: string | null = null;\r\n fromConfirmDate: string | null = null;\r\n toConfirmDate: string | null = null;\r\n\r\n trType: string = '';\r\n trStatus: string = '';\r\n trStatusDesc: string = '';\r\n trDate: string | null = null;\r\n fromTrDate: string | null = null;\r\n toTrDate: string | null = null;\r\n\r\n //Track Event\r\n lastEvent: string = '';\r\n lastEventDate: string | null = null;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true }),\r\n XCol.Create({ col: 1, text: 'R', width: 30, dataIndex: 'recognized', noNullOrEmptySearch: true, hiddenInColumnSetup: true }),\r\n XCol.Create({ col: 26, text: 'D/ID', width: 35, dataIndex: 'shipmentType', noNullOrEmptySearch: true }),\r\n \r\n XCol.Create({ col: 2, text: 'Ref. #', width: 100, dataIndex: 'refNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 4, text: 'RQ', width: 210, dataIndex: 'trStatus' }),\r\n XCol.Create({ col: 3, text: 'BR', width: 40, dataIndex: 'branch', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 4, text: 'Agent', width: 120, dataIndex: 'agentName', visible: false}),\r\n XCol.Create({ col: 5, text: 'Category', width: 80, dataIndex: 'category'}),\r\n XCol.Create({ col: 6, text: 'Date', width: 75, dataIndex: 'postDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 7, text: 'P', width: 40, dataIndex: 'pStatus', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 8, text: 'Paid', width: 80, dataIndex: 'paidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}), //추가\r\n XCol.Create({ col: 9, text: 'MBL / MAWB', width: 100, dataIndex: 'mblNo'}),\r\n XCol.Create({ col: 10, text: 'HBL / HAWB', width: 100, dataIndex: 'hblNo'}), \r\n XCol.Create({ col: 11, text: 'Vessel & Voy/Flt', width: 120, dataIndex: 'vessel'}),\r\n XCol.Create({ col: 12, text: 'Prep. By', width: 80, dataIndex: 'operator'}), //추가\r\n XCol.Create({ col: 13, text: 'Container', width: 150, dataIndex: 'container'}),\r\n XCol.Create({ col: 14, text: 'PKG(s)', width: 60, dataIndex: 'pkgs', type: XCol.XCellType.Double, noNullOrEmptySearch: true, formatString: '#,##0'}),\r\n XCol.Create({ col: 15, text: 'KGS', width: 60, dataIndex: 'kgs', type: XCol.XCellType.Double, noNullOrEmptySearch: true, formatString: '#,##0.00'}),\r\n XCol.Create({ col: 16, text: 'LBS', width: 60, dataIndex: 'lbs', type: XCol.XCellType.Double, noNullOrEmptySearch: true, formatString: '#,##0.00'}),\r\n XCol.Create({ col: 17, text: 'Customer', width: 120, dataIndex: 'customerName'}),\r\n XCol.Create({ col: 18, text: 'Shipper', width: 120, dataIndex: 'shipper'}),\r\n XCol.Create({ col: 19, text: 'Consignee', width: 120, dataIndex: 'consignee'}),\r\n XCol.Create({ col: 20, text: 'Customer Ref.', width: 100, dataIndex: 'customerRefNo'}),\r\n XCol.Create({ col: 21, text: 'Location', width: 80, dataIndex: 'location'}),\r\n XCol.Create({ col: 22, text: 'Loading Port', width: 120, dataIndex: 'loadingPort'}),\r\n XCol.Create({ col: 23, text: 'Discharge Port', width: 120, dataIndex: 'dischargePort'}),\r\n XCol.Create({ col: 24, text: 'Final Destination', width: 120, dataIndex: 'finalDestination'}),\r\n XCol.Create({ col: 25, text: 'Sales', width: 80, dataIndex: 'salesPerson', visible: false}),\r\n \r\n XCol.Create({ col: 27, text: 'INV', width: 35, dataIndex: 'invStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false }),\r\n XCol.Create({ col: 28, text: 'BIL', width: 35, dataIndex: 'billStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false }),\r\n XCol.Create({ col: 29, text: 'CrDb', width: 35, dataIndex: 'crDbStat', align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false }),\r\n \r\n XCol.Create({ col: 30, text: 'Create Date', width: 100, dataIndex: 'u1Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 31, text: 'Create by', width: 80, dataIndex: 'u1ID' ,visible: false}),\r\n XCol.Create({ col: 32, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 33, text: 'Update by', width: 80, dataIndex: 'u2ID', visible: false}),\r\n \r\n // XCol.Create({ col: 23, text: 'Location', width: 100, dataIndex: 'location', visible: false}),\r\n // XCol.Create({ col: 24, text: 'Commodity', width: 120, dataIndex: 'commodity'}),\r\n // XCol.Create({ col: 26, text: 'Unit', width: 80, dataIndex: 'unit'}),\r\n\r\n ];\r\n\r\n\r\n public static getExportCollection(useBranch: boolean): XCol.XExportColumn[] {\r\n let returnCloumns = _.cloneDeep(this.ExportCollection);\r\n if (!useBranch) returnCloumns = returnCloumns.filter(x => x.dataIndex !== 'branch');\r\n return returnCloumns;\r\n };\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n u1Date: {from: 'fromU1Date', to: 'toU1Date'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n postDate: {from: 'fromPostDate', to: 'toPostDate'},\r\n pkgs: {from: 'fromPkgs', to: 'toPkgs'},\r\n paidDate: {from: 'fromPaidDate', to: 'toPaidDate'},\r\n kgs: {from: 'fromKgs', to: 'toKgs'},\r\n lbs: {from: 'fromLbs', to: 'toLbs'},\r\n confirmDate: {from: 'fromConfirmDate', to: 'toConfirmDate'},\r\n }\r\n\t\r\n public static OrderBy = { orderBy: OtherOperationListItem.prototype.postDate, orderByAscending: false };\r\n}\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeCompanyListItem extends SearchModelBase {\r\n inactive: boolean|null = null;\r\n terms: number|null = null;\r\n toTerms: number|null = null;\r\n fromTerms: number|null = null;\r\n creditLimit: number|null = null;\r\n toCreditLimit: number|null = null;\r\n fromCreditLimit: number|null = null;\r\n shortName: string = '';\r\n phone: string = '';\r\n fax: string = '';\r\n contact: string = '';\r\n creditHold: boolean|null = null;\r\n salesPerson: string = '';\r\n accountNo: string = '';\r\n bondNo: string = '';\r\n iataNo: string = '';\r\n companyRefNo: string = '';\r\n idType: string = '';\r\n taxId: string = '';\r\n groupId: string = '';\r\n fullName: string = '';\r\n address: string = '';\r\n city: string = '';\r\n state: string = '';\r\n zipCode: string = '';\r\n country: string = '';\r\n localName: string = '';\r\n localAddress: string = '';\r\n billTo: string = '';\r\n brokerName: string = '';\r\n csr: string = '';\r\n email: string = '';\r\n createdAt: string | null = null;\r\n fromCreatedAt: string | null = null;\r\n toCreatedAt: string | null = null;\r\n id: number = 0;\r\n u1ID: string = '';\r\n u2ID: string = '';\r\n u2Date: string | null = null;\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex:'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Inactive', width: 60, dataIndex: 'inactive', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 2, text: 'Company Name', width: 200, dataIndex: 'shortName', defaultColumnFocus : true}),\r\n XCol.Create({ col: 3, text: 'Company Ref. #', width: 120, dataIndex: 'companyRefNo', visible: false}),\r\n XCol.Create({ col: 4, text: 'Contact', width: 100, dataIndex: 'contact'}),\r\n XCol.Create({ col: 5, text: 'Email', width: 150, dataIndex: 'email'}),\r\n XCol.Create({ col: 6, text: 'Phone #', width: 80, dataIndex: 'phone'}),\r\n XCol.Create({ col: 7, text: 'CR Term', width: 50, dataIndex: 'terms', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 8, text: 'CR Limit', width: 50, dataIndex: 'creditLimit', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 9, text: 'CR Hold', width: 50, dataIndex: 'creditHold', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 10, text: 'Tax ID Type', width: 100, dataIndex: 'idType', type: XCol.XCellType.String }),\r\n XCol.Create({ col: 11, text: 'Tax ID #', width: 80, dataIndex: 'taxId', type: XCol.XCellType.String }),\r\n XCol.Create({ col: 12, text: 'Bond #', width: 80, dataIndex: 'bondNo'}),\r\n XCol.Create({ col: 13, text: 'IATA #', width: 80, dataIndex: 'iataNo'}),\r\n XCol.Create({ col: 14, text: 'Bank Account #', width: 100, dataIndex: 'accountNo', visible: false}),\r\n XCol.Create({ col: 15, text: 'Salesperson', width: 80, dataIndex: 'salesPerson'}),\r\n XCol.Create({ col: 16, text: 'Cust. SVC Rep', width: 80, dataIndex: 'csr', visible: false}),\r\n XCol.Create({ col: 17, text: 'Broker', width: 80, dataIndex: 'brokerName', visible: false}),\r\n XCol.Create({ col: 18, text: 'Full Name', width: 200, dataIndex: 'fullName'}),\r\n XCol.Create({ col: 19, text: 'Fax #', width: 80, dataIndex: 'fax'}),\r\n XCol.Create({ col: 20, text: 'Address', width: 150, dataIndex: 'address'}),\r\n XCol.Create({ col: 21, text: 'City', width: 80, dataIndex: 'city'}),\r\n XCol.Create({ col: 22, text: 'State', width: 80, dataIndex: 'state'}),\r\n XCol.Create({ col: 23, text: 'Zip', width: 50, dataIndex: 'zipCode'}),\r\n XCol.Create({ col: 24, text: 'Country', width: 50, dataIndex: 'country'}),\r\n XCol.Create({ col: 25, text: 'Local Name', width: 100, dataIndex: 'localName', visible: false}),\r\n XCol.Create({ col: 26, text: 'Local Address', width: 200, dataIndex: 'localAddress', visible: false}),\r\n XCol.Create({ col: 27, text: 'Group', width: 50, dataIndex: 'groupId'}),\r\n XCol.Create({ col: 28, text: 'Bill To', width: 80, dataIndex: 'billTo'}),\r\n XCol.Create({ col: 29, text: 'Create Date', width: 100, dataIndex: 'createdAt', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 30, text: 'Create by', width: 88, dataIndex: 'u1ID'}),\r\n XCol.Create({ col: 31, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 32, text: 'Update by', width: 88, dataIndex: 'u2ID'}),\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeCompanyListItem.prototype.CreatedAt, orderByAscending: false };\r\n\r\n public static formatData(data: CodeCompanyListItem[]) {\r\n return data.map((d: CodeCompanyListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n createdAt: {from: 'fromCreatedAt', to: 'toCreatedAt'},\r\n terms: {from: 'fromTerms', to: 'toTerms'},\r\n creditLimit: {from: 'fromCreditLimit', to: 'toCreditLimit'},\r\n u2Date: { from: 'fromU2Date', to: 'toU2Date'},\r\n }\r\n\r\n}\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport { JobNames } from '../../framework.core/JobNames';\r\n\r\nexport class PimsBookingListItem extends SearchModelBase {\r\n id: number = 0;\r\n fromId: number|null = null;\r\n toId: number|null = null;\r\n downloaded: boolean|null = null;\r\n block: boolean|null = null;\r\n pimsId: string = '';\r\n oAgent: string = '';\r\n dAgent: string = '';\r\n bookingNo: string = '';\r\n mblNo: string = '';\r\n carrierName: string = '';\r\n vesselName: string = '';\r\n voyage: string = '';\r\n loadingPort: string = '';\r\n dischargePort: string = '';\r\n finalDest: string = '';\r\n cutOff: string | null = null;\r\n fromCutOff: string | null = null;\r\n toCutOff: string | null = null;\r\n etd: string | null = null;\r\n fromEtd: string | null = null;\r\n toEtd: string | null = null;\r\n eta: string | null = null;\r\n fromEta: string | null = null;\r\n toEta: string | null = null;\r\n fEta: string | null = null;\r\n fromFEta: string | null = null;\r\n toFEta: string | null = null;\r\n containerNo: string = '';\r\n createdAt: string = '';\r\n\r\n private static AirExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'iPims Ref. #', width: 100, dataIndex: 'id', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 2, text: 'Downloaded', width: 80, dataIndex: 'downloaded', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 3, text: 'Block', width: 60, dataIndex: 'block', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 4, text: 'Origin Agent', width: 100, dataIndex: 'oAgent'}),\r\n XCol.Create({ col: 5, text: 'Dest. Agent', width: 100, dataIndex: 'dAgent'}),\r\n XCol.Create({ col: 6, text: 'Booking #', width: 80, dataIndex: 'bookingNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 7, text: 'MAWB #', width: 100, dataIndex: 'mblNo'}),\r\n XCol.Create({ col: 8, text: 'Carrier Name', width: 120, dataIndex: 'carrierName'}),\r\n XCol.Create({ col: 9, text: 'FLT #', width: 60, dataIndex: 'voyage'}),\r\n XCol.Create({ col: 10, text: 'Loading Port', width: 120, dataIndex: 'loadingPort'}),\r\n XCol.Create({ col: 11, text: 'Discharge Port', width: 120, dataIndex: 'dischargePort'}),\r\n XCol.Create({ col: 12, text: 'Final Destination', width: 120, dataIndex: 'finalDest'}),\r\n XCol.Create({ col: 13, text: 'ETD', width: 75, dataIndex: 'etd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy'}),\r\n XCol.Create({ col: 14, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy'}),\r\n XCol.Create({ col: 15, text: 'Final ETA', width: 75, dataIndex: 'fEta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy'}),\r\n ];\r\n\r\n private static OIExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'iPims Ref. #', width: 100, dataIndex: 'id', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 2, text: 'Downloaded', width: 80, dataIndex: 'downloaded', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 3, text: 'Block', width: 60, dataIndex: 'block', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 4, text: 'Origin Agent', width: 100, dataIndex: 'oAgent'}),\r\n XCol.Create({ col: 5, text: 'Dest. Agent', width: 100, dataIndex: 'dAgent'}),\r\n XCol.Create({ col: 6, text: 'Booking #', width: 80, dataIndex: 'bookingNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 7, text: 'MBL #', width: 100, dataIndex: 'mblNo'}),\r\n XCol.Create({ col: 8, text: 'Vessel Carrier', width: 120, dataIndex: 'carrierName'}),\r\n XCol.Create({ col: 9, text: 'Vessel Name', width: 120, dataIndex: 'vesselName'}),\r\n XCol.Create({ col: 10, text: 'Voyage #', width: 60, dataIndex: 'voyage'}),\r\n XCol.Create({ col: 11, text: 'Loading Port', width: 120, dataIndex: 'loadingPort'}),\r\n XCol.Create({ col: 12, text: 'Discharge Port', width: 120, dataIndex: 'dischargePort'}),\r\n XCol.Create({ col: 13, text: 'Final Destination', width: 120, dataIndex: 'finalDest'}),\r\n XCol.Create({ col: 14, text: 'ETD', width: 75, dataIndex: 'etd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy'}),\r\n XCol.Create({ col: 15, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy'}),\r\n XCol.Create({ col: 16, text: 'Final ETA', width: 75, dataIndex: 'fEta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy'}),\r\n XCol.Create({ col: 17, text: 'Container #', width: 100, dataIndex: 'containerNo'}),\r\n ];\r\n\r\n private static OEExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'iPims Ref. #', width: 100, dataIndex: 'id', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 2, text: 'Downloaded', width: 80, dataIndex: 'downloaded', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 3, text: 'Block', width: 60, dataIndex: 'block', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 4, text: 'Origin Agent', width: 100, dataIndex: 'oAgent'}),\r\n XCol.Create({ col: 5, text: 'Dest. Agent', width: 100, dataIndex: 'dAgent'}),\r\n XCol.Create({ col: 6, text: 'Booking #', width: 80, dataIndex: 'bookingNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 7, text: 'MBL #', width: 100, dataIndex: 'mblNo'}),\r\n XCol.Create({ col: 8, text: 'Vessel Carrier', width: 120, dataIndex: 'carrierName'}),\r\n XCol.Create({ col: 9, text: 'Vessel Name', width: 120, dataIndex: 'vesselName'}),\r\n XCol.Create({ col: 10, text: 'Voyage #', width: 60, dataIndex: 'voyage'}),\r\n XCol.Create({ col: 11, text: 'Loading Port', width: 120, dataIndex: 'loadingPort'}),\r\n XCol.Create({ col: 12, text: 'Discharge Port', width: 120, dataIndex: 'dischargePort'}),\r\n XCol.Create({ col: 13, text: 'Final Destination', width: 120, dataIndex: 'finalDest'}),\r\n XCol.Create({ col: 14, text: 'CUTOFF', width: 75, dataIndex: 'cutOff', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy'}),\r\n XCol.Create({ col: 15, text: 'ETD', width: 75, dataIndex: 'etd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy'}),\r\n XCol.Create({ col: 16, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy'}),\r\n XCol.Create({ col: 17, text: 'Final ETA', width: 75, dataIndex: 'fEta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy'}),\r\n XCol.Create({ col: 18, text: 'Container #', width: 100, dataIndex: 'containerNo'}),\r\n ];\r\n\r\n public static getExportCollection(jobName: JobNames.OIMPims | JobNames.OIMMyPims | JobNames.OEMPims | JobNames.OEMMyPims |\r\n JobNames.AIMPims | JobNames.AIMMyPims | JobNames.AEMPims | JobNames.AEMMyPims): XCol.XExportColumn[] {\r\n switch (jobName) {\r\n case JobNames.AIMPims:\r\n case JobNames.AIMMyPims:\r\n case JobNames.AEMPims:\r\n case JobNames.AEMMyPims:\r\n return this.AirExportCollection;\r\n case JobNames.OIMPims:\r\n case JobNames.OIMMyPims:\r\n return this.OIExportCollection;\r\n case JobNames.OEMPims:\r\n case JobNames.OEMMyPims:\r\n return this.OEExportCollection;\r\n }\r\n };\r\n\t\r\n public static OrderBy = { orderBy: PimsBookingListItem.prototype.id, orderByAscending: false };\r\n\r\n public static formatData(data: PimsBookingListItem[]) {\r\n return data.map((d: PimsBookingListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n id: {from: 'fromId', to: 'toId'},\r\n cutOff: {from: 'fromCutOff', to: 'toCutOff'},\r\n etd: {from: 'fromEtd', to: 'toEtd'},\r\n eta: {from: 'fromEta', to: 'toEta'},\r\n fEta: {from: 'fromFEta', to: 'fromFEta'},\r\n }\r\n}\r\n","import { SearchModelBase } from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport { JobNames } from '../../framework.core/JobNames';\r\n\r\nexport class PimsVanningListItem extends SearchModelBase {\r\n id: number = 0;\r\n fromId: number | null = null;\r\n toId: number | null = null;\r\n downloaded: boolean | null = null;\r\n block: boolean | null = null;\r\n pimsId: string = '';\r\n bookingId: number = 0;\r\n hblNo: string = '';\r\n importer: string = '';\r\n bookingNo: string = '';\r\n mblNo: string = '';\r\n carrierName: string = '';\r\n vesselName: string = '';\r\n voyage: string = '';\r\n loadingPort: string = '';\r\n dischargePort: string = '';\r\n finalDest: string = '';\r\n cutOff: string | null = null;\r\n fromCutOff: string | null = null;\r\n toCutOff: string | null = null;\r\n etd: string | null = null;\r\n fromEtd: string | null = null;\r\n toEtd: string | null = null;\r\n eta: string | null = null;\r\n fromEta: string | null = null;\r\n toEta: string | null = null;\r\n fEta: string | null = null;\r\n fromFEta: string | null = null;\r\n toFEta: string | null = null;\r\n createdAt: string = '';\r\n status: string = '';\r\n pimsID1: string = '';\r\n pimsID2: string = '';\r\n pimsID3: string = '';\r\n pimsUserID: string = '';\r\n isAir: boolean = false;\r\n isOcean: boolean = false;\r\n isImport: boolean = false;\r\n isExport: boolean = false;\r\n isMy: boolean = false;\r\n isAll: boolean = false;\r\n\r\n private static AirExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true }),\r\n XCol.Create({ col: 1, text: 'iPims Ref. #', width: 100, dataIndex: 'id', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 2, text: 'Downloaded', width: 80, dataIndex: 'downloaded', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 3, text: 'Block', width: 60, dataIndex: 'block', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 4, text: 'HAWB #', width: 100, dataIndex: 'hblNo', defaultColumnFocus : true }),\r\n XCol.Create({ col: 5, text: 'Importer', width: 100, dataIndex: 'importer' }),\r\n XCol.Create({ col: 6, text: 'Booking #', width: 80, dataIndex: 'bookingNo' }),\r\n XCol.Create({ col: 7, text: 'MAWB #', width: 100, dataIndex: 'mblNo' }),\r\n XCol.Create({ col: 8, text: 'Carrier Name', width: 120, dataIndex: 'carrierName' }),\r\n XCol.Create({ col: 9, text: 'FLT #', width: 60, dataIndex: 'voyage' }),\r\n XCol.Create({ col: 10, text: 'Loading Port', width: 120, dataIndex: 'loadingPort' }),\r\n XCol.Create({ col: 11, text: 'Discharge Port', width: 120, dataIndex: 'dischargePort' }),\r\n XCol.Create({ col: 12, text: 'Final Destination', width: 120, dataIndex: 'finalDest' }),\r\n XCol.Create({ col: 13, text: 'ETD', width: 75, dataIndex: 'etd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy' }),\r\n XCol.Create({ col: 14, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy' }),\r\n XCol.Create({ col: 15, text: 'Final ETA', width: 75, dataIndex: 'fEta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy' }),\r\n ];\r\n\r\n private static OIExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true }),\r\n XCol.Create({ col: 1, text: 'iPims Ref. #', width: 100, dataIndex: 'id', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 2, text: 'Downloaded', width: 80, dataIndex: 'downloaded', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 3, text: 'Block', width: 60, dataIndex: 'block', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 4, text: 'HBL #', width: 100, dataIndex: 'hblNo', defaultColumnFocus : true }),\r\n XCol.Create({ col: 5, text: 'Importer', width: 100, dataIndex: 'importer' }),\r\n XCol.Create({ col: 6, text: 'Booking #', width: 80, dataIndex: 'bookingNo' }),\r\n XCol.Create({ col: 7, text: 'MBL #', width: 100, dataIndex: 'mblNo' }),\r\n XCol.Create({ col: 8, text: 'Vessel Carrier', width: 120, dataIndex: 'carrierName' }),\r\n XCol.Create({ col: 9, text: 'Vessel Name', width: 120, dataIndex: 'vesselName' }),\r\n XCol.Create({ col: 10, text: 'Voyage #', width: 60, dataIndex: 'voyage' }),\r\n XCol.Create({ col: 11, text: 'Loading Port', width: 120, dataIndex: 'loadingPort' }),\r\n XCol.Create({ col: 12, text: 'Discharge Port', width: 120, dataIndex: 'dischargePort' }),\r\n XCol.Create({ col: 13, text: 'Final Destination', width: 120, dataIndex: 'finalDest' }),\r\n XCol.Create({ col: 14, text: 'ETD', width: 75, dataIndex: 'etd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy' }),\r\n XCol.Create({ col: 15, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy' }),\r\n XCol.Create({ col: 16, text: 'Final ETA', width: 75, dataIndex: 'fEta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy' }),\r\n ];\r\n\r\n private static OEExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true }),\r\n XCol.Create({ col: 1, text: 'iPims Ref. #', width: 100, dataIndex: 'id', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 2, text: 'Downloaded', width: 80, dataIndex: 'downloaded', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 3, text: 'Block', width: 60, dataIndex: 'block', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 4, text: 'HBL #', width: 100, dataIndex: 'hblNo', defaultColumnFocus : true }),\r\n XCol.Create({ col: 5, text: 'Importer', width: 100, dataIndex: 'importer' }),\r\n XCol.Create({ col: 6, text: 'Booking #', width: 80, dataIndex: 'bookingNo' }),\r\n XCol.Create({ col: 7, text: 'MBL #', width: 100, dataIndex: 'mblNo' }),\r\n XCol.Create({ col: 8, text: 'Vessel Carrier', width: 120, dataIndex: 'carrierName' }),\r\n XCol.Create({ col: 9, text: 'Vessel Name', width: 120, dataIndex: 'vesselName' }),\r\n XCol.Create({ col: 10, text: 'Voyage #', width: 60, dataIndex: 'voyage' }),\r\n XCol.Create({ col: 11, text: 'Loading Port', width: 120, dataIndex: 'loadingPort' }),\r\n XCol.Create({ col: 12, text: 'Discharge Port', width: 120, dataIndex: 'dischargePort' }),\r\n XCol.Create({ col: 13, text: 'Final Destination', width: 120, dataIndex: 'finalDest' }),\r\n XCol.Create({ col: 14, text: 'CUTOFF', width: 75, dataIndex: 'cutOff', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy' }),\r\n XCol.Create({ col: 15, text: 'ETD', width: 75, dataIndex: 'etd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy' }),\r\n XCol.Create({ col: 16, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy' }),\r\n XCol.Create({ col: 17, text: 'Final ETA', width: 75, dataIndex: 'fEta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, formatString: 'MM/dd/yyyy' }),\r\n ];\r\n\r\n public static getExportCollection(jobName: JobNames.OIHPims | JobNames.OIHMyPims | JobNames.OEHPims | JobNames.OEHMyPims |\r\n JobNames.AIHPims | JobNames.AIHMyPims | JobNames.AEHPims | JobNames.AEHMyPims): XCol.XExportColumn[] {\r\n switch (jobName) {\r\n case JobNames.AIHPims:\r\n case JobNames.AIHMyPims:\r\n case JobNames.AEHPims:\r\n case JobNames.AEHMyPims:\r\n return this.AirExportCollection;\r\n case JobNames.OIHPims:\r\n case JobNames.OIHMyPims:\r\n return this.OIExportCollection;\r\n case JobNames.OEHPims:\r\n case JobNames.OEHMyPims:\r\n return this.OEExportCollection;\r\n }\r\n };\r\n\r\n public static OrderBy = { orderBy: PimsVanningListItem.prototype.id, orderByAscending: false };\r\n\r\n public static formatData(data: PimsVanningListItem[]) {\r\n return data.map((d: PimsVanningListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: { [key: string]: { [key: string]: string } } = {\r\n id: { from: 'fromId', to: 'toId' },\r\n cutOff: { from: 'fromCutOff', to: 'toCutOff' },\r\n etd: { from: 'fromEtd', to: 'toEtd' },\r\n eta: { from: 'fromEta', to: 'toEta' },\r\n fEta: { from: 'fromFEta', to: 'fromFEta' },\r\n }\r\n}\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class BillPaymentListItem extends SearchModelBase {\r\n postDate: string | null = null;\r\n fromPostDate: string | null = null;\r\n toPostDate: string | null = null;\r\n etfStr: string = '';\r\n checkNo: string = '';\r\n vendor: string = '';\r\n paidTo: string = '';\r\n invoiceNo: string = '';\r\n currency: string = '';\r\n totalAmt: number|null = null;\r\n fromTotalAmt: number|null = null;\r\n toTotalAmt: number|null = null;\r\n bankName: string = '';\r\n depositDate: string | null = null;\r\n fromDepositDate: string | null = null;\r\n toDepositDate: string | null = null;\r\n isDraft: boolean|null = null;\r\n void: boolean|null = null;\r\n voidDate: string | null = null;\r\n fromVoidDate: string | null = null;\r\n toVoidDate: string | null = null;\r\n chkPrint: boolean|null = null;\r\n block: boolean|null = null;\r\n remark: string = '';\r\n u1ID: string = '';\r\n id: number = 0;\r\n paidToId: number = 0;\r\n u1Date: string | null = null;\r\n fromU1Date: string | null = null;\r\n toU1Date: string | null = null;\r\n u2ID: string = '';\r\n u2Date: string | null = null;\r\n status: string = '';\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n chkPrtID: string = '';\r\n chkPrtDate: string | null = null;\r\n vendorId: number = 0;\r\n firstVendor: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Draft', width: 40, dataIndex: 'isDraft', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 2, text: 'Block', width: 40, dataIndex: 'block', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 3, text: 'Date', width: 75, dataIndex: 'postDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 4, text: 'Vendor', width: 150, dataIndex: 'vendor', defaultColumnFocus : true}),\r\n XCol.Create({ col: 5, text: 'Pay To', width: 150, dataIndex: 'paidTo'}),\r\n XCol.Create({ col: 6, text: 'Type', width: 40, dataIndex: 'etfStr', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 7, text: 'Check #', width: 100, dataIndex: 'checkNo'}),\r\n XCol.Create({ col: 8, text: 'Bank', width: 120, dataIndex: 'bankName'}),\r\n XCol.Create({ col: 9, text: 'CUR', width: 40, dataIndex: 'currency'}),\r\n XCol.Create({ col: 10, text: 'Amount', width: 100, dataIndex: 'totalAmt', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 11, text: 'Clear Date', width: 75, dataIndex: 'depositDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 12, text: 'Void', width: 40, dataIndex: 'void', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n // XCol.Create({ col: 13, text: 'Void Date', width: 75, dataIndex: 'voidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 14, text: 'Print', width: 40, dataIndex: 'chkPrint', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 15, text: 'Billings', width: 100, dataIndex: 'invoiceNo'}),\r\n XCol.Create({ col: 16, text: 'Remark', width: 150, dataIndex: 'remark'}),\r\n XCol.Create({ col: 17, text: 'Create Date', width: 100, dataIndex: 'u1Date', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 18, text: 'Create by', width: 100, dataIndex: 'u1ID'}),\r\n XCol.Create({ col: 19, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 20, text: 'Update by', width: 100, dataIndex: 'u2ID'}),\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: BillPaymentListItem.prototype.postDate, orderByAscending: false };\r\n\r\n public static formatData(data: BillPaymentListItem[]) {\r\n return data.map((d: BillPaymentListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n \r\n public static MapSearchFields:{[key: string]: {[key: string]: string}} = {\r\n postDate: {from: 'fromPostDate', to: 'toPostDate'},\r\n depositDate: {from: 'fromDepositDate', to: 'toDepositDate'},\r\n voidDate: {from: 'fromVoidDate', to: 'toVoidDate'},\r\n u1Date: {from: 'fromU1Date', to: 'toU1Date'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n totalAmt: {from: 'fromTotalAmt', to: 'toTotalAmt'},\r\n }\r\n}\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport { JobNames } from '../../framework.core/JobNames';\r\nimport _ from 'lodash';\r\n\r\nexport class CrDbListItem extends SearchModelBase {\r\n invoiceDate: string | null = null;\r\n fromInvoiceDate: string | null = null;\r\n toInvoiceDate: string | null = null;\r\n crDbNo: string = '';\r\n agent: string = '';\r\n branch: string = '';\r\n etd: string | null = null;\r\n fromETD: string | null = null;\r\n toETD: string | null = null;\r\n eta: string | null = null;\r\n fromETA: string | null = null;\r\n toETA: string | null = null;\r\n currency: string = '';\r\n total: number|null = null;\r\n fromTotal: number|null = null;\r\n toTotal: number|null = null;\r\n paidAmt: number|null = null;\r\n fromPaidAmt: number|null = null;\r\n toPaidAmt: number|null = null;\r\n balance: number|null = null;\r\n fromBalance: number|null = null;\r\n toBalance: number|null = null;\r\n dutyAmount: number|null = null;\r\n fromDutyAmount: number|null = null;\r\n toDutyAmount: number|null = null;\r\n checkNo: string = '';\r\n paidDate: string | null = null;\r\n fromPaidDate: string | null = null;\r\n toPaidDate: string | null = null;\r\n lastClearDate: string | null = null;\r\n fromLastClearDate: string | null = null;\r\n toLastClearDate: string | null = null;\r\n blNo: string = '';\r\n refNo: string = '';\r\n yourRef: string = '';\r\n sRefNo: string = '';\r\n jobType: string = '';\r\n createBy: string = '';\r\n tbName: string = '';\r\n tbId: number = 0;\r\n id: number = 0;\r\n u1Date: string | null = null;\r\n u2ID: string = '';\r\n u2Date: string | null = null;\r\n postDate: string | null = null;\r\n period: string = '';\r\n settled : boolean = false;\r\n draftPaid: boolean = false;\r\n \r\n // cloud\r\n status: string = '';\r\n recognized: string = '';\r\n draft: boolean = false;\r\n mblNo: string = '';\r\n hblNo: string = '';\r\n fromU1Date: string | null = null;\r\n toU1Date: string | null = null;\r\n fromU2Date: string | null = null;\r\n toU2Date: string | null = null;\r\n agentId: number = 0;\r\n creditTotal: number|null = null;\r\n toCreditTotal: number|null = null;\r\n fromCreditTotal: number|null = null;\r\n debitTotal: number|null = null\r\n toDebitTotal: number|null = null\r\n fromDebitTotal: number|null = null\r\n\r\n private static CrDbExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'R', width: 35, dataIndex: 'recognized', noNullOrEmptySearch: true, hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 2, text: 'Draft', width: 30, dataIndex: 'draft', type: XCol.XCellType.Bool, noNullOrEmptySearch: true, hiddenInColumnSetup: true}),\r\n // XCol.Create({ col: 3, text: 'Void', width: 35, dataIndex: 'void', type: XCol.XCellType.StrBool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 3, text: 'Date', width: 75, dataIndex: 'invoiceDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 4, text: 'Crdb #', width: 100, dataIndex: 'crDbNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 5, text: 'BR', width: 40, dataIndex: 'branch', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 6, text: 'Agent', width: 150, dataIndex: 'agent'}),\r\n XCol.Create({ col: 7, text: 'Agent Ref. #', width: 100, dataIndex: 'yourRef', visible: false}),\r\n XCol.Create({ col: 8, text: 'CUR', width: 40, dataIndex: 'currency', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 9, text: 'Debit Amount', width: 100, dataIndex: 'debitTotal', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true, visible: false }),\r\n XCol.Create({ col: 10, text: 'Credit Amount', width: 100, dataIndex: 'creditTotal', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true, visible: false }),\r\n XCol.Create({ col: 11, text: 'Amount', width: 100, dataIndex: 'total', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 12, text: 'Paid', width: 100, dataIndex: 'paidAmt', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 13, text: 'Balance', width: 100, dataIndex: 'balance', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 14, text: 'Confirmed', width: 60, dataIndex: 'settled', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 15, text: 'Duty Amount', width: 100, dataIndex: 'dutyAmount', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00'}),\r\n XCol.Create({ col: 16, text: 'Draft Paid', width: 60, dataIndex: 'draftPaid', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: false}),\r\n XCol.Create({ col: 17, text: 'Check #', width: 80, dataIndex: 'checkNo'}),\r\n XCol.Create({ col: 18, text: 'Paid Date', width: 75, dataIndex: 'paidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 19, text: 'Clear Date', width: 75, dataIndex: 'lastClearDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 20, text: 'ETD', width: 75, dataIndex: 'etd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 21, text: 'ETA', width: 75, dataIndex: 'eta', type: XCol.XCellType.Date, align: XCol.XAlignType.Center, visible: false}),\r\n XCol.Create({ col: 22, text: 'Type', width: 40, dataIndex: 'jobType', align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 23, text: 'Ref. #', width: 100, dataIndex: 'refNo'}),\r\n XCol.Create({ col: 24, text: 'MBL/MAWB #', width: 100, dataIndex: 'mblNo'}),\r\n XCol.Create({ col: 25, text: 'HBL/HAWB #', width: 100, dataIndex: 'hblNo'}),\r\n XCol.Create({ col: 26, text: 'Create Date', width: 100, dataIndex: 'u1Date', type: XCol.XCellType.DateTime}),\r\n XCol.Create({ col: 27, text: 'Create by', width: 80, dataIndex: 'createBy'}),\r\n XCol.Create({ col: 28, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime}),\r\n XCol.Create({ col: 29, text: 'Update by', width: 80, dataIndex: 'u2ID'}),\r\n ];\r\n\r\n private static WHCrDbExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'S', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n // XCol.Create({ col: 1, text: 'R', width: 35, dataIndex: 'recognized', noNullOrEmptySearch: true, hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 2, text: 'Draft', width: 30, dataIndex: 'draft', type: XCol.XCellType.Bool, noNullOrEmptySearch: true, hiddenInColumnSetup: true}),\r\n // XCol.Create({ col: 3, text: 'Void', width: 35, dataIndex: 'void', type: XCol.XCellType.StrBool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true, visible: false}),\r\n XCol.Create({ col: 4, text: 'P', width: 35, dataIndex: 'period', align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 5, text: 'Date', width: 70, dataIndex: 'invoiceDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 6, text: 'CrDb #', width: 100, dataIndex: 'crDbNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 7, text: 'Agent', width: 150, dataIndex: 'agent'}),\r\n XCol.Create({ col: 8, text: 'Agent Ref. #', width: 100, dataIndex: 'yourRef'}),\r\n XCol.Create({ col: 9, text: 'CUR', width: 40, dataIndex: 'currency'}),\r\n XCol.Create({ col: 10, text: 'Debit Amount', width: 120, dataIndex: 'debitTotal', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', visible: false}),\r\n XCol.Create({ col: 11, text: 'Credit Amount', width: 120, dataIndex: 'creditTotal', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', visible: false}),\r\n XCol.Create({ col: 12, text: 'Amount', width: 100, dataIndex: 'total', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00'}),\r\n XCol.Create({ col: 13, text: 'Paid', width: 100, dataIndex: 'paidAmt', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00'}),\r\n XCol.Create({ col: 14, text: 'Balance', width: 100, dataIndex: 'balance', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00'}),\r\n XCol.Create({ col: 15, text: 'Confirmed', width: 60, dataIndex: 'settled', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 16, text: 'Draft Paid', width: 60, dataIndex: 'draftPaid', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: false}),\r\n XCol.Create({ col: 17, text: 'Check #', width: 100, dataIndex: 'checkNo'}),\r\n XCol.Create({ col: 18, text: 'Paid Date', width: 75, dataIndex: 'paidDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 19, text: 'Clear Date', width: 75, dataIndex: 'lastClearDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 20, text: 'Type', width: 60, dataIndex: 'jobType', align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 21, text: 'Receiving/Shipping ID', width: 140, dataIndex: 'refNo', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 22, text: 'Create Date', width: 100, dataIndex: 'u1Date', type: XCol.XCellType.DateTime}),\r\n XCol.Create({ col: 23, text: 'Create by', width: 80, dataIndex: 'createBy'}),\r\n XCol.Create({ col: 24, text: 'Update Date', width: 100, dataIndex: 'u2Date', type: XCol.XCellType.DateTime}),\r\n XCol.Create({ col: 25, text: 'Update by', width: 80, dataIndex: 'u2ID'}),\r\n ];\r\n\r\n\r\n public static getExportCollection(jobName: JobNames, useBranch: boolean): XCol.XExportColumn[] {\r\n let returnCloumns;\r\n switch (jobName) {\r\n case JobNames.CrDb:\r\n returnCloumns = _.cloneDeep(this.CrDbExportCollection)\r\n break;\r\n case JobNames.WHCrDb:\r\n returnCloumns = _.cloneDeep(this.WHCrDbExportCollection)\r\n break;\r\n default:\r\n returnCloumns = _.cloneDeep(this.CrDbExportCollection)\r\n break;\r\n }\r\n\r\n if (!useBranch) returnCloumns = returnCloumns.filter(x => x.dataIndex !== 'branch');\r\n return returnCloumns;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CrDbListItem.prototype.postDate, orderByAscending: false };\r\n\r\n public static formatData(data: CrDbListItem[]) {\r\n return data.map((d: CrDbListItem) => ({\r\n ...d\r\n }));\r\n }\r\n\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n invoiceDate: {from: 'fromInvoiceDate', to: 'toInvoiceDate'},\r\n etd: {from: 'fromETD', to: 'toETD'},\r\n eta: {from: 'fromETA', to: 'toETA'},\r\n total: {from: 'fromTotal', to: 'toTotal'},\r\n paidAmt: {from: 'fromPaidAmt', to: 'toPaidAmt'},\r\n balance: {from: 'fromBalance', to: 'toBalance'},\r\n dutyAmount: {from: 'fromDutyAmount', to: 'toDutyAmount'},\r\n paidDate: {from: 'fromPaidDate', to: 'toPaidDate'},\r\n lastClearDate: {from: 'fromLastClearDate', to: 'toLastClearDate'},\r\n u1Date: {from: 'fromU1Date', to: 'toU1Date'},\r\n u2Date: {from: 'fromU2Date', to: 'toU2Date'},\r\n creditTotal: {from: 'fromCreditTotal', to: 'toCreditTotal'},\r\n debitTotal: {from: 'fromDebitTotal', to: 'toDebitTotal'},\r\n };\r\n}\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\nimport _ from 'lodash';\r\n\r\nexport class IsfListItem extends SearchModelBase {\r\n userId: string = '';\r\n status: string = '';\r\n disp: string = '';\r\n lastAction: string = '';\r\n isfNo: string = '';\r\n shipmentId: string = '';\r\n impName: string = '';\r\n impNo: string = '';\r\n hblNo: string = '';\r\n tariffNo: string = '';\r\n branch: string = '';\r\n etd: string | null = null;\r\n fromEtd: string | null = null;\r\n toEtd: string | null = null;\r\n isfDate: string | null = null;\r\n fromIsfDate: string | null = null;\r\n toIsfDate: string | null = null;\r\n bondHolder: string = '';\r\n createdBy: string = '';\r\n createDate: string | null = null;\r\n fromCreateDate: string | null = null;\r\n toCreateDate: string | null = null;\r\n modifiedBy: string = '';\r\n modifyDate: string | null = null;\r\n fromModifyDate: string | null = null;\r\n toModifyDate: string | null = null;\r\n id: number = 0;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'stat', hiddenInColumnSetup: true, filterable: false }),\r\n XCol.Create({ col: 1, text: 'User ID', width: 80, dataIndex: 'userId'}),\r\n XCol.Create({ col: 2, text: 'Status', width: 200, dataIndex: 'status'}),\r\n XCol.Create({ col: 3, text: 'BR', width: 40, dataIndex: 'branch'}),\r\n XCol.Create({ col: 4, text: 'Disp', width: 60, dataIndex: 'disp'}),\r\n XCol.Create({ col: 5, text: 'Last Action', width: 100, dataIndex: 'lastAction'}),\r\n XCol.Create({ col: 6, text: 'ISF #', width: 100, dataIndex: 'isfNo', defaultColumnFocus : true}),\r\n XCol.Create({ col: 7, text: 'Shipment ID', width: 100, dataIndex: 'shipmentId'}),\r\n XCol.Create({ col: 8, text: 'Importer Name', width: 150, dataIndex: 'impName'}),\r\n XCol.Create({ col: 9, text: 'Importer #', width: 100, dataIndex: 'impNo'}),\r\n XCol.Create({ col: 10, text: 'HBL #', width: 100, dataIndex: 'hblNo'}),\r\n XCol.Create({ col: 11, text: 'HTS Code', width: 100, dataIndex: 'tariffNo'}),\r\n XCol.Create({ col: 12, text: 'ETD', width: 75, dataIndex: 'etd', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 13, text: 'ISF Date', width: 75, dataIndex: 'isfDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 14, text: 'Bond Holder', width: 150, dataIndex: 'bondHolder'}),\r\n XCol.Create({ col: 15, text: 'Create by', width: 150, dataIndex: 'createdBy'}), \r\n ];\r\n\r\n\r\n public static getExportCollection(useBranch: boolean): XCol.XExportColumn[] {\r\n let returnCloumns = _.cloneDeep(this.ExportCollection);\r\n if (!useBranch) returnCloumns = returnCloumns.filter(x => x.dataIndex !== 'branch');\r\n return returnCloumns;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: IsfListItem.prototype.id, orderByAscending: false };\r\n\r\n public static formatData(data: IsfListItem[]) {\r\n return data.map((d: IsfListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n etd: {from: 'fromEtd', to: 'toEtd'},\r\n isfDate: {from: 'fromIsfDate', to: 'toIsfDate'},\r\n modifyDate: {from: 'fromModifyDate', to: 'toModifyDate'},\r\n }\r\n}\r\n","import React from 'react';\r\nimport { IfmsRoute } from '../../../config/types';\r\n\r\nconst Home = React.lazy(() => import('../Home'));\r\nexport const AeMawbView = React.lazy(() => import('../mawb/AeMawbView'));\r\nexport const AeHawbView = React.lazy(() => import('../hawb/AeHawbView'));\r\nconst AeQuotationView = React.lazy(() => import(\"../quotation/AeQuotationView\"));\r\nconst AeMawbBillingsView = React.lazy(() => import('../mawb/AeMBillingsView'));\r\nconst AeHawbBillingsView = React.lazy(() => import('../hawb/AeHBillingsView'));\r\nconst AesFilingView = React.lazy(() => import('../../reports/AesFilingView')); //\r\nconst CorrectionNoticeView = React.lazy(() => import('../../reports/CorrectionNoticeView')); //\r\nconst PickupDeliveryView = React.lazy(() => import('../../reports/PickupDeliveryView')); //\r\nconst AemPrintMawbView = React.lazy(() => import('../../reports/PrintView'));\r\nconst AemBatchPrintView = React.lazy(() => import('../mawb/more/BatchPrintView'));\r\nconst AgentDocumentView = React.lazy(() => import('../../reports/AgentDocumentPackageView'));\r\nconst CargoManifestView = React.lazy(() => import('../../reports/CargoManifestView'));\r\nconst AirLabelView = React.lazy(() => import('../../reports/AirLabelView'));\r\nconst PouchAirLabelView = React.lazy(() => import('../mawb/more/PouchAirLabelView'));\r\nconst CertificationOriginView = React.lazy(() => import('../../reports/CertificateOfOriginView'));\r\nconst MemoListView = React.lazy(() => import('../../reports/MemoListView')); //\r\nconst ShippingAdviceView = React.lazy(() => import('../../reports/ShippingAdviceView'));\r\nconst TransferManifestView = React.lazy(() => import('../mawb/more/TransferManifestView'));\r\nconst SendBLtoPatnerView = React.lazy(() => import('../../reports/SendBlView'));\r\nconst DocumentView = React.lazy(() => import('../../reports/DocumentPackageView'));\r\nconst CommercialInvoiceView = React.lazy(() => import('../../reports/CommercialInvoiceView'));\r\nconst AemPrintHawbView = React.lazy(() => import('../../reports/PrintView'));\r\nconst BankDraftView = React.lazy(() => import('../../reports/BankDraftView'));\r\nconst PackageLabelView = React.lazy(() => import('../../reports/PackageLabelView')); //\r\nconst PackingListView = React.lazy(() => import('../../reports/CommercialInvoiceView'));\r\nconst StraightBlView = React.lazy(() => import('../../reports/StraightBlView')); //\r\nconst FolderLabelView = React.lazy(() => import('../../reports/FolderLabelView'));\r\nconst ProfitAndVolumeSummaryView = React.lazy(() => import('../../common/reports/ProfitAndVolumeSummaryView'));\r\nconst DownloadView = React.lazy(() => import('../../common/DownloadView'));\r\n\r\nconst routes: Array = [\r\n { path: '/airExport/home', component: Home },\r\n { path: '/airExport/mawb/:mode/:id?/:tabIndex?/:createEntity?', component: AeMawbView },\r\n { path: '/airExport/hawb/:mode/:id?/:tabIndex?/:createEntity?', component: AeHawbView },\r\n { path: '/airExport/quotation/:mode/:id?', component: AeQuotationView },\r\n { path: '/airExport/viewBillings/mawb/:id?', component: AeMawbBillingsView },\r\n { path: '/airExport/viewBillings/hawb/:id?', component: AeHawbBillingsView },\r\n\r\n //AEM MoreMenu\r\n { path: '/airExport/aesFiling', component: AesFilingView },\r\n { path: '/airExport/correctionNotice', component: CorrectionNoticeView },\r\n { path: '/airExport/pickupDelivery', component: PickupDeliveryView },\r\n { path: '/airExport/aemPrintMawb', component: AemPrintMawbView },\r\n { path: '/airExport/aemBatchPrint', component: AemBatchPrintView },\r\n { path: '/airExport/agentDocument', component: AgentDocumentView },\r\n { path: '/airExport/cargoManifest', component: CargoManifestView },\r\n { path: '/airExport/airLabel', component: AirLabelView },\r\n { path: '/airExport/pouchAirLabel', component: PouchAirLabelView },\r\n { path: '/airExport/certificationOrigin', component: CertificationOriginView },\r\n { path: '/airExport/memoList', component: MemoListView },\r\n { path: '/airExport/shippingAdvice', component: ShippingAdviceView },\r\n { path: '/airExport/transferManifest', component: TransferManifestView },\r\n { path: '/airExport/sendBLtoPatner', component: SendBLtoPatnerView },\r\n { path: '/airExport/estProfit', component: ProfitAndVolumeSummaryView },\r\n { path: '/airExport/folderLabel', component: FolderLabelView },\r\n\r\n //AEH MoreMenu\r\n { path: '/airExport/aesFiling', component: AesFilingView },\r\n { path: '/airExport/correctionNotice', component: CorrectionNoticeView },\r\n { path: '/airExport/pickupDelivery', component: PickupDeliveryView },\r\n { path: '/airExport/aemPrintHawb', component: AemPrintHawbView },\r\n { path: '/airExport/airLabel', component: AirLabelView },\r\n { path: '/airExport/bankDraft', component: BankDraftView },\r\n { path: '/airExport/certificationOrigin', component: CertificationOriginView },\r\n { path: '/airExport/documentPackage', component: DocumentView },\r\n { path: '/airExport/commercialInvoice', component: CommercialInvoiceView },\r\n { path: '/airExport/memoList', component: MemoListView },\r\n { path: '/airExport/memoCustomerList', component: MemoListView },\r\n { path: '/airExport/packageLabel', component: PackageLabelView },\r\n { path: '/airExport/packingList', component: PackingListView },\r\n { path: '/airExport/shippingAdvice', component: ShippingAdviceView },\r\n { path: '/airExport/straightBl', component: StraightBlView },\r\n\r\n //Download\r\n { path: '/airExport/download/:jobName?/:id?', component: DownloadView },\r\n];\r\nexport default routes;\r\n","import React from 'react';\r\nimport {IfmsRoute} from '../../../config/types';\r\n\r\n\r\nconst Home = React.lazy(() => import('../Home'));\r\nexport const AiMawbView = React.lazy(() => import('../mawb/AiMawbView'));\r\nexport const AiHawbView = React.lazy(() => import('../hawb/AiHawbView'));\r\nconst AiQuotationView = React.lazy(() => import('../../airExport/quotation/AeQuotationView'));\r\nconst AiMawbBillingsView = React.lazy(() => import('../mawb/AiMBillingsView'));\r\nconst AiHawbBillingsView = React.lazy(() => import('../hawb/AiHBillingsView'));\r\nconst MblArrivalNoticeView = React.lazy(() => import('../../reports/MblArrivalNoticeView'));\r\nconst CorrectionNoticeView = React.lazy(() => import('../../reports/CorrectionNoticeView'));\r\nconst IRC225View = React.lazy(() => import('../../reports/IRC225View'));\r\nconst HblArrivalNoticeView = React.lazy(() => import('../../reports/HblArrivalNoticeView'));\r\nconst DeliveryOrderView = React.lazy(() => import('../../reports/DeliveryOrderView'));\r\nconst ItTeNoticeView = React.lazy(() => import ('../../reports/ItTeNoticeView'));\r\nconst PackageLabelView = React.lazy(() => import('../../reports/PackageLabelView'));\r\nconst PreliminaryClaimNoticeView = React.lazy(() => import('../../reports/PreliminaryClaimNoticeView'));\r\nconst ProofOfDeliveryView = React.lazy(() => import('../../reports/ProofOfDeliveryView'));\r\nconst ReleaseOrderTurnoverView = React.lazy(() => import('../../reports/ReleaseOrderTurnoverView'));\r\nconst StraightBlView = React.lazy(() => import('../../reports/StraightBlView'));\r\nconst MemoListView = React.lazy(() => import('../../reports/MemoListView'));\r\nconst CargoManifestStatusView = React.lazy(() => import('../../reports/CargoManifestStatusView'));\r\nconst PickupDeliveryView = React.lazy(() => import('../../reports/PickupDeliveryView'));\r\nconst ProfitAndVolumeSummaryView = React.lazy(() => import('../../common/reports/ProfitAndVolumeSummaryView')); \r\nconst PreAlertView = React.lazy(() => import('../reports/PreAlertView'));\r\nconst FolderLabelView = React.lazy(() => import('../../reports/FolderLabelView'));\r\nconst DownloadView = React.lazy(() => import('../../common/DownloadView'));\r\n\r\nconst routes: Array = [\r\n { path: '/airImport/home', component: Home },\r\n { path: '/airImport/mawb/:mode/:id?/:tabIndex?/:createEntity?', component: AiMawbView },\r\n { path: '/airImport/hawb/:mode/:id?/:tabIndex?/:createEntity?', component: AiHawbView },\r\n { path: '/airImport/quotation/:mode/:id?', component: AiQuotationView },\r\n { path: '/airImport/viewBillings/mawb/:id?', component: AiMawbBillingsView },\r\n { path: '/airImport/viewBillings/hawb/:id?', component: AiHawbBillingsView },\r\n { path: '/airImport/estProfit', component: ProfitAndVolumeSummaryView },\r\n { path: '/airImport/preAlert', component: PreAlertView },\r\n\r\n //AIM MoreMenu\r\n { path: '/airImport/arrivalNotice', component: MblArrivalNoticeView },\r\n { path: '/airImport/AuthorityToMakeEntry', component: MblArrivalNoticeView },\r\n { path: '/airImport/correctionNotice', component: CorrectionNoticeView },\r\n { path: '/airImport/IRC225', component: IRC225View },\r\n { path: '/airImport/folderLabel', component: FolderLabelView },\r\n\r\n //AIH MoreMenu\r\n { path: '/airImport/hblArrivalNotice', component: HblArrivalNoticeView },\r\n { path: '/airImport/shortDeliveryOrder', component: DeliveryOrderView },\r\n { path: '/airImport/preDeliveryOrder', component: DeliveryOrderView },\r\n { path: '/airImport/ItTeNotice', component: ItTeNoticeView },\r\n { path: '/airImport/packageLabel', component: PackageLabelView },\r\n { path: '/airImport/preliminaryClaimNotice', component: PreliminaryClaimNoticeView },\r\n { path: '/airImport/proofOfDelivery', component: ProofOfDeliveryView },\r\n { path: '/airImport/releaseOrderTurnover', component: ReleaseOrderTurnoverView },\r\n { path: '/airImport/straightBl', component: StraightBlView },\r\n { path: '/airImport/memoCustomerList', component: MemoListView },\r\n\r\n //common MoreMenu\r\n { path: '/airImport/correctionNotice', component: CorrectionNoticeView },\r\n { path: '/airImport/memoList', component: MemoListView },\r\n { path: '/airImport/cargoManifestStatus', component: CargoManifestStatusView },\r\n { path: '/airImport/pickupDelivery', component: PickupDeliveryView },\r\n\r\n //Download\r\n { path: '/airImport/download/:jobName?/:id?', component: DownloadView },\r\n];\r\n\r\nexport default routes;\r\n","import React from 'react';\r\nimport { IfmsRoute }from '../../../config/types';\r\n\r\nexport const OiMblView = React.lazy(() => import('../mbl/OiMblView'));\r\nexport const OiHblView = React.lazy(() => import('../hbl/OiHblView'));\r\nconst OiLoadPlanView = React.lazy(() => import('../loadPlan/OiLoadPlanView'));\r\nconst OeQuotationView = React.lazy(() => import('../../oceanExport/quotation/OeQuotationView'));\r\nconst OiMblBillingsView = React.lazy(() => import('../mbl/OiMBillingsView'));\r\nconst OiHblBillingsView = React.lazy(() => import('../hbl/OiHBillingsView'));\r\nconst MblArrivalNoticeView = React.lazy(() => import('../../reports/MblArrivalNoticeView'));\r\nconst DevanningInstructionVIew = React.lazy(() => import('../../reports/DevanningInstructionVIew'));\r\nconst FolderLabelView = React.lazy(() => import('../../reports/FolderLabelView'));\r\nconst MblHoldNoticeView = React.lazy(() => import('../../reports/MblHoldNoticeView'));\r\nconst MasterInvoiceView = React.lazy(() => import('../../reports/MasterInvoiceView'));\r\nconst HblArrivalNoticeView = React.lazy(() => import('../../reports/HblArrivalNoticeView'));\r\nconst ArrivalReleaseNoticeView = React.lazy(() => import('../hbl/more/ArrivalReleaseNoticeView'));\r\nconst CorrectionNoticeView = React.lazy(() => import('../../reports/CorrectionNoticeView'));\r\nconst DeliveryOrderView = React.lazy(() => import('../../reports/DeliveryOrderView'));\r\nconst PickupDeliveryView = React.lazy(() => import('../../reports/PickupDeliveryView'));\r\nconst HoldNoticeView = React.lazy(() => import('../hbl/more/HoldNoticeView'));\r\nconst CargoManifestStatusView = React.lazy(() => import('../../reports/CargoManifestStatusView'));\r\nconst SendShipmentStatusView = React.lazy(() => import('../../reports/SendShipmentStatusView'));\r\nconst EmptyContainerReturnGuaranteeView = React.lazy(() => import('../hbl/more/EmptyContainerReturnGuaranteeView'));\r\nconst CancelNoticeView = React.lazy(() => import('../hbl/more/CancelNoticeView'));\r\nconst ItTeNoticeView = React.lazy(() => import('../../reports/ItTeNoticeView'));\r\nconst LienNoticeView = React.lazy(() => import('../hbl/more/LienNoticeView'));\r\nconst MemoListView = React.lazy(() => import('../../reports/MemoListView'));\r\nconst PackageLabelView = React.lazy(() => import('../../reports/PackageLabelView'));\r\nconst PreliminaryClaimNoticeView = React.lazy(() => import('../../reports/PreliminaryClaimNoticeView'));\r\nconst ProofOfDeliveryView = React.lazy(() => import('../../reports/ProofOfDeliveryView'));\r\nconst ReleaseOrderTurnoverView = React.lazy(() => import('../../reports/ReleaseOrderTurnoverView'));\r\nconst StraightBlView = React.lazy(() => import('../../reports/StraightBlView'));\r\nconst ArrivalNoticeLogView = React.lazy(() => import('../reports/ArrivalNoticeLogView'));\r\nconst ShipmentReportView = React.lazy(() => import('../reports/ShipmentReportView'));\r\nconst ReleaseHistoryView = React.lazy(() => import('../reports/ReleaseHistoryView'));\r\nconst PendingCargoView = React.lazy(() => import('../reports/PendingCargoView'));\r\nconst InlandTransportationView = React.lazy(() => import('../reports/InlandTransportationView'));\r\nconst LiftingReportView = React.lazy(() => import('../ams/LiftingReport'));\r\nconst UsageReportView = React.lazy(() => import('../ams/UsageReport'));\r\nconst DownloadView = React.lazy(() => import('../../common/DownloadView'));\r\nconst ISFUsageReportView = React.lazy(() => import('../isf/UsageReportView'));\r\n\r\nconst routes:Array = [\r\n {path: '/oceanImport/mbl/:mode/:id?/:tabIndex?/:createEntity?', component: OiMblView},\r\n {path: '/oceanImport/hbl/:mode/:id?/:tabIndex?/:createEntity?', component: OiHblView},\r\n {path: '/oceanImport/loadPlan/:mode/:id?', component: OiLoadPlanView},\r\n {path: '/oceanImport/quotation/:mode/:id?', component: OeQuotationView},\r\n {path: '/oceanImport/viewBillings/mbl/:id?', component: OiMblBillingsView},\r\n {path: '/oceanImport/viewBillings/hbl/:id?', component: OiHblBillingsView},\r\n\r\n //OIM Moremenu\r\n {path: '/oceanImport/arrivalnotice', component: MblArrivalNoticeView},\r\n {path: '/oceanImport/devanninginstruction', component: DevanningInstructionVIew},\r\n {path: '/oceanImport/mblholdnotice', component: MblHoldNoticeView},\r\n {path: '/oceanImport/masterinvoice', component: MasterInvoiceView},\r\n\r\n //OIH Moremenu\r\n {path: '/oceanImport/hblArrivalNotice', component: HblArrivalNoticeView},\r\n {path: '/oceanImport/arrivalReleaseNotice', component: ArrivalReleaseNoticeView},\r\n {path: '/oceanImport/shortDeliveryOrder', component: DeliveryOrderView},\r\n {path: '/oceanImport/preDeliveryOrder', component: DeliveryOrderView},\r\n {path: '/oceanImport/hblHoldNotice', component: HoldNoticeView},\r\n {path: '/oceanImport/sendShipmentStatus', component: SendShipmentStatusView},\r\n {path: '/oceanImport/emptyContainerReturnGuarantee', component: EmptyContainerReturnGuaranteeView},\r\n {path: '/oceanImport/cancelNotice', component: CancelNoticeView},\r\n {path: '/oceanImport/itTeNotice', component: ItTeNoticeView},\r\n {path: '/oceanImport/lienNotice', component: LienNoticeView},\r\n {path: '/oceanImport/packageLabel', component: PackageLabelView},\r\n {path: '/oceanImport/preliminaryClaimNotice', component: PreliminaryClaimNoticeView},\r\n {path: '/oceanImport/proofOfDelivery', component: ProofOfDeliveryView},\r\n { path: '/oceanImport/releaseOrderTurnover', component: ReleaseOrderTurnoverView },\r\n { path: '/oceanImport/straightBl', component: StraightBlView },\r\n { path: '/oceanImport/memoCustomerList', component: MemoListView },\r\n\r\n //common Moremenu\r\n { path: '/oceanImport/correctionNotice', component: CorrectionNoticeView },\r\n { path: '/oceanImport/pickupDelivery', component: PickupDeliveryView },\r\n { path: '/oceanImport/cargoManifestStatus', component: CargoManifestStatusView },\r\n { path: '/oceanImport/memoList', component: MemoListView },\r\n { path: '/oceanImport/folderLabel', component: FolderLabelView },\r\n\r\n //AMS\r\n { path: '/oceanImport/amsUsageReport', component: UsageReportView },\r\n { path: '/oceanImport/amsLiftReport', component: LiftingReportView },\r\n { path: '/oceanImport/amsTotLiftReport', component: LiftingReportView },\r\n \r\n //ACI\r\n { path: '/oceanImport/aciUsageReport', component: UsageReportView },\r\n { path: '/oceanImport/aciLiftReport', component: LiftingReportView },\r\n { path: '/oceanImport/aciTotLiftReport', component: LiftingReportView },\r\n //Download\r\n { path: '/oceanImport/download/:jobName?/:id?', component: DownloadView },\r\n\r\n //report\r\n { path: '/oceanImport/arrivalnoticelog', component: ArrivalNoticeLogView },\r\n { path: '/oceanImport/inlandTransportation', component: InlandTransportationView },\r\n { path: '/oceanImport/pendingCargo', component: PendingCargoView },\r\n { path: '/oceanImport/releaseHistory', component: ReleaseHistoryView },\r\n { path: '/oceanImport/shipmentReport', component: ShipmentReportView },\r\n\r\n //isf\r\n { path: '/oceanImport/isfUsage', component: ISFUsageReportView },\r\n\r\n];\r\n\r\nexport default routes;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeMemoTitleListItem extends SearchModelBase {\r\n description: string = '';\r\n id: number = 0;\r\n code: string = '';\r\n inactive: boolean = true;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Description', width: 400, dataIndex: 'description'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeMemoTitleListItem.prototype.code, orderByAscending: false };\r\n\r\n public static formatData(data: CodeMemoTitleListItem[]) {\r\n return data.map((d: CodeMemoTitleListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\n\r\nconst LeftArrow = 37;\r\nconst RightArrow = 39;\r\nconst Tab = 9;\r\nconst Enter = 13;\r\n\r\ntype Props = {\r\n defaultFocusIndex: number,\r\n buttons: Array,\r\n onButton: (x:string) => void,\r\n customClass?: string|undefined,\r\n addOr?: boolean,\r\n addSpace?: boolean,\r\n};\r\n\r\n/**\r\n * ButtonGroup - inline list of buttons \r\n * \r\n * Props are:\r\n * \r\n * buttons: array of strings representing button labels. The buttons are rendered in the order of elements in this list\r\n * defaultFocusIndex: the index of button which has focus by default\r\n * onButton: event handler for buttons. Ir receives string argument of label of the button being clicked on. The event handler is also invoked on Enter key\r\n *\r\n * @param {*} { defaultFocusIndex = 0, buttons, onButton }\r\n * @return {*} \r\n */\r\nconst ButtonGroup: React.FC = ({ defaultFocusIndex = 0, buttons, onButton, customClass = undefined, addOr = false, addSpace = false }) => {\r\n const buttonRefs = useRef>([]);\r\n const [enterScheduledFor, setEnterScheduledFor] = useState(null);\r\n\r\n useEffect(() => {\r\n buttonRefs.current = buttonRefs.current.slice(0, buttons.length);\r\n if(defaultFocusIndex !== -1) buttonRefs.current[defaultFocusIndex]!.focus();\r\n }, [buttons, defaultFocusIndex]);\r\n\r\n useEffect(() => {\r\n if (!enterScheduledFor) {\r\n return;\r\n }\r\n\r\n onButton(enterScheduledFor);\r\n setEnterScheduledFor(null);\r\n }, [enterScheduledFor, onButton]);\r\n\r\n function focusNext(index: number) {\r\n const focusIndex = index === buttons.length - 1 ? 0 : index + 1;\r\n buttonRefs.current[focusIndex]!.focus();\r\n }\r\n\r\n function focusPrevious(index: number) {\r\n const focusIndex = index === 0 ? buttons.length - 1 : index - 1;\r\n buttonRefs.current[focusIndex]!.focus();\r\n }\r\n\r\n function onButtonKeyDown(e:React.KeyboardEvent) {\r\n const index = buttonRefs.current.findIndex(x => x === e.target);\r\n\r\n if (index < 0 || index >= buttons.length) {\r\n // Should never happen\r\n return;\r\n }\r\n\r\n switch (e.keyCode) {\r\n case Tab:\r\n if (e.shiftKey) {\r\n focusPrevious(index);\r\n } else {\r\n focusNext(index);\r\n }\r\n e.stopPropagation();\r\n e.preventDefault();\r\n break;\r\n case LeftArrow:\r\n focusPrevious(index);\r\n e.stopPropagation();\r\n e.preventDefault();\r\n break;\r\n case RightArrow:\r\n focusNext(index);\r\n e.stopPropagation();\r\n e.preventDefault();\r\n break;\r\n case Enter:\r\n setEnterScheduledFor(buttons[index]);\r\n e.stopPropagation();\r\n e.preventDefault();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n const classNames = customClass ? `${customClass} ifms-primary-inverse-button ifms-focusable-inverse ` : 'ifms-primary-inverse-button ifms-focusable-inverse';\r\n\r\n return (\r\n <>\r\n
    \r\n {buttons.map((b, i) =>(\r\n
    \r\n buttonRefs.current[i] = el} \r\n className={classNames}\r\n onClick={() => onButton(b)}\r\n onKeyDown={onButtonKeyDown}\r\n >\r\n {b}\r\n \r\n {addOr && i%2 === 0 &&
    or
    } \r\n {addSpace && i%2 === 0 &&
     
    } \r\n
    \r\n ))}\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nButtonGroup.defaultProps = {\r\n onButton: () => {},\r\n defaultFocusIndex: 0,\r\n};\r\n\r\nButtonGroup.propTypes = {\r\n onButton: PropTypes.func.isRequired,\r\n buttons: PropTypes.array.isRequired,\r\n defaultFocusIndex: PropTypes.number.isRequired,\r\n customClass: PropTypes.string,\r\n};\r\n\r\nexport default React.memo(ButtonGroup);","export default __webpack_public_path__ + \"static/media/notice_warning.57f33716.svg\";","import {TableSettings} from '../../../tableSettings';\r\n\r\nexport const airExportMawbList:TableSettings = {\r\n tableVersion: 10050,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: []\r\n};\r\n\r\nexport const airExportVolumeWeight:TableSettings = {\r\n tableVersion: 1016,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n useStorage: true,\r\n flexResizer: true,\r\n headersColor: 'white',\r\n alternateRows: false,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 8.33, },\r\n { accessor:'length', Header: 'Length', visible: true, resizable: false, sortable: false, initialWidthPercentage: 13.89, },\r\n { accessor:'width', Header: 'Width', visible: true, resizable: false, sortable: false, initialWidthPercentage: 13.89, },\r\n { accessor:'height', Header: 'Height', visible: true, resizable: false, sortable: false, initialWidthPercentage: 13.89, },\r\n { accessor:'pcs', Header: 'Pkgs', visible: true, resizable: false, sortable: false, initialWidthPercentage: 13.89, },\r\n { accessor:'chgWeight', Header: 'Chrg KGS', visible: true, resizable: false, sortable: false, initialWidthPercentage: 15.28, },\r\n { accessor:'lChgWeight', Header: 'Chrg LBS', visible: true, resizable: false, sortable: false, initialWidthPercentage: 15.28, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 5.55, },\r\n ]\r\n};\r\n\r\nexport const hawbBlDetailsHawbBody: TableSettings = {\r\n tableVersion: 1009,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n\r\n height: '170px',\r\n headersColor: 'white',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n columns: [\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'chgCodeName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 18.56,\r\n },\r\n {\r\n Header: 'Item Description',\r\n accessor: 'description',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 26.6,\r\n },\r\n {\r\n Header: 'Revenue',\r\n accessor: 'preRevenue',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.33,\r\n },\r\n {\r\n Header: 'Cost',\r\n accessor: 'preCost',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.33,\r\n },\r\n {\r\n Header: 'Revenue',\r\n accessor: 'colRevenue',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.33,\r\n },\r\n {\r\n Header: 'Cost',\r\n accessor: 'colCost',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.33,\r\n },\r\n {\r\n Header: 'A',\r\n accessor: 'agentShow',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 3.07,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.08,\r\n },\r\n ]\r\n};\r\n\r\nexport const airExportChargeableItems:TableSettings = {\r\n tableVersion: 1014,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'white',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'chargeableItem', Header: 'Chargeable Item', visible: true, resizable: false, sortable: false, initialWidthPercentage: 56.76, },\r\n { accessor:'prepaid', Header: 'Prepaid', visible: true, resizable: false, sortable: false, initialWidthPercentage: 21.62, },\r\n { accessor:'collect', Header: 'Collect', visible: true, resizable: false, sortable: false, initialWidthPercentage: 21.62, },\r\n // { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 5.0, },\r\n ]\r\n};\r\n\r\nexport const airExportHawbList:TableSettings = {\r\n tableVersion: 1023,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: []\r\n};\r\n\r\nexport const airExportFace:TableSettings = {\r\n tableVersion: 1007,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'teal',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'no', Header: 'Package(s)', visible: true, resizable: true, sortable: false, initialWidthPercentage: 11.76, },\r\n { accessor:'gw', Header: 'Gross Weight', visible: true, resizable: true, sortable: false, initialWidthPercentage: 15.68, },\r\n { accessor:'kg', Header: 'KG LB', visible: true, resizable: true, sortable: false, initialWidthPercentage: 7.84, },\r\n // { accessor:'rateClass', Header: 'Rate Class', visible: true, resizable: true, sortable: false, initialWidthPercentage: 10, },\r\n { accessor:'commodity', Header: 'Commodity Item #', visible: true, resizable: true, sortable: false, initialWidthPercentage: 17.64, },\r\n { accessor:'chw', Header: 'Chargeable Weight', visible: true, resizable: true, sortable: false, initialWidthPercentage: 15.68, },\r\n { accessor:'r', Header: 'Rate / Charge', visible: true, resizable: true, sortable: false, initialWidthPercentage: 15.68, },\r\n { accessor:'total', Header: 'Total', visible: true, resizable: true, sortable: false, initialWidthPercentage: 15.68, },\r\n ]\r\n};\r\n\r\nexport const airExportFaceRate:TableSettings = {\r\n tableVersion: 1013,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'teal',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'no', Header: 'Package(s)', visible: true, resizable: true, sortable: false, initialWidthPercentage: 14.15, },\r\n { accessor:'gw', Header: 'Gross Weight', visible: true, resizable: true, sortable: false, initialWidthPercentage: 14.15, },\r\n { accessor:'kg', Header: 'KG LB', visible: true, resizable: true, sortable: false, initialWidthPercentage: 5.66, },\r\n { accessor:'rateClass', Header: 'Rate Class', visible: true, resizable: true, sortable: false, initialWidthPercentage: 7.54, },\r\n { accessor:'commodity', Header: 'Commodity Item #', visible: true, resizable: true, sortable: false, initialWidthPercentage: 14.15, },\r\n { accessor:'chw', Header: 'Chargeable Weight', visible: true, resizable: true, sortable: false, initialWidthPercentage: 14.15, },\r\n { accessor:'r', Header: 'Rate / Charge', visible: true, resizable: true, sortable: false, initialWidthPercentage: 15.09, },\r\n { accessor:'total', Header: 'Total', visible: true, resizable: true, sortable: false, initialWidthPercentage: 15.09, },\r\n ]\r\n};\r\n\r\nexport const airExportHawbFaceRate:TableSettings = {\r\n tableVersion: 1008,\r\n overflowX: 'hidden',\r\n overflowY: 'hidden',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'no', Header: 'Package(s)', visible: true, resizable: true, sortable: false, initialWidthPercentage: 11.76, },\r\n { accessor:'gw', Header: 'Gross Weight', visible: true, resizable: true, sortable: false, initialWidthPercentage: 15.69, },\r\n { accessor:'kg', Header: 'KG LB', visible: true, resizable: true, sortable: false, initialWidthPercentage: 7.83, },\r\n { accessor:'commodity', Header: 'Commodity Item #', visible: true, resizable: true, sortable: false, initialWidthPercentage: 17.65, },\r\n { accessor:'chw', Header: 'Chargeable Weight', visible: true, resizable: true, sortable: false, initialWidthPercentage: 15.69, },\r\n { accessor:'r', Header: 'Rate / Charge', visible: true, resizable: true, sortable: false, initialWidthPercentage: 15.69, },\r\n { accessor:'total', Header: 'Total', visible: true, resizable: true, sortable: false, initialWidthPercentage: 15.69, },\r\n ]\r\n};\r\n\r\nexport const hawbAeHblPoBodyLineItems:TableSettings = {\r\n tableVersion: 1012,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '300px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n { Header: '#', accessor: 'indicator', resizable: false, sortable: false, visible: true, initialWidthPercentage: 2.63, },\r\n { Header: 'PO #', accessor: 'poNo', resizable: false, sortable: false, visible: true, initialWidthPercentage: 8.77, },\r\n { Header: 'SKU', accessor: 'skuNo', resizable: false, sortable: false, visible: true, initialWidthPercentage: 13.16, },\r\n { Header: 'HTS Code', accessor: 'htsCode', resizable: false, sortable: false, visible: true, initialWidthPercentage: 7.02, },\r\n { Header: 'C/O', accessor: 'coo', resizable: false, sortable: false, visible: true, initialWidthPercentage: 8.77, },\r\n { Header: 'Description', accessor: 'description', resizable: false, sortable: false, visible: true, initialWidthPercentage: 15.79, },\r\n { Header: 'Qty', accessor: 'shipQty', resizable: false, sortable: false, visible: true, initialWidthPercentage: 8.77, },\r\n { Header: 'Unit', accessor: 'shipUnit', resizable: false, sortable: false, visible: true, initialWidthPercentage: 7.02, },\r\n { Header: 'Unit Price', accessor: 'uPrice', resizable: false, sortable: false, visible: true, initialWidthPercentage: 8.77, },\r\n { Header: 'KGS (G)', accessor: 'kgs', resizable: false, sortable: false, visible: true, initialWidthPercentage: 8.77, },\r\n { Header: 'KGS (C)', accessor: 'cKgs', resizable: false, sortable: false, visible: true, initialWidthPercentage: 8.77, },\r\n { Header: '', accessor: 'scroll', resizable: false, sortable: false, visible: true, initialWidthPercentage: 1.76, },\r\n ]\r\n};\r\n\r\nexport const batchPrintTable:TableSettings = {\r\n tableVersion: 10045,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '150px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'selected',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4.41,\r\n },\r\n {\r\n Header: 'HAWB #',\r\n accessor: 'hblNo',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.17,\r\n },\r\n {\r\n Header: 'Shipper',\r\n accessor: 'shipperFullName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20.59,\r\n },\r\n {\r\n Header: 'Fax',\r\n accessor: 'hasShipperFax',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.82,\r\n },\r\n {\r\n Header: 'Email',\r\n accessor: 'hasShipperEmail',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.82,\r\n },\r\n {\r\n Header: 'Customer',\r\n accessor: 'customerName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20.59,\r\n },\r\n {\r\n Header: 'Agent',\r\n accessor: 'agentName',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 17.65,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.94,\r\n },\r\n ]\r\n};\r\n\r\nexport const airExportQuotationList:TableSettings = {\r\n tableVersion: 10049,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'status', Header: '', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'quoteNo', Header: 'Quotation #', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true },\r\n { accessor:'quoteDate', Header: 'Date', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'operator', Header: 'Quote By', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'validBy', Header: 'Valid By', visible: true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'customer', Header: 'Customer', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'contactName', Header: 'Contact', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text', },\r\n // { accessor:'hBookingNo', Header: 'Cust. Book Rqst No', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'serviceType', Header: 'Service Type', visible:true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'commodity', Header: 'Commodity', visible:true, width: 150, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'plofRec', Header: 'Place of Receipt', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'loadingPort', Header: 'Departure Airport', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'discharge', Header: 'Arrival Airport', visible: true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'sManID', Header: 'Salesperson', visible:true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u2Date', Header: 'Update', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'u2ID', Header: 'Updated', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u1ID', Header: 'Created', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const aeQuotationBillingInfo:TableSettings = {\r\n tableVersion: 1003,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '240px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'indicator',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4,\r\n },\r\n {\r\n Header: 'Billing Code',\r\n accessor: 'billingCode',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 15,\r\n },\r\n {\r\n Header: 'Item description',\r\n accessor: 'itemDescription',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20,\r\n },\r\n {\r\n Header: 'CUR',\r\n accessor: 'currency',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5,\r\n },\r\n {\r\n Header: 'Rate',\r\n accessor: 'rate',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 14.0,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'qty',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13.5,\r\n },\r\n {\r\n Header: 'Amount',\r\n accessor: 'amount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13,\r\n },\r\n {\r\n Header: 'USD Amount',\r\n accessor: 'convertedAmount',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 13,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 1.50,\r\n },\r\n ]\r\n};","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\n\r\nexport interface LastSavedJobState {\r\n [key: string]: number; // Key is job name from JobNames, value is id\r\n};\r\n\r\nconst initialState:LastSavedJobState = {};\r\n\r\nexport interface LastSavedJobData {\r\n jobName: string,\r\n jobId: number,\r\n};\r\n\r\n\r\n/**\r\n * Slice for storing last saved Job id that needs to be tracked. Used for example to save\r\n * id of AiMbl that is not Direct when created. Users determine the logic which job types they\r\n * want to save.\r\n */\r\nconst lastSavedJobSlice = createSlice({\r\n name: 'lastSavedJob',\r\n initialState,\r\n reducers: {\r\n clearLastSavedJobs: () => initialState,\r\n setLastSavedJob: (state, action: PayloadAction) => {\r\n state[action.payload.jobName] = action.payload.jobId;\r\n },\r\n }\r\n});\r\n\r\nexport default lastSavedJobSlice.reducer;\r\n\r\nexport const { clearLastSavedJobs, setLastSavedJob } = lastSavedJobSlice.actions;\r\n","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\n\r\nexport class ApDetail extends TrackableEntity {\r\n id: number = 0;\r\n apHdId: number = 0;\r\n stbName: string = '';\r\n stbId: number = 0;\r\n billingCode: string = '';\r\n description: string = '';\r\n rate: number = 0;\r\n qty: number = 0;\r\n amount: number = 0;\r\n amtDesc: string = '';\r\n cur: string = '';\r\n exRate: number = 0;\r\n lAmount: number = 0;\r\n olAmount: number = 0;\r\n useVat: number = 0;\r\n supplyPrice: number = 0;\r\n vatAmount: number = 0;\r\n agtAmount: number = 0;\r\n lAgtAmount: number = 0;\r\n agtCur: string = '';\r\n agtExRate: number = 0;\r\n vatGlNo: string = '';\r\n curAmount: number = 0;\r\n chgType: number = 0;\r\n chgTypeDesc: string = '';\r\n ps: number = 0;\r\n dBranch: string = '';\r\n entity: number = 0;\r\n entityName: string = '';\r\n subCode: string = '';\r\n agent: number = 0;\r\n agentName: string = '';\r\n posted: number = 0;\r\n savePosted: number = 0;\r\n iDate: string | null = null;\r\n entityTerms: number = 0;\r\n agentTerms: number = 0;\r\n errorMsg: string = '';\r\n isBillTypePartLock: boolean = false;\r\n isBillingCodePartLock: boolean = false;\r\n isDescriptionPartLock: boolean = false;\r\n isCurrencyPartLock: boolean = false;\r\n isRatePartLock: boolean = false;\r\n isQtyPartLock: boolean = false;\r\n isCurAmtPartLock: boolean = false;\r\n isAmountPartLock: boolean = false;\r\n isUseVatPartLock: boolean = false;\r\n isAgtCurPartLock: boolean = false;\r\n isAgtamtPartLock: boolean = false;\r\n isAgtNamePartLock: boolean = false;\r\n isPSPartLock: boolean = false;\r\n isKoreaVatLock: boolean = false;\r\n rowBackColor: string = '';\r\n isLock: boolean = false;\r\n isCreditLock: boolean = false;\r\n isGiveCreditLock: boolean = false;\r\n fieldType: number = 0;\r\n lock: number = 0;\r\n billCodeInactive: number = 0;\r\n toDeleteRowWhenCredit:boolean = false;\r\n seq: number = 0;\r\n // cloud\r\n\r\n crDbNo: string = '';\r\n additionallyAdded: boolean = false;\r\n lAmtDesc: string = '';\r\n //WH Description용\r\n refNo : string = '';\r\n\r\n //mskang - 241111 \r\n //BillingCode에서 Suffix가 없어지면서 suffix가 없게 보여주는 용도, 기존 billginCode는 저장시 사용되기때문에 Suffix그대로 저장하고 보여주기만 Suffix가 없게 \r\n billingCodeView: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('id', 'olAmount', 'chgTypeDesc', 'entityName', 'agentName', 'savePosted', 'iDate', 'entityTerms', 'agentTerms', 'errorMsg', \r\n 'isBillTypePartLock', 'isBillingCodePartLock', 'isDescriptionPartLock', 'isCurrencyPartLock', 'isRatePartLock', 'isQtyPartLock', 'isCurAmtPartLock', 'isAmountPartLock', 'isUseVatPartLock', 'isAgtCurPartLock', 'isAgtamtPartLock', 'isAgtNamePartLock', 'isPSPartLock',\r\n 'isKoreaVatLock', 'rowBackColor', 'lock', 'lAmtDesc',\r\n 'additionallyAdded','toDeleteRowWhenCredit','isLock','amtDesc','refNo');\r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n return ApDetail.dicFieldMappings;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'apHdId': new DBMappingInfo({ field: 'F_APHDID', table: 'T_APDETAIL' }),\r\n 'billingCode': new DBMappingInfo({ field: 'F_BillingCode', table: 'T_APDETAIL' }),\r\n 'description': new DBMappingInfo({ field: 'F_Description', table: 'T_APDETAIL' }),\r\n 'cur': new DBMappingInfo({ field: 'f_cur', table: 'T_APDETAIL' }),\r\n 'rate': new DBMappingInfo({ field: 'f_rate', table: 'T_APDETAIL' }),\r\n 'qty': new DBMappingInfo({ field: 'f_qty', table: 'T_APDETAIL' }),\r\n 'curAmount': new DBMappingInfo({ field: 'f_curamount', table: 'T_APDETAIL' }),\r\n 'amount': new DBMappingInfo({ field: 'F_Amount', table: 'T_APDETAIL' }),\r\n 'useVat': new DBMappingInfo({ field: 'f_usevat', table: 'T_APDETAIL' }),\r\n 'chgType': new DBMappingInfo({ field: 'f_chgtype', table: 'T_APDETAIL' }),\r\n 'vatAmount': new DBMappingInfo({ field: 'f_VatAmount', table: 'T_APDETAIL' }),\r\n 'vatGlNo': new DBMappingInfo({ field: 'F_VATGLNO', table: 'T_APDETAIL' }),\r\n 'lAmount': new DBMappingInfo({ field: 'F_LAmount', table: 'T_APDETAIL' }),\r\n 'stbId': new DBMappingInfo({ field: 'F_STBID', table: 'T_APDETAIL' }),\r\n 'stbName': new DBMappingInfo({ field: 'F_STBNAME', table: 'T_APDETAIL' }),\r\n 'agtCur': new DBMappingInfo({ field: 'F_AGTCUR', table: 'T_APDETAIL' }),\r\n 'agtAmount': new DBMappingInfo({ field: 'F_AGTAMOUNT', table: 'T_APDETAIL' }),\r\n 'lAgtAmount': new DBMappingInfo({ field: 'F_LAGTAMOUNT', table: 'T_APDETAIL' }),\r\n 'agtExRate': new DBMappingInfo({ field: 'F_AGTEXRATE', table: 'T_APDETAIL' }),\r\n 'ps': new DBMappingInfo({ field: 'F_PS', table: 'T_APDETAIL' }),\r\n 'exRate': new DBMappingInfo({ field: 'F_EXRATE', table: 'T_APDETAIL' }),\r\n 'agent': new DBMappingInfo({ field: 'F_Agent', table: 'T_APDETAIL' }),\r\n 'entity': new DBMappingInfo({ field: 'F_Entity', table: 'T_APDETAIL' }),\r\n 'subCode': new DBMappingInfo({ field: 'F_SubCode', table: 'T_APDETAIL' }),\r\n 'id': new DBMappingInfo({ field: 'F_Id', table: 'T_APDETAIL' }),\r\n 'fieldType': new DBMappingInfo({ field: 'F_FieldType', table: 'T_APDETAIL' }),\r\n 'seq': new DBMappingInfo({ field: 'F_Seq', table: 'T_APDETAIL' }),\r\n };\r\n}\r\n","import { stringsContainsIgnoreCase } from \".\";\r\nimport { IfmsAppRoutes } from \"../config/routes\";\r\nimport { IfmsRoute } from \"../config/types\";\r\nimport { FormType } from \"../fms.enum\";\r\n\r\nconst cleanupRoute = (r: IfmsRoute): RoutePathMetadata => {\r\n let path = r.path;\r\n const hasMode = stringsContainsIgnoreCase(path, ':mode');\r\n\r\n const parameterIndex = path.indexOf('/:');\r\n if (parameterIndex >= 0) {\r\n return { route: path.substring(0, parameterIndex), hasMode};\r\n }\r\n\r\n return {route: r.path, hasMode};\r\n};\r\n\r\ninterface RoutePathMetadata {\r\n route: string,\r\n hasMode: boolean,\r\n};\r\n\r\nlet applicationRoutePaths: RoutePathMetadata[] = [];\r\n\r\nfunction getApplicationRoutePaths(): RoutePathMetadata [] {\r\n if (applicationRoutePaths.length <= 0) {\r\n applicationRoutePaths = IfmsAppRoutes.map(cleanupRoute);\r\n }\r\n\r\n return applicationRoutePaths;\r\n}\r\n\r\n/**\r\n * Returns base URL of the route. For example if complete URL is /oceanImport/mbl/edit/2813/1/bill\r\n * it returns /oceanImport/mbl/edit. This url base is than used in combination with storage key\r\n * to generate unique fastStorage key (for example, 'editOiMbl2813-/oceanImport/mbl/edit')\r\n * This way, both these urls will have the same key generated: \r\n * a) /oceanImport/mbl/edit/2813/1/bill\r\n * b) /oceanImport/mbl/edit/2813\r\n */\r\n export function getRoutePath(fullUrl: string): string {\r\n const queryIndex = fullUrl.indexOf('?');\r\n\r\n const fullUrlWithoutQuery = queryIndex >= 0 ? fullUrl.substring(0, queryIndex) : fullUrl;\r\n const match = getApplicationRoutePaths().find(x => fullUrlWithoutQuery.startsWith(x.route));\r\n\r\n if (!match) {\r\n return fullUrlWithoutQuery;\r\n }\r\n\r\n let result = match.route;\r\n\r\n if (match.hasMode) {\r\n if (stringsContainsIgnoreCase(fullUrlWithoutQuery, `/${FormType.ModeAdd}`)) {\r\n result = `${result}/${FormType.ModeAdd}`;\r\n }\r\n if (stringsContainsIgnoreCase(fullUrlWithoutQuery, `/${FormType.ModeEdit}`)) {\r\n result = `${result}/${FormType.ModeEdit}`;\r\n }\r\n if (stringsContainsIgnoreCase(fullUrlWithoutQuery, `/${FormType.ModeView}`)) {\r\n result = `${result}/${FormType.ModeView}`;\r\n }\r\n }\r\n\r\n return result;\r\n}","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport React from \"react\";\r\n\r\nexport interface GlobalYesNoDialogState {\r\n show: boolean,\r\n invert: boolean,\r\n focusindex: number,\r\n addor: boolean,\r\n resolve: ((value: boolean | PromiseLike) => void) | null,\r\n content: React.ReactNode | null,\r\n type:'info'|'warning',\r\n inform: string,\r\n warning: string,\r\n};\r\n\r\nexport interface GlobalYesNoDialogData {\r\n resolve: ((value: boolean | PromiseLike) => void) | null,\r\n content: React.ReactNode | null,\r\n invert: boolean,\r\n addor: boolean,\r\n focusindex: number,\r\n inform?: string,\r\n warning?: string,\r\n type:'info'|'warning',\r\n};\r\n\r\nconst initialState: GlobalYesNoDialogState = {\r\n show: false,\r\n invert: false,\r\n focusindex: 0,\r\n addor: false,\r\n resolve: null,\r\n content: null,\r\n type: 'info',\r\n inform:'',\r\n warning:'',\r\n};\r\n\r\n/**\r\n * Slice for controlling Global Yes No Dialog\r\n */\r\nconst globalYesNoDialogSlice = createSlice({\r\n name: 'globalYesNoDialog',\r\n initialState,\r\n reducers: {\r\n showGlobalYesNoDialog: (state, action: PayloadAction) => {\r\n state.show = true;\r\n state.invert = action.payload.invert;\r\n state.addor = action.payload.addor;\r\n state.focusindex = action.payload.focusindex;\r\n state.resolve = action.payload.resolve;\r\n state.content = action.payload.content;\r\n state.type = action.payload.type ?? 'info';\r\n\r\n state.inform = action.payload.type === 'info' ? '' : 'none';\r\n state.warning = action.payload.type === 'warning'? '' : 'none';\r\n },\r\n hideGlobalYesNoDialog: (state) => {\r\n state.show = false;\r\n state.resolve = null;\r\n state.content = null;\r\n },\r\n }\r\n});\r\n\r\nexport default globalYesNoDialogSlice.reducer;\r\n\r\nexport const { showGlobalYesNoDialog, hideGlobalYesNoDialog } = globalYesNoDialogSlice.actions;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class UTTaskMemoListItem extends SearchModelBase {\r\n asigned: string = '';\r\n remindDate: string | null = null;\r\n fromRemindDate: string | null = null;\r\n toRemindDate: string | null = null;\r\n dueDate: string | null = null;\r\n fromDueDate: string | null = null;\r\n toDueDate: string | null = null;\r\n createdAt: string | null = null;\r\n fromCreatedAt: string | null = null;\r\n toCreatedAt: string | null = null;\r\n createdBy: string = '';\r\n refNo: string = '';\r\n title: string = '';\r\n contents: string = '';\r\n tbName: string = '';\r\n tbId: string = '';\r\n id: number = 0;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Task', width: 50, dataIndex: 'task', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true, defaultColumnFocus:true}),\r\n XCol.Create({ col: 2, text: 'Assigned', width: 100, dataIndex: 'asigned'}),\r\n XCol.Create({ col: 3, text: 'Remind Date', width: 130, dataIndex: 'remindDate', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, formatString: ' hh:mm'}),\r\n XCol.Create({ col: 4, text: 'Due Date', width: 130, dataIndex: 'dueDate', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center, formatString: ' hh:mm'}),\r\n XCol.Create({ col: 5, text: 'Pending', width: 50, dataIndex: 'pending', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 6, text: 'Reference', width: 300, dataIndex: 'refNo'}),\r\n XCol.Create({ col: 7, text: 'Subject', width: 200, dataIndex: 'title'}),\r\n XCol.Create({ col: 8, text: 'Memo', width: 300, dataIndex: 'contents'}),\r\n XCol.Create({ col: 9, text: 'Create Date', width: 80, dataIndex: 'createdAt', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 10, text: 'Create By', width: 100, dataIndex: 'createdBy'}),\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: UTTaskMemoListItem.prototype.createdAt, orderByAscending: false };\r\n\r\n public static formatData(data: UTTaskMemoListItem[]) {\r\n return data.map((d: UTTaskMemoListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields:{[key: string]: {[key: string]: string}} = {\r\n dueDate: {from: 'fromDueDate', to: 'toDueDate'},\r\n createdAt: {from: 'fromCreatedAt', to: 'toCreatedAt'},\r\n remindDate: {from: 'fromRemindDate', to: 'toRemindDate'},\r\n }\r\n}\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class UTEmailLogListItem extends SearchModelBase {\r\n senderId: string = '';\r\n title: string = '';\r\n recipient: string = '';\r\n recCompanyName: string = '';\r\n sType: string = '';\r\n recNo: string = '';\r\n state: string = '';\r\n postDate: string | null = null;\r\n fromPostDate: string | null = null;\r\n toPostDate: string | null = null;\r\n recCompanyId: number = 0;\r\n logFileId: number = 0;\r\n idex: number = 0;\r\n detailId: number = 0;\r\n refNo: string = '';\r\n hblNo: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Ref #', width: 100, dataIndex: 'refNo' }),\r\n XCol.Create({ col: 2, text: 'HBL #', width: 100, dataIndex: 'hblNo' }),\r\n XCol.Create({ col: 3, text: 'User Name', width: 80, dataIndex: 'senderId'}),\r\n XCol.Create({ col: 4, text: 'Title', width: 200, dataIndex: 'title', defaultColumnFocus:true}),\r\n XCol.Create({ col: 5, text: 'Recipient', width: 300, dataIndex: 'recipient'}),\r\n XCol.Create({ col: 6, text: 'Company Name', width: 140, dataIndex: 'recCompanyName'}),\r\n XCol.Create({ col: 7, text: 'Type', width: 50, dataIndex: 'sType'}),\r\n XCol.Create({ col: 8, text: 'Email Address', width: 140, dataIndex: 'recNo'}),\r\n XCol.Create({ col: 9, text: 'Status', width: 80, dataIndex: 'state'}),\r\n XCol.Create({ col: 10, text: 'Date', width: 120, dataIndex: 'postDate', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center})\r\n ];\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: UTEmailLogListItem.prototype.postDate, orderByAscending: false };\r\n\r\n public static formatData(data: UTEmailLogListItem[]) {\r\n return data.map((d: UTEmailLogListItem, index: number) => ({\r\n ...d,\r\n id: index + 1 //for cell focus\r\n }));\r\n }\r\n \r\n public static MapSearchFields:{[key: string]: {[key: string]: string}} = {\r\n postDate: {from: 'fromPostDate', to: 'toPostDate'},\r\n }\r\n}\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class UTPrintLogListItem extends SearchModelBase {\r\n senderId: string = '';\r\n title: string = '';\r\n postDate: string | null = null;\r\n fromPostDate: string | null = null;\r\n toPostDate: string | null = null;\r\n refNo: string = '';\r\n hblNo: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Ref #', width: 100, dataIndex: 'refNo' }),\r\n XCol.Create({ col: 2, text: 'HBL #', width: 100, dataIndex: 'hblNo' }),\r\n XCol.Create({ col: 3, text: 'User Name', width: 80, dataIndex: 'senderId'}),\r\n XCol.Create({ col: 4, text: 'Title', width: 500, dataIndex: 'title', defaultColumnFocus:true}),\r\n XCol.Create({ col: 5, text: 'Date', width: 120, dataIndex: 'postDate', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: UTPrintLogListItem.prototype.postDate, orderByAscending: false };\r\n\r\n public static formatData(data: UTPrintLogListItem[]) {\r\n return data.map((d: UTPrintLogListItem, index: number) => ({\r\n ...d,\r\n id: index + 1 //for cell focus\r\n }));\r\n }\r\n \r\n public static MapSearchFields:{[key: string]: {[key: string]: string}} = {\r\n postDate: {from: 'fromPostDate', to: 'toPostDate'},\r\n }\r\n}\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class UTFaxLogListItem extends SearchModelBase {\r\n postDate: string | null = null;\r\n fromPostDate: string | null = null;\r\n toPostDate: string | null = null;\r\n senderId: string = '';\r\n recCompanyName: string = '';\r\n recipient: string = '';\r\n state: string = '';\r\n recNo: string = '';\r\n title: string = '';\r\n whereCond: string = '';\r\n listTitle: string = '';\r\n refNo: string = '';\r\n hblNo: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'Ref #', width: 100, dataIndex: 'refNo' }),\r\n XCol.Create({ col: 2, text: 'HBL #', width: 100, dataIndex: 'hblNo' }),\r\n XCol.Create({ col: 3, text: 'Date', width: 120, dataIndex: 'postDate', type: XCol.XCellType.DateTime, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 4, text: 'User Name', width: 100, dataIndex: 'senderId'}),\r\n XCol.Create({ col: 5, text: 'Company Name', width: 140, dataIndex: 'recCompanyName', defaultColumnFocus: true }),\r\n XCol.Create({ col: 6, text: 'Recipient', width: 140, dataIndex: 'recipient'}),\r\n XCol.Create({ col: 7, text: 'Status', width: 60, dataIndex: 'state'}),\r\n XCol.Create({ col: 8, text: 'Fax #', width: 120, dataIndex: 'recNo'}),\r\n XCol.Create({ col: 9, text: 'Title', width: 400, dataIndex: 'title'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: UTFaxLogListItem.prototype.postDate, orderByAscending: false };\r\n\r\n public static formatData(data: UTFaxLogListItem[]) {\r\n return data.map((d: UTFaxLogListItem, index: number) => ({\r\n ...d,\r\n id: index + 1 //for cell focus\r\n }));\r\n }\r\n \r\n public static MapSearchFields:{[key: string]: {[key: string]: string}} = {\r\n postDate: {from: 'fromPostDate', to: 'toPostDate'},\r\n }\r\n}\r\n","export class CargoEventLog {\r\n static DateTimeFormat: string = \"YYYY-MM-DD HH:mm\";\r\n\r\n id: number = 0;\r\n suntekID: string = '';\r\n mblNo: string = '';\r\n cntrId: string = '';\r\n cntrNo: string = '';\r\n srcEventId: string = '';\r\n srcEventType: string = '';\r\n eventName: string = '';\r\n locCode: string = '';\r\n locName: string = '';\r\n utcTime: string | null = null;\r\n timezone: string = '';\r\n locTime: string| null = null;\r\n curValue: string | null = null;\r\n isAir: boolean = false;\r\n u1Id: string = '';\r\n u1Date: string | null = null;\r\n\r\n constructor(evtName: string, curValue: string | null = null) {\r\n if (evtName) {\r\n this.eventName = evtName;\r\n }\r\n if (curValue !== null) {\r\n this.curValue = curValue;\r\n }\r\n }\r\n}","export enum ReportHyperKey {\r\n // OP (OI/OE/AI/AE/OT)\r\n DutyPendings = 'DutyPendings',\r\n NewProfitDetail1 = 'NewProfitDetail1',\r\n NewProfitDetail2GP = 'NewProfitDetail2GP',\r\n NewProfitDetail2 = 'NewProfitDetail2',\r\n EmpPerformanceDetail = 'EmpPerformanceDetail',\r\n\r\n // Accounting\r\n DeferredDetail = 'DeferredDetail',\r\n NewGLBalanceDetail = 'NewGLBalanceDetail',\r\n NewVendorCostDetail = 'NewVendorCostDetail',\r\n GLAgingByEntityDetail = 'GLAgingByEntityDetail',\r\n AccountDetail = 'AccountDetail',\r\n NewARAgingDetail = 'NewARAgingDetail',\r\n NewAPAgingDetail = 'NewAPAgingDetail',\r\n NewPayAgingDetail = 'NewPayAgingDetail',\r\n NewRecAgingDetail = 'NewRecAgingDetail',\r\n NewCheckPayableDetail = 'NewCheckPayableDetail',\r\n NewCheckReceivableDetail = 'NewCheckReceivableDetail',\r\n NewAgentARAgingDetail = 'NewAgentARAgingDetail',\r\n NewAgentAPAgingDetail = 'NewAgentAPAgingDetail',\r\n NewCCPayableDetail = 'NewCCPayableDetail',\r\n NewAgentAgingDetail = 'NewAgentAgingDetail',\r\n NewAgentAgingDetail2 = 'NewAgentAgingDetail2',\r\n GLDetailN = 'GLDetailN',\r\n BankDetailN = 'BankDetailN',\r\n ACTBalanceByEntity = 'ACTBalanceByEntity',\r\n JournalVoucher = 'JournalVoucher',\r\n JournalVoucherWithJournal = 'JournalVoucherWithJournal',\r\n PrevBankTranDetail = 'PrevBankTranDetail',\r\n TranSummDetail = 'TranSummDetail',\r\n PrevTranDetail = 'PrevTranDetail',\r\n FutrTranDetail = 'FutrTranDetail',\r\n GPDetailByCustomer = 'GPDetailByCustomer',\r\n SalesCostByCustomer = 'SalesCostByCustomer',\r\n CustomerGrossProfit = 'CustomerGrossProfit',\r\n CustomerEstProfit = 'CustomerEstProfit',\r\n NewProfitCustomerDetail = 'NewProfitCustomerDetail',\r\n CargoTypeYears = 'CargoTypeYears',\r\n}\r\n\r\n","import PropTypes from 'prop-types';\r\nimport React, {useContext} from 'react';\r\nimport { TextAlignLeftRenderer} from \"../SmartTableRenderers\";\r\nimport {SQLIndex} from \"../../fms.core/constants\";\r\nimport ApplicationContext from \"../../ApplicationContext\";\r\nimport LookupField from \"../../ui/lookup/LookupField\";\r\nimport {CompanyLookupProps} from \"./CompanyLookupField\";\r\nimport {LookupCompany} from \"../../fms.data/lookup\";\r\nimport CheckBox from \"../../ui/CheckBox\";\r\n\r\ninterface SkuLookupProps extends Omit, 'onSelect'> {\r\n onSelect: (x: LookupCompany|LookupCompany[]) => void,\r\n fetchAddress: boolean,\r\n isMultiple: boolean,\r\n initialValue?: string|null|undefined,\r\n multiSelectValues?: LookupCompany[],\r\n formPara?: string,\r\n formPara2?: string,\r\n}\r\n\r\nconst CompanyListExLookupField = ({\r\n initialValue = '',\r\n onSelect = () => {},\r\n placeholder = undefined,\r\n onTextChange = () => {},\r\n disabled = false,\r\n lookupId = undefined,\r\n onTabNext = undefined,\r\n onTabPrevious = undefined,\r\n companyItems = undefined,\r\n onFocus = () => {},\r\n onBlur = () => {},\r\n focusableWhenDisabled = false,\r\n fetchAddress = false,\r\n isMultiple = false,\r\n multiSelectValues = [],\r\n noBorder = false,\r\n filterName = '',\r\n formPara = '',\r\n formPara2 = '',\r\n ...others\r\n}: SkuLookupProps) => {\r\n\r\n const changeSelected = (checked: boolean, selected: LookupCompany) => {\r\n if (checked) {\r\n onSelect([...multiSelectValues, selected])\r\n } else {\r\n onSelect([...multiSelectValues.filter(item => item.id !== selected.id)])\r\n }\r\n }\r\n\r\n const additionalColumns = [];\r\n if (isMultiple) {\r\n additionalColumns.push({\r\n Header: '',\r\n accessor: 'select',\r\n resizable: true,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 20,\r\n Cell: ({row}: any) => {\r\n return
    \r\n item.id === row.original.id)}\r\n onChange={(checked) => changeSelected(checked, row.original)}/>\r\n
    \r\n }\r\n })\r\n }\r\n\r\n const columns = [\r\n ...additionalColumns,\r\n { Header: 'Company Name', accessor: 'shortName', resizable: true, sortable: false, canBeHidden: false, visible: true, width: isMultiple ? 210 : 230, Cell: TextAlignLeftRenderer },\r\n { Header: 'Contact', accessor: 'contact', resizable: true, sortable: false, canBeHidden: false, visible: true, width: 150, Cell: TextAlignLeftRenderer },\r\n { Header: 'TEL', accessor: 'tel', resizable: true, sortable: false, canBeHidden: false, visible: true, width: 120, Cell: TextAlignLeftRenderer },\r\n ]\r\n\r\n const columnsForFullName = [\r\n ...additionalColumns,\r\n { Header: 'Company Name', accessor: 'fullName', resizable: true, sortable: false, canBeHidden: false, visible: true, width: isMultiple ? 130 : 150, Cell: TextAlignLeftRenderer },\r\n { Header: 'Short Name', accessor: 'shortName', resizable: true, sortable: false, canBeHidden: false, visible: true, width: isMultiple ? 130 : 150, Cell: TextAlignLeftRenderer },\r\n { Header: 'Contact', accessor: 'contact', resizable: true, sortable: false, canBeHidden: false, visible: true, width: 92, Cell: TextAlignLeftRenderer },\r\n { Header: 'TEL', accessor: 'tel', resizable: true, sortable: false, canBeHidden: false, visible: true, width: 90, Cell: TextAlignLeftRenderer },\r\n ]\r\n\r\n const appContext = useContext(ApplicationContext);\r\n\r\n async function queryCompanies(queryString: string | null) {\r\n const apiResult = await appContext.api.getLookupItems(SQLIndex.CompanyListEx, queryString || '', (filterName === 'fullName' ? 'FullName' : formPara || ''), formPara2 || '');\r\n // return apiResult?.data?.entities || [];\r\n return apiResult?.entities || [];\r\n }\r\n\r\n async function _onSelect(x: LookupCompany) {\r\n if(!isMultiple) {\r\n if(fetchAddress) {\r\n const apiResult = await appContext.api.getAddressFromCompanyFile(x.id, false, true, true, true, true, false, false);\r\n onSelect({...x, addr: apiResult})\r\n }else{\r\n onSelect(x)\r\n }\r\n }\r\n }\r\n\r\n function onCancel() {\r\n }\r\n\r\n function filter(data: Array, filterText: string) {\r\n return data.findIndex(x => x.shortName && x.shortName.toLowerCase().startsWith(filterText.toLowerCase()));\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nCompanyListExLookupField.defaultProps = {\r\n onSelect: () => {},\r\n onTextChange: () => {},\r\n filterName: 'shortName',\r\n disabled: false,\r\n focusableWhenDisabled: false,\r\n fetchAddress: false,\r\n isMultiple: false,\r\n noBorder: false,\r\n formPara: '',\r\n formPara2: '',\r\n};\r\n\r\nCompanyListExLookupField.propTypes = {\r\n initialValue: PropTypes.string,\r\n onSelect: PropTypes.func.isRequired,\r\n onTextChange: PropTypes.func.isRequired,\r\n placeholder: PropTypes.string,\r\n filterName: PropTypes.string.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n lookupId: PropTypes.string,\r\n onTabNext: PropTypes.func,\r\n onTabPrevious: PropTypes.func,\r\n companyItems: PropTypes.array,\r\n onBlur: PropTypes.func,\r\n onFocus: PropTypes.func,\r\n focusableWhenDisabled: PropTypes.bool.isRequired,\r\n fetchAddress: PropTypes.bool,\r\n isMultiple: PropTypes.bool,\r\n noBorder: PropTypes.bool,\r\n formPara: PropTypes.string,\r\n formPara2: PropTypes.string,\r\n};\r\n\r\n\r\nexport default React.memo(CompanyListExLookupField);\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class UTAttachedFileListItem extends SearchModelBase {\r\n userId: string = '';\r\n date: string | null = null;\r\n fromDate: string | null = null;\r\n toDate: string | null = null;\r\n refNo: string = '';\r\n title: string = '';\r\n fileName: string = '';\r\n fileSize: number|null = null;\r\n fromFileSize: number|null = null;\r\n toFileSize: number|null = null;\r\n contents: string = '';\r\n tbName: string = '';\r\n tbId: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: '', width: 30, dataIndex: 'status', hiddenInColumnSetup: true}),\r\n XCol.Create({ col: 1, text: 'User ID', width: 90, dataIndex: 'userId', defaultColumnFocus: true }),\r\n XCol.Create({ col: 2, text: 'Date', width: 65, dataIndex: 'date', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 3, text: 'Ref. #', width: 100, dataIndex: 'refNo'}),\r\n XCol.Create({ col: 4, text: 'Title', width: 170, dataIndex: 'title'}),\r\n XCol.Create({ col: 5, text: 'Attached File Name', width: 170, dataIndex: 'fileName'}),\r\n XCol.Create({ col: 6, text: 'File Size', width: 80, dataIndex: 'fileSize', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 7, text: 'Contents', width: 800, dataIndex: 'contents'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: UTAttachedFileListItem.prototype.tbId, orderByAscending: false };\r\n\r\n public static formatData(data: UTAttachedFileListItem[]) {\r\n return data.map((d: UTAttachedFileListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n date: {from: 'fromDate', to: 'toDate'},\r\n fileSize: {from: 'fromFileSize', to: 'toFileSize'},\r\n }\r\n}\r\n","import React from 'react';\r\nimport { IfmsRoute }from '../../../config/types';\r\n\r\nexport const CompanyView = React.lazy(() => import('../companies/CompanyView'));\r\nconst JobListView = React.lazy(() => import('../JobListView'));\r\nconst ReportViewer2 = React.lazy(() => import('../../../uiControls/ReportViewer2'));\r\n\r\nconst AgentStatementView = React.lazy(() => import('../../accounting/reports/AgentStatementView'));\r\nconst CustomerVendorViews = React.lazy(() => import('../../accounting/reports/CustomerVendorStatementView'));\r\nconst PickupDeliveryView = React.lazy(() => import('../../reports/PickupDeliveryView')); \r\nconst ImporterBondQueryView = React.lazy(() => import('../../referenceFiles/implementation/codes/ImporterBondQueryView'));\r\nconst LastTransactionView = React.lazy(() => import('../../referenceFiles/implementation/codes/LastTransactionView'));\r\nconst MemoListView = React.lazy(() => import('../../reports/MemoListView'));\r\nconst CompanyAddressLabelView = React.lazy(() => import('../../reports/CompanyAddressLabelView'));\r\nconst CustomerActivityView = React.lazy(() => import('../../common/reports/CustomerActivityView'));\r\nconst InternetTrackingCustomerView = React.lazy(() => import('../../referenceFiles/implementation/codes/InternetTrackingCustomerView'));\r\nconst DeleteHistoryView = React.lazy(() => import('../../common/DeleteHistoryView'));\r\n\r\nconst routes:Array = [\r\n {path: '/common/companies/:mode/:id?', component: CompanyView},\r\n // jobName (JobNames), opType (constants.opTypes)\r\n {path: '/common/joblistview/:jobName/:opType?', component: JobListView},\r\n //\r\n {path: '/common/report/:args/:opType?', component: ReportViewer2},\r\n {path: '/common/deleteHistory', component: DeleteHistoryView},\r\n \r\n {path: '/company/agentStatement', component: AgentStatementView},\r\n {path: '/company/customerVendor', component: CustomerVendorViews},\r\n {path: '/company/pickupDelivery', component: PickupDeliveryView},\r\n {path: '/company/importerBondQuery', component: ImporterBondQueryView},\r\n {path: '/company/lastTransaction', component: LastTransactionView},\r\n {path: '/company/memoList', component: MemoListView},\r\n {path: '/company/companyAddressLabel', component: CompanyAddressLabelView},\r\n {path: '/company/activeCustomer', component: CustomerActivityView},\r\n {path: '/company/internetTrackingCustomers', component: InternetTrackingCustomerView},\r\n];\r\n\r\nexport default routes;\r\n","import React from 'react';\r\nimport { IfmsRoute }from '../../../config/types';\r\n\r\nexport const OtherShipmentView = React.lazy(() => import(\"../otherShipment/OtherShipmentView\"));\r\nconst OtherShipmentBillingsView = React.lazy(() => import('../otherShipment/OtherShipmentBillingsView'));\r\nconst StraightBlView = React.lazy(() => import('../../reports/StraightBlView')); //\r\nconst PickupDeliveryView = React.lazy(() => import('../../reports/PickupDeliveryView')); //\r\nconst DeliveryOrderView = React.lazy(() => import('../../reports/DeliveryOrderView'));\r\nconst OtQuotationView = React.lazy(() => import('../quotation/OtQuotationView'));\r\nconst FolderLabelView = React.lazy(() => import('../../reports/FolderLabelView'));\r\nconst CargoManifestStatusView = React.lazy(() => import('../../reports/CargoManifestStatusView'));\r\n\r\nconst routes: Array = [\r\n // {path: '/otherShipment/home', component: Home},\r\n { path: '/otherShipment/otherShipment/:mode/:id?/:tabIndex?/:createEntity?', component: OtherShipmentView },\r\n { path: '/otherShipment/viewBillings/:id?', component: OtherShipmentBillingsView },\r\n { path: '/otherShipment/quotation/:mode/:id?', component: OtQuotationView },\r\n\r\n //Moremunu\r\n { path: '/otherShipment/straightBl', component: StraightBlView },\r\n { path: '/otherShipment/pickupDelivery', component: PickupDeliveryView },\r\n { path: '/otherShipment/shortDeliveryOrder', component: DeliveryOrderView },\r\n { path: '/otherShipment/folderLabel', component: FolderLabelView },\r\n { path: '/otherShipment/cargoManifestStatus', component: CargoManifestStatusView },\r\n];\r\n\r\nexport default routes;\r\n","export default __webpack_public_path__ + \"static/media/circle-exit-red.289c1214.svg\";","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class RateTableListItem extends SearchModelBase {\r\n id: number = 0;\r\n effectETD: string | null = null;\r\n fromEffectETD: string | null = null;\r\n toEffectETD: string | null = null;\r\n expireETD: string | null = null;\r\n fromExpireETD: string | null = null;\r\n toExpireETD: string | null = null;\r\n mode: string = '';\r\n origin: string = '';\r\n destination: string = '';\r\n doorBy: string = '';\r\n carrier: string = '';\r\n size: string = '';\r\n commodity: string = '';\r\n rate1: number = 0;\r\n fromRate1: number|null = null;\r\n toRate1: number|null = null;\r\n rate2: number = 0;\r\n fromRate2: number|null = null;\r\n toRate2: number|null = null;\r\n transit: number = 0;\r\n fromTransit: number|null = null;\r\n toTransit: number|null = null;\r\n remark: string = '';\r\n company: string = '';\r\n tBId: number = 0;\r\n tBName: string = '';\r\n tBType: string = '';\r\n \r\n sName: string = ''//Cloud Only\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Effect ETD', width: 90, dataIndex: 'effectETD', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 1, text: 'Expire ETD', width: 90, dataIndex: 'expireETD', type: XCol.XCellType.Date, align: XCol.XAlignType.Center }),\r\n XCol.Create({ col: 2, text: 'Mode', width: 250, dataIndex: 'mode' }),\r\n XCol.Create({ col: 3, text: 'Origin', width: 300, dataIndex: 'origin' }),\r\n XCol.Create({ col: 4, text: 'Destination', width: 40, dataIndex: 'destination' }),\r\n XCol.Create({ col: 5, text: 'Door By', width: 50, dataIndex: 'doorBy' }),\r\n XCol.Create({ col: 6, text: 'Commodity', width: 50, dataIndex: 'commodity' }),\r\n XCol.Create({ col: 7, text: 'Carrier', width: 50, dataIndex: 'carrier' }),\r\n XCol.Create({ col: 8, text: 'Type', width: 50, dataIndex: 'size' }),\r\n XCol.Create({ col: 9, text: 'Rate1', width: 60, dataIndex: 'rate1', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 10, text: 'Rate2', width: 60, dataIndex: 'rate2', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 11, text: 'Transit', width: 60, dataIndex: 'transit', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 12, text: 'Remark', width: 50, dataIndex: 'remark' }),\r\n XCol.Create({ col: 13, text: 'Company', width: 50, dataIndex: 'company' }),\r\n\r\n ];\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: RateTableListItem.prototype.effectETD, orderByAscending: true };\r\n\r\n public static formatData(data: RateTableListItem[]) {\r\n return data.map((d: RateTableListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n expireETD: {from: 'fromExpireETD', to: 'toExpireETD'},\r\n effectETD: {from: 'fromEffectETD', to: 'toEffectETD'},\r\n rate1: {from: 'fromRate1', to: 'toRate1'},\r\n rate2: {from: 'fromRate2', to: 'toRate2'},\r\n transit: {from: 'fromTransit', to: 'toTransit'},\r\n }\r\n}\r\n","import { useEffect, useRef, useState } from 'react';\r\n\r\nconst defaultMinWidth = 15;\r\nconst defaultWidth = 150;\r\nconst defaultMaxWidth = 400;\r\n\r\nfunction initSizes(columns:Array) {\r\n const result:Array = [];\r\n\r\n columns.forEach(c => {\r\n const width = !c.width || c.width < 0 ? defaultWidth : c.width;\r\n \r\n let minWidth = !c.minWidth || c.minWidth < 0 ? defaultMinWidth : c.minWidth;\r\n if (minWidth > width) {\r\n minWidth = width;\r\n }\r\n\r\n let maxWidth = !c.maxWidth || c.maxWidth < 0 ? defaultMaxWidth : c.maxWidth;\r\n if (maxWidth < width) {\r\n maxWidth = width;\r\n }\r\n\r\n result.push({\r\n id: c.accessor,\r\n resizable: c.resizable,\r\n width,\r\n minWidth,\r\n maxWidth,\r\n });\r\n });\r\n\r\n return result;\r\n}\r\n\r\nlet originalX:number|null = null;\r\nlet originalWidth:number|null = null;\r\nlet originalAfterWidth:number|null = null;\r\nlet resizeIndex:number|null = null;\r\nlet originalFooterWidth:number|null = null;\r\nlet originalHeaderWidth:number|null = null;\r\n\r\nfunction getHeaderElement(tableId:string, index:number) {\r\n return document.getElementById(`${tableId}-header-${index}`);\r\n}\r\n\r\nfunction resizeColumn(tableId:string, columnIndex:number, width:number, delta:number, resizeFooter:boolean, resizeHeader:boolean) {\r\n const headerElement = getHeaderElement(tableId, columnIndex);\r\n if (!headerElement) {\r\n return;\r\n }\r\n\r\n headerElement.style.width = width + 'px';\r\n\r\n let row = 0;\r\n let element = document.getElementById(`${tableId}-cell-${row}-${columnIndex}`);\r\n\r\n while (element) {\r\n element.style.width = width + 'px';\r\n row = row + 1;\r\n element = document.getElementById(`${tableId}-cell-${row}-${columnIndex}`);\r\n }\r\n\r\n // If there is footer - resize it - respect the colspan\r\n if (resizeFooter) {\r\n let footerElement = document.getElementById(`${tableId}-footer-${columnIndex}`);\r\n\r\n if (footerElement) {\r\n footerElement.style.width = ((originalFooterWidth as number) + delta) + 'px';\r\n }\r\n }\r\n\r\n // If there is header - resize it - respect the colspan\r\n if (resizeHeader) {\r\n let headerElement = document.getElementById(`${tableId}-custom-header-${columnIndex}`);\r\n\r\n if (headerElement) {\r\n headerElement.style.width = ((originalHeaderWidth as number) + delta) + 'px';\r\n }\r\n }\r\n}\r\n\r\nexport default function useFlexResizer(tableId:string, columns:Array, onColumnsResized:any) {\r\n const initColSizes = initSizes(columns);\r\n const [columnSizes, _setColumnSizes] = useState(initColSizes);\r\n\r\n const cRef = useRef(initColSizes);\r\n\r\n useEffect(() => {\r\n originalX = null;\r\n originalWidth = null;\r\n originalAfterWidth = null;\r\n resizeIndex = null;\r\n originalFooterWidth = null;\r\n originalHeaderWidth = null;\r\n\r\n setColumnSizes(initSizes(columns));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [columns]);\r\n\r\n function setColumnSizes(s:any) {\r\n cRef.current = s;\r\n _setColumnSizes(s);\r\n }\r\n\r\n function resize(e:MouseEvent) {\r\n const delta = e.pageX - (originalX as number);\r\n\r\n const newWidth = (originalWidth as number) + delta;\r\n const newAfterWidth = (originalAfterWidth as number) - delta;\r\n\r\n if (\r\n newWidth < cRef.current[resizeIndex as number].minWidth ||\r\n newWidth > cRef.current[resizeIndex as number].maxWidth ||\r\n newAfterWidth < cRef.current[(resizeIndex as number) + 1].minWidth ||\r\n newAfterWidth > cRef.current[(resizeIndex as number) + 1].maxWidth\r\n ) {\r\n return;\r\n }\r\n\r\n resizeColumn(tableId, (resizeIndex as number), newWidth, delta, true, true);\r\n resizeColumn(tableId, (resizeIndex as number) + 1, newAfterWidth, delta, false, false);\r\n }\r\n\r\n function stopResize() {\r\n window.removeEventListener('mousemove', resize);\r\n window.removeEventListener('mouseup', stopResize);\r\n\r\n const headerElement = getHeaderElement(tableId, resizeIndex as number);\r\n const headerAfterElement = getHeaderElement(tableId, (resizeIndex as number) + 1);\r\n if (!headerElement || !headerAfterElement) {\r\n return;\r\n }\r\n\r\n const finalWidth = parseFloat(getComputedStyle(headerElement).getPropertyValue('width').replace('px', ''));\r\n const finalAfterWidth = parseFloat(getComputedStyle(headerAfterElement).getPropertyValue('width').replace('px', ''));\r\n\r\n const newColSizes = [...columnSizes];\r\n newColSizes[resizeIndex as number].width = finalWidth;\r\n newColSizes[(resizeIndex as number) + 1].width = finalAfterWidth;\r\n\r\n const cbValues = [{\r\n id: newColSizes[resizeIndex as number].id,\r\n index: resizeIndex,\r\n width: finalWidth\r\n }, {\r\n id: newColSizes[(resizeIndex as number) + 1].id,\r\n index: (resizeIndex as number) + 1,\r\n width: finalAfterWidth\r\n }];\r\n\r\n originalX = null;\r\n originalWidth = null;\r\n originalAfterWidth = null;\r\n resizeIndex = null;\r\n originalFooterWidth = null;\r\n originalHeaderWidth = null;\r\n\r\n setColumnSizes(newColSizes);\r\n if (onColumnsResized) {\r\n onColumnsResized(cbValues);\r\n }\r\n }\r\n\r\n function onResizeStart(index:number) {\r\n // Implementation note:\r\n // The last column cannot be resized directly to maintain flex layout (100%)\r\n // The resizer will check if the next column exists and also is it resizable.\r\n // If the next column is not resizable the selected column cannot resize as well.\r\n if (index < 0 || index >= columnSizes.length - 1) {\r\n return;\r\n }\r\n\r\n if (!cRef.current[index].resizable || !cRef.current[index + 1].resizable) {\r\n return;\r\n }\r\n\r\n const headerElement = getHeaderElement(tableId, index as number);\r\n const headerAfterElement = getHeaderElement(tableId, (index as number) + 1);\r\n if (!headerElement || !headerAfterElement) {\r\n return;\r\n }\r\n \r\n originalX = headerElement.getBoundingClientRect().right;\r\n\r\n originalWidth = parseFloat(getComputedStyle(headerElement).getPropertyValue('width').replace('px', ''));\r\n originalAfterWidth = parseFloat(getComputedStyle(headerAfterElement).getPropertyValue('width').replace('px', ''));\r\n\r\n let footerElement = document.getElementById(`${tableId}-footer-${index}`);\r\n if (footerElement) {\r\n originalFooterWidth = parseFloat(getComputedStyle(footerElement).getPropertyValue('width').replace('px', ''));\r\n }\r\n\r\n let customeHeaderElement = document.getElementById(`${tableId}-custom-header-${index}`);\r\n if (customeHeaderElement) {\r\n originalHeaderWidth = parseFloat(getComputedStyle(customeHeaderElement).getPropertyValue('width').replace('px', ''));\r\n }\r\n\r\n resizeIndex = index;\r\n\r\n window.addEventListener('mousemove', resize);\r\n window.addEventListener('mouseup', stopResize);\r\n }\r\n\r\n return [columnSizes, onResizeStart];\r\n}","import { useEffect, useRef, useState } from 'react';\r\n\r\nconst defaultMinWidth = 15;\r\nconst defaultWidth = 150;\r\nconst defaultMaxWidth = 400;\r\n\r\nfunction initSizes(columns:Array) {\r\n const result:Array = [];\r\n\r\n columns.forEach(c => {\r\n const width = !c.width || c.width < 0 ? defaultWidth : c.width;\r\n \r\n let minWidth = !c.minWidth || c.minWidth < 0 ? defaultMinWidth : c.minWidth;\r\n if (minWidth > width) {\r\n minWidth = width;\r\n }\r\n\r\n let maxWidth = !c.maxWidth || c.maxWidth < 0 ? defaultMaxWidth : c.maxWidth;\r\n if (maxWidth < width) {\r\n maxWidth = width;\r\n }\r\n\r\n result.push({\r\n id: c.accessor,\r\n resizable: c.resizable,\r\n width,\r\n minWidth,\r\n maxWidth,\r\n });\r\n });\r\n\r\n return result;\r\n}\r\n\r\nlet originalX:number|null = null;\r\nlet originalWidth:number|null = null;\r\nlet resizeIndex:number|null = null;\r\nlet originalRowWidth:number|null = null;\r\n\r\nfunction getHeaderRowElement(tableId:string) {\r\n return document.getElementById(`${tableId}-header-row`);\r\n}\r\n\r\nfunction getHeaderElement(tableId:string, index:number) {\r\n return document.getElementById(`${tableId}-header-${index}`);\r\n}\r\n\r\nfunction resizeHeaderRow(tableId:string, delta:number) {\r\n let element = getHeaderRowElement(tableId);\r\n\r\n if (element) {\r\n element.style.width = (originalRowWidth as number + delta) + 'px';\r\n }\r\n}\r\n\r\nfunction resizeTableRows(tableId:string, delta:number) {\r\n let row = 0;\r\n let element = document.getElementById(`${tableId}-row-${row}`);\r\n\r\n while (element) {\r\n element.style.width = (originalRowWidth as number + delta) + 'px';\r\n row = row + 1;\r\n element = document.getElementById(`${tableId}-row-${row}`);\r\n }\r\n}\r\n\r\nfunction resizeColumn(tableId:string, columnIndex:number, width:number) {\r\n const headerElement = getHeaderElement(tableId, columnIndex);\r\n if (!headerElement) {\r\n return;\r\n }\r\n headerElement.style.width = width + 'px';\r\n\r\n let row = 0;\r\n let element = document.getElementById(`${tableId}-cell-${row}-${columnIndex}`);\r\n\r\n while (element) {\r\n element.style.width = width + 'px';\r\n row = row + 1;\r\n element = document.getElementById(`${tableId}-cell-${row}-${columnIndex}`);\r\n }\r\n}\r\n\r\nexport default function useFixResizer(tableId:string, columns:Array, onColumnsResized:any) {\r\n const initColSizes = initSizes(columns);\r\n const [columnSizes, _setColumnSizes] = useState>(initColSizes);\r\n\r\n const cRef = useRef(initColSizes);\r\n\r\n useEffect(() => {\r\n originalX = null;\r\n originalWidth = null;\r\n resizeIndex = null;\r\n originalRowWidth = null;\r\n\r\n setColumnSizes(initSizes(columns));\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [columns]);\r\n\r\n function setColumnSizes(s:any) {\r\n cRef.current = s;\r\n _setColumnSizes(s);\r\n }\r\n\r\n function resize(e:MouseEvent) {\r\n const delta = e.pageX - (originalX as number);\r\n\r\n const newWidth = (originalWidth as number) + delta;\r\n\r\n if (\r\n newWidth < cRef.current[resizeIndex as number].minWidth ||\r\n newWidth > cRef.current[resizeIndex as number].maxWidth \r\n ) {\r\n return;\r\n }\r\n\r\n resizeHeaderRow(tableId, delta);\r\n resizeTableRows(tableId, delta);\r\n resizeColumn(tableId, resizeIndex as number, newWidth);\r\n }\r\n\r\n function stopResize() {\r\n window.removeEventListener('mousemove', resize);\r\n window.removeEventListener('mouseup', stopResize);\r\n\r\n const headerElement = getHeaderElement(tableId, resizeIndex as number);\r\n if (!headerElement) {\r\n return;\r\n }\r\n\r\n const finalWidth = parseFloat(getComputedStyle(headerElement).getPropertyValue('width').replace('px', ''));\r\n\r\n const newColSizes = [...columnSizes];\r\n newColSizes[resizeIndex as number].width = finalWidth;\r\n\r\n const cbValues = [{\r\n id: newColSizes[resizeIndex as number].id,\r\n index: resizeIndex,\r\n width: finalWidth\r\n }];\r\n\r\n originalX = null;\r\n originalWidth = null;\r\n resizeIndex = null;\r\n originalRowWidth = null;\r\n\r\n setColumnSizes(newColSizes);\r\n if (onColumnsResized) {\r\n onColumnsResized(cbValues);\r\n }\r\n }\r\n\r\n function onResizeStart(index:number) {\r\n if (index < 0 || index >= columnSizes.length) {\r\n return;\r\n }\r\n\r\n if (!cRef.current[index].resizable) {\r\n return;\r\n }\r\n \r\n const headerElement = getHeaderElement(tableId, index);\r\n const headerRowElement = getHeaderRowElement(tableId);\r\n if (!headerElement || !headerRowElement) {\r\n return;\r\n }\r\n originalX = headerElement.getBoundingClientRect().right;\r\n\r\n originalWidth = parseFloat(getComputedStyle(headerElement).getPropertyValue('width').replace('px', ''));\r\n originalRowWidth = parseFloat(getComputedStyle(headerRowElement).getPropertyValue('width').replace('px', ''));\r\n\r\n resizeIndex = index;\r\n\r\n window.addEventListener('mousemove', resize);\r\n window.addEventListener('mouseup', stopResize);\r\n }\r\n\r\n return [columnSizes, onResizeStart];\r\n}","import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\r\nimport Modal from 'react-modal';\r\nimport styled from 'styled-components';\r\nimport TextBox from './TextBox';\r\nimport CheckBox from './CheckBox';\r\nimport SecondaryButton from './SecondaryButton';\r\nimport _ from 'lodash';\r\nimport { useTypedFastStorage } from '../hooks/useFastStorage';\r\nimport useDeepCompareEffect from '../hooks/useDeepCompareEffect';\r\nimport { stringArraysEqual } from '../util';\r\nimport { HeaderFilterType } from '../tableSettings';\r\nimport Date from '../ui/Date';\r\nimport Float from './Float';\r\nimport Select, { SelectItem } from './Select';\r\nimport InlineInputControlRowNoLabel from './layout/InlineInputControlRowNoLabel';\r\nimport { compareIso } from '../dateUtils';\r\nimport lockBlue from '../img/lock_blue.png';\r\nimport lockRed from '../img/lock_red.png';\r\n\r\nexport type FilterCellStorageProps = {\r\n filterHeaderIndex: number,\r\n filterCellId: string,\r\n filterCellTexts?: string[], //TextSelect\r\n filterCellText?: string, //TextBegin\r\n filterCellTextType?: string, //TextBegin\r\n filterFromDate?: string, //Date\r\n filterToDate?: string, //Date\r\n filterFromNumber?: string, //Number\r\n filterToNumber?: string, //Number\r\n}\r\n\r\ntype FilterSelectItemProps = {\r\n label: string,\r\n value: string,\r\n}\r\n\r\ntype FilterListProps = {\r\n cellId: string,\r\n cellValues: FilterSelectItemProps[],\r\n}\r\n\r\ntype TableHeaderFiltersProps = {\r\n changeListData: (data: Partial) => void;\r\n filterOpenHeaderIndex: number;\r\n oriListData: any[];\r\n filteredHeaderIndex: number[];\r\n setFilteredHeaderIndex: (index: number[], deleteCurrentHeaderIndex?: boolean) => void;\r\n modalPosition: { top: number, left: number };\r\n headerFilterType: HeaderFilterType,\r\n cellId: string,\r\n currentUrl: string,\r\n closeModal: () => void,\r\n};\r\n\r\ntype FilterDetailsProps = {\r\n changeListData: (data: Partial) => void;\r\n filterOpenHeaderIndex: number;\r\n oriListData: any[];\r\n filteredHeaderIndex: number[];\r\n setFilteredHeaderIndex: (index: number, deleteCurrentHeaderIndex?: boolean) => void;\r\n headerFilterType: HeaderFilterType;\r\n cellId: string;\r\n currentUrl: string;\r\n}\r\n\r\ntype TextSelectRendererProps = {\r\n changeListData: (data: Partial) => void;\r\n filterOpenHeaderIndex: number;\r\n setFilteredHeaderIndex: (index: number, deleteCurrentHeaderIndex?: boolean) => void;\r\n currentUrl: string;\r\n getFilteredListData: () => any[];\r\n cellId: string\r\n oriListData: any[],\r\n filteredHeaderIndex: number[],\r\n}\r\n\r\ntype NumberRendererProps = {\r\n changeListData: (data: Partial) => void;\r\n filterOpenHeaderIndex: number;\r\n setFilteredHeaderIndex: (index: number, deleteCurrentHeaderIndex?: boolean) => void;\r\n cellId: string;\r\n currentUrl: string;\r\n getFilteredListData: () => any[];\r\n}\r\n\r\ntype DateRendererProps = {\r\n changeListData: (data: Partial) => void;\r\n filterOpenHeaderIndex: number;\r\n setFilteredHeaderIndex: (index: number, deleteCurrentHeaderIndex?: boolean) => void;\r\n cellId: string;\r\n currentUrl: string;\r\n getFilteredListData: () => any[];\r\n}\r\n\r\ntype TextBeginRendererProps = {\r\n changeListData: (data: Partial) => void;\r\n setFilteredHeaderIndex: (index: number, deleteCurrentHeaderIndex?: boolean) => void;\r\n filterOpenHeaderIndex: number;\r\n cellId: string;\r\n currentUrl: string;\r\n getFilteredListData: () => any[];\r\n}\r\n\r\ntype FilterDetailsHandle = {\r\n clearFilter: () => void;\r\n};\r\n\r\nconst HeaderFilterStyle = styled.div`\r\nwidth:250px;\r\n\r\n.header-filter-icon {\r\n padding-left: 1px; \r\n padding-right: 2px; \r\n}\r\n\r\n.header-filter-modal {\r\n position:static;\r\n border: 1px solid #888;\r\n background-color: white;\r\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);\r\n cursor:default;\r\n top:30px;\r\n}\r\n\r\n.header-filter-modal-content {\r\n padding: 5px;\r\n}\r\n\r\n.header-filter-modal-checklist{\r\n position: fixed;\r\n border: 1px solid #808080;\r\n margin-top: 8px;\r\n padding: 3px;\r\n overflow-y: auto;\r\n width:235px;\r\n height:180px;\r\n}\r\n\r\n.header-filter-footer {\r\n display: flex;\r\n justify-content: space-around;\r\n align-items: center;\r\n height: 45px;\r\n margin-top: 190px;\r\n border-top: 1px solid gray;\r\n}\r\n`;\r\n\r\nconst customModalStyles: React.CSSProperties = {\r\n position: 'absolute',\r\n padding: '0px',\r\n background: 'transparent',\r\n borderRadius: 0,\r\n border: 'none',\r\n zIndex: 888890,\r\n width: 250\r\n};\r\n\r\nfunction getFilteredListByNumber(fromValue: number | undefined, toValue: number | undefined, oriListData: any[], cellId: string) {\r\n oriListData = oriListData.filter((listdata) => {\r\n const cellValue = listdata[cellId];\r\n const isEmptyValue = cellValue === undefined || cellValue === null || Number.isNaN(cellValue);\r\n\r\n if (fromValue === undefined && toValue === undefined) {\r\n return true;\r\n } else if (fromValue !== undefined && toValue !== undefined) {\r\n return fromValue <= cellValue && cellValue <= toValue && !isEmptyValue;\r\n } else if (fromValue !== undefined) {\r\n return fromValue <= cellValue && !isEmptyValue;\r\n } else if (toValue !== undefined) {\r\n return cellValue <= toValue && !isEmptyValue;\r\n }\r\n return true;\r\n });\r\n\r\n return oriListData;\r\n}\r\n\r\nfunction getFilteredListByDate(fromValue: string, toValue: string, oriListData: any[], cellId: string) {\r\n oriListData = oriListData.filter((listdata) => {\r\n const cellValue = listdata[cellId];\r\n const isEmptyValue = _.isEmpty(cellValue);\r\n if (_.isEmpty(fromValue) && _.isEmpty(toValue)) {\r\n return true;\r\n } else if (!_.isEmpty(fromValue) && !_.isEmpty(toValue)) {\r\n return compareIso(fromValue, cellValue) <= 0 && compareIso(cellValue, toValue) <= 0 && !isEmptyValue;\r\n } else if (!_.isEmpty(fromValue)) {\r\n return compareIso(fromValue, cellValue) <= 0 && !isEmptyValue;\r\n } else if (!_.isEmpty(toValue)) {\r\n return compareIso(cellValue, toValue) <= 0 && !isEmptyValue;\r\n }\r\n return true;\r\n });\r\n\r\n return oriListData;\r\n}\r\n\r\nfunction getFilteredListByTextBegin(text: string, textType: string, oriListData: any[], cellId: string) {\r\n const lowerTextValue = text.toLowerCase();\r\n if (textType === 'contains') {\r\n oriListData = oriListData?.filter(y => y[cellId].toLowerCase().includes(lowerTextValue));\r\n }\r\n else if (textType === 'beginwith') {\r\n oriListData = oriListData?.filter(y => y[cellId].toLowerCase().startsWith(lowerTextValue));\r\n }\r\n return oriListData;\r\n}\r\n\r\nconst TextSelectRenderer = forwardRef(function TextSelectRenderer({\r\n filterOpenHeaderIndex,\r\n changeListData,\r\n setFilteredHeaderIndex,\r\n currentUrl,\r\n getFilteredListData,\r\n cellId,\r\n oriListData,\r\n filteredHeaderIndex,\r\n}: TextSelectRendererProps, ref) {\r\n const [filterItemStorage, setFilterItemStorage] = useTypedFastStorage(`header-filter-column-${currentUrl}`, []);\r\n const [textValue, setTextValue] = useState('');\r\n const [filterItem, setFilterItem] = useState({ cellId: '', cellValues: [] });\r\n const [displayFilterItem, setDisplayFilterItem] = useState({ cellId: '', cellValues: [] });\r\n\r\n useImperativeHandle(ref, () => ({\r\n clearFilter,\r\n }));\r\n\r\n useEffect(() => {\r\n const lowerTextValue = textValue?.toLowerCase();\r\n\r\n const filteredValues = textValue\r\n ? filterItem.cellValues.filter(x => x?.label.toLowerCase().includes(lowerTextValue))\r\n : filterItem.cellValues;\r\n\r\n const newValues = (() => {\r\n if (filteredValues.length === 0) {\r\n return [];\r\n }\r\n\r\n if (filteredValues.length === 1 && filteredValues[0].label === \"(All)\") {\r\n return [];\r\n }\r\n\r\n if (textValue) {\r\n return [{ label: \"(All)\", value: \"(All)\" }, ...filteredValues];\r\n }\r\n\r\n return filteredValues;\r\n })();\r\n\r\n const uniqueValues: FilterSelectItemProps[] = Array.from(\r\n new Map(newValues.map(item => [item.value, item])).values()\r\n );\r\n\r\n setDisplayFilterItem({\r\n cellId: filterItem.cellId,\r\n cellValues: uniqueValues,\r\n });\r\n }, [textValue, filterItem]);\r\n\r\n useDeepCompareEffect(() => {\r\n if (!filterItemStorage) return;\r\n\r\n let newFilteredList = getFilteredListData();\r\n\r\n filterItemStorage.forEach(x => {\r\n if ((x.filterCellTexts?.length ?? 0) > 0)\r\n newFilteredList = newFilteredList?.filter(y => x.filterCellTexts?.includes(y[x.filterCellId]));\r\n });\r\n\r\n changeListData(newFilteredList)\r\n\r\n if (filterItemStorage.some(x => x.filterHeaderIndex === filterOpenHeaderIndex && ((x.filterCellTexts?.length ?? 0) > 0))) {\r\n setFilteredHeaderIndex(filterOpenHeaderIndex);\r\n }\r\n else {\r\n setFilteredHeaderIndex(filterOpenHeaderIndex, true);\r\n }\r\n const newCellData = getFilterSelectList();\r\n const updatedCellValues = [{ label: \"(All)\", value: \"(All)\" }, ...newCellData.cellValues];\r\n\r\n setFilterItem({ cellId: newCellData.cellId, cellValues: updatedCellValues });\r\n setDisplayFilterItem({ cellId: newCellData.cellId, cellValues: updatedCellValues });\r\n\r\n }, [filterItemStorage, filterOpenHeaderIndex]);\r\n\r\n function clearFilter() {\r\n if (!filterItemStorage) return;\r\n\r\n const newFilterItem = filterItemStorage.map(x => {\r\n if (x.filterCellId === displayFilterItem.cellId) x.filterCellTexts = [];\r\n return x;\r\n });\r\n setFilterItemStorage(newFilterItem)\r\n }\r\n\r\n function onFilterItemCheck(check: boolean, addFilterCellId: string, addFilterText: string) {\r\n const checkAllItem = addFilterText === \"(All)\";\r\n const filterItemIndex = filterItemStorage?.findIndex(x => x.filterCellId === addFilterCellId);\r\n\r\n if (check) {\r\n if (!filterItemStorage || filterItemIndex === -1) {\r\n const newItem: FilterCellStorageProps = {\r\n filterHeaderIndex: filterOpenHeaderIndex,\r\n filterCellId: addFilterCellId,\r\n filterCellTexts: checkAllItem ? displayFilterItem.cellValues.map(x => x.value) : [addFilterText]\r\n };\r\n\r\n const updatedStorage = filterItemStorage ? [..._.cloneDeep(filterItemStorage), newItem] : [newItem];\r\n setFilterItemStorage(updatedStorage);\r\n } else {\r\n let addTexts: string[] = [];\r\n let updatedStorage = _.cloneDeep(filterItemStorage).map((item) => {\r\n if (item.filterCellId === addFilterCellId) {\r\n addTexts = checkAllItem ? displayFilterItem.cellValues.map(x => x.value) : [...item.filterCellTexts ?? [], addFilterText];\r\n if (!checkAllItem && stringArraysEqual(addTexts, displayFilterItem.cellValues.map(x => x.value).filter(x => x !== \"(All)\"))) addTexts.unshift(\"(All)\");\r\n return { ...item, filterCellTexts: addTexts };\r\n }\r\n return item;\r\n });\r\n\r\n setFilterItemStorage(updatedStorage);\r\n }\r\n }\r\n else {\r\n if (filterItemStorage) {\r\n const updatedStorage = _.cloneDeep(filterItemStorage).map((item, index) => {\r\n if (index === filterItemIndex) {\r\n let updatedFilterCellTexts = checkAllItem ? [] : item.filterCellTexts?.filter(text => text !== addFilterText);\r\n if (!checkAllItem) updatedFilterCellTexts = updatedFilterCellTexts?.filter(x => x !== \"(All)\");\r\n return {\r\n ...item,\r\n filterCellTexts: updatedFilterCellTexts\r\n };\r\n }\r\n return item;\r\n })\r\n setFilterItemStorage(updatedStorage);\r\n }\r\n }\r\n }\r\n\r\n //본인 포함 모든 filter를 적용한 list의 value, cellid => for \"TextSelect\"\r\n function getFilterSelectList(): FilterListProps {\r\n interface RowType {\r\n [key: string]: any;\r\n }\r\n\r\n if (filterOpenHeaderIndex <= 0) {\r\n return { cellValues: [], cellId: '' };\r\n }\r\n\r\n let typedOriListData: RowType[] = oriListData as RowType[];\r\n\r\n if (filteredHeaderIndex?.length ?? 0 > 1) { //is multilple filter\r\n filterItemStorage?.forEach(x => {\r\n if (x.filterCellId !== cellId) {\r\n if (x.filterCellText && x.filterCellTextType) { //TextBegin Filter 반영\r\n typedOriListData = getFilteredListByTextBegin(x.filterCellText, x.filterCellTextType, typedOriListData, x.filterCellId);\r\n }\r\n else if (x.filterCellTexts && x.filterCellTexts.length > 0) { //TextSelect Filter 반영\r\n typedOriListData = typedOriListData?.filter(y => x.filterCellTexts?.includes(y[x.filterCellId]));\r\n }\r\n else if (x.filterToDate || x.filterFromDate) { //Date Filter 반영\r\n const findFromValue = x.filterFromDate ?? '';\r\n const findToValue = x.filterToDate ?? '';\r\n typedOriListData = getFilteredListByDate(findFromValue, findToValue, typedOriListData, x.filterCellId);\r\n }\r\n else if (x.filterFromNumber || x.filterToNumber) { //Number Filter 반영\r\n const findFromValue = !_.isEmpty(x.filterFromNumber) ? Number(x.filterFromNumber) : undefined\r\n const findToValue = !_.isEmpty(x.filterToNumber) ? Number(x.filterToNumber) : undefined;\r\n typedOriListData = getFilteredListByNumber(findFromValue, findToValue, typedOriListData, x.filterCellId);\r\n }\r\n }\r\n });\r\n }\r\n\r\n const uniqueValues: FilterSelectItemProps[] = Array.from(new Set(\r\n typedOriListData.map(row => row[cellId])\r\n ))\r\n .sort()\r\n .reduce((acc, value) => {\r\n let label;\r\n if (value === \"\" || (cellId === \"closed\" && value === 0)) {\r\n label = \"(Blank)\";\r\n } else {\r\n label = value;\r\n }\r\n\r\n const item = { label, value };\r\n\r\n if (value === \"\" || (cellId === \"closed\" && value === 0)) {\r\n acc.unshift(item);\r\n } else {\r\n acc.push(item);\r\n }\r\n return acc;\r\n }, [] as FilterSelectItemProps[]);\r\n \r\n console.log(uniqueValues);\r\n\r\n return { cellValues: uniqueValues, cellId: cellId };\r\n }\r\n\r\n function getCellLabel(cellLabel: any) {\r\n if (cellLabel === 1 && cellId === 'closed') { //Sales / Cose Batch Recog > \"+\" \r\n return \"lockBlue\" (OP Close);\r\n } else if (cellLabel === 2 && cellId === 'closed') { //Sales / Cose Batch Recog > \"+\" \r\n return \"lockRed\" (Period Close);\r\n }\r\n\r\n return cellLabel;\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n {\r\n setTextValue(e.target.value);\r\n }}\r\n />\r\n
    \r\n
    \r\n {displayFilterItem.cellValues.map((cellValue, i) => (\r\n \r\n x.filterCellId === displayFilterItem.cellId)?.some(x => x.filterCellTexts?.includes(cellValue.value)) ?? false}\r\n onChange={check => {\r\n onFilterItemCheck(check, displayFilterItem.cellId, cellValue.value);\r\n }}\r\n />\r\n
    \r\n ))}\r\n
    \r\n \r\n )\r\n});\r\n\r\nconst TextBeginRenderer = forwardRef(function TextBeginRenderer({\r\n changeListData,\r\n cellId,\r\n filterOpenHeaderIndex,\r\n setFilteredHeaderIndex,\r\n currentUrl,\r\n getFilteredListData,\r\n}: TextBeginRendererProps, ref) {\r\n const defaultFilterType = 'beginwith';\r\n const [filterItemStorage, _setFilterItemStorage] = useTypedFastStorage(`header-filter-column-${currentUrl}`, []);\r\n const [textValue, setTextValue] = useState('');\r\n const [filterTypeValue, setFilterTypeValue] = useState(defaultFilterType);\r\n const filterType: SelectItem[] = [\r\n { value: 'beginwith', label: 'Begins With' },\r\n { value: 'contains', label: 'Contains' }\r\n ];\r\n\r\n useImperativeHandle(ref, () => ({\r\n clearFilter,\r\n }));\r\n\r\n useEffect(() => {\r\n const filterCellText = filterItemStorage?.find(x => x.filterCellId === cellId)?.filterCellText;\r\n setTextValue(filterCellText && !_.isEmpty(filterCellText) ? filterCellText : '');\r\n const filterCellTextType = filterItemStorage?.find(x => x.filterCellId === cellId)?.filterCellTextType;\r\n setFilterTypeValue(filterCellTextType && !_.isEmpty(filterCellTextType) ? filterCellTextType : defaultFilterType);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n useDeepCompareEffect(() => {\r\n if (!filterItemStorage) return;\r\n\r\n let newFilteredList = getFilteredListData();\r\n const findTextValue = filterItemStorage.find(x => x.filterCellId === cellId)?.filterCellText ?? '';\r\n const findFilterTypeValue = filterItemStorage.find(x => x.filterCellId === cellId)?.filterCellTextType ?? '';\r\n if (!_.isEmpty(findTextValue)) {\r\n newFilteredList = getFilteredListByTextBegin(findTextValue, findFilterTypeValue, newFilteredList, cellId);\r\n }\r\n changeListData(newFilteredList);\r\n }, [filterItemStorage]);\r\n\r\n function setFilterItemStorage(newText: string, newTypeValue: string) {\r\n const filterItemIndex = filterItemStorage?.findIndex(x => x.filterCellId === cellId);\r\n\r\n if (!filterItemStorage || filterItemIndex === -1) {\r\n const newItem: FilterCellStorageProps = {\r\n filterHeaderIndex: filterOpenHeaderIndex,\r\n filterCellId: cellId,\r\n filterCellText: newText,\r\n filterCellTextType: newTypeValue,\r\n };\r\n\r\n const updatedStorage = filterItemStorage ? [..._.cloneDeep(filterItemStorage), newItem] : [newItem];\r\n _setFilterItemStorage(updatedStorage);\r\n } else {\r\n let updatedStorage = _.cloneDeep(filterItemStorage).map((item) => {\r\n if (item.filterCellId === cellId) {\r\n return { ...item, filterCellText: newText, filterCellTextType: newTypeValue };\r\n }\r\n return item;\r\n });\r\n\r\n _setFilterItemStorage(updatedStorage);\r\n }\r\n setFilteredHeaderIndex(filterOpenHeaderIndex, _.isEmpty(newText));\r\n }\r\n\r\n function clearFilter() {\r\n setTextValue('');\r\n setFilterTypeValue(String(filterType[0].value));\r\n setFilterItemStorage('', String(filterType[0].value));\r\n }\r\n\r\n return (\r\n
    \r\n \r\n {\r\n const targetValue = e.target.value;\r\n setFilterItemStorage(textValue, targetValue);\r\n setFilterTypeValue(e.target.value);\r\n }}\r\n />\r\n \r\n \r\n {\r\n const targetValue = e.target.value;\r\n setFilterItemStorage(targetValue, filterTypeValue);\r\n setTextValue(targetValue);\r\n }}\r\n />\r\n \r\n
    \r\n )\r\n});\r\n\r\nconst DateRenderer = forwardRef(function DateRenderer({\r\n filterOpenHeaderIndex,\r\n changeListData,\r\n setFilteredHeaderIndex,\r\n cellId,\r\n currentUrl,\r\n getFilteredListData,\r\n}: DateRendererProps, ref) {\r\n const [filterItemStorage, _setFilterItemStorage] = useTypedFastStorage(`header-filter-column-${currentUrl}`, []);\r\n const [fromValue, setFromValue] = useState('');\r\n const [toValue, setToValue] = useState('');\r\n\r\n useImperativeHandle(ref, () => ({\r\n clearFilter,\r\n }));\r\n\r\n useEffect(() => {\r\n const filterFromText = filterItemStorage?.find(x => x.filterCellId === cellId)?.filterFromDate;\r\n setFromValue(filterFromText && !_.isEmpty(filterFromText) ? filterFromText : '');\r\n const filterToText = filterItemStorage?.find(x => x.filterCellId === cellId)?.filterToDate;\r\n setToValue(filterToText && !_.isEmpty(filterToText) ? filterToText : '');\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n useDeepCompareEffect(() => {\r\n if (!filterItemStorage) return;\r\n\r\n let newFilteredList = getFilteredListData();\r\n const findFromValue = filterItemStorage.find(x => x.filterCellId === cellId)?.filterFromDate ?? '';\r\n const findToValue = filterItemStorage.find(x => x.filterCellId === cellId)?.filterToDate ?? '';\r\n newFilteredList = getFilteredListByDate(findFromValue, findToValue, newFilteredList, cellId);\r\n\r\n changeListData(newFilteredList);\r\n }, [filterItemStorage]);\r\n\r\n\r\n function setFilterItemStorage(fromValue: string, toValue: string) {\r\n const filterItemIndex = filterItemStorage?.findIndex(x => x.filterCellId === cellId);\r\n\r\n if (!filterItemStorage || filterItemIndex === -1) {\r\n const newItem: FilterCellStorageProps = {\r\n filterHeaderIndex: filterOpenHeaderIndex,\r\n filterCellId: cellId,\r\n filterFromDate: fromValue,\r\n filterToDate: toValue,\r\n };\r\n\r\n const updatedStorage = filterItemStorage ? [..._.cloneDeep(filterItemStorage), newItem] : [newItem];\r\n _setFilterItemStorage(updatedStorage);\r\n } else {\r\n let updatedStorage = _.cloneDeep(filterItemStorage).map((item) => {\r\n if (item.filterCellId === cellId) {\r\n return { ...item, filterFromDate: fromValue, filterToDate: toValue };\r\n }\r\n return item;\r\n });\r\n\r\n _setFilterItemStorage(updatedStorage);\r\n }\r\n\r\n setFilteredHeaderIndex(filterOpenHeaderIndex, _.isEmpty(fromValue) && _.isEmpty(toValue));\r\n }\r\n\r\n function clearFilter() {\r\n setFromValue('');\r\n setToValue('');\r\n setFilterItemStorage('', '');\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n {\r\n const newFromValue = fromDate ?? '';\r\n setFromValue(newFromValue);\r\n setFilterItemStorage(newFromValue, toValue);\r\n }}\r\n />\r\n
    \r\n
    \r\n ~\r\n
    \r\n
    \r\n {\r\n const newToValue = toDate ?? '';\r\n setFilterItemStorage(fromValue, newToValue);\r\n setToValue(newToValue);\r\n }}\r\n />\r\n
    \r\n
    \r\n \r\n )\r\n});\r\n\r\nconst NumberRenderer = forwardRef(function NumberRenderer({\r\n filterOpenHeaderIndex,\r\n changeListData,\r\n setFilteredHeaderIndex,\r\n cellId,\r\n currentUrl,\r\n getFilteredListData,\r\n}: NumberRendererProps, ref) {\r\n const [filterItemStorage, _setFilterItemStorage] = useTypedFastStorage(`header-filter-column-${currentUrl}`, []);\r\n const [fromValue, setFromValue] = useState();\r\n const [toValue, setToValue] = useState();\r\n\r\n useImperativeHandle(ref, () => ({\r\n clearFilter,\r\n }));\r\n\r\n useEffect(() => {\r\n const filterFromText = filterItemStorage?.find(x => x.filterCellId === cellId)?.filterFromNumber;\r\n setFromValue(!_.isEmpty(filterFromText) ? Number(filterFromText) : undefined);\r\n const filterToText = filterItemStorage?.find(x => x.filterCellId === cellId)?.filterToNumber;\r\n setToValue(!_.isEmpty(filterToText) ? Number(filterToText) : undefined);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n useDeepCompareEffect(() => {\r\n if (!filterItemStorage) return;\r\n\r\n let newFilteredList = getFilteredListData();\r\n const findFromValue = filterItemStorage.find(x => x.filterCellId === cellId)?.filterFromNumber;\r\n const findToValue = filterItemStorage.find(x => x.filterCellId === cellId)?.filterToNumber;\r\n newFilteredList = getFilteredListByNumber(!_.isEmpty(findFromValue) ? Number(findFromValue) : undefined, !_.isEmpty(findToValue) ? Number(findToValue) : undefined, newFilteredList, cellId);\r\n\r\n changeListData(newFilteredList);\r\n }, [filterItemStorage]);\r\n\r\n\r\n function setFilterItemStorage(fromValue: number | undefined, toValue: number | undefined) {\r\n const filterItemIndex = filterItemStorage?.findIndex(x => x.filterCellId === cellId);\r\n\r\n if (!filterItemStorage || filterItemIndex === -1) {\r\n const newItem: FilterCellStorageProps = {\r\n filterHeaderIndex: filterOpenHeaderIndex,\r\n filterCellId: cellId,\r\n filterFromNumber: fromValue === undefined ? '' : String(fromValue),\r\n filterToNumber: toValue === undefined ? '' : String(toValue),\r\n };\r\n\r\n const updatedStorage = filterItemStorage ? [..._.cloneDeep(filterItemStorage), newItem] : [newItem];\r\n _setFilterItemStorage(updatedStorage);\r\n } else {\r\n let updatedStorage = _.cloneDeep(filterItemStorage).map((item) => {\r\n if (item.filterCellId === cellId) {\r\n return { ...item, filterFromNumber: fromValue === undefined ? '' : String(fromValue), filterToNumber: toValue === undefined ? '' : String(toValue) };\r\n }\r\n return item;\r\n });\r\n\r\n _setFilterItemStorage(updatedStorage);\r\n }\r\n\r\n setFilteredHeaderIndex(filterOpenHeaderIndex, fromValue === undefined && toValue === undefined);\r\n }\r\n\r\n function clearFilter() {\r\n setFromValue(undefined);\r\n setToValue(undefined);\r\n setFilterItemStorage(undefined, undefined);\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n {\r\n const newFromValue = fromNum ?? undefined;\r\n setFilterItemStorage(newFromValue, toValue);\r\n setFromValue(newFromValue);\r\n }}\r\n />\r\n ~\r\n {\r\n const newToValue = toNum ?? undefined;\r\n setFilterItemStorage(fromValue, newToValue);\r\n setToValue(newToValue);\r\n }}\r\n />\r\n
    \r\n \r\n )\r\n});\r\n\r\nconst FilterDetails = forwardRef(function FilterDetails({\r\n changeListData,\r\n oriListData,\r\n filteredHeaderIndex,\r\n setFilteredHeaderIndex,\r\n filterOpenHeaderIndex,\r\n headerFilterType,\r\n cellId,\r\n currentUrl,\r\n}: FilterDetailsProps, ref) {\r\n const [filterItemStorage] = useTypedFastStorage(`header-filter-column-${currentUrl}`, []);\r\n const childRef = useRef(null);\r\n\r\n const clearFilter = () => {\r\n if (childRef.current) {\r\n childRef.current.clearFilter();\r\n }\r\n };\r\n\r\n useImperativeHandle(ref, () => ({\r\n clearFilter,\r\n }));\r\n\r\n //본인을 제외한 나머지 filter가 적용된 list\r\n function getFilteredListData() {\r\n let targetList = _.cloneDeep(oriListData);\r\n\r\n if (filteredHeaderIndex.length === 0)\r\n return targetList;\r\n else {\r\n filterItemStorage?.forEach((x) => {\r\n if (x.filterCellId !== cellId) {\r\n if (x.filterCellTexts && x.filterCellTexts.length > 0) { //TextSelect Filter 반영\r\n targetList = targetList?.filter(y => x.filterCellTexts?.includes(y[x.filterCellId]));\r\n }\r\n else if (x.filterCellText && x.filterCellTextType) { //TextBegin Filter 반영\r\n targetList = getFilteredListByTextBegin(x.filterCellText, x.filterCellTextType, targetList, x.filterCellId);\r\n }\r\n else if (x.filterToDate || x.filterFromDate) { //Date Filter 반영\r\n const findFromValue = x.filterFromDate ?? '';\r\n const findToValue = x.filterToDate ?? '';\r\n targetList = getFilteredListByDate(findFromValue, findToValue, targetList, x.filterCellId);\r\n }\r\n else if (x.filterFromNumber || x.filterToNumber) { //Number Filter 반영\r\n const findFromValue = !_.isEmpty(x.filterFromNumber) ? Number(x.filterFromNumber) : undefined\r\n const findToValue = !_.isEmpty(x.filterToNumber) ? Number(x.filterToNumber) : undefined;\r\n targetList = getFilteredListByNumber(findFromValue, findToValue, targetList, x.filterCellId);\r\n }\r\n }\r\n })\r\n }\r\n\r\n return targetList;\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n headerFilterType === 'TextBegin' &&\r\n \r\n }\r\n {\r\n headerFilterType === 'TextSelect' &&\r\n \r\n }\r\n {\r\n (headerFilterType === 'Date') &&\r\n\r\n \r\n }\r\n {\r\n (headerFilterType === 'Number') &&\r\n \r\n }\r\n \r\n )\r\n});\r\n\r\nfunction TableHeaderFilters({\r\n oriListData,\r\n changeListData,\r\n filterOpenHeaderIndex,\r\n setFilteredHeaderIndex,\r\n modalPosition,\r\n headerFilterType,\r\n cellId,\r\n filteredHeaderIndex,\r\n currentUrl,\r\n closeModal,\r\n}: TableHeaderFiltersProps) {\r\n const FilterDetailsRef = useRef(null);\r\n const modalRef = useRef(null);\r\n\r\n const handleClearFilter = () => {\r\n if (FilterDetailsRef.current)\r\n FilterDetailsRef.current.clearFilter();\r\n };\r\n\r\n useEffect(() => {\r\n function handleClickOutside(event: MouseEvent) {\r\n const filterIconContainer = document.getElementById('header-filter-icon-container');\r\n const target = event.target as Node;\r\n\r\n if (filterIconContainer && filterIconContainer.contains(target)) {\r\n return;\r\n }\r\n\r\n if (modalRef.current) {\r\n const rect = modalRef.current.getBoundingClientRect();\r\n const { clientX: x, clientY: y } = event;\r\n const calendar = document.getElementsByClassName(\"ifms-date-box\")[0] as HTMLDivElement;\r\n if (!calendar && \r\n ( x < rect.left ||\r\n x > rect.right ||\r\n y < rect.top ||\r\n y > rect.bottom\r\n )) {\r\n closeModal();\r\n }\r\n }\r\n }\r\n\r\n document.addEventListener('mousedown', handleClickOutside);\r\n return () => {\r\n document.removeEventListener('mousedown', handleClickOutside);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n function applyFilteredHeaderIndex(index: number, deleteCurrentHeaderIndex: boolean = false) {\r\n if (!deleteCurrentHeaderIndex) {\r\n const updatedSet = new Set([...filteredHeaderIndex, index]);\r\n setFilteredHeaderIndex(Array.from(updatedSet));\r\n }\r\n else\r\n setFilteredHeaderIndex(filteredHeaderIndex.filter(x => x !== filterOpenHeaderIndex));\r\n }\r\n\r\n let tempModalLeftPosition = modalPosition.left;\r\n if(modalRef.current){\r\n if (modalRef.current.offsetWidth + modalPosition.left > document.body.offsetWidth) {\r\n tempModalLeftPosition = document.body.offsetWidth - modalRef.current.offsetWidth - 15\r\n }\r\n }\r\n\r\n return (\r\n 0}\r\n style={{\r\n overlay: { background: 'transparent', pointerEvents: 'none' },\r\n content: {\r\n ...customModalStyles,\r\n top: modalPosition.top,\r\n left: tempModalLeftPosition,\r\n pointerEvents: 'auto',\r\n },\r\n }}\r\n >\r\n \r\n \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n ) => {\r\n e.stopPropagation();\r\n handleClearFilter();\r\n }}>\r\n Clear Filter\r\n \r\n ) => {\r\n e.stopPropagation();\r\n closeModal();\r\n }}>\r\n Ok\r\n \r\n
    \r\n \r\n
    \r\n \r\n );\r\n}\r\n\r\nexport default React.memo(TableHeaderFilters);\r\n","/* eslint-disable jsx-a11y/aria-role */\r\nimport _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\r\nimport { useBlockLayout, useTable } from 'react-table';\r\nimport styled from 'styled-components';\r\nimport { DragDropContext, Draggable, Droppable } from \"react-beautiful-dnd\";\r\n\r\nimport { faAngleDown, faAngleUp, faFilter } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nimport postal from 'postal';\r\nimport useFlexResizer from './useFlexResizer';\r\nimport useFixResizer from './useFixResizer';\r\nimport { useAppSelector } from '../../app/hooks';\r\n\r\nimport Tracking_Y from '../../img/Tracking_Y_circle.svg';\r\nimport Tracking_R from '../../img/Tracking_R_circle.svg';\r\nimport Tracking_B from '../../img/Tracking_B_circle.svg';\r\nimport Tracking_G from '../../img/Tracking_G_circle.svg';\r\nimport JobListViewContext from '../../components/common/JobListViewContext';\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport TableHeaderFilters, { FilterCellStorageProps } from '../TableHeaderFilters';\r\nimport { useHistory } from 'react-router';\r\nimport { useTypedFastStorage } from '../../hooks/useFastStorage';\r\nimport { JournalLedgerListItem } from '../../fms.data/models/JournalLedgerListItem';\r\nimport { ScrollMemory } from './useTableNavigation';\r\n\r\ninterface TableVirtualState {\r\n scrollTop: number;\r\n paddingTop: number;\r\n paddingBottom: number;\r\n rowHeight: number;\r\n rowGroupTotalHeight: number;\r\n buffer: number;\r\n}\r\n\r\ninterface StylesProps {\r\n blackMode: boolean;\r\n selectable: boolean;\r\n}\r\n\r\nconst Styles = styled.div`\r\n .table {\r\n outline: none;\r\n border: ${(props) => props.blackMode ? '1px solid black' : '1px solid #c9c9c9'};\r\n font-size: 11px;\r\n display: inline-block;\r\n border-spacing: 0;\r\n background-color: #D9D9D9;\r\n overflow: auto;\r\n margin-bottom: 0;\r\n /*color: #171C27;*/\r\n color: black;\r\n\r\n .add-line-container:hover {\r\n font-weight: bold;\r\n color: black;\r\n }\r\n\r\n .tr, .tr-alternate, .tr-alternate2 {\r\n background-color: white;\r\n box-shadow: 0px 1px 0px 0px #f1f2f6 inset;\r\n :last-child {\r\n .td {\r\n border-bottom: 0;\r\n }\r\n }\r\n }\r\n \r\n .tr-alternate {\r\n border-bottom: 1px solid;\r\n }\r\n\r\n .tr-alternate2 {\r\n border-top: 1px solid;\r\n }\r\n\r\n .data-row-selectable {\r\n cursor: default;\r\n }\r\n\r\n .tr:not(.data-row-selected) .table-cell-hover:not(.data-cell-selected-inner),\r\n [class*=\"tr-alternate\"]:not(.data-row-selected) .table-cell-hover:not(.data-cell-selected-inner) {\r\n background-color: #E9ECEF !important;\r\n }\r\n\r\n .data-row-selectable:hover {\r\n background-color: ${(props) => props.selectable ? '#E9ECEF !important;' : ''}\r\n }\r\n\r\n .data-row-editing {\r\n cursor: default;\r\n background-color: #b3c9df !important;\r\n margin-top:3px;\r\n margin-bottom:3px;\r\n }\r\n\r\n .data-cell-selected {\r\n outline: 2px solid #0066cc;\r\n outline-offset: -2px;\r\n }\r\n\r\n .data-cell-selected-inner {\r\n background-color: #CCFF99 !important;\r\n }\r\n\r\n .data-row-selected {\r\n background-color: #B3C9DF !important;\r\n ${'' /* #B3C9DF #90EE90 */}\r\n }\r\n\r\n .th,\r\n .td {\r\n margin: 0;\r\n border-bottom: 0;\r\n border-right: 0;\r\n word-wrap: break-word;\r\n user-select: none;\r\n \r\n ${'' /* !!! In this example we use an absolutely position resizer,\r\n so this 'relative' is required!!! */}\r\n position: relative;\r\n\r\n .resizer {\r\n display: inline-block;\r\n background: transparent;\r\n width: 15px;\r\n height: 100%;\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n transform: translateX(calc(50% + 3px));\r\n z-index: 1;\r\n ${'' /* prevents from scrolling while dragging on touch devices */}\r\n touch-action: none;\r\n cursor: col-resize !important;\r\n }\r\n }\r\n\r\n .td-clip-text {\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n }\r\n\r\n .header-yellow {\r\n background-color: #fff2cc;\r\n }\r\n\r\n .header-white {\r\n background-color: #ffffff;\r\n }\r\n\r\n .header-teal {\r\n background-color: #e2f0d9;\r\n }\r\n\r\n .header-gray {\r\n background-color: #E6E6E6;\r\n }\r\n \r\n .header-black {\r\n background-color: #6C747E;\r\n }\r\n\r\n .header-lightgray {\r\n background-color: #F0F0F0;\r\n }\r\n \r\n .data-row-fontred {\r\n color: red;\r\n } \r\n .data-row-fontblue {\r\n color: blue;\r\n } \r\n .data-row-fontredbold {\r\n color: red;\r\n font-weight: bold;\r\n }\r\n .data-row-fontgreen {\r\n color: green;\r\n }\r\n .data-row-amsstatus-s {\r\n color: #008000;\r\n }\r\n .data-row-amsstatus-w {\r\n color: #404000;\r\n }\r\n .data-row-amsstatus-e {\r\n color: #c00000;\r\n }\r\n .data-row-amsstatus-q {\r\n color: #808000;\r\n }\r\n .data-row-amsstatus-d {\r\n color: #800080;\r\n }\r\n .data-row-amsstatus-a {\r\n color: #000080;\r\n }\r\n .data-row-isf-d {\r\n color: #800080;\r\n }\r\n .data-row-isf-rjt {\r\n color: #e73838;\r\n }\r\n\r\n .header-col {\r\n user-select: none;\r\n cursor: pointer;\r\n text-align: center;\r\n color: #000000;\r\n font-weight: 500;\r\n font-weight: bold;\r\n }\r\n\r\n .header-col-regular {\r\n padding: 0;\r\n min-height: 20px;\r\n border-right: 1px solid #c9c9c9;\r\n\r\n :last-child {\r\n .td {\r\n border-right: 0;\r\n }\r\n }\r\n }\r\n \r\n .header-col-doubleline {\r\n padding: 0;\r\n min-height: 30px;\r\n border-right: 1px solid #c9c9c9;\r\n\r\n :last-child {\r\n .td {\r\n border-right: 0;\r\n }\r\n }\r\n }\r\n\r\n .header-col-black {\r\n border-right: 1px solid #ffffff;\r\n color: #ffffff;\r\n\r\n :last-child {\r\n .td {\r\n border-right: 0;\r\n }\r\n }\r\n }\r\n\r\n .header-col-draggable-over {\r\n user-select: none;\r\n cursor: pointer;\r\n text-align: center;\r\n padding: 5px 0;\r\n background-color: #ffd55c;\r\n color: #757171;\r\n font-weight: 500;\r\n }\r\n\r\n .data-row {\r\n -webkit-text-size-adjust: none;\r\n box-sizing: border-box;\r\n -moz-box-sizing: border-box;\r\n -webkit-box-sizing: border-box;\r\n text-align: center;\r\n }\r\n\r\n .data-row-regular {\r\n min-height: 20px;\r\n }\r\n\r\n .data-row-virtual {\r\n height: 22px;\r\n }\r\n\r\n .data-row-nospacing {\r\n min-height: 2px;\r\n }\r\n\r\n .data-cell {\r\n font-size: 11px !important;\r\n }\r\n\r\n .data-cell:not(.data-cell-selected-inner):has(.table-cell-disabled),\r\n .black-data-cell:not(.data-cell-selected-inner):has(.table-cell-disabled){\r\n background-color:#F5F5F5;\r\n border-Bottom: 1px solid #E5E5E5;\r\n }\r\n \r\n table-cell-disabled\r\n .black-data-cell {\r\n font-size: 11px !important;\r\n }\r\n\r\n &.sticky {\r\n .header,\r\n .footer {\r\n position: sticky;\r\n z-index: 1;\r\n width: fit-content;\r\n }\r\n\r\n .header {\r\n top: 0;\r\n }\r\n\r\n .footer {\r\n bottom: 0;\r\n }\r\n\r\n .body {\r\n position: relative;\r\n z-index: 0;\r\n }\r\n\r\n [data-sticky-td] {\r\n position: sticky;\r\n }\r\n }\r\n }\r\n .injected-content-editing {\r\n margin-top:5px;\r\n height:23px;\r\n }\r\n`;\r\n\r\nfunction getHeaderProps(column: any, columnSize: any) {\r\n const result = column.getHeaderProps();\r\n if (columnSize) {\r\n result.style.width = `${columnSize.width}px`;\r\n result.style.fontSize = `10px`;\r\n result.style.fontWeight = `bold`;\r\n }\r\n return result;\r\n}\r\n\r\nfunction getCellProps(cell: any, columnSize: any | null, getCustomCellProps: any | null, rowIndex: number) {\r\n const result = cell.getCellProps();\r\n result.style.display = 'flex';\r\n result.style.alignItems = 'center';\r\n\r\n if (columnSize) {\r\n result.style.width = `${columnSize.width}px`;\r\n }\r\n\r\n if (getCustomCellProps) {\r\n return getCustomCellProps(result, cell, rowIndex);\r\n } else {\r\n return result;\r\n }\r\n}\r\n\r\nfunction getCellClasses(cell: any, blackMode: boolean, rowNum: number) {\r\n let cellClass = 'data-cell';\r\n if (blackMode) {\r\n cellClass = 'black-data-cell';\r\n }\r\n if (!!cell.column.wrap) {\r\n return `td ${cellClass}`\r\n }\r\n return `td ${cellClass} td-clip-text row-${rowNum}`;\r\n}\r\n\r\nconst getHeaderItemDraggableStyle = ({ isDragging, isDropAnimating }: any, draggableStyle: any) => {\r\n const background = isDragging ? 'rgba(236, 116, 0, 0.7)' : 'inherit';\r\n\r\n return {\r\n ...draggableStyle,\r\n // some basic styles to make the items look a bit nicer\r\n userSelect: \"none\",\r\n cursor: 'pointer',\r\n\r\n // change background colour if dragging\r\n background,\r\n\r\n ...(!isDragging && { transform: \"translate(0,0)\" }),\r\n ...(isDropAnimating && { transitionDuration: \"0.001s\" }),\r\n\r\n padding: 0,\r\n margin: 0,\r\n height: '100%',\r\n paddingTop: 1\r\n\r\n // styles we need to apply on draggables\r\n };\r\n};\r\n\r\nfunction Resizer({ column, onResizeStart }: any) {\r\n function onMouseDown(e: React.MouseEvent) {\r\n const parentElement = (e.target as Element).parentElement as Element;\r\n if (parentElement) {\r\n onResizeStart(column, parentElement);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n );\r\n}\r\n\r\nfunction TableHeader({\r\n id,\r\n index,\r\n column,\r\n columnSize,\r\n provided,\r\n snapshot,\r\n isDraggableOverColumn,\r\n onHeaderClick,\r\n onResizeStart,\r\n colorClass,\r\n isOrderByAscending,\r\n isOrderByDescending,\r\n blackMode,\r\n name,\r\n hoverHeaderIndex,\r\n setHoverHeaderIndex,\r\n filterOpenHeaderIndex,\r\n setFilterOpenHeaderIndex,\r\n useHeaderFilterParams,\r\n filteredHeaderIndex,\r\n mouseOverFilterIcon,\r\n setMouseOverFilterIcon,\r\n setHeaderFilterModalPosition,\r\n headerFilterType,\r\n closeModal,\r\n}: any) {\r\n const headerSizeClass = useHeaderFilterParams.useHeaderFilter ? 'header-col-doubleline' : 'header-col-regular';\r\n const tableModeClass = blackMode ? 'header-col-black' : '';\r\n\r\n const filterIconColor = () => {\r\n if (hoverHeaderIndex === index)\r\n return 'black';\r\n else {\r\n if (filteredHeaderIndex?.includes(index))\r\n return !blackMode ? '#0079A4' : '#66CCFF';\r\n else if (filterOpenHeaderIndex !== index)\r\n return !blackMode ? 'gray' : 'white'\r\n else\r\n return 'orange';\r\n }\r\n }\r\n\r\n function openModal(event: any) {\r\n closeModal();\r\n\r\n const buttonRect = event.target.getBoundingClientRect();\r\n const modalTop = buttonRect.top + window.scrollY + buttonRect.height + 10;\r\n const modalLeft = buttonRect.right + window.scrollX;\r\n setHeaderFilterModalPosition({ top: modalTop, left: modalLeft });\r\n\r\n setFilterOpenHeaderIndex(hoverHeaderIndex);\r\n const button = document.getElementsByName(useHeaderFilterParams.disableBtnNameWhenFilterModalOpen);\r\n\r\n if (button.length > 0) {\r\n (button[0] as HTMLButtonElement).disabled = true;\r\n }\r\n };\r\n\r\n return (\r\n \r\n {\r\n setHoverHeaderIndex(index);\r\n }}\r\n onMouseLeave={() => {\r\n setHoverHeaderIndex(-1);\r\n }}\r\n name={`${name}-draggable`}\r\n {...provided.draggableProps}\r\n {...provided.dragHandleProps}\r\n ref={provided.innerRef}\r\n style={{\r\n ...getHeaderItemDraggableStyle(\r\n snapshot,\r\n provided.draggableProps.style,\r\n ),\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }}\r\n onClick={onHeaderClick}\r\n >\r\n {isOrderByAscending && !useHeaderFilterParams.useHeaderFilter &&\r\n <>\r\n \r\n  \r\n \r\n }\r\n {isOrderByDescending && !useHeaderFilterParams.useHeaderFilter &&\r\n <>\r\n \r\n  \r\n \r\n }\r\n {!!column.tooltip &&\r\n {column.render('Header')}\r\n }\r\n {\r\n !column.tooltip && useHeaderFilterParams.useHeaderFilter\r\n ?\r\n
    \r\n <>\r\n {isOrderByAscending &&\r\n <>\r\n \r\n  \r\n \r\n }\r\n {isOrderByDescending &&\r\n <>\r\n \r\n  \r\n \r\n }\r\n {column.render('Header')}\r\n \r\n
    \r\n :\r\n <>{column.render('Header')}\r\n }\r\n\r\n {useHeaderFilterParams.useHeaderFilter && headerFilterType !== \"None\" && (hoverHeaderIndex === index || filterOpenHeaderIndex === index || filteredHeaderIndex?.includes(index)) &&\r\n <>\r\n setMouseOverFilterIcon(true)}\r\n onMouseLeave={() => setMouseOverFilterIcon(false)}\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n hoverHeaderIndex === filterOpenHeaderIndex ? closeModal() : openModal(event);\r\n }}\r\n >\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n }\r\n \r\n {column.resizable &&\r\n onResizeStart(index)} />\r\n }\r\n \r\n );\r\n}\r\n\r\n// Currently supports single header\r\n\r\nfunction Table({\r\n columns,\r\n data,\r\n height,\r\n width,\r\n onHeaderClick,\r\n onColumnReorder,\r\n onColumnsResized,\r\n overflowX,\r\n overflowY,\r\n flexResizer,\r\n footerRow,\r\n headerRow,\r\n headersColor,\r\n selectable,\r\n alternateRows,\r\n showPager,\r\n page,\r\n pageCount,\r\n maxLinkCount,\r\n onPageSelect,\r\n orderBy,\r\n customTableId,\r\n getCustomCellProps,\r\n rowProps: additionalRowProps,\r\n selectedRowIndex,\r\n selectedColIndex,\r\n blackMode,\r\n tableStyle: additionalTableStyle,\r\n noTooltip,\r\n isListView,\r\n useHighlightCellOnMouseover,\r\n useSetClickedCellWhenClick,\r\n noHeaders,\r\n renderBottomControls,\r\n tableTitle,\r\n cellRangeSelect,\r\n useHeaderFilterParams,\r\n useVirtual,\r\n}: any) {\r\n let enterSubscription: ISubscriptionDefinition | null = null;\r\n const isVirtualTable = isListView || useVirtual;\r\n\r\n const history = useHistory();\r\n const currentUrl = `${history.location.pathname}${history.location.search}`;\r\n const [filterItemStorage, /*_setFilterItemStorage*/, removeFilterItemStorage] = useTypedFastStorage(`header-filter-column-${currentUrl}`, []);\r\n\r\n const appContext = useContext(ApplicationContext);\r\n\r\n let dataRow = `data-row ${!isVirtualTable ? 'data-row-regular' : 'data-row-virtual'}`;\r\n\r\n const tableIdRef = useRef(customTableId ?? _.uniqueId('ifms-table-'));\r\n const tableRef = useRef(null);\r\n\r\n const operationState = useAppSelector(state => state.operation);\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const [headerFilterModalPosition, setHeaderFilterModalPosition] = useState({ top: 0, left: 0 });\r\n const [mouseOverFilterIcon, setMouseOverFilterIcon] = useState(false);\r\n const [hoverHeaderIndex, setHoverHeaderIndex] = React.useState(-1);\r\n const [filterOpenHeaderIndex, setFilterOpenHeaderIndex] = React.useState(-1);\r\n const [filteredHeaderIndex, setFilteredHeaderIndex] = React.useState([]);\r\n\r\n const startCellRef = React.useRef<{ column: number; row: number } | null>(null);\r\n const endCellRef = React.useRef<{ column: number; row: number } | null>(null);\r\n const selectingRef = React.useRef(false);\r\n const hasMovedRef = React.useRef(false);\r\n\r\n useEffect(() => {\r\n if (isListView) subscribeChannels();\r\n\r\n function handleClickOutside(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n if (target?.dataset?.clearheaderfilterwhenclick === 'true') {\r\n removeFilterItemStorage();\r\n setFilteredHeaderIndex([]);\r\n }\r\n //어떤 식으로든 Cell Range Select 중 Modal이 떠서 Onclick이벤트가 실행됐다면 Cell Range Select 기능을 끝내야함\r\n const modals = document.querySelectorAll('[class^=\"ReactModal__Content\"]');\r\n if (modals.length > 0) {\r\n selectingRef.current = false;\r\n startCellRef.current = null;\r\n endCellRef.current = null;\r\n }\r\n }\r\n document.addEventListener('click', handleClickOutside);\r\n return () => {\r\n if (isListView) unsubscribeChannels();\r\n document.removeEventListener('click', handleClickOutside);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!filterItemStorage) return;\r\n\r\n if (filterItemStorage.length > 0) {\r\n const combinedIndexesSet: number[] = [];\r\n\r\n filterItemStorage.forEach(item => {\r\n if ((item.filterCellTexts?.length ?? 0) > 0) {\r\n combinedIndexesSet.push(item.filterHeaderIndex);\r\n }\r\n else if (item.filterCellText) {\r\n combinedIndexesSet.push(item.filterHeaderIndex);\r\n }\r\n else if (item.filterFromDate || item.filterToDate) {\r\n combinedIndexesSet.push(item.filterHeaderIndex);\r\n }\r\n else if (item.filterFromNumber || item.filterToNumber) {\r\n combinedIndexesSet.push(item.filterHeaderIndex);\r\n }\r\n });\r\n\r\n setFilteredHeaderIndex(combinedIndexesSet);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (customTableId) tableIdRef.current = customTableId;\r\n }, [customTableId])\r\n\r\n const [columnOverIndex, setColumnOverIndex] = React.useState(null);\r\n const [fixColumnSizes, onFixResizeStart] = useFixResizer(tableIdRef.current, columns, onColumnsResized);\r\n const [flexColumnSizes, onFlexResizeStart] = useFlexResizer(tableIdRef.current, columns, onColumnsResized);\r\n\r\n const columnSizes: any = flexResizer ? flexColumnSizes : fixColumnSizes;\r\n const onResizeStart = flexResizer ? onFlexResizeStart : onFixResizeStart;\r\n\r\n const defaultColumn = React.useMemo(\r\n () => ({\r\n minWidth: 30,\r\n width: 150,\r\n maxWidth: 1200,\r\n }),\r\n []\r\n );\r\n\r\n const tableInstance = useTable({\r\n columns,\r\n data,\r\n defaultColumn,\r\n },\r\n useBlockLayout,\r\n );\r\n\r\n const {\r\n getTableProps,\r\n getTableBodyProps,\r\n headerGroups,\r\n rows,\r\n prepareRow,\r\n } = tableInstance;\r\n\r\n\r\n const [displayIdx, setDisplayIdx] = useState({ startIdx: 0, endIdx: 0 });\r\n\r\n const tableStateRef = useRef({\r\n scrollTop: 0,\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n rowHeight: 22,\r\n rowGroupTotalHeight: 0,\r\n buffer: 0,\r\n });\r\n\r\n useEffect(() => {\r\n if (!tableRef.current) return;\r\n\r\n tableStateRef.current.rowGroupTotalHeight = tableStateRef.current.rowHeight * rows.length;\r\n }, [rows.length])\r\n\r\n const updateVisibleRows = useCallback((e?: Event) => {\r\n const currentTable = tableRef.current;\r\n if (!currentTable || rows.length === 0) return;\r\n\r\n e?.stopPropagation();\r\n\r\n const state = tableStateRef.current;\r\n const buffer = Math.min(25, Math.floor(currentTable.clientHeight / (state.rowHeight))); // buffer max top, bottom 25 > total 50\r\n\r\n const displayRowIndex = calcDisplayRowIndex(state.rowHeight, buffer, rows.length)\r\n const newStartIndex = displayRowIndex.startIndex;\r\n const endIndex = displayRowIndex.endIndex;\r\n\r\n state.buffer = buffer;\r\n state.scrollTop = currentTable.scrollTop;\r\n state.paddingTop = newStartIndex * state.rowHeight;\r\n state.paddingBottom = Math.max(0, state.rowGroupTotalHeight - (endIndex * state.rowHeight));\r\n\r\n const newEndIndex = (isListView && state.scrollTop === 0 && !ScrollMemory[tableIdRef.current]?.forceSetDisplayRows ) ? rows.length : endIndex;\r\n if (displayIdx.startIdx === newStartIndex && displayIdx.endIdx === newEndIndex) return;\r\n\r\n setDisplayIdx({ startIdx: newStartIndex, endIdx: newEndIndex });\r\n }, [rows, displayIdx.endIdx, displayIdx.startIdx]);\r\n\r\n useEffect(() => {\r\n if (!isVirtualTable) return;\r\n\r\n updateVisibleRows();\r\n\r\n const currentBody = tableRef.current;\r\n if (currentBody) {\r\n currentBody.addEventListener('scroll', updateVisibleRows, { passive: true });\r\n return () => {\r\n currentBody.removeEventListener('scroll', updateVisibleRows);\r\n };\r\n }\r\n }, [updateVisibleRows]);\r\n\r\n useEffect(() => {\r\n const tableNode = document.getElementById(tableIdRef.current);\r\n if (!tableNode) {\r\n return;\r\n }\r\n\r\n const header = tableNode.querySelector('div.header');\r\n const rowsEle = tableNode.querySelector('div[role=\"rowgroup\"]') as HTMLDivElement;\r\n\r\n if (!header || !rowsEle) {\r\n return;\r\n }\r\n\r\n const hr = header.getBoundingClientRect();\r\n const state = tableStateRef.current;\r\n\r\n if (isVirtualTable) {\r\n rowsEle.style.height = state.rowGroupTotalHeight === 0 ? `${parseInt(height) - hr.height - 2}px` : `${state.rowGroupTotalHeight}px`;\r\n }\r\n else {\r\n rowsEle.style.height = `calc(100% - ${hr.height}px)`;\r\n }\r\n }, [tableIdRef.current, tableStateRef.current.rowGroupTotalHeight]);\r\n\r\n function subscribeChannels() {\r\n enterSubscription = postal.subscribe({\r\n channel: 'ifms',\r\n topic: 'ifms.table-setDisplayRow',\r\n callback: (data = { rowsLength: -1 }) => {\r\n const displayRowIndex = calcDisplayRowIndex(tableStateRef.current.rowHeight, tableStateRef.current.buffer, data.rowsLength)\r\n if (displayRowIndex.startIndex !== displayIdx.startIdx || displayRowIndex.endIndex !== displayIdx.endIdx) {\r\n setDisplayIdx({ startIdx: displayRowIndex.startIndex, endIdx: displayRowIndex.endIndex });\r\n }\r\n },\r\n });\r\n }\r\n\r\n function unsubscribeChannels() {\r\n if (enterSubscription) {\r\n postal.unsubscribe(enterSubscription);\r\n }\r\n }\r\n\r\n const updateCellSelection = (cells: { start: { column: number; row: number }, end: { column: number; row: number } }) => {\r\n const previousSelected = document.querySelectorAll('.data-cell-selected-inner');\r\n previousSelected.forEach(cell => cell.classList.remove('data-cell-selected-inner'));\r\n\r\n const startCol = Math.min(cells.start.column, cells.end.column);\r\n const endCol = Math.max(cells.start.column, cells.end.column);\r\n const startRow = Math.min(cells.start.row, cells.end.row);\r\n const endRow = Math.max(cells.start.row, cells.end.row);\r\n\r\n for (let row = startRow; row <= endRow; row++) {\r\n for (let col = startCol; col <= endCol; col++) {\r\n const cell = document.getElementById(`${tableIdRef.current}-cell-${row}-${col}`);\r\n if (cell) {\r\n cell.classList.add('data-cell-selected-inner');\r\n }\r\n }\r\n }\r\n };\r\n\r\n const beginSelection = (position: { column: number; row: number }) => {\r\n if (!cellRangeSelect) return;\r\n\r\n startCellRef.current = position;\r\n endCellRef.current = position;\r\n selectingRef.current = true;\r\n hasMovedRef.current = false;\r\n };\r\n\r\n const updateSelection = (position: { column: number; row: number }) => {\r\n if (!cellRangeSelect) return;\r\n\r\n if (selectingRef.current && startCellRef.current) {\r\n hasMovedRef.current = true;\r\n endCellRef.current = position;\r\n\r\n updateCellSelection({\r\n start: startCellRef.current,\r\n end: position\r\n });\r\n }\r\n };\r\n\r\n const endSelection = (position: { column: number; row: number }) => {\r\n if (!cellRangeSelect) return;\r\n\r\n if (selectingRef.current && startCellRef.current) {\r\n endCellRef.current = position;\r\n selectingRef.current = false;\r\n\r\n if (hasMovedRef.current) {\r\n updateCellSelection({\r\n start: startCellRef.current,\r\n end: position\r\n });\r\n } else {\r\n const previousSelected = document.querySelectorAll('.data-cell-selected-inner');\r\n previousSelected.forEach(cell => cell.classList.remove('data-cell-selected-inner'));\r\n }\r\n\r\n hasMovedRef.current = false;\r\n }\r\n };\r\n\r\n function onDragEnd(result: any) {\r\n setColumnOverIndex(null);\r\n\r\n if (!result || !result.destination || !result.source || !columns[result.destination.index].sortable) {\r\n return;\r\n }\r\n\r\n onColumnReorder({ from: result.source.index, to: result.destination.index });\r\n }\r\n\r\n function onDragUpdate(update: any) {\r\n const newColumnOverIndex = (update && update.destination) ? update.destination.index : null;\r\n if (newColumnOverIndex !== columnOverIndex) {\r\n setColumnOverIndex(newColumnOverIndex);\r\n }\r\n }\r\n\r\n function isDraggableOverColumn(c: any, cIndex: number) {\r\n return c.sortable && cIndex === columnOverIndex;\r\n }\r\n\r\n function calcDisplayRowIndex(rowHeight: number, buffer: number, rowLength: number) {\r\n let startIndex = -1;\r\n let endIndex = -1;\r\n\r\n if (tableRef.current) {\r\n startIndex = Math.max(0, Math.floor(tableRef.current.scrollTop / rowHeight) - buffer);\r\n const visibleRows = Math.ceil(tableRef.current.clientHeight / rowHeight);\r\n endIndex = Math.min(\r\n startIndex + visibleRows + buffer * 2,\r\n rowLength\r\n );\r\n }\r\n\r\n return { startIndex, endIndex };\r\n }\r\n\r\n function computeFooterCellWidth(index: number) {\r\n let actualColumnIndex = 0;\r\n for (let i = 0; i < index; ++i) {\r\n const colspan = footerRow[i].colspan || 1;\r\n actualColumnIndex += colspan;\r\n }\r\n\r\n let result = 0;\r\n\r\n let colspan = footerRow[index].colspan || 1;\r\n\r\n for (let i = 0; i < colspan; ++i) {\r\n result += columnSizes[actualColumnIndex + i].width;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function computeFooterCellEndIndexRelatedToTable(index: number) {\r\n let result = 0;\r\n\r\n for (let i = 0; i <= index; ++i) {\r\n let colspan = footerRow[i].colspan || 1;\r\n result += colspan;\r\n }\r\n\r\n return result - 1;\r\n }\r\n\r\n function computeHeaderCellWidth(index: number) {\r\n let actualColumnIndex = 0;\r\n for (let i = 0; i < index; ++i) {\r\n const colspan = headerRow[i].colspan || 1;\r\n actualColumnIndex += colspan;\r\n }\r\n\r\n let result = 0;\r\n\r\n let colspan = headerRow[index].colspan || 1;\r\n\r\n for (let i = 0; i < colspan; ++i) {\r\n result += columnSizes[actualColumnIndex + i].width;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function computeHeaderCellEndIndexRelatedToTable(index: number) {\r\n let result = 0;\r\n\r\n for (let i = 0; i <= index; ++i) {\r\n let colspan = headerRow[i].colspan || 1;\r\n result += colspan;\r\n }\r\n\r\n return result - 1;\r\n }\r\n\r\n function createRowClass(rowIndex: number, rowVal: any) {\r\n let baseClass = 'tr';\r\n let addClass = '';\r\n if (alternateRows) {\r\n // rowIndex + 1 ? (rows[rowIndex + 1].original as JournalLedgerListItem).groupOrder : 0;\r\n const previousRowOrder = rowIndex !== 0 ? (rows[rowIndex - 1].original as JournalLedgerListItem).groupOrder : 0;\r\n if (rowVal.groupOrder % 2 === 0 && (nextRowOrder % 2 !== 0 || previousRowOrder % 2 !== 0)) {\r\n if (rowVal.groupOrder !== nextRowOrder) {\r\n baseClass = 'tr-alternate'\r\n };\r\n if (rowVal.groupOrder !== previousRowOrder)\r\n baseClass = 'tr-alternate2'\r\n }\r\n }\r\n //journal>\r\n }\r\n\r\n if (isListView) {\r\n addClass = getListRowClass(rowVal);\r\n }\r\n\r\n if (selectable) {\r\n return `${addClass}${baseClass} ${dataRow} data-row-selectable`;\r\n }\r\n return `${addClass}${baseClass} ${dataRow}`;\r\n }\r\n\r\n\r\n function getListRowClass(rowVal: any) {\r\n //\r\n // 30) {\r\n return 'data-row-fontredbold ';\r\n }\r\n else if (rowVal.overDue > 0) {\r\n return 'data-row-fontred ';\r\n }\r\n //invoice>\r\n //\r\n // 0) {\r\n return 'data-row-fontredbold ';\r\n }\r\n //custpayment>\r\n //\r\n //\r\n else if (rowVal.avgAging > 0) {\r\n return 'data-row-fontredbold ';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n function findHeaderOrderByProps(column: any) {\r\n if (!orderBy) {\r\n return {\r\n isOrderByAscending: false,\r\n isOrderByDescending: false,\r\n };\r\n }\r\n\r\n const columnOrderBy = orderBy.find((x: any) => x.orderBy as string === column.id as string);\r\n if (!columnOrderBy) {\r\n return {\r\n isOrderByAscending: false,\r\n isOrderByDescending: false,\r\n };\r\n }\r\n\r\n return {\r\n isOrderByAscending: columnOrderBy.orderByAscending,\r\n isOrderByDescending: !columnOrderBy.orderByAscending,\r\n };\r\n }\r\n\r\n function closeHeaderFilterModal() {\r\n setHeaderFilterModalPosition({ top: 0, left: 0 });\r\n setMouseOverFilterIcon(false);\r\n setFilterOpenHeaderIndex(-1);\r\n\r\n const button = document.getElementsByName(useHeaderFilterParams.disableBtnNameWhenFilterModalOpen);\r\n\r\n if (button.length > 0) {\r\n (button[0] as HTMLButtonElement).disabled = false;\r\n }\r\n }\r\n\r\n const headerGroup = headerGroups[0];\r\n const tableBodyProps = getTableBodyProps();\r\n\r\n if (tableBodyProps.style) {\r\n tableBodyProps.style = { ...tableBodyProps.style, width: '100%', display: 'table' };\r\n } else {\r\n tableBodyProps.style = { display: 'table', width: '100%', };\r\n }\r\n\r\n let tableStyle = {};\r\n if (isVirtualTable) {\r\n tableStyle = { ...tableStyle, willChange: 'transform' };\r\n }\r\n if (!!height) {\r\n const appliedHeight = showPager ? `calc(${height} - 30px)` : height;\r\n tableStyle = { ...tableStyle, height: appliedHeight };\r\n }\r\n\r\n if (!!width) {\r\n tableStyle = { ...tableStyle, width };\r\n }\r\n\r\n if (overflowX) {\r\n tableStyle = { ...tableStyle, overflowX };\r\n }\r\n if (overflowY) {\r\n tableStyle = { ...tableStyle, overflowY };\r\n }\r\n\r\n if (additionalTableStyle) {\r\n tableStyle = { ...tableStyle, ...additionalTableStyle };\r\n }\r\n\r\n let colorClass = 'header-yellow';\r\n if (appContext.useDarkMode) {\r\n colorClass = 'header-black';\r\n } else if (headersColor === 'white') {\r\n colorClass = 'header-white';\r\n } else if (headersColor === 'teal') {\r\n colorClass = 'header-teal';\r\n } else if (headersColor === 'gray') {\r\n colorClass = 'header-gray';\r\n } else if (headersColor === 'lightgray') {\r\n colorClass = 'header-lightgray';\r\n }\r\n\r\n const displayRows = isVirtualTable ? rows.slice(displayIdx.startIdx, displayIdx.endIdx) : rows;\r\n\r\n return (\r\n \r\n {\r\n //only sales / cost batch recog\r\n useHeaderFilterParams.useHeaderFilter && filterOpenHeaderIndex !== -1 &&\r\n \r\n }\r\n\r\n {(headerRow && headerRow.length > 0) &&\r\n
    \r\n {headerRow.map((f: any, i: number) => (\r\n \r\n {f.renderer()}\r\n
    \r\n ))}\r\n \r\n }\r\n {tableTitle &&\r\n \r\n {tableTitle}\r\n \r\n }\r\n
    \r\n {!noHeaders &&\r\n
    \r\n \r\n \r\n {(droppableProvided) => (\r\n
    \r\n {headerGroup.headers.map((column: any, i) => (\r\n \r\n {(provided, snapshot) => (\r\n {\r\n onHeaderClick(column);\r\n if (i === 0 && !isListView\r\n && (column.dataIndex === 'indicator' || column.id === 'indicator')\r\n ) {\r\n selectingRef.current = true;\r\n startCellRef.current = { column: 0, row: 0 };\r\n endCellRef.current = { column: headerGroup.headers.length - 1, row: rows?.length - 1 };\r\n selectingRef.current = false;\r\n }\r\n }}\r\n onResizeStart={onResizeStart}\r\n colorClass={colorClass}\r\n blackMode={appContext.useDarkMode}\r\n mouseOverFilterIcon={mouseOverFilterIcon}\r\n setMouseOverFilterIcon={setMouseOverFilterIcon}\r\n {...findHeaderOrderByProps(column)}\r\n />\r\n )}\r\n\r\n \r\n ))}\r\n
    \r\n )}\r\n
    \r\n \r\n
    \r\n }\r\n
    \r\n {\r\n displayRows.map((row: any, index) => {\r\n const actualIndex = displayIdx.startIdx + index;\r\n row.index = actualIndex;\r\n prepareRow(row);\r\n const rowProps = additionalRowProps ? row.getRowProps(additionalRowProps(row)) : row.getRowProps();\r\n const renderedRowExtras = rowProps && rowProps.rowextras ? rowProps.rowextras : undefined;\r\n if (row && row.original && row.original.style) {\r\n rowProps.style = rowProps.style ? { ...rowProps.style, ...row.original.style } : { ...row.original.style };\r\n }\r\n\r\n if (renderedRowExtras) {\r\n return (\r\n \r\n
    \r\n {row.cells.map((cell: any, ci: number) => {\r\n const notSetTooltip = noTooltip || cell.column.hasCustomTooltip;\r\n return (\r\n \r\n
    \r\n {cell.render('Cell')}\r\n
    \r\n
    \r\n )\r\n })}\r\n
    \r\n
    \r\n {renderedRowExtras}\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n
    \r\n {row.cells.map((cell: any, ci: number) => {\r\n const notSetTooltip = noTooltip || cell.column.hasCustomTooltip;\r\n return (\r\n beginSelection({ column: ci, row: actualIndex })}\r\n onMouseUp={() => endSelection({ column: ci, row: actualIndex })}\r\n onMouseOver={() => {\r\n updateSelection({ column: ci, row: actualIndex });\r\n\r\n if (!useHighlightCellOnMouseover) return;\r\n\r\n document.querySelectorAll(`[data-table-hover-col=\"${ci}\"]`)\r\n .forEach(cell => {\r\n cell.classList.add('table-cell-hover');\r\n });\r\n }}\r\n onMouseLeave={() => {\r\n if (!useHighlightCellOnMouseover) return;\r\n\r\n document.querySelectorAll('.table-cell-hover')\r\n .forEach(cell => cell.classList.remove('table-cell-hover'));\r\n }}\r\n onClick={() => {\r\n if (useSetClickedCellWhenClick)\r\n jobListContext.setClickedCell(cell);\r\n }}\r\n onContextMenu={() => {\r\n if (useSetClickedCellWhenClick)\r\n jobListContext.setClickedCell(cell);\r\n }}\r\n {...getCellProps(cell, columnSizes[ci], getCustomCellProps, actualIndex)}\r\n className={getCellClasses(cell, blackMode, actualIndex)}\r\n data-tooltip={notSetTooltip ? undefined : '-from-value'} data-tooltip-position={notSetTooltip ? undefined : 'bottom'} data-tooltip-onlywhencutoff\r\n >\r\n
    \r\n {cell.render('Cell')}\r\n
    \r\n
    \r\n )\r\n })}\r\n
    \r\n \r\n );\r\n }\r\n })\r\n }\r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {renderBottomControls && renderBottomControls()}\r\n
    \r\n
    \r\n {footerRow?.map((f: any, i: number) => (\r\n // styling hack to remove extra space between table and footer row\r\n \r\n {f.renderer()}\r\n
    \r\n ))}\r\n
    \r\n \r\n
    \r\n );\r\n}\r\n\r\nTable.defaultProps = {\r\n columns: [],\r\n data: [],\r\n onHeaderClick: () => { },\r\n onColumnReorder: () => { },\r\n onColumnsResized: () => { },\r\n flexResizer: false,\r\n headersColor: 'yellow',\r\n selectable: false,\r\n alternateRows: false,\r\n showPager: false,\r\n page: 0,\r\n pageCount: 0,\r\n maxLinkCount: 5,\r\n onPageSelect: () => { },\r\n selectedRowIndex: undefined,\r\n blackMode: false,\r\n noTooltip: false,\r\n isListView: false,\r\n useHighlightCellOnMouseover: false,\r\n useSetClickedCellWhenClick: false,\r\n noHeaders: false,\r\n cellRangeSelect: true,\r\n useHeaderFilterParams: {\r\n setData: () => { },\r\n useHeaderFilter: false,\r\n oriListData: [],\r\n disableBtnNameWhenFilterModalOpen: '',\r\n },\r\n useVirtual: false,\r\n};\r\n\r\nTable.propTypes = {\r\n columns: PropTypes.array.isRequired,\r\n data: PropTypes.array.isRequired,\r\n height: PropTypes.string,\r\n width: PropTypes.string,\r\n onHeaderClick: PropTypes.func.isRequired,\r\n onColumnReorder: PropTypes.func.isRequired,\r\n onColumnsResized: PropTypes.func.isRequired,\r\n overflowX: PropTypes.string,\r\n overflowY: PropTypes.string,\r\n flexResizer: PropTypes.bool.isRequired,\r\n footerRow: PropTypes.array,\r\n headerRow: PropTypes.array,\r\n headersColor: PropTypes.oneOf(['yellow', 'white', 'teal', 'gray', 'lightgray']).isRequired,\r\n selectable: PropTypes.bool.isRequired,\r\n alternateRows: PropTypes.bool.isRequired,\r\n showPager: PropTypes.bool.isRequired,\r\n page: PropTypes.number.isRequired,\r\n pageCount: PropTypes.number.isRequired,\r\n maxLinkCount: PropTypes.number,\r\n onPageSelect: PropTypes.func.isRequired,\r\n orderBy: PropTypes.array,\r\n customTableId: PropTypes.string,\r\n getCustomCellProps: PropTypes.func,\r\n rowProps: PropTypes.func,\r\n tableStyle: PropTypes.object,\r\n selectedRowIndex: PropTypes.number,\r\n selectedColIndex: PropTypes.number,\r\n blackMode: PropTypes.bool,\r\n noTooltip: PropTypes.bool.isRequired,\r\n useHighlightCellOnMouseover: PropTypes.bool,\r\n useSetClickedCellWhenClick: PropTypes.bool,\r\n noHeaders: PropTypes.bool.isRequired,\r\n renderBottomControls: PropTypes.any,\r\n tableTitle: PropTypes.string,\r\n cellRangeSelect: PropTypes.bool,\r\n useHeaderFilterParams: PropTypes.shape({\r\n setData: PropTypes.func.isRequired,\r\n useHeaderFilter: PropTypes.bool.isRequired,\r\n oriListData: PropTypes.array,\r\n disableBtnNameWhenFilterModalOpen: PropTypes.string,\r\n }),\r\n useVirtual: PropTypes.bool,\r\n};\r\n\r\nexport default React.memo(Table);\r\n","/**\r\n DataStream reads scalars, arrays and structs of data from an ArrayBuffer.\r\n It's like a file-like DataView on steroids.\r\n\r\n @param {ArrayBuffer} arrayBuffer ArrayBuffer to read from.\r\n @param {?Number} byteOffset Offset from arrayBuffer beginning for the DataStream.\r\n @param {?Boolean} endianness DataStream.BIG_ENDIAN or DataStream.LITTLE_ENDIAN (the default).\r\n */\r\n export const DataStream = function(arrayBuffer, byteOffset, endianness) {\r\n this._byteOffset = byteOffset || 0;\r\n if (arrayBuffer instanceof ArrayBuffer) {\r\n this.buffer = arrayBuffer;\r\n } else if (typeof arrayBuffer == \"object\") {\r\n this.dataView = arrayBuffer;\r\n if (byteOffset) {\r\n this._byteOffset += byteOffset;\r\n }\r\n } else {\r\n this.buffer = new ArrayBuffer(arrayBuffer || 1);\r\n }\r\n this.position = 0;\r\n this.endianness = endianness == null ? DataStream.LITTLE_ENDIAN : endianness;\r\n };\r\n DataStream.prototype = {};\r\n \r\n /* Fix for Opera 12 not defining BYTES_PER_ELEMENT in typed array prototypes. */\r\n if (Uint8Array.prototype.BYTES_PER_ELEMENT === undefined) {\r\n Uint8Array.prototype.BYTES_PER_ELEMENT = Uint8Array.BYTES_PER_ELEMENT; \r\n Int8Array.prototype.BYTES_PER_ELEMENT = Int8Array.BYTES_PER_ELEMENT; \r\n Uint8ClampedArray.prototype.BYTES_PER_ELEMENT = Uint8ClampedArray.BYTES_PER_ELEMENT; \r\n Uint16Array.prototype.BYTES_PER_ELEMENT = Uint16Array.BYTES_PER_ELEMENT; \r\n Int16Array.prototype.BYTES_PER_ELEMENT = Int16Array.BYTES_PER_ELEMENT; \r\n Uint32Array.prototype.BYTES_PER_ELEMENT = Uint32Array.BYTES_PER_ELEMENT; \r\n Int32Array.prototype.BYTES_PER_ELEMENT = Int32Array.BYTES_PER_ELEMENT; \r\n Float64Array.prototype.BYTES_PER_ELEMENT = Float64Array.BYTES_PER_ELEMENT; \r\n }\r\n \r\n /**\r\n Saves the DataStream contents to the given filename.\r\n Uses Chrome's anchor download property to initiate download.\r\n \r\n @param {string} filename Filename to save as.\r\n @return {null}\r\n */\r\n DataStream.prototype.save = function(filename) {\r\n var blob = new Blob(this.buffer);\r\n var URL = (window.webkitURL || window.URL);\r\n if (URL && URL.createObjectURL) {\r\n var url = URL.createObjectURL(blob);\r\n var a = document.createElement('a');\r\n a.setAttribute('href', url);\r\n a.setAttribute('download', filename);\r\n a.click();\r\n URL.revokeObjectURL(url);\r\n } else {\r\n throw(\"DataStream.save: Can't create object URL.\");\r\n }\r\n };\r\n \r\n /**\r\n Big-endian const to use as default endianness.\r\n @type {boolean}\r\n */\r\n DataStream.BIG_ENDIAN = false;\r\n \r\n /**\r\n Little-endian const to use as default endianness.\r\n @type {boolean}\r\n */\r\n DataStream.LITTLE_ENDIAN = true;\r\n \r\n /**\r\n Whether to extend DataStream buffer when trying to write beyond its size.\r\n If set, the buffer is reallocated to twice its current size until the\r\n requested write fits the buffer.\r\n @type {boolean}\r\n */\r\n DataStream.prototype._dynamicSize = true;\r\n Object.defineProperty(DataStream.prototype, 'dynamicSize',\r\n { get: function() {\r\n return this._dynamicSize;\r\n },\r\n set: function(v) {\r\n if (!v) {\r\n this._trimAlloc();\r\n }\r\n this._dynamicSize = v;\r\n } });\r\n \r\n /**\r\n Virtual byte length of the DataStream backing buffer.\r\n Updated to be max of original buffer size and last written size.\r\n If dynamicSize is false is set to buffer size.\r\n @type {number}\r\n */\r\n DataStream.prototype._byteLength = 0;\r\n \r\n /**\r\n Returns the byte length of the DataStream object.\r\n @type {number}\r\n */\r\n Object.defineProperty(DataStream.prototype, 'byteLength',\r\n { get: function() {\r\n return this._byteLength - this._byteOffset;\r\n }});\r\n \r\n /**\r\n Set/get the backing ArrayBuffer of the DataStream object.\r\n The setter updates the DataView to point to the new buffer.\r\n @type {Object}\r\n */\r\n Object.defineProperty(DataStream.prototype, 'buffer',\r\n { get: function() {\r\n this._trimAlloc();\r\n return this._buffer;\r\n },\r\n set: function(v) {\r\n this._buffer = v;\r\n this._dataView = new DataView(this._buffer, this._byteOffset);\r\n this._byteLength = this._buffer.byteLength;\r\n } });\r\n \r\n /**\r\n Set/get the byteOffset of the DataStream object.\r\n The setter updates the DataView to point to the new byteOffset.\r\n @type {number}\r\n */\r\n Object.defineProperty(DataStream.prototype, 'byteOffset',\r\n { get: function() {\r\n return this._byteOffset;\r\n },\r\n set: function(v) {\r\n this._byteOffset = v;\r\n this._dataView = new DataView(this._buffer, this._byteOffset);\r\n this._byteLength = this._buffer.byteLength;\r\n } });\r\n \r\n /**\r\n Set/get the backing DataView of the DataStream object.\r\n The setter updates the buffer and byteOffset to point to the DataView values.\r\n @type {Object}\r\n */\r\n Object.defineProperty(DataStream.prototype, 'dataView',\r\n { get: function() {\r\n return this._dataView;\r\n },\r\n set: function(v) {\r\n this._byteOffset = v.byteOffset;\r\n this._buffer = v.buffer;\r\n this._dataView = new DataView(this._buffer, this._byteOffset);\r\n this._byteLength = this._byteOffset + v.byteLength;\r\n } });\r\n \r\n /**\r\n Internal function to resize the DataStream buffer when required.\r\n @param {number} extra Number of bytes to add to the buffer allocation.\r\n @return {null}\r\n */\r\n DataStream.prototype._realloc = function(extra) {\r\n if (!this._dynamicSize) {\r\n return;\r\n }\r\n var req = this._byteOffset + this.position + extra;\r\n var blen = this._buffer.byteLength;\r\n if (req <= blen) {\r\n if (req > this._byteLength) {\r\n this._byteLength = req;\r\n }\r\n return;\r\n }\r\n if (blen < 1) {\r\n blen = 1;\r\n }\r\n while (req > blen) {\r\n blen *= 2;\r\n }\r\n var buf = new ArrayBuffer(blen);\r\n var src = new Uint8Array(this._buffer);\r\n var dst = new Uint8Array(buf, 0, src.length);\r\n dst.set(src);\r\n this.buffer = buf;\r\n this._byteLength = req;\r\n };\r\n \r\n /**\r\n Internal function to trim the DataStream buffer when required.\r\n Used for stripping out the extra bytes from the backing buffer when\r\n the virtual byteLength is smaller than the buffer byteLength (happens after\r\n growing the buffer with writes and not filling the extra space completely).\r\n \r\n @return {null}\r\n */\r\n DataStream.prototype._trimAlloc = function() {\r\n if (this._byteLength == this._buffer.byteLength) {\r\n return;\r\n }\r\n var buf = new ArrayBuffer(this._byteLength);\r\n var dst = new Uint8Array(buf);\r\n var src = new Uint8Array(this._buffer, 0, dst.length);\r\n dst.set(src);\r\n this.buffer = buf;\r\n };\r\n \r\n /**\r\n Sets the DataStream read/write position to given position.\r\n Clamps between 0 and DataStream length.\r\n \r\n @param {number} pos Position to seek to.\r\n @return {null}\r\n */\r\n DataStream.prototype.seek = function(pos) {\r\n var npos = Math.max(0, Math.min(this.byteLength, pos));\r\n this.position = (isNaN(npos) || !isFinite(npos)) ? 0 : npos;\r\n };\r\n \r\n /**\r\n Returns true if the DataStream seek pointer is at the end of buffer and\r\n there's no more data to read.\r\n \r\n @return {boolean} True if the seek pointer is at the end of the buffer.\r\n */\r\n DataStream.prototype.isEof = function() {\r\n return (this.position >= this.byteLength);\r\n };\r\n \r\n /**\r\n Maps an Int32Array into the DataStream buffer, swizzling it to native\r\n endianness in-place. The current offset from the start of the buffer needs to\r\n be a multiple of element size, just like with typed array views.\r\n \r\n Nice for quickly reading in data. Warning: potentially modifies the buffer\r\n contents.\r\n \r\n @param {number} length Number of elements to map.\r\n @param {?boolean} e Endianness of the data to read.\r\n @return {Object} Int32Array to the DataStream backing buffer.\r\n */\r\n DataStream.prototype.mapInt32Array = function(length, e) {\r\n this._realloc(length * 4);\r\n var arr = new Int32Array(this._buffer, this.byteOffset+this.position, length);\r\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\r\n this.position += length * 4;\r\n return arr;\r\n };\r\n \r\n /**\r\n Maps an Int16Array into the DataStream buffer, swizzling it to native\r\n endianness in-place. The current offset from the start of the buffer needs to\r\n be a multiple of element size, just like with typed array views.\r\n \r\n Nice for quickly reading in data. Warning: potentially modifies the buffer\r\n contents.\r\n \r\n @param {number} length Number of elements to map.\r\n @param {?boolean} e Endianness of the data to read.\r\n @return {Object} Int16Array to the DataStream backing buffer.\r\n */\r\n DataStream.prototype.mapInt16Array = function(length, e) {\r\n this._realloc(length * 2);\r\n var arr = new Int16Array(this._buffer, this.byteOffset+this.position, length);\r\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\r\n this.position += length * 2;\r\n return arr;\r\n };\r\n \r\n /**\r\n Maps an Int8Array into the DataStream buffer.\r\n \r\n Nice for quickly reading in data.\r\n \r\n @param {number} length Number of elements to map.\r\n @param {?boolean} e Endianness of the data to read.\r\n @return {Object} Int8Array to the DataStream backing buffer.\r\n */\r\n DataStream.prototype.mapInt8Array = function(length) {\r\n this._realloc(length * 1);\r\n var arr = new Int8Array(this._buffer, this.byteOffset+this.position, length);\r\n this.position += length * 1;\r\n return arr;\r\n };\r\n \r\n /**\r\n Maps a Uint32Array into the DataStream buffer, swizzling it to native\r\n endianness in-place. The current offset from the start of the buffer needs to\r\n be a multiple of element size, just like with typed array views.\r\n \r\n Nice for quickly reading in data. Warning: potentially modifies the buffer\r\n contents.\r\n \r\n @param {number} length Number of elements to map.\r\n @param {?boolean} e Endianness of the data to read.\r\n @return {Object} Uint32Array to the DataStream backing buffer.\r\n */\r\n DataStream.prototype.mapUint32Array = function(length, e) {\r\n this._realloc(length * 4);\r\n var arr = new Uint32Array(this._buffer, this.byteOffset+this.position, length);\r\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\r\n this.position += length * 4;\r\n return arr;\r\n };\r\n \r\n /**\r\n Maps a Uint16Array into the DataStream buffer, swizzling it to native\r\n endianness in-place. The current offset from the start of the buffer needs to\r\n be a multiple of element size, just like with typed array views.\r\n \r\n Nice for quickly reading in data. Warning: potentially modifies the buffer\r\n contents.\r\n \r\n @param {number} length Number of elements to map.\r\n @param {?boolean} e Endianness of the data to read.\r\n @return {Object} Uint16Array to the DataStream backing buffer.\r\n */\r\n DataStream.prototype.mapUint16Array = function(length, e) {\r\n this._realloc(length * 2);\r\n var arr = new Uint16Array(this._buffer, this.byteOffset+this.position, length);\r\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\r\n this.position += length * 2;\r\n return arr;\r\n };\r\n \r\n /**\r\n Maps a Uint8Array into the DataStream buffer.\r\n \r\n Nice for quickly reading in data.\r\n \r\n @param {number} length Number of elements to map.\r\n @param {?boolean} e Endianness of the data to read.\r\n @return {Object} Uint8Array to the DataStream backing buffer.\r\n */\r\n DataStream.prototype.mapUint8Array = function(length) {\r\n this._realloc(length * 1);\r\n var arr = new Uint8Array(this._buffer, this.byteOffset+this.position, length);\r\n this.position += length * 1;\r\n return arr;\r\n };\r\n \r\n /**\r\n Maps a Float64Array into the DataStream buffer, swizzling it to native\r\n endianness in-place. The current offset from the start of the buffer needs to\r\n be a multiple of element size, just like with typed array views.\r\n \r\n Nice for quickly reading in data. Warning: potentially modifies the buffer\r\n contents.\r\n \r\n @param {number} length Number of elements to map.\r\n @param {?boolean} e Endianness of the data to read.\r\n @return {Object} Float64Array to the DataStream backing buffer.\r\n */\r\n DataStream.prototype.mapFloat64Array = function(length, e) {\r\n this._realloc(length * 8);\r\n var arr = new Float64Array(this._buffer, this.byteOffset+this.position, length);\r\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\r\n this.position += length * 8;\r\n return arr;\r\n };\r\n \r\n /**\r\n Maps a Float32Array into the DataStream buffer, swizzling it to native\r\n endianness in-place. The current offset from the start of the buffer needs to\r\n be a multiple of element size, just like with typed array views.\r\n \r\n Nice for quickly reading in data. Warning: potentially modifies the buffer\r\n contents.\r\n \r\n @param {number} length Number of elements to map.\r\n @param {?boolean} e Endianness of the data to read.\r\n @return {Object} Float32Array to the DataStream backing buffer.\r\n */\r\n DataStream.prototype.mapFloat32Array = function(length, e) {\r\n this._realloc(length * 4);\r\n var arr = new Float32Array(this._buffer, this.byteOffset+this.position, length);\r\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\r\n this.position += length * 4;\r\n return arr;\r\n };\r\n \r\n /**\r\n Reads an Int32Array of desired length and endianness from the DataStream.\r\n \r\n @param {number} length Number of elements to map.\r\n @param {?boolean} e Endianness of the data to read.\r\n @return {Object} The read Int32Array.\r\n */\r\n DataStream.prototype.readInt32Array = function(length, e) {\r\n length = length == null ? (this.byteLength-this.position / 4) : length;\r\n var arr = new Int32Array(length);\r\n DataStream.memcpy(arr.buffer, 0,\r\n this.buffer, this.byteOffset+this.position,\r\n length*arr.BYTES_PER_ELEMENT);\r\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\r\n this.position += arr.byteLength;\r\n return arr;\r\n };\r\n \r\n /**\r\n Reads an Int16Array of desired length and endianness from the DataStream.\r\n \r\n @param {number} length Number of elements to map.\r\n @param {?boolean} e Endianness of the data to read.\r\n @return {Object} The read Int16Array.\r\n */\r\n DataStream.prototype.readInt16Array = function(length, e) {\r\n length = length == null ? (this.byteLength-this.position / 2) : length;\r\n var arr = new Int16Array(length);\r\n DataStream.memcpy(arr.buffer, 0,\r\n this.buffer, this.byteOffset+this.position,\r\n length*arr.BYTES_PER_ELEMENT);\r\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\r\n this.position += arr.byteLength;\r\n return arr;\r\n };\r\n \r\n /**\r\n Reads an Int8Array of desired length from the DataStream.\r\n \r\n @param {number} length Number of elements to map.\r\n @param {?boolean} e Endianness of the data to read.\r\n @return {Object} The read Int8Array.\r\n */\r\n DataStream.prototype.readInt8Array = function(length) {\r\n length = length == null ? (this.byteLength-this.position) : length;\r\n var arr = new Int8Array(length);\r\n DataStream.memcpy(arr.buffer, 0,\r\n this.buffer, this.byteOffset+this.position,\r\n length*arr.BYTES_PER_ELEMENT);\r\n this.position += arr.byteLength;\r\n return arr;\r\n };\r\n \r\n /**\r\n Reads a Uint32Array of desired length and endianness from the DataStream.\r\n \r\n @param {number} length Number of elements to map.\r\n @param {?boolean} e Endianness of the data to read.\r\n @return {Object} The read Uint32Array.\r\n */\r\n DataStream.prototype.readUint32Array = function(length, e) {\r\n length = length == null ? (this.byteLength-this.position / 4) : length;\r\n var arr = new Uint32Array(length);\r\n DataStream.memcpy(arr.buffer, 0,\r\n this.buffer, this.byteOffset+this.position,\r\n length*arr.BYTES_PER_ELEMENT);\r\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\r\n this.position += arr.byteLength;\r\n return arr;\r\n };\r\n \r\n /**\r\n Reads a Uint16Array of desired length and endianness from the DataStream.\r\n \r\n @param {number} length Number of elements to map.\r\n @param {?boolean} e Endianness of the data to read.\r\n @return {Object} The read Uint16Array.\r\n */\r\n DataStream.prototype.readUint16Array = function(length, e) {\r\n length = length == null ? (this.byteLength-this.position / 2) : length;\r\n var arr = new Uint16Array(length);\r\n DataStream.memcpy(arr.buffer, 0,\r\n this.buffer, this.byteOffset+this.position,\r\n length*arr.BYTES_PER_ELEMENT);\r\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\r\n this.position += arr.byteLength;\r\n return arr;\r\n };\r\n \r\n /**\r\n Reads a Uint8Array of desired length from the DataStream.\r\n \r\n @param {number} length Number of elements to map.\r\n @param {?boolean} e Endianness of the data to read.\r\n @return {Object} The read Uint8Array.\r\n */\r\n DataStream.prototype.readUint8Array = function(length) {\r\n length = length == null ? (this.byteLength-this.position) : length;\r\n var arr = new Uint8Array(length);\r\n DataStream.memcpy(arr.buffer, 0,\r\n this.buffer, this.byteOffset+this.position,\r\n length*arr.BYTES_PER_ELEMENT);\r\n this.position += arr.byteLength;\r\n return arr;\r\n };\r\n \r\n /**\r\n Reads a Float64Array of desired length and endianness from the DataStream.\r\n \r\n @param {number} length Number of elements to map.\r\n @param {?boolean} e Endianness of the data to read.\r\n @return {Object} The read Float64Array.\r\n */\r\n DataStream.prototype.readFloat64Array = function(length, e) {\r\n length = length == null ? (this.byteLength-this.position / 8) : length;\r\n var arr = new Float64Array(length);\r\n DataStream.memcpy(arr.buffer, 0,\r\n this.buffer, this.byteOffset+this.position,\r\n length*arr.BYTES_PER_ELEMENT);\r\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\r\n this.position += arr.byteLength;\r\n return arr;\r\n };\r\n \r\n /**\r\n Reads a Float32Array of desired length and endianness from the DataStream.\r\n \r\n @param {number} length Number of elements to map.\r\n @param {?boolean} e Endianness of the data to read.\r\n @return {Object} The read Float32Array.\r\n */\r\n DataStream.prototype.readFloat32Array = function(length, e) {\r\n length = length == null ? (this.byteLength-this.position / 4) : length;\r\n var arr = new Float32Array(length);\r\n DataStream.memcpy(arr.buffer, 0,\r\n this.buffer, this.byteOffset+this.position,\r\n length*arr.BYTES_PER_ELEMENT);\r\n DataStream.arrayToNative(arr, e == null ? this.endianness : e);\r\n this.position += arr.byteLength;\r\n return arr;\r\n };\r\n \r\n /**\r\n Writes an Int32Array of specified endianness to the DataStream.\r\n \r\n @param {Object} arr The array to write.\r\n @param {?boolean} e Endianness of the data to write.\r\n */\r\n DataStream.prototype.writeInt32Array = function(arr, e) {\r\n this._realloc(arr.length * 4);\r\n if (arr instanceof Int32Array &&\r\n this.byteOffset+this.position % arr.BYTES_PER_ELEMENT == 0) {\r\n DataStream.memcpy(this._buffer, this.byteOffset+this.position,\r\n arr.buffer, 0,\r\n arr.byteLength);\r\n this.mapInt32Array(arr.length, e);\r\n } else {\r\n for (var i=0; i 0;\r\n \r\n /**\r\n Copies byteLength bytes from the src buffer at srcOffset to the\r\n dst buffer at dstOffset.\r\n \r\n @param {Object} dst Destination ArrayBuffer to write to.\r\n @param {number} dstOffset Offset to the destination ArrayBuffer.\r\n @param {Object} src Source ArrayBuffer to read from.\r\n @param {number} srcOffset Offset to the source ArrayBuffer.\r\n @param {number} byteLength Number of bytes to copy.\r\n */\r\n DataStream.memcpy = function(dst, dstOffset, src, srcOffset, byteLength) {\r\n var dstU8 = new Uint8Array(dst, dstOffset, byteLength);\r\n var srcU8 = new Uint8Array(src, srcOffset, byteLength);\r\n dstU8.set(srcU8);\r\n };\r\n \r\n /**\r\n Converts array to native endianness in-place.\r\n \r\n @param {Object} array Typed array to convert.\r\n @param {boolean} arrayIsLittleEndian True if the data in the array is\r\n little-endian. Set false for big-endian.\r\n @return {Object} The converted typed array.\r\n */\r\n DataStream.arrayToNative = function(array, arrayIsLittleEndian) {\r\n if (arrayIsLittleEndian == this.endianness) {\r\n return array;\r\n } else {\r\n return this.flipArrayEndianness(array);\r\n }\r\n };\r\n \r\n /**\r\n Converts native endianness array to desired endianness in-place.\r\n \r\n @param {Object} array Typed array to convert.\r\n @param {boolean} littleEndian True if the converted array should be\r\n little-endian. Set false for big-endian.\r\n @return {Object} The converted typed array.\r\n */\r\n DataStream.nativeToEndian = function(array, littleEndian) {\r\n if (this.endianness == littleEndian) {\r\n return array;\r\n } else {\r\n return this.flipArrayEndianness(array);\r\n }\r\n };\r\n \r\n /**\r\n Flips typed array endianness in-place.\r\n \r\n @param {Object} array Typed array to flip.\r\n @return {Object} The converted typed array.\r\n */\r\n DataStream.flipArrayEndianness = function(array) {\r\n var u8 = new Uint8Array(array.buffer, array.byteOffset, array.byteLength);\r\n for (var i=0; ik; j--, k++) {\r\n var tmp = u8[k];\r\n u8[k] = u8[j];\r\n u8[j] = tmp;\r\n }\r\n }\r\n return array;\r\n };\r\n \r\n /**\r\n Creates an array from an array of character codes.\r\n Uses String.fromCharCode on the character codes and concats the results into a string.\r\n \r\n @param {array} array Array of character codes.\r\n @return {string} String created from the character codes.\r\n **/\r\n DataStream.createStringFromArray = function(array) {\r\n var str = \"\";\r\n for (var i=0; i void = () => { },\r\n parentUrlsArrayOverride: Array | null = null /* Use special param for better compatibility */,\r\n initialSelectedInputId: initialSelectedInputId = { inputId: '', isLoading: false },\r\n noOperationSuffix: boolean = false,\r\n parentOp: string | null = null,\r\n jobMode:string|undefined = undefined,\r\n jobType:string|undefined = undefined,\r\n addTypeSuffix: boolean = false,\r\n tabIndexStorage:string = '',\r\n isSearch: boolean = true,\r\n ) {\r\n const history = useHistory();\r\n\r\n const url = `${history.location.pathname}${history.location.search}`;\r\n\r\n const dispatch = useAppDispatch();\r\n const {\r\n removeSingleJobMenu,\r\n showSingleDependantScreenMessage,\r\n hasSingleOpenedScreenStartingWithUrl,\r\n hasSingleOpenedScreenStartingWithUrlWithoutMe,\r\n hasSingleOpenedScreenInAnyOperationStartingWithUrl,\r\n hasSingleOpenedScreenInAnyOperationStartingWithUrlWithoutMe,\r\n getSingleOpenedScreenInAnyOperationStartingWithUrl,\r\n moveToSingleOpenedScreenInAnyOperationStartingWithUrl,\r\n replaceSingleCurrentJobItemWith,\r\n replaceSingleCurrentJobItemLabelWith,\r\n goBackSingle,\r\n canGoBackSingle,\r\n addSingleCleanupFunction,\r\n isFirstRun,\r\n } = useJobMenus()\r\n const operationState = useAppSelector(x => x.operation);\r\n const screenStack = useAppSelector(x => x.screenStack);\r\n const activeOperation = operationState.operation;\r\n\r\n const operationTabIndex = !_.isEmpty(tabIndexStorage) ? (fastStorage[`${tabIndexStorage}-${url}`] ?? 0) : 0;\r\n const [focusedElementInStorage, setFocusedElementInStorage] = useTypedFastStorage('focusedElementInStorage', [{ tabIndexInStorage: (operationTabIndex ?? 0), focusedElementIndexInStorage: -1 }]);\r\n const [, setFocusedEleIndexCurPageInStorage] = useTypedFastStorage('focusedEleIndexCurPageInStorage', focusedElementInStorage?.find(x => x.tabIndexInStorage === operationTabIndex)?.focusedElementIndexInStorage ?? -1);\r\n const focusedElementIndex = focusedElementInStorage?.find(x => x.tabIndexInStorage === operationTabIndex)?.focusedElementIndexInStorage ?? -1;\r\n\r\n const tabableElements = getAllTabableElements();\r\n\r\n useEffect(() => {\r\n document.body.addEventListener('focusin', monitorFocusChange);\r\n document.body.addEventListener('keydown', onKeyDown);\r\n\r\n return () => {\r\n document.body.removeEventListener('focusin', monitorFocusChange);\r\n document.body.removeEventListener('keydown', onKeyDown);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [focusedElementIndex, tabableElements]);\r\n\r\n useEffect(() => {\r\n const { isLoading, inputId } = initialSelectedInputId;\r\n\r\n if (isLoading) {\r\n setTimeout(() => {\r\n const fastStorageKeys = Object.keys(fastStorage);\r\n const foundKeys = fastStorageKeys.filter(item => item.includes(url));\r\n if(foundKeys.length === 0) return; //do not execute after tab closed\r\n let focusIndex = 0;\r\n \r\n if (focusedElementIndex >= 0) {\r\n focusIndex = focusedElementIndex;\r\n } else if (inputId) {\r\n const inputElement = document.getElementById(inputId);\r\n if (inputElement) {\r\n focusIndex = getCurrentTabableIndex(inputElement);\r\n if (focusIndex === -1) focusIndex = 0; //inputId Element가 disable\r\n }\r\n else {\r\n if (focusedElementInStorage && !focusedElementInStorage?.some(x => x.tabIndexInStorage === operationTabIndex)) {\r\n const tempData = _.cloneDeep(focusedElementInStorage);\r\n tempData.push({ tabIndexInStorage: operationTabIndex, focusedElementIndexInStorage: 0 });\r\n setFocusedElementInStorage(tempData);\r\n }\r\n }\r\n }\r\n\r\n if (focusIndex !== undefined) {\r\n if (focusIndex > getAllTabableElements().length) {\r\n const inputElement = document.getElementById(inputId);\r\n if (inputElement) {\r\n focusIndex = getCurrentTabableIndex(inputElement);\r\n }\r\n }\r\n }\r\n \r\n const modals = document.querySelectorAll('[class^=\"ReactModal__Content\"]');\r\n if (getCurrentTabableIndex(document.activeElement) < 0) setFocusedElement(focusIndex, modals.length <= 0);\r\n }, 500);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [initialSelectedInputId.isLoading, operationTabIndex]);\r\n\r\n const operationToApplyChangesFor = !!urlOperation\r\n ? urlOperation\r\n : activeOperation;\r\n\r\n const removeJobMenu = () => {\r\n removeSingleJobMenu(url || '', operationToApplyChangesFor)\r\n }\r\n\r\n function setFocusedElement(index: number, focusTabable:boolean = true) {\r\n if (focusedElementInStorage) {\r\n const indexToUpdate = focusedElementInStorage.findIndex(data => data.tabIndexInStorage === operationTabIndex);\r\n\r\n if (indexToUpdate !== -1) {\r\n const tempData = _.cloneDeep(focusedElementInStorage);\r\n tempData[indexToUpdate].focusedElementIndexInStorage = index;\r\n setFocusedElementInStorage(tempData);\r\n setFocusedEleIndexCurPageInStorage(index);\r\n\r\n if(focusTabable) focusTabableByIndex(index);\r\n }\r\n }\r\n }\r\n \r\n function monitorFocusChange(e: Event) {\r\n let node: Element = e.target as Element;\r\n // for (let i = 0; i < 5; ++i) {\r\n // if (!node) {\r\n // break;\r\n // }\r\n // const inputElement = node.querySelector('input, textarea');\r\n // if (inputElement?.classList?.contains('ifms-tabable-active')) {\r\n // setFocusedElement(getCurrentTabableIndex(inputElement));\r\n // return;\r\n // }\r\n // node = node.parentNode as Element;\r\n // }\r\n // const currentCellSelections = document.querySelectorAll('.data-cell-selected');\r\n // if(currentCellSelections) return;\r\n if (isTableElement(node)) return;\r\n\r\n if (node.classList?.contains('ifms-tabable-active'))\r\n setFocusedElement(getCurrentTabableIndex(node));\r\n else {\r\n if (document.activeElement?.id.includes('lookupaddressdetails'))\r\n setFocusedElement(focusedElementIndex ?? 0 + 1);\r\n }\r\n }\r\n\r\n function isTableElement(element: Element): boolean {\r\n const tableEles = document.querySelectorAll('div[role=\"table\"]');\r\n return Array.from(tableEles).some(tableEle => tableEle.contains(element));\r\n }\r\n\r\n function onKeyDown(e: KeyboardEvent) {\r\n const tabKey = 9;\r\n const f5Key = 116;\r\n const currentNode = (e.target as Element);\r\n // const currentCellSelections = document.querySelector('.data-cell-selected'); \r\n // if (currentCellSelections) return;\r\n\r\n if (e.keyCode === tabKey) {\r\n const reactModal = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if ((!reactModal?.contains(currentNode) && reactModal) || document.querySelector('[id*=lookuptable]')) return false;\r\n\r\n //(!reactModal?.contains(tableRef) && reactModal)\r\n\r\n if (isTableElement(currentNode)) return;\r\n\r\n const callByLookupAddressDetails = currentNode.id.includes('lookupaddressdetails');\r\n if (callByLookupAddressDetails) return;\r\n if (focusedElementIndex === null || focusedElementIndex === -1) return;\r\n\r\n if (e.shiftKey) {\r\n handleShiftTabKey(e, focusedElementIndex);\r\n } else {\r\n handleTabKey(e, focusedElementIndex);\r\n }\r\n }\r\n if (e.keyCode === f5Key && !isSearch) {\r\n e.returnValue = false;\r\n }\r\n }\r\n\r\n function handleShiftTabKey(e: KeyboardEvent, index: number) {\r\n if (index === null || index === -1) return;\r\n\r\n const currentNode = (e.target as Element);\r\n const tabableElementLastIndex = tabableElements.length - 1;\r\n\r\n let newIndex = (index === 0) ? tabableElementLastIndex : focusedElementIndex - 1;\r\n // if (tabableElements.item(newIndex).id === 'table-top-addline-button')\r\n // return;\r\n\r\n if (newIndex === tabableElementLastIndex && tabableElements.item(tabableElementLastIndex)?.id.includes('lookupaddressdetails'))\r\n newIndex = tabableElementLastIndex - 1;\r\n else {\r\n const prevElementClassName = getTabableElementByIndex(newIndex).className;\r\n if (prevElementClassName.includes('-hideforfocus-')) {\r\n const tableId = prevElementClassName.split('-hideforfocus-')[0];\r\n const tableElement = document.getElementById(tableId);\r\n if (tableElement) {\r\n (currentNode as HTMLElement)?.blur();\r\n tableElement.focus();\r\n \r\n const shiftTabKeyEvent = new KeyboardEvent('keydown', {\r\n key: 'Tab',\r\n code: 'Tab',\r\n keyCode: 9,\r\n which: 9,\r\n shiftKey: true, \r\n bubbles: true,\r\n cancelable: true\r\n });\r\n \r\n tableElement.dispatchEvent(shiftTabKeyEvent);\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n }\r\n\r\n setdFocusElement(newIndex, e);\r\n }\r\n\r\n function handleTabKey(e: KeyboardEvent, index: number) {\r\n if (index === null || index === -1) return;\r\n const currentNode = (e.target as Element);\r\n \r\n if (document.activeElement?.id.includes('lookupaddressdetails')) return;\r\n\r\n const nextTabableElementClassName = focusNextTabable(currentNode as HTMLInputElement, true)?.className;\r\n if (nextTabableElementClassName && nextTabableElementClassName.includes('-hideforfocus-')) {\r\n const tableId = nextTabableElementClassName.split('-hideforfocus-')[0];\r\n const tableElement = document.getElementById(tableId);\r\n\r\n if (tableElement) {\r\n (currentNode as HTMLElement)?.blur();\r\n tableElement.focus();\r\n \r\n const tabKeyEvent = new KeyboardEvent('keydown', {\r\n key: 'Tab',\r\n code: 'Tab',\r\n keyCode: 9,\r\n which: 9,\r\n bubbles: true,\r\n cancelable: true\r\n });\r\n\r\n tableElement.dispatchEvent(tabKeyEvent);\r\n e.preventDefault();\r\n }\r\n return;\r\n }\r\n\r\n const newIndex = (tabableElements.length - 1 === index) ? 0 : index + 1;\r\n setdFocusElement(newIndex, e);\r\n }\r\n \r\n function setdFocusElement(index: number, e: KeyboardEvent) {\r\n setFocusedElement(index);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n function hasOpenedScreenStartingWithUrl(queryUrl:string) {\r\n return hasSingleOpenedScreenStartingWithUrl(urlOperation || '', queryUrl)\r\n }\r\n\r\n function hasOpenedScreenStartingWithUrlWithoutMe(queryUrl:string, ignoreUrl:string) {\r\n return hasSingleOpenedScreenStartingWithUrlWithoutMe(urlOperation || '', queryUrl, ignoreUrl)\r\n }\r\n\r\n function hasOpenedScreenInAnyOperationStartingWithUrl(queryUrl:string) {\r\n return hasSingleOpenedScreenInAnyOperationStartingWithUrl(queryUrl);\r\n }\r\n\r\n function hasOpenedScreenInAnyOperationStartingWithUrlWithoutMe(queryUrl:string, ignoreUrl:string) {\r\n return hasSingleOpenedScreenInAnyOperationStartingWithUrlWithoutMe(queryUrl, ignoreUrl);\r\n }\r\n\r\n function getOpenedScreenInAnyOperationStartingWithUrl(queryUrl:string) {\r\n return getSingleOpenedScreenInAnyOperationStartingWithUrl(queryUrl);\r\n }\r\n\r\n async function showDependantScreenMessage(title:React.ReactNode|string|null|undefined) {\r\n return showSingleDependantScreenMessage(url, urlOperation || '', title)\r\n }\r\n\r\n async function canGoBack(): Promise {\r\n return canGoBackSingle(urlOperation || '');\r\n }\r\n\r\n async function goBack(cb:(() => void)|null = null, backScreenOverride:string|null = null):Promise {\r\n return goBackSingle(url, urlOperation || '', cb, backScreenOverride);\r\n }\r\n\r\n function replaceCurrentJobItemWith(newUrl:string, newLabel:any) {\r\n replaceSingleCurrentJobItemWith(newUrl, newLabel, label, url)\r\n }\r\n\r\n function replaceCurrentJobItemLabelWith(newLabel:string|null) {\r\n replaceSingleCurrentJobItemLabelWith(newLabel, label, url)\r\n }\r\n\r\n\r\n function moveToOpenedScreenInAnyOperationStartingWithUrl(oepnRequestUrl:string, queryUrls:string[], needAfterScreenUrl?: boolean|undefined){\r\n moveToSingleOpenedScreenInAnyOperationStartingWithUrl(oepnRequestUrl, queryUrls, needAfterScreenUrl)\r\n }\r\n\r\n useEffect(() => {\r\n addSingleCleanupFunction(cleanupFnc, url)\r\n\r\n const operation = getOperationKey(operationToApplyChangesFor);\r\n if (!operation) {\r\n return;\r\n }\r\n\r\n if (operation) {\r\n // Check if parent url is opened\r\n if (!!parentUrlsArrayOverride) {\r\n const parentIsOpened = parentUrlsArrayOverride.some(p => {\r\n // Implementation note: ~ means that screen starts with. For example we can check if there is edit screen opened without knowing exact id\r\n if (p.startsWith('~')) {\r\n return !!screenStack[operation].find(x => stringsStartsWithIgnoreCase(x.url, p.substring(1)));\r\n } else {\r\n return !!screenStack[operation].find(x => stringsEqualIgnoreCase(x.url, p));\r\n }\r\n });\r\n if (!parentIsOpened) {\r\n openNewPage(history, '/invalidOperation', NavigationType.newPage);\r\n return;\r\n }\r\n }\r\n else if (!!parentUrl) {\r\n const parentIsOpened = !!screenStack[operation].find(x => stringsEqualIgnoreCase(x.url, parentUrl));\r\n if (!parentIsOpened) {\r\n openNewPage(history, '/invalidOperation', NavigationType.newPage);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n const locationState = history.location?.state as any;\r\n const urlOperationKey = urlOperation ? getOperationKey(urlOperation) : null;\r\n\r\n if (urlOperation === constants.operations.standalone) {\r\n dispatch(moveJobMenuToTop({\r\n url,\r\n operation: getOperationKey(urlOperation) ?? '',\r\n }));\r\n }\r\n\r\n if(parentOp) urlOperation = parentOp;\r\n\r\n if (!!urlOperation && urlOperation !== activeOperation) {\r\n dispatch(moveScreenToTop({\r\n url,\r\n operation: getOperationKey(urlOperation) ?? '',\r\n }));\r\n dispatch(changeOperation(urlOperation));\r\n }\r\n\r\n dispatch(addJobMenuItem({\r\n url,\r\n label,\r\n parentUrl,\r\n operation: urlOperationKey,\r\n closeOnLogout,\r\n activeOperation: operation,\r\n metadata: locationState?.metadata,\r\n timestamp: nowMillisecond(),\r\n noOperationSuffix,\r\n afterScreenUrl: locationState?.afterScreenUrl ?? null,\r\n jobMode:jobMode,\r\n jobType:jobType,\r\n addTypeSuffix,\r\n }));\r\n\r\n dispatch(pushScreenToStack({\r\n url,\r\n parentUrl,\r\n operation: urlOperationKey,\r\n activeOperation: operation,\r\n metadata: locationState?.metadata,\r\n afterScreenUrl: locationState?.afterScreenUrl ?? null,\r\n }));\r\n // setTimeout(() => {\r\n // if(focusedElementIndex && focusedElementIndex >= 0) {\r\n // focusTabableByIndex(focusedElementIndex)\r\n // } else if(initialSelectedInputId) {\r\n // focusTabableByIndex(getCurrentTabableIndex(document.getElementById(initialSelectedInputId)))\r\n // }\r\n // }, 500)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n // return [goBack, removeJobMenu, showDependantScreenMessage, hasOpenedScreenStartingWithUrl, replaceCurrentJobItemWith, replaceCurrentJobItemLabelWith];\r\n\r\n return {\r\n canGoBack,\r\n goBack,\r\n removeJobMenu,\r\n showDependantScreenMessage,\r\n hasOpenedScreenStartingWithUrl,\r\n hasOpenedScreenStartingWithUrlWithoutMe,\r\n hasOpenedScreenInAnyOperationStartingWithUrl,\r\n hasOpenedScreenInAnyOperationStartingWithUrlWithoutMe,\r\n getOpenedScreenInAnyOperationStartingWithUrl,\r\n moveToOpenedScreenInAnyOperationStartingWithUrl,\r\n replaceCurrentJobItemWith,\r\n replaceCurrentJobItemLabelWith,\r\n firstRun: isFirstRun(url)\r\n };\r\n}\r\n ","import PropTypes from 'prop-types';\r\nimport React, { useContext } from 'react';\r\n\r\nimport LookupField, { LookupInputType } from '../../ui/lookup/LookupField';\r\nimport { TextRenderer, TextAlignLeftRenderer } from '../SmartTableRenderers';\r\n\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport { CompanyPreview } from '../../ifmsTypes';\r\nimport { SQLIndex } from '../../fms.core/constants';\r\nimport { TableColumn } from '../../tableSettings';\r\n\r\nexport interface CompanyLookupProps {\r\n initialValue: string | null | undefined,\r\n onSelect: (x: CompanyPreview) => void,\r\n placeholder?: string | undefined,\r\n onTextChange: (text: string | undefined) => void,\r\n filterName: string,\r\n disabled?: boolean,\r\n noBorder?: boolean,\r\n lookupId?: string | undefined,\r\n onTabNext?: (() => boolean) | undefined,\r\n onTabPrevious?: (() => boolean) | undefined,\r\n companyItems?: Array | undefined,\r\n onFocus?: (e: React.FocusEvent) => void,\r\n onBlur?: (e: React.FocusEvent) => void,\r\n focusableWhenDisabled?: boolean,\r\n validationFor?: string | undefined,\r\n maxLength?: number | undefined,\r\n customColumn?: TableColumn[] | undefined,\r\n lookupType?:SQLIndex,\r\n getAllowAgentsList?: (() => any) | undefined,\r\n focusElementAfterSelect?: () => HTMLInputElement | HTMLElement | null,\r\n userInputType?: LookupInputType,\r\n hasLookupValue?:boolean,\r\n name?:string | undefined,\r\n noRightBorder?: boolean,\r\n noLeftBorder?: boolean,\r\n notFocusNextEleWhenSelectItem?: boolean,\r\n};\r\n\r\nfunction CompanyLookupField({\r\n initialValue = '',\r\n onSelect = () => { },\r\n placeholder = undefined,\r\n onTextChange = () => { },\r\n filterName,\r\n disabled = false,\r\n noBorder = false,\r\n lookupId = undefined,\r\n onTabNext = undefined,\r\n onTabPrevious = undefined,\r\n companyItems = undefined,\r\n onFocus = () => { },\r\n onBlur = () => { },\r\n focusableWhenDisabled = false,\r\n maxLength = undefined,\r\n customColumn = undefined,\r\n lookupType = SQLIndex.CompanyList,\r\n getAllowAgentsList = undefined,\r\n focusElementAfterSelect = () => null,\r\n userInputType = 0,\r\n hasLookupValue = false,\r\n noRightBorder = false,\r\n noLeftBorder = false,\r\n notFocusNextEleWhenSelectItem=false,\r\n ...others\r\n}: CompanyLookupProps) {\r\n const appContext = useContext(ApplicationContext);\r\n\r\n async function queryCompanies(queryString: string | null) {\r\n if (getAllowAgentsList) { //for Invoice/Bill\r\n const lookupParams = await getAllowAgentsList();\r\n if (lookupParams.length >= 3) {\r\n lookupType = SQLIndex.CompanyListAgntParial\r\n queryString = lookupParams.join(',');\r\n }\r\n }\r\n\r\n const apiResult = await appContext.api.getLookupItems(lookupType, queryString ?? '', (filterName === 'fullName' ? 'FullName' : ''));\r\n return apiResult?.entities;\r\n }\r\n\r\n function onCancel() {\r\n }\r\n\r\n function filter(data: Array, filterText: string) {\r\n return data.findIndex(x => x.shortName && x.shortName.toLowerCase().startsWith(filterText.toLowerCase()));\r\n }\r\n\r\n const columnsforWHP = [\r\n {\r\n Header: 'Agent',\r\n accessor: 'name',\r\n resizable: true,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 200,\r\n Cell: TextAlignLeftRenderer\r\n },\r\n {\r\n Header: 'Customer(WH)',\r\n accessor: 'companyRefNo',\r\n resizable: true,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 150,\r\n Cell: TextAlignLeftRenderer\r\n },\r\n {\r\n Header: 'Contact',\r\n accessor: 'contact',\r\n resizable: true,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 150,\r\n Cell: TextAlignLeftRenderer\r\n },\r\n {\r\n Header: 'Tel',\r\n accessor: 'tel',\r\n resizable: true,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 150,\r\n Cell: TextAlignLeftRenderer\r\n },\r\n ];\r\n\r\n const columns = [\r\n // { Header: 'Id', accessor: 'id', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 30, Cell: TextRenderer },\r\n { Header: 'Short Name', accessor: 'shortName', resizable: true, sortable: false, canBeHidden: false, visible: true, width: 180, Cell: TextAlignLeftRenderer },\r\n { Header: 'CompanyRefNo', accessor: 'companyRefNo', resizable: true, sortable: false, canBeHidden: false, visible: true, width: 120, Cell: TextAlignLeftRenderer },\r\n { Header: 'Contact', accessor: 'contact', resizable: true, sortable: false, canBeHidden: false, visible: true, width: 180, Cell: TextAlignLeftRenderer },\r\n { Header: 'FIRMS Code', accessor: 'iataNo', resizable: true, sortable: false, canBeHidden: false, visible: true, width: 80, Cell: TextRenderer },\r\n { Header: 'Full Name', accessor: 'fullName', resizable: true, sortable: false, canBeHidden: false, visible: true, width: 250, Cell: TextAlignLeftRenderer },\r\n ];\r\n\r\n const columnsForDelivery = [\r\n // { Header: 'Id', accessor: 'id', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 30, Cell: TextRenderer },\r\n { Header: 'Full Name', accessor: 'fullName', resizable: true, sortable: false, canBeHidden: false, visible: true, width: 250, Cell: TextAlignLeftRenderer },\r\n { Header: 'CompanyRefNo', accessor: 'companyRefNo', resizable: true, sortable: false, canBeHidden: false, visible: true, width: 120, Cell: TextAlignLeftRenderer },\r\n { Header: 'Contact', accessor: 'contact', resizable: true, sortable: false, canBeHidden: false, visible: true, width: 180, Cell: TextAlignLeftRenderer },\r\n { Header: 'FIRMS Code', accessor: 'iataNo', resizable: true, sortable: false, canBeHidden: false, visible: true, width: 80, Cell: TextRenderer },\r\n { Header: 'Short Name', accessor: 'shortName', resizable: true, sortable: false, canBeHidden: false, visible: true, width: 180, Cell: TextAlignLeftRenderer },\r\n ];\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nCompanyLookupField.defaultProps = {\r\n onSelect: () => { },\r\n onTextChange: () => { },\r\n filterName: 'shortName',\r\n disabled: false,\r\n focusableWhenDisabled: false,\r\n hasLookupValue: false\r\n};\r\n\r\nCompanyLookupField.propTypes = {\r\n initialValue: PropTypes.string,\r\n onSelect: PropTypes.func.isRequired,\r\n onTextChange: PropTypes.func.isRequired,\r\n placeholder: PropTypes.string,\r\n filterName: PropTypes.string.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n lookupId: PropTypes.string,\r\n onTabNext: PropTypes.func,\r\n onTabPrevious: PropTypes.func,\r\n companyItems: PropTypes.array,\r\n onBlur: PropTypes.func,\r\n onFocus: PropTypes.func,\r\n focusableWhenDisabled: PropTypes.bool.isRequired,\r\n customColumn: PropTypes.array,\r\n hasLookupValue: PropTypes.bool\r\n};\r\n\r\n\r\nexport default React.memo(CompanyLookupField);\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport Float, { FloatProps } from '../ui/Float';\r\nimport useSystemSettings from '../hooks/useSystemSettings';\r\nimport { SystemSettings } from '../ifmsTypes';\r\nimport _ from 'lodash';\r\n\r\nfunction getDecimal(systemSettings:SystemSettings|null, currency:string|null) {\r\n if (!currency || !systemSettings) {\r\n return 4;\r\n }\r\n\r\n if (!!systemSettings.currencies && systemSettings.currencies.length > 0) {\r\n const c = systemSettings.currencies.find(x => x.currency === currency);\r\n return !!c ? c.decimal : 0;\r\n }\r\n\r\n return 0;\r\n}\r\n\r\nexport interface CurrencyProps extends FloatProps {\r\n currency: string,\r\n};\r\n\r\nfunction Currency(props: CurrencyProps) {\r\n const systemSettings = useSystemSettings();\r\n\r\n \r\n const {currency, ...other} = props;\r\n const decimal = _.isEmpty(currency) ? 0 : getDecimal(systemSettings, currency);\r\n\r\n return \r\n\r\n};\r\n\r\nCurrency.defaultProps = {\r\n onChange: () => {},\r\n disabled: false,\r\n dark: false,\r\n error: false,\r\n};\r\n\r\nCurrency.propTypes = {\r\n onChange: PropTypes.func.isRequired,\r\n value: PropTypes.number,\r\n min: PropTypes.number,\r\n max: PropTypes.number,\r\n dark: PropTypes.bool.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n floatId: PropTypes.string,\r\n error: PropTypes.bool.isRequired,\r\n currency: PropTypes.string,\r\n onTabNext: PropTypes.func,\r\n onTabPrevious: PropTypes.func,\r\n onEnter: PropTypes.func,\r\n onDoubleClick : PropTypes.func,\r\n};\r\n\r\n\r\nexport default React.memo(Currency);\r\n","import PropTypes from 'prop-types';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\n\r\nimport Select, { SelectItem } from '../ui/Select';\r\nimport ApplicationContext, { IApplicationContext } from '../ApplicationContext';\r\nimport { Currency } from '../ifmsTypes';\r\nimport { forEach } from 'lodash';\r\n\r\nfunction getCurrenciesFromAppContext(appContext:IApplicationContext) {\r\n if (!!appContext && !!appContext.systemSettings && !!appContext.systemSettings.currencies && appContext.systemSettings.currencies.length > 0) {\r\n return appContext.systemSettings.currencies;\r\n }\r\n\r\n return [];\r\n}\r\n\r\nexport interface CurrencyAdditionalElement {\r\n value: string,\r\n label: string,\r\n}\r\n\r\nfunction CurrencyDropdown({\r\n value,\r\n onChange = () => {},\r\n disabled = false,\r\n items = [],\r\n selectWidth = undefined,\r\n selectId = undefined,\r\n onTabNext = undefined,\r\n allowEmpty = true,\r\n additionalElements = [],\r\n hideCaret = false,\r\n inactive = false,\r\n name = undefined,\r\n notFocusNextEleWhenSelectItem = false,\r\n}: {\r\n value: string|null,\r\n onChange?: (x:string|null) => void,\r\n disabled?: boolean,\r\n items?: Array,\r\n selectId?: string|undefined,\r\n selectWidth?: string|undefined,\r\n onTabNext?: (() => boolean)|undefined,\r\n allowEmpty?: boolean,\r\n additionalElements? : Array,\r\n hideCaret?: boolean,\r\n inactive?: boolean,\r\n name?:string|undefined\r\n notFocusNextEleWhenSelectItem?: boolean,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const [data, setData] = useState>(items || []);\r\n\r\n async function fetchData(appContext:IApplicationContext) {\r\n const data = getCurrenciesFromAppContext(appContext);\r\n setData(data);\r\n }\r\n\r\n function handleChange(e:React.ChangeEvent) {\r\n if (!e.target.value) {\r\n onChange(null);\r\n return;\r\n }\r\n \r\n onChange(e.target.value);\r\n }\r\n\r\n useEffect(() => {\r\n if (items && items.length > 0) {\r\n setData(items);\r\n } else {\r\n if(!data || data.length === 0) fetchData(appContext);\r\n }\r\n },\r\n //\r\n //[items]\r\n //[]\r\n\r\n // !x.inactive);\r\n }\r\n\r\n let addItem:Array = [];\r\n \r\n additionalElements.forEach(additionalElement => {\r\n if(currencies.findIndex(x => x.currency == additionalElement.label && x.currency === additionalElement.value) === -1) {\r\n addItem.push(additionalElement);\r\n }\r\n });\r\n\r\n let displayData:Array = [\r\n // ...additionalElements,\r\n ...addItem,\r\n ...currencies.map(x => ({ value: x.currency ?? '', label: x.currency ?? '' }))\r\n ];\r\n\r\n if (allowEmpty) {\r\n displayData.unshift({value: '', label: '', activeLabel: '' });\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nCurrencyDropdown.defaultProps = {\r\n onChange: () => {},\r\n disabled: false,\r\n dark: false,\r\n allowEmpty: true,\r\n additionalElements: [],\r\n hideCaret: false,\r\n inactive: false\r\n};\r\n\r\nCurrencyDropdown.propTypes = {\r\n selectId: PropTypes.string,\r\n value: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n items: PropTypes.array,\r\n onTabNext: PropTypes.func,\r\n allowEmpty: PropTypes.bool.isRequired,\r\n additionalElements: PropTypes.arrayOf(PropTypes.shape({\r\n value: PropTypes.string,\r\n label: PropTypes.string,\r\n })).isRequired,\r\n hideCaret: PropTypes.bool.isRequired,\r\n inactive: PropTypes.bool\r\n};\r\n\r\nexport default React.memo(CurrencyDropdown);\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport IfmsButton, { IfmsButtonProps } from './IfmsButton';\r\n\r\nconst GrayButtonTabs = React.forwardRef(({children, ...other}, ref) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\nGrayButtonTabs.defaultProps = {\r\n};\r\n\r\nGrayButtonTabs.propTypes = {\r\n size: PropTypes.oneOf(['regular', 'small', 'large']),\r\n};\r\n\r\nexport default React.memo(GrayButtonTabs);\r\n\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport IfmsButton, { IfmsButtonProps } from './IfmsButton';\r\n\r\nconst PrimaryButtonTabs = React.forwardRef(({children, ...other}, ref) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\nPrimaryButtonTabs.defaultProps = {\r\n};\r\n\r\nPrimaryButtonTabs.propTypes = {\r\n size: PropTypes.oneOf(['regular', 'small', 'large', 'extrasmall']),\r\n};\r\n\r\nexport default React.memo(PrimaryButtonTabs);","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport IfmsButton, { IfmsButtonProps } from './IfmsButton';\r\n\r\nconst DeepBlueButtonTabs = React.forwardRef(({children, ...other}, ref) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\nDeepBlueButtonTabs.defaultProps = {\r\n};\r\n\r\nDeepBlueButtonTabs.propTypes = {\r\n size: PropTypes.oneOf(['regular', 'small', 'large', 'extrasmall']),\r\n};\r\n\r\nexport default React.memo(DeepBlueButtonTabs);","import _ from 'lodash';\r\nimport { useStore } from 'react-redux';\r\nimport { ScreenStackState } from '../features/screenStackSlice';\r\nimport { useAppSelector } from '../app/hooks';\r\n\r\n\r\nexport default function useJobMenuUrlQuery() {\r\n const selectorScreenStack = useAppSelector(x => x.screenStack);\r\n const store = useStore();\r\n\r\n function hasOpenedScreenStartingWithUrl(queryUrl:string) {\r\n const storeScreenStack = store.getState().screenStack as ScreenStackState;\r\n const screenStack = storeScreenStack ? storeScreenStack : selectorScreenStack;\r\n\r\n return !!queryUrl &&\r\n _.keys(screenStack).some(operation => screenStack[operation].findIndex(x => x.url && x.url.toLowerCase().startsWith(queryUrl.toLowerCase())) >= 0);\r\n }\r\n\r\n return hasOpenedScreenStartingWithUrl;\r\n}\r\n ","import PropTypes from 'prop-types';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\n\r\nimport Select, { SelectItem } from '../ui/Select';\r\nimport { FmsUser } from '../fms.core/FmsUser';\r\nimport ApplicationContext from '../ApplicationContext';\r\nimport { ComboParamsBase, FmsComboType } from '../fms.core/constants';\r\n\r\nfunction UsersDropDown({\r\n value,\r\n onChange = () => {},\r\n disabled = false,\r\n items = [],\r\n maxLength = undefined,\r\n name=undefined,\r\n selectId,\r\n}: {\r\n value: string|null|undefined,\r\n disabled?: boolean,\r\n onChange?: (x:string|null) => void,\r\n items?: Array,\r\n maxLength?: number|undefined,\r\n name?: string|undefined,\r\n selectId?: string,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const [data, setData] = useState>([]);\r\n\r\n async function fetchData(api:any) {\r\n var base = new ComboParamsBase();\r\n base.comboType = FmsComboType.User;\r\n const data = await api.loadCodeData([base]);\r\n if (data && data.length > 0) {\r\n setData(data[0].items);\r\n }\r\n }\r\n\r\n function handleChange(e:React.ChangeEvent) {\r\n if (!e.target.value) {\r\n onChange(null);\r\n return;\r\n }\r\n \r\n const user = data.find(x => x === e.target.value);\r\n onChange(user ?? null);\r\n }\r\n\r\n useEffect(() => {\r\n if (items && items.length > 0) {\r\n setData(items);\r\n } else {\r\n fetchData(appContext.api);\r\n }\r\n \r\n return () => {\r\n setData([]);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n const displayData:Array = [\r\n {value: '', label: '', activeLabel: '' },\r\n ...data.map(x => ({ value: x, label: x }))\r\n ];\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nUsersDropDown.defaultProps = {\r\n onChange: () => {},\r\n disabled: false,\r\n dark: false,\r\n};\r\n\r\nUsersDropDown.propTypes = {\r\n value: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n items: PropTypes.array,\r\n selectId: PropTypes.string,\r\n};\r\n\r\nexport default React.memo(UsersDropDown);\r\n","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\nimport { SQLField, SQLInfo, SQLType } from '../framework.core/data/SQLInfo';\r\nimport { InvoDetail } from './InvoDetail';\r\nimport { ApDetail } from './ApDetail';\r\nimport { JobNames } from '../framework.core/JobNames';\r\n\r\nexport class OpAcct extends TrackableEntity {\r\n id: number = 0;\r\n tbName: string = '';\r\n tbId: number = 0;\r\n loc: number = 0;\r\n chgType: number = 0;\r\n billingCode: string = '';\r\n description: string = '';\r\n entity: number = 0;\r\n cur1: string = '';\r\n rate: number = 0;\r\n qty: number = 0;\r\n actualAmt: number = 0;\r\n cur2: string = '';\r\n agentAmt: number = 0;\r\n useVat: boolean = false;\r\n ps: boolean = false;\r\n posted: string = '';\r\n lActAmt: number = 0;\r\n lAgtAmt: number = 0;\r\n vatAmount: number = 0;\r\n actExrate: number = 0;\r\n agtExrate: number = 0;\r\n invoiced: boolean = false;\r\n settled: boolean = false;\r\n iDate: string | null = null;\r\n cDate: string | null = null;\r\n agent: number = 0;\r\n invoiceDate: string | null = null;\r\n crDbDate: string | null = null;\r\n dutyEntity: number = 0;\r\n dutyEntityName: string = '';\r\n dutyAgent: number = 0;\r\n dutyAgentName: string = '';\r\n blCur1: string = '';\r\n blCur2: string = '';\r\n billPaidAmt: number = 0;\r\n headCur: string = '';\r\n void: number = 0;\r\n invId: number = 0;\r\n seq: number = 0;\r\n cmdDesc: string = '';\r\n printDesc: string = '';\r\n locDesc: string = '';\r\n chgTypeDesc: string = '';\r\n entityName: string = '';\r\n actualAmtDesc: string = '';\r\n agentName: string = '';\r\n select: string = '';\r\n selected: boolean = false;\r\n billDateDesc: string = '';\r\n invoiceNo: string = '';\r\n crDbNo: string = '';\r\n errorMsg: string = '';\r\n isChgTypeLock: boolean = false;\r\n isBillCodeLock: boolean = false;\r\n isDescLock: boolean = false;\r\n isEntityLock: boolean = false;\r\n isCur1Lock: boolean = false;\r\n isRateQtyLock: boolean = false;\r\n isAgentLock: boolean = false;\r\n isCur2Lock: boolean = false;\r\n isAgentAmtLock: boolean = false;\r\n isPsLock: boolean = false;\r\n isVatLock: boolean = false;\r\n isSelectLock: boolean = false;\r\n\r\n // cloud\r\n dirtyChgType: boolean = false;\r\n dirtyBillingCode: boolean = false;\r\n dirtyAgent: boolean = false;\r\n dirtyAgtCur: boolean = false;\r\n dirtyAgtAmount: boolean = false;\r\n cloudOnly: boolean = false;\r\n isDraft: boolean = false;\r\n billingCodeName: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('id', 'invoiced', 'cmdDesc', 'printDesc', 'locDesc', 'chgTypeDesc', 'entityName', 'actualAmtDesc', 'agentName', 'select', 'selected', 'billDateDesc', 'invoiceNo', 'crDbNo', 'errorMsg', 'isChgTypeLock', 'isBillCodeLock', 'isDescLock', 'isEntityLock', 'isCur1Lock', 'isRateQtyLock', 'isAgentLock', 'isCur2Lock', 'isAgentAmtLock', 'isPsLock', 'isVatLock', 'isSelectLock','billingCodeName');\r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n return OpAcct.dicFieldMappings;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_ID', table: 'T_OPACCT' }),\r\n 'chgType': new DBMappingInfo({ field: 'F_ChgType', table: 'T_OPACCT' }),\r\n 'billingCode': new DBMappingInfo({ field: 'F_BillingCode', table: 'T_OPACCT' }),\r\n 'description': new DBMappingInfo({ field: 'F_Description', table: 'T_OPACCT' }),\r\n 'cur1': new DBMappingInfo({ field: 'F_Cur1', table: 'T_OPACCT' }),\r\n 'rate': new DBMappingInfo({ field: 'F_Rate', table: 'T_OPACCT' }),\r\n 'qty': new DBMappingInfo({ field: 'F_Qty', table: 'T_OPACCT' }),\r\n 'actualAmt': new DBMappingInfo({ field: 'F_ActualAmt', table: 'T_OPACCT' }),\r\n 'useVat': new DBMappingInfo({ field: 'F_UseVat', table: 'T_OPACCT' }),\r\n 'vatAmount': new DBMappingInfo({ field: 'F_VATAmount', table: 'T_OPACCT' }),\r\n 'lActAmt': new DBMappingInfo({ field: 'F_LActAmt', table: 'T_OPACCT' }),\r\n 'actExrate': new DBMappingInfo({ field: 'F_ActExrate', table: 'T_OPACCT' }),\r\n 'cur2': new DBMappingInfo({ field: 'F_Cur2', table: 'T_OPACCT' }),\r\n 'agentAmt': new DBMappingInfo({ field: 'F_AgentAmt', table: 'T_OPACCT' }),\r\n 'lAgtAmt': new DBMappingInfo({ field: 'F_LAgtAmt', table: 'T_OPACCT' }),\r\n 'agtExrate': new DBMappingInfo({ field: 'F_AgtExRate', table: 'T_OPACCT' }),\r\n 'agent': new DBMappingInfo({ field: 'F_Agent', table: 'T_OPACCT' }),\r\n 'posted': new DBMappingInfo({ field: 'F_Posted', table: 'T_OPACCT' }),\r\n 'entity': new DBMappingInfo({ field: 'F_Entity', table: 'T_OPACCT' }),\r\n 'ps': new DBMappingInfo({ field: 'F_Ps', table: 'T_OPACCT' }),\r\n 'iDate': new DBMappingInfo({ field: 'F_iDate', table: 'T_OPACCT' }),\r\n 'loc': new DBMappingInfo({ field: 'f_loc', table: 'T_OPACCT' }),\r\n 'tbName': new DBMappingInfo({ field: 'f_tbname', table: 'T_OPACCT' }),\r\n 'tbId': new DBMappingInfo({ field: 'f_tbid', table: 'T_OPACCT' }),\r\n 'invoiced': new DBMappingInfo({ field: 'F_Invoiced', table: 'T_OPACCT' }),\r\n 'cloudOnly': new DBMappingInfo({ field: 'F_CloudOnly', table: 'T_OPACCT' }),\r\n };\r\n\r\n static GetSQLInfoByInvoOrBillDetail(detailSqlInfo:SQLInfo, detail:InvoDetail|ApDetail, tbName:string, tbId:number, invoiceToId:number, invoiceDate:string|null, isVoid: boolean = false): SQLInfo {\r\n const isBill = detail instanceof ApDetail;\r\n let opAcctId = 0;\r\n \r\n if(!isBill) {\r\n opAcctId = isVoid ? 0 : detail.stbId;\r\n } else {\r\n if(detailSqlInfo.type === SQLType.Insert) {\r\n opAcctId = detail.id;\r\n } else if(detailSqlInfo.type === SQLType.Update) {\r\n opAcctId = detail.stbId;\r\n } else if(detailSqlInfo.type === SQLType.Delete) {\r\n opAcctId = detailSqlInfo.key?.value;\r\n }\r\n }\r\n\r\n const opAcctSqlInfo = new SQLInfo({\r\n tableName: 'T_OPACCT',\r\n key: new SQLField({ fieldName: 'F_Id', propertyName: 'OpAcct_Id', value: opAcctId}),\r\n type: detailSqlInfo.type === SQLType.Delete ? SQLType.Delete : (opAcctId > 0 ? SQLType.Update : SQLType.Insert)\r\n });\r\n\r\n if(detailSqlInfo.type === SQLType.Delete) {\r\n return opAcctSqlInfo;\r\n }\r\n\r\n if(detailSqlInfo.type === SQLType.Insert) {\r\n opAcctSqlInfo.fields.push(new SQLField({ fieldName: 'F_TBName', propertyName: 'OpAcct_TbName', value: tbName === 'T_WRECEIVEHD' ? 'T_WRECEIVE' : tbName}));\r\n opAcctSqlInfo.fields.push(new SQLField({ fieldName: 'F_TBId', propertyName: 'OpAcct_TbId', value: tbId}));\r\n switch(tbName) {\r\n case \"T_OIMMAIN\":\r\n case \"T_OIHMAIN\":\r\n case \"T_AIMMAIN\":\r\n case \"T_AIHMAIN\":\r\n case \"T_GENMAIN\":\r\n case \"T_WRECEIVE\":\r\n case \"T_WRECEIVEHD\":\r\n case \"T_WSHIPHD\":\r\n opAcctSqlInfo.fields.push(new SQLField({ fieldName: \"F_Loc\", propertyName: \"OpAcct_Loc\", value: 2}));\r\n break;\r\n\r\n case \"T_OOMMAIN\":\r\n case \"T_OOHMAIN\":\r\n case \"T_AOHMAIN\":\r\n case \"T_AOMMAIN\":\r\n opAcctSqlInfo.fields.push(new SQLField({ fieldName: \"F_Loc\", propertyName: \"OpAcct_Loc\", value: 1}));\r\n break;\r\n\r\n }\r\n }\r\n\r\n detailSqlInfo.fields.forEach(f => {\r\n\r\n const propsName = f.propertyName.lastIndexOf(\".\") >= 0 ? f.propertyName.slice(f.propertyName.lastIndexOf(\".\") + 1) : f.propertyName;\r\n switch(propsName) {\r\n case 'chgType':\r\n let chgType = f.value === null || f.value === undefined ? 0 : parseInt(f.value);\r\n if([2, 4, 12, 14].indexOf(chgType) >= 0 && detail.lAmount !== detail.lAgtAmount) {\r\n chgType = isBill ? 13 : 3;\r\n }\r\n //else {\r\n else if([3, 13].indexOf(chgType) >= 0 && detail.lAmount === detail.lAgtAmount) {\r\n chgType = isBill ? 14 : 4;\r\n }\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName: 'F_ChgType', propertyName: 'OpAcct_ChgType', value: chgType}));\r\n break;\r\n case 'billingCode':\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName:\"F_BillingCode\", propertyName:\"OpAcct_BillingCode\", value: f.value}));\r\n break;\r\n case 'description':\r\n opAcctSqlInfo.fields.push(new SQLField({ fieldName: \"F_Description\", propertyName: \"OpAcct_Description\", value: f.value}));\r\n break;\r\n case 'cur':\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName:\"F_Cur1\", propertyName:\"OpAcct_Cur1\", value: f.value}));\r\n break;\r\n case 'rate':\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName: \"F_Rate\", propertyName: \"OpAcct_Rate\", value: f.value}));\r\n break;\r\n case 'qty':\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName: \"F_Qty\", propertyName: \"OpAcct_Qty\", value: f.value}));\r\n break;\r\n case 'curAmount':\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName: \"F_ActualAmt\", propertyName: \"OpAcct_ActualAmt\", value: f.value}));\r\n break;\r\n case 'useVat':\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName: \"F_UseVat\", propertyName: \"OpAcct_UseVat\", value: f.value})); \r\n break;\r\n case 'vatAmount':\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName:\"F_VATAmount\", propertyName:\"OpAcct_VATAmount\", value:f.value}));\r\n break;\r\n case 'lAmount':\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName:\"F_LActAmt\", propertyName:\"OpAcct_LActAmt\", value:f.value})); \r\n break;\r\n case 'exRate':\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName:\"F_ActExrate\", propertyName:\"OpAcct_ActExrate\", value:f.value}));\r\n break;\r\n case 'agtCur':\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName:\"F_Cur2\", propertyName:\"OpAcct_Cur2\", value: f.value}));\r\n break;\r\n case 'agtAmount':\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName:\"F_AgentAmt\", propertyName:\"OpAcct_AgentAmt\", value:f.value}));\r\n break;\r\n case 'lAgtAmount':\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName:\"F_LAgtAmt\", propertyName:\"OpAcct_LAgtAmt\", value:f.value}));\r\n break; \r\n case 'agtExRate':\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName:\"F_AgtExRate\", propertyName:\"OpAcct_AgtExRate\", value:f.value}));\r\n break;\r\n case 'agentId': // Invoice\r\n case 'agent': // Bill\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName:\"F_Agent\", propertyName:\"OpAcct_Agent\", value: f.value}));\r\n break; \r\n case 'entity': // Bill\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName:\"F_Entity\", propertyName:\"OpAcct_Entity\", value: invoiceToId}));\r\n break;\r\n case 'ps':\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName:\"F_Ps\", propertyName:\"OpAcct_Ps\", value:f.value}));\r\n break;\r\n }\r\n });\r\n\r\n const posted = detail.posted ?? 0;\r\n if ((!isBill && posted < 3) || (isBill && posted < 4)) {\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName:\"F_Posted\", propertyName:\"OpAcct_Posted\", value:\"2\"}));\r\n }\r\n else if (posted === 3) {\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName: \"F_Posted\", propertyName:\"OpAcct_Posted\", value:\"4\"}));\r\n }\r\n else {\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName:\"F_Posted\", propertyName:\"OpAcct_Posted\", value: posted.toString()}));\r\n }\r\n\r\n if(!isBill) {\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName:\"F_Entity\", propertyName:\"OpAcct_Entity\", value: invoiceToId}));\r\n }\r\n opAcctSqlInfo.fields.push(new SQLField({fieldName:\"F_iDate\", propertyName:\"OpAcct_iDate\", value:invoiceDate}));\r\n\r\n return opAcctSqlInfo;\r\n }\r\n}\r\n\r\nexport function getLocFromJobName(jobName: JobNames) {\r\n if([JobNames.OIMbl, JobNames.OIHbl, JobNames.AIMbl, JobNames.AIHbl, JobNames.OtherOP, JobNames.WHRcv, JobNames.WHShip].indexOf(jobName) >= 0) {\r\n return 2; // Dest\r\n } else {\r\n return 1; // Origin\r\n }\r\n}\r\n","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\n\r\nexport class AeAcct{\r\n name: string = \"\";\r\n prepaid: number = 0;\r\n collect: number = 0;\r\n}\r\n\r\nexport class AeAcctRecord extends TrackableEntity {\r\n id: number = 0;\r\n name0: string = '';\r\n prepaid0: number = 0;\r\n collect0: number = 0;\r\n name1: string = '';\r\n prepaid1: number = 0;\r\n collect1: number = 0;\r\n name2: string = '';\r\n prepaid2: number = 0;\r\n collect2: number = 0;\r\n name3: string = '';\r\n prepaid3: number = 0;\r\n collect3: number = 0;\r\n name4: string = '';\r\n prepaid4: number = 0;\r\n collect4: number = 0;\r\n [key:string]:any; // To access by index\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('id');\r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n return AeAcctRecord.dicFieldMappings;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_Id', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 1 }),\r\n 'name0': new DBMappingInfo({ field: 'F_C1', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 1 }),\r\n 'prepaid0': new DBMappingInfo({ field: 'F_F1', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 1 }),\r\n 'collect0': new DBMappingInfo({ field: 'F_F2', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 1 }),\r\n 'name1': new DBMappingInfo({ field: 'F_C2', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 1 }),\r\n 'prepaid1': new DBMappingInfo({ field: 'F_F3', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 1 }),\r\n 'collect1': new DBMappingInfo({ field: 'F_F4', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 1 }),\r\n 'name2': new DBMappingInfo({ field: 'F_C3', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 1 }),\r\n 'prepaid2': new DBMappingInfo({ field: 'F_F5', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 1 }),\r\n 'collect2': new DBMappingInfo({ field: 'F_F6', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 1 }),\r\n 'name3': new DBMappingInfo({ field: 'F_C4', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 1 }),\r\n 'prepaid3': new DBMappingInfo({ field: 'F_F7', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 1 }),\r\n 'collect3': new DBMappingInfo({ field: 'F_F8', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 1 }),\r\n 'name4': new DBMappingInfo({ field: 'F_C5', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 1 }),\r\n 'prepaid4': new DBMappingInfo({ field: 'F_F9', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 1 }),\r\n 'collect4': new DBMappingInfo({ field: 'F_F10', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 1 }),\r\n };\r\n\r\n static hblDicFieldMappings:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_Id', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TBID', type: 3 }),\r\n 'name0': new DBMappingInfo({ field: 'F_C1', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TBID', type: 3 }),\r\n 'prepaid0': new DBMappingInfo({ field: 'F_F1', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TBID', type: 3 }),\r\n 'collect0': new DBMappingInfo({ field: 'F_F2', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TBID', type: 3 }),\r\n 'name1': new DBMappingInfo({ field: 'F_C2', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TBID', type: 3 }),\r\n 'prepaid1': new DBMappingInfo({ field: 'F_F3', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TBID', type: 3 }),\r\n 'collect1': new DBMappingInfo({ field: 'F_F4', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TBID', type: 3 }),\r\n 'name2': new DBMappingInfo({ field: 'F_C3', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TBID', type: 3 }),\r\n 'prepaid2': new DBMappingInfo({ field: 'F_F5', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TBID', type: 3 }),\r\n 'collect2': new DBMappingInfo({ field: 'F_F6', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TBID', type: 3 }),\r\n 'name3': new DBMappingInfo({ field: 'F_C4', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TBID', type: 3 }),\r\n 'prepaid3': new DBMappingInfo({ field: 'F_F7', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TBID', type: 3 }),\r\n 'collect3': new DBMappingInfo({ field: 'F_F8', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TBID', type: 3 }),\r\n 'name4': new DBMappingInfo({ field: 'F_C5', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TBID', type: 3 }),\r\n 'prepaid4': new DBMappingInfo({ field: 'F_F9', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TBID', type: 3 }),\r\n 'collect4': new DBMappingInfo({ field: 'F_F10', table: 'T_AOTHERINFO', tbName: 'T_AOHMAIN', tbId: '@TBID', type: 3 }),\r\n };\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, { useContext } from 'react';\r\n\r\nimport LookupField from '../../ui/lookup/LookupField';\r\nimport { DateTimeRenderer, TextAlignLeftRenderer } from '../SmartTableRenderers';\r\n\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport { TableColumn } from '../../tableSettings';\r\nimport { SQLIndex } from '../../fms.core/constants';\r\nimport { LookupCopyInvRefNo } from '../../fms.data/lookup';\r\nimport { JobNames } from '../../framework.core/JobNames';\r\n\r\ntype columnType = 'M'|'H';\r\n\r\nfunction CopyInvTargetBLLookupField({\r\n initialValue = '',\r\n onSelect = () => {},\r\n placeholder = undefined,\r\n onTextChange = () => {},\r\n disabled = false,\r\n lookupId = undefined,\r\n onTabNext = undefined,\r\n onTabPrevious = undefined,\r\n maxLength = undefined,\r\n jobType\r\n}: {\r\n disabled?: boolean,\r\n initialValue: string,\r\n onSelect: (x:LookupCopyInvRefNo) => void,\r\n placeholder: string|undefined,\r\n onTextChange: (text:string|undefined) => void,\r\n lookupId?: string|undefined,\r\n onTabNext?: (() => boolean)|undefined,\r\n onTabPrevious?: (() => boolean)|undefined,\r\n maxLength?: number|undefined,\r\n jobType: JobNames,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n\r\n async function queryCopyInvRefNo(queryString:string|null) {\r\n const apiResult = await appContext.api.getLookupItems(SQLIndex.CopyInvRefNos, queryString ?? '', jobType);\r\n return apiResult?.entities;\r\n }\r\n function onCancel() {\r\n }\r\n\r\n function filter(data:Array, filterText:string) {\r\n return data.findIndex(x =>\r\n (x.refNo && x.refNo.toLowerCase().startsWith(filterText.toLowerCase()))||\r\n (x.mblNo && x.mblNo.toLowerCase().startsWith(filterText.toLowerCase()))||\r\n (x.entity && x.entity.toLowerCase().startsWith(filterText.toLowerCase()))||\r\n (x.vessel && x.vessel.toLowerCase().startsWith(filterText.toLowerCase()))\r\n );\r\n }\r\n\r\n\r\n let mblLabel, hblLabel, entityLabel, vesselLabel;\r\n\r\n let type: columnType = 'M';\r\n\r\n switch(jobType){\r\n case JobNames.OIMbl:\r\n case JobNames.OEMbl:\r\n mblLabel = 'Master B/L #';\r\n entityLabel = 'Agent';\r\n vesselLabel = \"Vessel Name\";\r\n type='M';\r\n break;\r\n case JobNames.AIMbl:\r\n case JobNames.AEMbl:\r\n mblLabel = 'MAWB #';\r\n entityLabel = 'Agent';\r\n vesselLabel = 'Flight #';\r\n type='M';\r\n break;\r\n case JobNames.OIHbl:\r\n case JobNames.OEHbl:\r\n case JobNames.OtherOP:\r\n mblLabel = 'Master B/L #';\r\n hblLabel = 'House B/L #';\r\n entityLabel = 'Carrier';\r\n type = 'H';\r\n break;\r\n case JobNames.AIHbl:\r\n case JobNames.AEHbl:\r\n mblLabel = 'MAWB #';\r\n hblLabel = 'HAWB #';\r\n entityLabel = 'Carrier';\r\n type='H';\r\n break;\r\n }\r\n\r\n\r\n const MBLcolumns:Array = [\r\n { Header: 'Ref. #', accessor: 'refNo', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 100, Cell: TextAlignLeftRenderer },\r\n { Header: mblLabel, accessor: 'mblNo', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 100, Cell: TextAlignLeftRenderer },\r\n { Header: entityLabel, accessor: 'entity', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 100, Cell: TextAlignLeftRenderer },\r\n { Header: vesselLabel, accessor: 'vessel', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 100, Cell: TextAlignLeftRenderer },\r\n { Header: 'Create Date', accessor: 'createDate', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 100, Cell: DateTimeRenderer },\r\n ];\r\n\r\n const HBLcolumns:Array = [\r\n { Header: 'Ref. #', accessor: 'refNo', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 100, Cell: TextAlignLeftRenderer },\r\n { Header: mblLabel, accessor: 'mblNo', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 100, Cell: TextAlignLeftRenderer },\r\n { Header: hblLabel, accessor: 'hblNo', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 100, Cell: TextAlignLeftRenderer },\r\n { Header: entityLabel, accessor: 'entity', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 100, Cell: TextAlignLeftRenderer },\r\n { Header: 'Create Date', accessor: 'createDate', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 100, Cell: DateTimeRenderer },\r\n ];\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nCopyInvTargetBLLookupField.defaultProps = {\r\n onSelect: () => {},\r\n onTextChange: () => {},\r\n disabled: false,\r\n};\r\n\r\nCopyInvTargetBLLookupField.propTypes = {\r\n initialValue: PropTypes.string,\r\n onSelect: PropTypes.func.isRequired,\r\n onTextChange: PropTypes.func.isRequired,\r\n placeholder: PropTypes.string,\r\n disabled: PropTypes.bool.isRequired,\r\n lookupId: PropTypes.string,\r\n onTabNext: PropTypes.func,\r\n onTabPrevious: PropTypes.func,\r\n maxLength: PropTypes.number,\r\n jobType: PropTypes.string,\r\n};\r\n\r\n\r\nexport default React.memo(CopyInvTargetBLLookupField);\r\n","import PropTypes from 'prop-types';\r\nimport React, { useContext } from 'react';\r\n\r\nimport LookupField from '../../ui/lookup/LookupField';\r\nimport { DateRenderer, DateTimeRenderer, TextAlignLeftRenderer } from '../SmartTableRenderers';\r\n\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport { TableColumn } from '../../tableSettings';\r\nimport { SQLIndex } from '../../fms.core/constants';\r\nimport { LookupCopyInvTargetAcct } from '../../fms.data/lookup';\r\nimport { JobNames } from '../../framework.core/JobNames';\r\n\r\ntype columnType = 'M'|'H';\r\n\r\nfunction CopyInvTargetAcctLookupFieldLookupField({\r\n initialValue = '',\r\n onSelect = () => {},\r\n placeholder = undefined,\r\n onTextChange = () => {},\r\n disabled = false,\r\n lookupId = undefined,\r\n onTabNext = undefined,\r\n onTabPrevious = undefined,\r\n maxLength = undefined,\r\n jobType,\r\n parent\r\n}: {\r\n disabled?: boolean,\r\n initialValue: string,\r\n onSelect: (x:LookupCopyInvTargetAcct) => void,\r\n placeholder: string|undefined,\r\n onTextChange: (text:string|undefined) => void,\r\n lookupId?: string|undefined,\r\n onTabNext?: (() => boolean)|undefined,\r\n onTabPrevious?: (() => boolean)|undefined,\r\n maxLength?: number|undefined,\r\n jobType: JobNames,\r\n parent: JobNames,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n\r\n async function queryCopyInvRefNo(queryString:string|null) {\r\n const apiResult = await appContext.api.getLookupItems(SQLIndex.CopyInvFromAcct, queryString ?? '', jobType, parent);\r\n return apiResult?.entities;\r\n }\r\n function onCancel() {\r\n }\r\n\r\n function filter(data:Array, filterText:string) {\r\n return data.findIndex(x =>\r\n (x.invNo && x.invNo.toLowerCase().startsWith(filterText.toLowerCase()))||\r\n (x.entity && x.entity.toLowerCase().startsWith(filterText.toLowerCase()))\r\n );\r\n }\r\n\r\n\r\n let dateLabel, noLabel, entityLabel;\r\n\r\n let type: columnType = 'M';\r\n\r\n switch (jobType) {\r\n case JobNames.Bill:\r\n dateLabel = 'Bill Date';\r\n entityLabel = 'Vendor';\r\n noLabel = \"Bill #\";\r\n break;\r\n case JobNames.Invoice:\r\n dateLabel = 'Invoice Date';\r\n entityLabel = 'Invoice To';\r\n noLabel = \"Invoice #\";\r\n break;\r\n\r\n }\r\n\r\n const columns:Array = [\r\n { Header: dateLabel, accessor: 'invDate', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 100, Cell: DateRenderer },\r\n { Header: noLabel, accessor: 'invNo', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 100, Cell: TextAlignLeftRenderer },\r\n { Header: entityLabel, accessor: 'entity', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 100, Cell: TextAlignLeftRenderer },\r\n { Header: 'Create Date', accessor: 'createDate', resizable: false, sortable: false, canBeHidden: false, visible: true, width: 100, Cell: DateTimeRenderer },\r\n ];\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nCopyInvTargetAcctLookupFieldLookupField.defaultProps = {\r\n onSelect: () => {},\r\n onTextChange: () => {},\r\n disabled: false,\r\n};\r\n\r\nCopyInvTargetAcctLookupFieldLookupField.propTypes = {\r\n initialValue: PropTypes.string,\r\n onSelect: PropTypes.func.isRequired,\r\n onTextChange: PropTypes.func.isRequired,\r\n placeholder: PropTypes.string,\r\n disabled: PropTypes.bool.isRequired,\r\n lookupId: PropTypes.string,\r\n onTabNext: PropTypes.func,\r\n onTabPrevious: PropTypes.func,\r\n maxLength: PropTypes.number,\r\n jobType: PropTypes.string,\r\n parent: PropTypes.string,\r\n};\r\n\r\n\r\nexport default React.memo(CopyInvTargetAcctLookupFieldLookupField);\r\n","import { MutableRefObject, useContext, useEffect, useState } from 'react';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport { JobNames, getTbNameByJobName } from '../../../framework.core/JobNames';\r\nimport SecondaryButton from '../../../ui/SecondaryButton';\r\nimport Label from '../../../ui/Label';\r\nimport InlineInputControlRow from '../../../ui/layout/InlineInputControlRow';\r\nimport TextBox from '../../../ui/TextBox';\r\nimport { ApiResult } from '../../../framework.core/data/ApiResult';\r\nimport { InvoHd } from '../../../fms.core/InvoHd';\r\nimport { getAcctHeadTypeByTBName } from '../../../fms.enum';\r\nimport { useTypedFastStorage } from '../../../hooks/useFastStorage';\r\nimport CopyInvTargetBLLookupField from '../../../uiControls/lookup/CopyInvTargetBLLookupField';\r\nimport { openNewPage, NavigationType } from '../../../util/navigationHelpers';\r\nimport { useHistory } from 'react-router';\r\nimport useJobMenuUrlQuery from '../../../hooks/useJobMenuUrlQuery';\r\nimport CopyInvTargetAcctLookupField from '../../../uiControls/lookup/CopyInvTargetAcctLookupField';\r\n\r\n\r\ninterface ICopyInvoice {\r\n [key: string]: any,\r\n fieldLabel: FieldLabel,\r\n baseInfoDetail: BaseInfoDetail\r\n};\r\n\r\ninterface FieldLabel {\r\n blType: string,\r\n mblName: string,\r\n hblName: string,\r\n};\r\n\r\ninterface BaseInfoDetail {\r\n refNo: string,\r\n mblNo: string,\r\n hblNo: string,\r\n targetId: number,\r\n invNo: string,\r\n jobId: number,\r\n scrJobId: number,\r\n};\r\n\r\ninterface CopyInoviceStorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\nfunction getCopyInoviceStorageKeys(): CopyInoviceStorageKeys {\r\n return {modelStorage: 'common-copyinvoice'}\r\n}\r\n\r\n\r\nfunction CopyInvoiceImpl({\r\n jobName,\r\n jobId,\r\n srcJobId,\r\n srcJobName,\r\n onPopupClose,\r\n isFromCopy\r\n}: {\r\n jobName: JobNames,\r\n jobId: number,\r\n srcJobName: JobNames,\r\n srcJobId: number,\r\n onPopupClose: () => void,\r\n isFromCopy? :boolean\r\n}) {\r\n\r\n const {modelStorage} = getCopyInoviceStorageKeys();\r\n\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const [initialized, setInitialized] = useState(false);\r\n\r\n const [inStorage, setInStorage, removeCopyInvoiceFromStorage, copyInvoiceRef] = useTypedFastStorage(modelStorage, null);\r\n\r\n useEffect(() => {\r\n\r\n initialize();\r\n return () => removeCopyInvoiceFromStorage()\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n\r\n async function readBaseInfo(){\r\n\r\n const hdTbName = getTbNameByJobName(srcJobName);\r\n const hdOpType = getAcctHeadTypeByTBName(hdTbName);\r\n const baseInfoDetail : BaseInfoDetail = {refNo: '', mblNo: '', hblNo: '', targetId: 0, invNo : '', jobId:0, scrJobId:0};\r\n const apiResult: ApiResult = await appContext.api.getBLHDInfo(hdOpType, srcJobId, '');\r\n if(apiResult && apiResult.result && apiResult.result.blHdInfo){\r\n baseInfoDetail.refNo = apiResult.result.blHdInfo.mainRefNo;\r\n baseInfoDetail.mblNo = apiResult.result.blHdInfo.mainMBLNo;\r\n baseInfoDetail.hblNo = apiResult.result.blHdInfo.mainHBLNo;\r\n baseInfoDetail.targetId = srcJobId;\r\n setInStorage({baseInfoDetail: baseInfoDetail});\r\n }\r\n return baseInfoDetail;\r\n}\r\n\r\n async function initialize(){\r\n if(!inStorage){\r\n const fieldLabel = getPopupLabel(srcJobName);\r\n const baseInfoDetail = await readBaseInfo();\r\n setInStorage({fieldLabel: fieldLabel, baseInfoDetail: baseInfoDetail})\r\n }\r\n setInitialized(true);\r\n}\r\n\r\n\r\nif (!initialized || !inStorage) {\r\n return null;\r\n }\r\n\r\n function getPopupLabel(srcJobName: string) {\r\n const fieldLabel : FieldLabel = {blType: '', mblName: '', hblName: ''} ;\r\n switch (srcJobName) {\r\n case JobNames.OIMbl:\r\n fieldLabel.blType = \"Ocean Import Master\";\r\n fieldLabel.mblName = \"Master B/L #\";\r\n break;\r\n case JobNames.OIHbl: \r\n fieldLabel.blType = \"Ocean Import House\";\r\n fieldLabel.mblName = \"Master B/L #\";\r\n fieldLabel.hblName = \"House B/L #\";\r\n break;\r\n case JobNames.OEMbl: \r\n fieldLabel.blType = \"Ocean Export Master\";\r\n fieldLabel.mblName = \"Master B/L #\";\r\n break;\r\n case JobNames.OEHbl: \r\n fieldLabel.blType = \"Ocean Export House\";\r\n fieldLabel.mblName = \"Master B/L #\";\r\n fieldLabel.hblName = \"House B/L #\";\r\n break;\r\n case JobNames.AIMbl: \r\n fieldLabel.blType = \"Air Import Master\";\r\n fieldLabel.mblName = \"MAWB #\";\r\n break;\r\n case JobNames.AIHbl: \r\n fieldLabel.blType = \"Air Import House\";\r\n fieldLabel.mblName = \"MAWB #\";\r\n fieldLabel.hblName = \"HAWB #\";\r\n break;\r\n case JobNames.AEMbl: \r\n fieldLabel.blType = \"Air Export Master\";\r\n fieldLabel.mblName = \"MAWB #\";\r\n break;\r\n case JobNames.AEHbl: \r\n fieldLabel.blType = \"Air Export House\";\r\n fieldLabel.mblName = \"MAWB #\";\r\n fieldLabel.hblName = \"HAWB #\";\r\n break;\r\n case JobNames.OtherOP: \r\n fieldLabel.blType = \"Other Shipment\";\r\n fieldLabel.mblName = \"Master B/L #\";\r\n fieldLabel.hblName = \"House B/L #\";\r\n break; \r\n }\r\n return fieldLabel;\r\n }\r\n\r\n return (\r\n \r\n );\r\n\r\n}\r\n\r\nfunction CopyInvoiceInitializedImpl({\r\n copyInvoice,\r\n copyInvoiceRef,\r\n setCopyInvoice,\r\n onPopupClose,\r\n srcJobName,\r\n jobName,\r\n srcJobId,\r\n jobId,\r\n isFromCopy\r\n}:{\r\n copyInvoice: ICopyInvoice,\r\n copyInvoiceRef: MutableRefObject,\r\n setCopyInvoice: (x: Partial) =>void,\r\n onPopupClose: () => void,\r\n srcJobName : JobNames,\r\n jobName : JobNames,\r\n srcJobId: number,\r\n jobId: number,\r\n isFromCopy?: boolean\r\n}){\r\n\r\n const hasOpenedScreenStartingWithUrl = useJobMenuUrlQuery();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const history = useHistory();\r\n\r\n function onChange(change: Partial){\r\n setCopyInvoice(change);\r\n }\r\n\r\n async function onCopy() {\r\n const job = jobName === JobNames.Invoice ? 'invoice' : 'bill';\r\n if (isFromCopy) {\r\n if (copyInvoice.baseInfoDetail.jobId === 0) {\r\n onPopupClose();\r\n return;\r\n }\r\n }\r\n else {\r\n if (copyInvoice.baseInfoDetail.targetId === 0) {\r\n onPopupClose();\r\n return;\r\n }\r\n }\r\n\r\n if (hasOpenedScreenStartingWithUrl(`/accounting/${job}/add/${srcJobName}`)) {\r\n await showGlobalOkDialog(

    New operation is already in progress

    );\r\n return;\r\n }\r\n \r\n\r\n const newLink = isFromCopy ? `/accounting/${job}/add/${srcJobName}/${srcJobId}?copyId=${copyInvoice.baseInfoDetail.jobId}`: \r\n `/accounting/${job}/add/${srcJobName}/${copyInvoice.baseInfoDetail.targetId}?copyId=${jobId}`;\r\n\r\n\r\n\r\n\r\n const locationState = history.location?.state as any;\r\n if (locationState?.afterScreenUrl) {\r\n openNewPage(history, newLink, NavigationType.newPage, null, locationState?.afterScreenUrl); // From Detail\r\n }\r\n else {\r\n const parentOp = history.location.search?.split(\"parentOp=\")[1];\r\n openNewPage(history, newLink, NavigationType.newPage, null, parentOp ? parentOp : null); // From List\r\n }\r\n\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {!isFromCopy && \r\n {\r\n const tempbaseInfo = copyInvoice.baseInfoDetail;\r\n tempbaseInfo.refNo = c.refNo;\r\n tempbaseInfo.mblNo = c.mblNo;\r\n tempbaseInfo.hblNo = c.hblNo;\r\n tempbaseInfo.targetId = c.id;\r\n onChange({ baseInfoDetail: tempbaseInfo })\r\n }}\r\n onTextChange={c => {\r\n const tempbaseInfo = copyInvoice.baseInfoDetail;\r\n tempbaseInfo.refNo = c ?? '';\r\n tempbaseInfo.targetId = 0;\r\n onChange({ baseInfoDetail: tempbaseInfo })\r\n }}\r\n placeholder={undefined}\r\n jobType={srcJobName}\r\n />\r\n }\r\n {isFromCopy && \r\n {\r\n const tempbaseInfo = copyInvoice.baseInfoDetail;\r\n tempbaseInfo.invNo = c.invNo;\r\n tempbaseInfo.refNo = c.invNo;\r\n tempbaseInfo.jobId = c.id;\r\n onChange({ baseInfoDetail: tempbaseInfo })\r\n }}\r\n onTextChange={c => {\r\n const tempbaseInfo = copyInvoice.baseInfoDetail;\r\n tempbaseInfo.invNo = c ?? '';\r\n tempbaseInfo.scrJobId = 0;\r\n tempbaseInfo.jobId = 0;\r\n onChange({ baseInfoDetail: tempbaseInfo })\r\n }}\r\n placeholder={undefined}\r\n jobType={jobName}\r\n parent={srcJobName}\r\n />\r\n }\r\n
    \r\n {!isFromCopy &&\r\n
    \r\n \r\n \r\n \r\n
    \r\n }\r\n {!isFromCopy && copyInvoice.fieldLabel.hblName && copyInvoice.fieldLabel.hblName.length > 0 &&\r\n
    \r\n \r\n \r\n \r\n
    \r\n }\r\n
    \r\n
    \r\n \r\n OK\r\n \r\n \r\n CLOSE\r\n \r\n
    \r\n
    \r\n );\r\n\r\n}\r\n\r\nconst CopyInvoice = ({\r\n onPopupClose,\r\n jobId,\r\n jobName,\r\n srcJobName,\r\n srcJobId,\r\n isFromCopy,\r\n}: {\r\n onPopupClose: () => void,\r\n jobId: number,\r\n jobName: JobNames,\r\n srcJobId: number,\r\n srcJobName: JobNames,\r\n isFromCopy?: boolean\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default CopyInvoice;","import {TableSettings} from \"../../../tableSettings\";\r\n\r\nexport const otherShipmentList:TableSettings = {\r\n tableVersion: 10066,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [ ]\r\n};\r\n\r\nexport const otherShipmentContainerDetails:TableSettings = {\r\n tableVersion: 1006,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '120px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Container #', \r\n accessor: 'containerNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 34.94,\r\n },\r\n {\r\n Header: 'Type',\r\n accessor: 'conType',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.12,\r\n },\r\n {\r\n Header: 'Seal #', \r\n accessor: 'sealNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 21.59,\r\n },\r\n {\r\n Header: 'Packages',\r\n accessor: 'pkgs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 21.77,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.55,\r\n },\r\n ]\r\n};\r\n\r\nexport const otherShipmentInvenDetails:TableSettings = {\r\n tableVersion: 1005,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '120px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: 'Length',\r\n accessor: 'length',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 18.88,\r\n },\r\n {\r\n Header: 'Width',\r\n accessor: 'width',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 18.88,\r\n },\r\n {\r\n Header: 'Height',\r\n accessor: 'height',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 18.88,\r\n },\r\n {\r\n Header: 'Pkgs',\r\n accessor: 'pcs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 16.88,\r\n },\r\n {\r\n Header: 'CBM',\r\n accessor: 'chgWeight',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20.88,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 5.55,\r\n },\r\n ]\r\n};\r\n\r\nexport const otherShipmentQuotationList:TableSettings={\r\n tableVersion: 10007,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [ ]\r\n};\r\n","import _ from 'lodash';\r\nimport { AiMbl } from '../../../../fms.core/AiMbl';\r\nimport { MblStatusViewModel, AiAirLineEvents, AirMblStatusMap } from '../../../../fms.core/MblStatusViewModel';\r\nimport { PimsCntrEvent } from '../../../../fms.core/PimsCntrEvent';\r\nimport { AeMbl } from '../../../../fms.core/AeMbl';\r\nimport { appendLine, formatAmount } from '../../../../util';\r\n\r\nexport function prepareAiMawbModelForView(model: AiMbl | AeMbl) {\r\n if (!model) {\r\n return;\r\n }\r\n\r\n if(!model.milestone) {\r\n model.milestone = new MblStatusViewModel();\r\n }\r\n\r\n if(model.milestone.eventItemList.length > 0) {\r\n _.remove(model.milestone.eventItemList);\r\n }\r\n\r\n \r\n if(model.milestone.eventItemList == null) model.milestone.eventItemList = [];\r\n\r\n if(model.milestone.eventItemList.length <= 0) { //airline status\r\n model.milestone.cntrItemList.forEach(c => { //pims\r\n AiAirLineEvents.forEach((enumEvent) => {\r\n const smitem = AirMblStatusMap.get(enumEvent);\r\n if(!smitem) return;\r\n model.milestone?.eventItemList?.push(new PimsCntrEvent({\r\n pimsCntrId: c.id,\r\n cntrNo: c.cntrNo,\r\n pickupNo: c.pickupNo,\r\n name: smitem.label,\r\n lastDate: _.get(c, smitem.pimsCntrDate??''),\r\n locName: _.get(c, smitem.pimsCntrLoc??''),\r\n seq: enumEvent, //seqNo++,\r\n isVisible: true\r\n }));\r\n });\r\n });\r\n }\r\n}\r\n\r\n\r\nexport function formatGrossWeight(model: AiMbl, country: string): string {\r\n if (country === \"U.S.\") {\r\n return appendLine(\r\n `${formatAmount(model.grossWeight)} KGS`,\r\n `${formatAmount(model.lGrossWeight)} LBS`\r\n );\r\n }\r\n else {\r\n return `${formatAmount(model.grossWeight)} KGS`;\r\n }\r\n}\r\n\r\nexport function formatChargeableWeight(model: AiMbl, country: string): string {\r\n if (country === \"U.S.\") {\r\n return appendLine(\r\n `${formatAmount(model.chgWeight)} KGS`,\r\n `${formatAmount(model.lChgWeight)} LBS`\r\n );\r\n }\r\n else {\r\n return `${formatAmount(model.chgWeight)} KGS`;\r\n }\r\n}","export function formatDialogContent(contentParam: string|React.ReactNode) {\r\n return typeof contentParam === 'string'\r\n ?

    {contentParam}

    \r\n : contentParam;\r\n}","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport IfmsButton, { IfmsButtonProps } from './IfmsButton';\r\n\r\nconst DangerButton = React.forwardRef(({children, ...other}, ref) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\nDangerButton.defaultProps = {\r\n};\r\n\r\nDangerButton.propTypes = {\r\n size: PropTypes.oneOf(['regular', 'small', 'large']),\r\n};\r\n\r\nexport default React.memo(DangerButton);\r\n\r\n","import { useLayoutEffect, useState } from 'react';\r\n\r\nexport default function useWindowSize() {\r\n const [size, setSize] = useState([0, 0]);\r\n useLayoutEffect(() => {\r\n function updateSize() {\r\n setSize([window.innerWidth, window.innerHeight]);\r\n }\r\n window.addEventListener('resize', updateSize);\r\n updateSize();\r\n return () => window.removeEventListener('resize', updateSize);\r\n }, []);\r\n return size;\r\n }\r\n ","import { MutableRefObject, useContext, useEffect, useState } from 'react';\r\nimport { useTypedFastStorage } from '../../hooks/useFastStorage';\r\nimport SecondaryButton from \"../../ui/SecondaryButton\";\r\nimport { ApplicableTableSettings } from \"../../tableSettings\";\r\nimport SmartTable from \"../../uiControls/SmartTable\";\r\nimport { JobNames } from \"../../framework.core/JobNames\";\r\nimport Date from \"../../ui/Date\";\r\nimport InlineInputControlRow from '../../ui/layout/InlineInputControlRow';\r\nimport TextBox from '../../ui/TextBox';\r\nimport Float from '../../ui/Float';\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport useGlobalOkDialog from '../../hooks/useGlobalOkDialog';\r\nimport { ApiResult, InsertResult } from '../../framework.core/data/ApiResult';\r\nimport { FloatRenderer, TextAlignLeftRenderer } from '../../uiControls/SmartTableRenderers';\r\nimport { compareIso, formatDate, formatDateTime, nowDate } from '../../dateUtils';\r\nimport { billInformationTable, profitDetailTable } from './tableSettings';\r\nimport InlineInputControlRowNoLabel from '../../ui/layout/InlineInputControlRowNoLabel';\r\nimport CheckBox from '../../ui/CheckBox';\r\nimport LeftRightSplit from '../../ui/LeftRightSplit';\r\nimport Label from '../../ui/Label';\r\nimport { ApHd } from '../../fms.core/ApHd';\r\nimport { getFmsGlobal } from '../../globals';\r\nimport { SQLInfo } from '../../framework.core/data/SQLInfo';\r\nimport { historyUpdate } from '../../fms.data/modules/FmsModFunc';\r\nimport { checkPropDirty, getSQLInfoList } from '../../fms.core/data/TrackingModule';\r\nimport { TrackableEntity } from '../../fms.core/data/ChangeTrackable';\r\nimport { updateStatusOP } from '../../fms.data/modules/FmsModAccount';\r\nimport useSetEditedId from '../../hooks/useSetEditedId';\r\nimport useDirtyCheck from '../../hooks/useDirtyCheck2';\r\nimport _ from 'lodash';\r\n\r\ninterface BillInformationViewStorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\ninterface BillInformationViewLoadedParams {\r\n billInformationView: ApHd,\r\n billInformationViewRef: MutableRefObject,\r\n setBillInformationView: (x: Partial) => void,\r\n onPopupClose?: () => void,\r\n save: () => Promise,\r\n};\r\n\r\nfunction getBillInformationViewStorageKeys(billId: number): BillInformationViewStorageKeys {\r\n return { modelStorage: `bill-information-${billId}` }\r\n}\r\n\r\nfunction BillInformationViewImpl({\r\n billId,\r\n storageKey,\r\n onPopupClose,\r\n isView,\r\n}: {\r\n billId: number,\r\n storageKey: string,\r\n onPopupClose: VoidFunction,\r\n isView: boolean,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [initialized, setInitialized] = useState(false);\r\n const { modelStorage } = getBillInformationViewStorageKeys(billId);\r\n const setSavedEntity = useSetEditedId([JobNames.Bill, JobNames.GBill]);\r\n const [inStorage, setInStorage, removeFromStorage, storageRef] = useTypedFastStorage(modelStorage, null);\r\n const {setCleanState} = useDirtyCheck(\r\n storageKey,\r\n ['updated', 'updatedBy']);\r\n \r\n useEffect(() => {\r\n initialize();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function doClose() {\r\n cleanup();\r\n onPopupClose();\r\n }\r\n\r\n function cleanup() {\r\n removeFromStorage();\r\n }\r\n\r\n async function loadExisting(): Promise {\r\n const apiResult: ApiResult = await appContext.api.getBillInformationData(billId);\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(apiResult?.message || 'Cannot load data');\r\n if (doClose) {\r\n doClose();\r\n }\r\n }\r\n\r\n return apiResult.result;\r\n }\r\n\r\n async function initialize() {\r\n const data = await loadExisting();\r\n //const data = new ApHd();\r\n if (data) {\r\n const loadedModelObj = new ApHd(_.cloneDeep(data));\r\n setCleanState(loadedModelObj);\r\n setInStorage(loadedModelObj);\r\n }\r\n\r\n if (storageRef.current !== null) {\r\n storageRef.current.trackable = true;\r\n }\r\n\r\n setInitialized(true);\r\n }\r\n\r\n if (!initialized || !inStorage) {\r\n return null;\r\n }\r\n\r\n async function checkDataAsync() {\r\n if (!storageRef.current) return false;\r\n\r\n if (storageRef.current.approved) {\r\n if(storageRef.current.appPaidDate === ''){\r\n await showGlobalOkDialog(

    Invalid Scheduled date

    );\r\n return false;\r\n }\r\n if (compareIso(formatDate(storageRef.current.billDate), formatDate(storageRef.current.appPaidDate)) === 1) {\r\n setInStorage({ appPaidDate: '' });\r\n await showGlobalOkDialog(

    Scheduled date cannot be earlier than bill date

    );\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n async function save() {\r\n if (!inStorage || !storageRef.current) {\r\n throw new Error('Invalid operation');\r\n }\r\n\r\n if (!storageRef.current.isDirty) {\r\n //await showGlobalOkDialog(

    Nothing to save!!!

    );\r\n onPopupClose();\r\n return;\r\n }\r\n\r\n const valid = await checkDataAsync();\r\n if (!valid) {\r\n return;\r\n }\r\n\r\n const si: SQLInfo[] = [];\r\n\r\n let histMsgArray: string[] = [];\r\n if (checkPropDirty(storageRef.current, 'hold'))\r\n histMsgArray.push(storageRef.current.hold ? 'Hold' : 'Unhold');\r\n\r\n if (checkPropDirty(storageRef.current, 'approved'))\r\n histMsgArray.push(storageRef.current.approved ? 'Approved' : 'Cancel Approved');\r\n\r\n if (histMsgArray.length === 0) // 위의 2가지 이외의 값이 변경되었음을 의미\r\n histMsgArray.push('Bill Information EDIT');\r\n\r\n let histSqlInfo = historyUpdate(\"T_APHD\", billId, appContext.user?.id ?? '', histMsgArray.join(', '));\r\n if (histSqlInfo) {\r\n si.push(histSqlInfo);\r\n }\r\n\r\n let updateStatueOp = updateStatusOP(JobNames.Bill, String(billId), inStorage.billReceived);\r\n if (updateStatueOp) {\r\n si.push(updateStatueOp);\r\n }\r\n\r\n const blStatusInfoList = getSQLInfoList(inStorage as TrackableEntity);\r\n blStatusInfoList.push(...si);\r\n\r\n const apiResult: ApiResult = await appContext.api.saveMblStatusViewModel(blStatusInfoList);\r\n\r\n if (apiResult && apiResult.success) {\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n setSavedEntity(storageRef.current.id.toString(), false);\r\n } else {\r\n await showGlobalOkDialog(
    \r\n

    Cannot save

    \r\n

    {apiResult.message}

    \r\n
    );\r\n }\r\n\r\n onPopupClose();\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction BillInformationViewInitializedImpl({\r\n billInformationView,\r\n billInformationViewRef,\r\n setBillInformationView,\r\n onPopupClose,\r\n save,\r\n}: BillInformationViewLoadedParams) {\r\n const appContext = useContext(ApplicationContext);\r\n const fmsGlobal = getFmsGlobal();\r\n\r\n const [approveEnabled, setApproveEnabled] = useState(!billInformationView.hold && !fmsGlobal.BlockAPApprove);\r\n const [holdEnabled, setHoldEnabled] = useState(!billInformationView.approved && !fmsGlobal.BlockAPHold);\r\n\r\n const userID = appContext.user ? appContext.user.id ?? '' : '';\r\n\r\n const totalAmount = billInformationView.billDetail.map(x => x.amount).reduce((acc: number, x) => acc + x, 0);\r\n const totalMargin = billInformationView.apInfoDetailList.map(x => x.margin).reduce((acc: number, x) => acc + x, 0);\r\n\r\n function TotalAmountLabelRenderer() {\r\n return
    \r\n Total\r\n
    ;\r\n }\r\n\r\n function TotalMarginLabelRenderer() {\r\n return
    \r\n Total Margin\r\n
    ;\r\n }\r\n\r\n function TotalAmountRenderer() {\r\n return
    ;\r\n }\r\n\r\n function TotalMarginRenderer() {\r\n if (totalMargin < 0)\r\n return
    ;\r\n else\r\n return
    ;\r\n }\r\n\r\n const mainTableOptions: ApplicableTableSettings = {\r\n ...billInformationTable,\r\n selectable: true,\r\n // customTableId: 'billInformationTable',\r\n tableName: 'billInformationTable',\r\n data: billInformationView.billDetail,\r\n rowRenderers: [\r\n { accessor: 'billingCode', Cell: TextAlignLeftRenderer },\r\n { accessor: 'amount', Cell: FloatRenderer },\r\n ],\r\n footerRow: [\r\n {\r\n colspan: 1,\r\n renderer: TotalAmountLabelRenderer\r\n },\r\n {\r\n colspan: 1,\r\n renderer: TotalAmountRenderer\r\n },\r\n ],\r\n };\r\n\r\n const billingDetailTableOptions: ApplicableTableSettings = {\r\n ...profitDetailTable,\r\n selectable: true,\r\n tableName: 'profitDetailTable',\r\n data: billInformationView.apInfoDetailList,\r\n rowRenderers: [\r\n { accessor: 'billingCode', Cell: TextAlignLeftRenderer },\r\n { accessor: 'revenue', Cell: FloatRenderer },\r\n { accessor: 'cost', Cell: FloatRenderer },\r\n { accessor: 'crDbAmount', Cell: FloatRenderer },\r\n { accessor: 'margin', Cell: FloatRenderer },\r\n ],\r\n footerRow: [\r\n {\r\n colspan: 4,\r\n renderer: TotalMarginLabelRenderer\r\n },\r\n {\r\n colspan: 1,\r\n renderer: TotalMarginRenderer\r\n },\r\n ],\r\n getCustomCellProps: (currentProps: any, cell: any, rowIndex: any) => {\r\n if (\r\n cell.column.id === 'margin') {\r\n if (cell.row.original.margin < 0) {\r\n currentProps.style.color = 'red';\r\n currentProps.style.fontWeight = 'bold';\r\n }\r\n }\r\n return currentProps;\r\n },\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n {\r\n setBillInformationView({ billReceived })\r\n }}\r\n />\r\n
    \r\n }\r\n right={\r\n <>Bill Received\r\n }\r\n />\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n {\r\n if (hold) {\r\n if (fmsGlobal.BlockAPApprove === false)\r\n setApproveEnabled(false);\r\n\r\n setBillInformationView({ hold: true, holdUser: userID })\r\n }\r\n else {\r\n if (fmsGlobal.BlockAPApprove === false)\r\n setApproveEnabled(true);\r\n\r\n setBillInformationView({ hold: false, holdReason: '', holdUser: '' })\r\n }\r\n }}\r\n disabled={!holdEnabled}\r\n />\r\n
    \r\n }\r\n right={\r\n <>Hold\r\n }\r\n />\r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n { setBillInformationView({ holdReason: e.target.value }) }}\r\n maxLength={30}\r\n />\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n {\r\n if (remarksYN)\r\n setBillInformationView({ remarksYN, remarkUser: userID })\r\n else\r\n setBillInformationView({ remarksYN, remarkUser: '', remarks: '' })\r\n }}\r\n />\r\n
    \r\n }\r\n right={\r\n <>General\r\n }\r\n />\r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n { setBillInformationView({ remarks: e.target.value }) }}\r\n maxLength={30}\r\n />\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n {\r\n if (approved) {\r\n const appPaidDate = compareIso(formatDate(billInformationView?.billDate), nowDate()) > 0 ? formatDate(billInformationView?.billDate) : nowDate();\r\n if (fmsGlobal.BlockAPHold === false) {\r\n setHoldEnabled(false);\r\n }\r\n setBillInformationView({ approved, approvedUser: userID, appPaidDate });\r\n }\r\n else {\r\n if (fmsGlobal.BlockAPHold === false) {\r\n setHoldEnabled(true);\r\n }\r\n setBillInformationView({ approved, approvedUser: '', appPaidDate: null });\r\n }\r\n }}\r\n disabled={!approveEnabled}\r\n />\r\n
    \r\n }\r\n right={\r\n <>Approved\r\n }\r\n />\r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n {\r\n setBillInformationView({ appPaidDate})\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {/* */}\r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n }\r\n right={\r\n \r\n }\r\n />\r\n \r\n
    \r\n \r\n\r\n
    \r\n \r\n Apply\r\n \r\n \r\n Cancel\r\n \r\n
    \r\n \r\n );\r\n}\r\n\r\nconst BillInformation = ({\r\n billId,\r\n storageKey,\r\n onPopupClose,\r\n isView,\r\n}: {\r\n billId: number,\r\n storageKey: string,\r\n onPopupClose: VoidFunction,\r\n isView: boolean,\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default BillInformation;","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\n\r\nexport class GenContainer extends TrackableEntity {\r\n id: number = 0;\r\n genMainId: number = 0;\r\n containerNo: string = '';\r\n conType: string = '';\r\n sealNo: string = '';\r\n pkgs: number = 0;\r\n\r\n bookingDate: string | null = null;\r\n bookingLoc: string = '';\r\n\r\n ord: string | null = null;\r\n ordLoc: string = '';\r\n \r\n inDate: string | null = null;\r\n inDateLoc: string = '';\r\n \r\n loadDate: string | null = null;\r\n loadDateLoc: string = '';\r\n\r\n atd: string | null = null;\r\n atdLoc: string = '';\r\n\r\n ata: string | null = null;\r\n ataLoc: string = '';\r\n\r\n unloadDate: string | null = null;\r\n unloadDateLoc: string = '';\r\n\r\n carrierRls: string | null = null;\r\n carrierRlsLoc: string = '';\r\n\r\n customRls: string | null = null;\r\n customRlsLoc: string = '';\r\n \r\n rAtd: string | null = null;\r\n rAtdLoc: string = '';\r\n\r\n rAta: string | null = null;\r\n rAtaLoc: string = '';\r\n\r\n cfsDate: string | null = null;\r\n cfsDateLoc: string = '';\r\n\r\n puDate: string | null = null;\r\n puDateLoc: string = '';\r\n\r\n outDate: string | null = null;\r\n outDateLoc: string = '';\r\n\r\n dcDate: string | null = null;\r\n dcDateLoc: string = '';\r\n\r\n emptyReturn: string | null = null;\r\n emptyReturnLoc: string = '';\r\n\r\n // UI\r\n select: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('id');\r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n return GenContainer.dicFieldMappings;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_Id', table: 'T_GENCONTAINER' }),\r\n 'containerNo': new DBMappingInfo({ field: 'F_ContainerNo', table: 'T_GENCONTAINER' }),\r\n 'conType': new DBMappingInfo({ field: 'F_ConType', table: 'T_GENCONTAINER' }),\r\n 'sealNo': new DBMappingInfo({ field: 'F_SealNo', table: 'T_GENCONTAINER' }),\r\n 'pkgs': new DBMappingInfo({ field: 'F_Pkgs', table: 'T_GENCONTAINER' }),\r\n 'genMainId': new DBMappingInfo({ field: 'F_GenMainId', table: 'T_GENCONTAINER' }),\r\n 'bookingDate': new DBMappingInfo({ field: 'f_bookingdate', table: 'T_GENCONTAINER' }),\r\n 'bookingLoc': new DBMappingInfo({ field: 'f_booking_loc', table: 'T_GENCONTAINER' }),\r\n 'ord': new DBMappingInfo({ field: 'f_ord', table: 'T_GENCONTAINER' }),\r\n 'ordLoc': new DBMappingInfo({ field: 'f_ord_loc', table: 'T_GENCONTAINER' }),\r\n 'inDate': new DBMappingInfo({ field: 'F_InDate', table: 'T_GENCONTAINER' }),\r\n 'inDateLoc': new DBMappingInfo({ field: 'f_indate_loc', table: 'T_GENCONTAINER' }),\r\n 'loadDate': new DBMappingInfo({ field: 'f_loaddate', table: 'T_GENCONTAINER' }),\r\n 'loadDateLoc': new DBMappingInfo({ field: 'f_loaddate_loc', table: 'T_GENCONTAINER' }),\r\n 'atd': new DBMappingInfo({ field: 'f_atd', table: 'T_GENCONTAINER' }),\r\n 'atdLoc': new DBMappingInfo({ field: 'f_atd_loc', table: 'T_GENCONTAINER' }),\r\n 'ata': new DBMappingInfo({ field: 'f_ata', table: 'T_GENCONTAINER' }),\r\n 'ataLoc': new DBMappingInfo({ field: 'f_ata_loc', table: 'T_GENCONTAINER' }),\r\n 'unloadDate': new DBMappingInfo({ field: 'f_unloaddate', table: 'T_GENCONTAINER' }),\r\n 'unloadDateLoc': new DBMappingInfo({ field: 'f_unloaddate_loc', table: 'T_GENCONTAINER' }),\r\n 'carrierRls': new DBMappingInfo({ field: 'f_carrierrls', table: 'T_GENCONTAINER' }),\r\n 'carrierRlsLoc': new DBMappingInfo({ field: 'f_carrierrls_loc', table: 'T_GENCONTAINER' }),\r\n 'customRls': new DBMappingInfo({ field: 'f_customrls', table: 'T_GENCONTAINER' }),\r\n 'customRlsLoc': new DBMappingInfo({ field: 'f_customrls_loc', table: 'T_GENCONTAINER' }),\r\n 'cfsDate': new DBMappingInfo({ field: 'f_cfsdate', table: 'T_GENCONTAINER' }),\r\n 'cfsDateLoc': new DBMappingInfo({ field: 'f_cfsdate_loc', table: 'T_GENCONTAINER' }),\r\n 'rAtd': new DBMappingInfo({ field: 'f_ratd', table: 'T_GENCONTAINER' }),\r\n 'rAtdLoc': new DBMappingInfo({ field: 'f_ratd_loc', table: 'T_GENCONTAINER' }),\r\n 'rAta': new DBMappingInfo({ field: 'f_rata', table: 'T_GENCONTAINER' }),\r\n 'rAtaLoc': new DBMappingInfo({ field: 'f_rata_loc', table: 'T_GENCONTAINER' }),\r\n 'puDate': new DBMappingInfo({ field: 'f_pudate', table: 'T_GENCONTAINER' }),\r\n 'puDateLoc': new DBMappingInfo({ field: 'f_pudate_loc', table: 'T_GENCONTAINER' }),\r\n 'outDateLoc': new DBMappingInfo({ field: 'f_outdate_loc', table: 'T_GENCONTAINER' }),\r\n 'outDate': new DBMappingInfo({ field: 'F_OutDate', table: 'T_GENCONTAINER' }),\r\n 'dcDate': new DBMappingInfo({ field: 'f_dcdate', table: 'T_GENCONTAINER' }),\r\n 'dcDateLoc': new DBMappingInfo({ field: 'f_dcdate_loc', table: 'T_GENCONTAINER' }),\r\n 'emptyReturn': new DBMappingInfo({ field: 'F_EmptyReturn', table: 'T_GENCONTAINER' }),\r\n 'emptyReturnLoc': new DBMappingInfo({ field: 'f_emptyreturn_loc', table: 'T_GENCONTAINER' }),\r\n };\r\n}\r\n","import {TableSettings} from '../../../tableSettings';\r\n\r\nexport const airImportMawbList:TableSettings = {\r\n tableVersion: 1017,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: []\r\n};\r\n\r\nexport const aiQuotationList:TableSettings = {\r\n tableVersion: 1002,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '260px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 3.55, },\r\n { accessor:'billingCode', Header: 'Billing Code', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 8.43,},\r\n { accessor:'itemDescription', Header: 'Item Description', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 8.43,},\r\n { accessor:'cur', Header: 'CUR', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 5.3,},\r\n { accessor:'Rate', Header: 'Rate', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 11.57,},\r\n { accessor:'qty', Header: 'Qty', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 16.49,},\r\n { accessor:'amount', Header: 'Amount', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 16.49,},\r\n { accessor:'headerAmount', Header: 'USD Amount', visible: true, resizable: true, sortable: true, filterable: true, filterType: 'text', defaultColumnFocus: true, initialWidthPercentage: 29.74,},\r\n ]\r\n};\r\n\r\nexport const airImportHawbList:TableSettings = {\r\n tableVersion: 10049,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: []\r\n};\r\n\r\nexport const hawbAiHblPoBodyLineItems:TableSettings = {\r\n tableVersion: 1012,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n height: '300px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '#',\r\n accessor: 'indicator',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 2.59,\r\n },\r\n {\r\n Header: 'PO #',\r\n accessor: 'poNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9.48,\r\n },\r\n {\r\n Header: 'SKU',\r\n accessor: 'skuNo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 12.93,\r\n },\r\n {\r\n Header: 'HTS Code',\r\n accessor: 'htsCode',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 8.62,\r\n },\r\n {\r\n Header: 'C/O',\r\n accessor: 'coo',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.03,\r\n },\r\n {\r\n Header: 'Description',\r\n accessor: 'description',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 24.14,\r\n },\r\n {\r\n Header: 'Qty',\r\n accessor: 'shipQty',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.9,\r\n },\r\n {\r\n Header: 'Unit',\r\n accessor: 'shipUnit',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.9,\r\n },\r\n {\r\n Header: 'Unit Price',\r\n accessor: 'uPrice',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.9,\r\n },\r\n {\r\n Header: 'KGS(G)',\r\n accessor: 'kgs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.9,\r\n },\r\n {\r\n Header: 'KGS(C)',\r\n accessor: 'cKgs',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 6.9,\r\n },\r\n {\r\n Header: '',\r\n accessor: 'scroll',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 1.72,\r\n },\r\n ]\r\n};\r\n\r\nexport const atmeTable:TableSettings = {\r\n tableVersion: 1001,\r\n overflowX: 'hidden',\r\n overflowY: 'auto',\r\n \r\n height: '200px',\r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n columns: [\r\n {\r\n Header: '',\r\n accessor: 'selected',\r\n resizable: false,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 4,\r\n },\r\n {\r\n Header: 'HBL or HAWB',\r\n accessor: 'hbl',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20,\r\n },\r\n {\r\n Header: 'Customer',\r\n accessor: 'customer',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20,\r\n },\r\n {\r\n Header: 'Fax',\r\n accessor: 'customerFax',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9,\r\n },\r\n {\r\n Header: 'Email',\r\n accessor: 'customerEmail',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9,\r\n },\r\n {\r\n Header: 'Broker',\r\n accessor: 'broker',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 20,\r\n },\r\n {\r\n Header: 'Fax',\r\n accessor: 'brokerFax',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9,\r\n },\r\n {\r\n Header: 'Email',\r\n accessor: 'brokerEmail',\r\n resizable: true,\r\n sortable: false,\r\n visible: true,\r\n initialWidthPercentage: 9,\r\n },\r\n ]\r\n};","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\n\r\nexport class AemExtra2 extends TrackableEntity {\r\n pcs: number = 0;\r\n gWeight: number = 0;\r\n strGWeight: string = '';\r\n kgLb: string = '';\r\n r: string = '';\r\n item: string = '';\r\n cWeight: number = 0;\r\n strCWeight: string = '';\r\n rate: number = 0;\r\n strRate: string = '';\r\n tbId: number = 0;\r\n total: number = 0;\r\n strTotal: string = '';\r\n id: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('strGWeight', 'strCWeight', 'strRate', 'strTotal', 'id');\r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n return AemExtra2.dicFieldMapping;\r\n }\r\n\r\n static dicFieldMapping:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_ID', table: 't_aotherinfo', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 10 }),\r\n 'pcs': new DBMappingInfo({ field: 'F_N2', table: 't_aotherinfo', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 10 }),\r\n 'gWeight': new DBMappingInfo({ field: 'F_F1', table: 't_aotherinfo', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 10 }),\r\n 'kgLb': new DBMappingInfo({ field: 'F_C1', table: 't_aotherinfo', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 10 }),\r\n 'r': new DBMappingInfo({ field: 'F_C2', table: 't_aotherinfo', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 10 }),\r\n 'item': new DBMappingInfo({ field: 'F_C3', table: 't_aotherinfo', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 10 }),\r\n 'cWeight': new DBMappingInfo({ field: 'F_F2', table: 't_aotherinfo', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 10 }),\r\n 'rate': new DBMappingInfo({ field: 'F_F3', table: 't_aotherinfo', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 10 }),\r\n 'total': new DBMappingInfo({ field: 'F_F4', table: 't_aotherinfo', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 10 }),\r\n\r\n };\r\n}\r\n","export default __webpack_public_path__ + \"static/media/preview_print.abec6b82.svg\";","import { User } from '../ifmsTypes';\r\n\r\nimport { now, isIsoBefore, getDateFromEpoch } from '../dateUtils';\r\nimport { parseJwt } from '../util';\r\n\r\nconst UserStorageKey = 'ifms.user';\r\n//const UserLicProdStorageKey = 'ifms.user.licproduct';\r\nconst LastEmailStorageKey = 'ifms.lastemail';\r\nconst UserPrintPreview = 'ifms.user.printpreview';\r\n\r\nclass AuthService {\r\n // constructor() {\r\n // this.getUser = this.getUser.bind(this);\r\n // this.setUser = this.setUser.bind(this);\r\n // this.rememberLastLoginEmail = this.rememberLastLoginEmail.bind(this);\r\n // this.isAuthenticated = this.isAuthenticated.bind(this);\r\n // }\r\n setUserPrintPreview = (data: string) => {\r\n localStorage.setItem(UserPrintPreview, JSON.stringify(data));\r\n }\r\n getUserPrintPreview = () => {\r\n const printPreviewFromStorage = localStorage.getItem(UserPrintPreview);\r\n if (!printPreviewFromStorage) {\r\n return null;\r\n }\r\n\r\n try {\r\n return JSON.parse(printPreviewFromStorage);\r\n } catch (err) {\r\n window.console.error(err);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n getUser = () => {\r\n const userFromStorage = localStorage.getItem(UserStorageKey);\r\n if (!userFromStorage) {\r\n return null;\r\n }\r\n\r\n try {\r\n return JSON.parse(userFromStorage);\r\n } catch (err) {\r\n window.console.error(err);\r\n }\r\n\r\n return null;\r\n }\r\n rememberLastLoginEmail = (email:string) => {\r\n localStorage.setItem(LastEmailStorageKey, email);\r\n }\r\n isDifferentUserLogin = (loginEmail:string) => {\r\n return localStorage.getItem(LastEmailStorageKey) !== loginEmail;\r\n }\r\n setUser = (user:User) => {\r\n localStorage.setItem(UserStorageKey, JSON.stringify(user));\r\n }\r\n removeUser = () => {\r\n localStorage.removeItem(UserStorageKey);\r\n }\r\n isAuthenticated = () => {\r\n const currentUser = this.getUser();\r\n\r\n if (!currentUser) {\r\n return false;\r\n }\r\n\r\n return isIsoBefore(now(), currentUser.expiresAt);\r\n }\r\n getUserLoggedAtTimestamp = ()=> {\r\n const user = this.getUser();\r\n if (!user) {\r\n return null;\r\n }\r\n\r\n const parsedJwt = parseJwt(user.accessToken);\r\n\r\n return getDateFromEpoch(parsedJwt.iat);\r\n }\r\n // setUserLicProduct = (licProduct:LicProduct) => {\r\n // localStorage.setItem(UserLicProdStorageKey, JSON.stringify(licProduct));\r\n // }\r\n // getUserLicProduct = () => {\r\n // const userLicFromStorage = localStorage.getItem(UserLicProdStorageKey);\r\n // if (!userLicFromStorage) {\r\n // return null;\r\n // }\r\n // try {\r\n // return JSON.parse(userLicFromStorage);\r\n // } catch (err) {\r\n // window.console.error(err);\r\n // }\r\n // return null;\r\n // }\r\n\r\n \r\n \r\n \r\n}\r\n\r\nexport default AuthService;\r\n","import React from 'react';\r\n\r\nexport interface JobSwitchingMenuState {\r\n [x:string]:any\r\n}\r\n\r\nexport interface IJobSwitchingMenuContext {\r\n context: JobSwitchingMenuState,\r\n setInContext: (key: string, value: any) => void,\r\n resetForCurrentJob: VoidFunction,\r\n isHome: boolean,\r\n hasSideMenu: boolean,\r\n};\r\n\r\nconst defaultState:IJobSwitchingMenuContext = {\r\n context: {},\r\n setInContext: () => {},\r\n resetForCurrentJob: () => {},\r\n isHome: false,\r\n hasSideMenu: false,\r\n};\r\n\r\n/**\r\n * Job Menu context which value is reset to defaults every time job looses focus, unlike fast storage which preserves state\r\n */\r\nconst JobSwitchingMenuContext = React.createContext(defaultState);\r\n\r\nexport default JobSwitchingMenuContext;\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport IfmsButton, { IfmsButtonProps } from './IfmsButton';\r\n\r\nconst PrimaryInverseButton = React.forwardRef(({children, ...other}, ref) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\nPrimaryInverseButton.defaultProps = {\r\n};\r\n\r\nPrimaryInverseButton.propTypes = {\r\n size: PropTypes.oneOf(['regular', 'small', 'large']),\r\n};\r\n\r\nexport default React.memo(PrimaryInverseButton);\r\n\r\n","import { useEffect, useRef } from 'react';\r\n\r\nconst ClickHandlerNodeDepthSearch = 5;\r\n\r\nfunction findClickedCell(e:MouseEvent, tableId:string) {\r\n if (!e || !e.target) {\r\n return null;\r\n }\r\n\r\n const cellIdPrefix = `${tableId}-cell-`;\r\n\r\n let node = e.target as Element;\r\n for (let i = 0; i < ClickHandlerNodeDepthSearch; ++i) {\r\n if (!node) {\r\n break;\r\n }\r\n\r\n if (node.id && node.id.startsWith(cellIdPrefix)) {\r\n return node;\r\n }\r\n\r\n node = node.parentNode as Element;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction parseCellLocation(cellId:string) {\r\n const parts = cellId.split('-');\r\n\r\n let column = -1;\r\n let row = -1;\r\n\r\n if (parts.length < 2) {\r\n // Should never happen\r\n return { column, row };\r\n }\r\n column = parseInt(parts[parts.length - 1]);\r\n row = parseInt(parts[parts.length - 2]);\r\n\r\n return { column, row };\r\n}\r\n\r\n\r\nexport default function useTableRowSelection(rootNodeId:string, tableId:string, onRowDoubleClick:any, onRowClick:any) {\r\n const observer = useRef(null);\r\n const selectedRow = useRef(-1);\r\n\r\n useEffect(() => {\r\n initialize();\r\n\r\n return uninitialize;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n function initialize() {\r\n initializeObserver();\r\n\r\n document.addEventListener('dblclick', onDoubleClick);\r\n document.addEventListener('click', onClick);\r\n }\r\n\r\n function uninitialize() {\r\n document.removeEventListener('dblclick', onDoubleClick);\r\n document.removeEventListener('click', onClick);\r\n uninitializeObserver();\r\n }\r\n\r\n function initializeObserver() {\r\n if (observer && observer.current) {\r\n return;\r\n }\r\n\r\n const targetNode = document.getElementById(rootNodeId);\r\n if (!targetNode) {\r\n return;\r\n }\r\n\r\n const observerConfig = {\r\n attributes: true,\r\n childList: true,\r\n subtree: true,\r\n };\r\n\r\n observer.current = new MutationObserver(observe);\r\n observer.current.observe(targetNode, observerConfig);\r\n }\r\n\r\n function uninitializeObserver() {\r\n if (observer && observer.current) {\r\n observer.current.disconnect();\r\n }\r\n }\r\n\r\n function observe() {\r\n doSelectTableRow(selectedRow.current);\r\n }\r\n\r\n function onDoubleClick(e:MouseEvent) {\r\n const clickedCell = findClickedCell(e, tableId);\r\n if (clickedCell) {\r\n const {row} = parseCellLocation(clickedCell.id);\r\n\r\n selectTableRow(row);\r\n\r\n if (onRowDoubleClick) {\r\n onRowDoubleClick(row);\r\n }\r\n }\r\n }\r\n\r\n function onClick(e:MouseEvent) {\r\n const clickedCell = findClickedCell(e, tableId);\r\n if (clickedCell) {\r\n const {row} = parseCellLocation(clickedCell.id);\r\n\r\n selectTableRow(row);\r\n\r\n if (onRowClick) {\r\n onRowClick(row);\r\n }\r\n }\r\n }\r\n\r\n function doSelectTableRow(index:number) {\r\n if (index < 0) {\r\n return false;\r\n }\r\n\r\n const table = document.getElementById(tableId);\r\n if (!table) {\r\n return;\r\n }\r\n\r\n const rowId = `${tableId}-row-${index}`;\r\n const row = document.getElementById(rowId);\r\n if (!row) {\r\n // Invalid index\r\n return false;\r\n }\r\n\r\n const currentRowSelections = table.querySelectorAll('.data-row-selected');\r\n if (currentRowSelections && currentRowSelections.length > 0) {\r\n if (currentRowSelections[0].id === rowId) {\r\n // Required row already selected\r\n return false;\r\n } else {\r\n currentRowSelections[0].classList.remove('data-row-selected');\r\n currentRowSelections[0].classList.add('data-row-selectable');\r\n }\r\n }\r\n\r\n if (row) {\r\n row.classList.remove('data-row-selectable');\r\n row.classList.add('data-row-selected');\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function selectTableRow(row:number) {\r\n selectedRow.current = row;\r\n doSelectTableRow(row);\r\n }\r\n\r\n function getSelectedRow() {\r\n return selectedRow.current;\r\n }\r\n\r\n return {\r\n selectTableRow,\r\n getSelectedRow,\r\n };\r\n}\r\n","export default __webpack_public_path__ + \"static/media/circle-exit-white.0e4c2e7c.svg\";","export const DefaultContainerMilestoneStatus = [\r\n { editable: true, name: 'Booking', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Container Dispatched', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'In Gate', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Load on Vessel', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Vessel Departure', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n // { editable: false, name: 'Carrier Release', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n // { editable: false, name: 'Customs Release', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Vessel Arrival', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Unload from Vessel', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n // { editable: false, name: 'Devanning Inst. to CFS', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n // { editable: true, name: 'Rail Departure', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n // { editable: true, name: 'Rail Arrival', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Available for Delivery', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n // { editable: true, name: 'Out Gate', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Deliver to Customer', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n // { editable: false, name: 'Return Empty Container', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n];","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\nimport _ from 'lodash';\r\n\r\nexport class WItem extends TrackableEntity {\r\n centerNo: string = '';\r\n itemNo: string = '';\r\n itemDescription: string = '';\r\n pcsPerBox: number = 0;\r\n wtPerBox: number = 0;\r\n length: number = 0;\r\n width: number = 0;\r\n height: number = 0;\r\n cftPerBox: number = 0;\r\n dLocation: string = '';\r\n dLocationId: number = 0;\r\n upcCode: string = '';\r\n boxUnit: string = '';\r\n id: number = 0;\r\n pimsLinkId: number = 0;\r\n u2Date: string | null = null;\r\n u2ID: string = '';\r\n u1Date: string | null = null;\r\n u1ID: string = '';\r\n custName: string = '';\r\n bill0: string = '';\r\n bill1: number = 0;\r\n bill2: number = 0;\r\n bill3: number = 0;\r\n wrCount: number = 0;\r\n \r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('id', 'wrCount');\r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n const dicFieldMap:IDictionary = {};\r\n _.keys(WItem.dicFieldMappings).forEach(m=>{\r\n dicFieldMap[m] = WItem.dicFieldMappings[m];\r\n });\r\n\r\n return dicFieldMap;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_ID', table: 'T_WITEM' }),\r\n 'centerNo': new DBMappingInfo({ field: 'F_CENTER_NO', table: 'T_WITEM' }),\r\n 'itemNo': new DBMappingInfo({ field: 'F_ITEMNO', table: 'T_WITEM' }),\r\n 'itemDescription': new DBMappingInfo({ field: 'F_ITEMDESCRIPTION', table: 'T_WITEM' }),\r\n 'pcsPerBox': new DBMappingInfo({ field: 'F_PCSPERBOX', table: 'T_WITEM' }),\r\n 'wtPerBox': new DBMappingInfo({ field: 'F_WTPERBOX', table: 'T_WITEM' }),\r\n 'length': new DBMappingInfo({ field: 'F_LENGTH', table: 'T_WITEM' }),\r\n 'width': new DBMappingInfo({ field: 'F_WIDTH', table: 'T_WITEM' }),\r\n 'height': new DBMappingInfo({ field: 'F_HEIGHT', table: 'T_WITEM' }),\r\n 'cftPerBox': new DBMappingInfo({ field: 'F_CFTPERBOX', table: 'T_WITEM' }),\r\n 'dLocation': new DBMappingInfo({ field: 'F_DLOCATION', table: 'T_WITEM' }),\r\n 'dLocationId': new DBMappingInfo({ field: 'F_DLOCATIONID', table: 'T_WITEM' }),\r\n 'upcCode': new DBMappingInfo({ field: 'F_UPCCODE', table: 'T_WITEM' }),\r\n 'boxUnit': new DBMappingInfo({ field: 'F_BOXUNIT', table: 'T_WITEM' }),\r\n 'u1ID': new DBMappingInfo({ field: 'U1ID', table: 'T_WITEM' }),\r\n 'u1Date': new DBMappingInfo({ field: 'U1Date', table: 'T_WITEM' }),\r\n 'u2ID': new DBMappingInfo({ field: 'U2ID', table: 'T_WITEM' }),\r\n 'u2Date': new DBMappingInfo({ field: 'U2Date', table: 'T_WITEM' }),\r\n 'bill0': new DBMappingInfo({ field: 'F_C1', table: 'T_AOTHERINFO', tbName: 'T_WITEM', tbId: '@TBID', type: 0 }),\r\n 'bill1': new DBMappingInfo({ field: 'F_F1', table: 'T_AOTHERINFO', tbName: 'T_WITEM', tbId: '@TBID', type: 0 }),\r\n 'bill2': new DBMappingInfo({ field: 'F_F2', table: 'T_AOTHERINFO', tbName: 'T_WITEM', tbId: '@TBID', type: 0 }),\r\n 'bill3': new DBMappingInfo({ field: 'F_F3', table: 'T_AOTHERINFO', tbName: 'T_WITEM', tbId: '@TBID', type: 0 }),\r\n\r\n };\r\n}\r\n","import _ from 'lodash';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\nimport {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\n\r\nexport class RateTable extends TrackableEntity {\r\n id: number = 0;\r\n effectETD: string | null = null;\r\n expireETD: string | null = null;\r\n mode: string = '';\r\n origin: string = '';\r\n destination: string = '';\r\n doorBy: string = '';\r\n carrier: string = '';\r\n remark: string = '';\r\n size: string = '';\r\n commodity: string = '';\r\n rate1: number = 0;\r\n rate2: number = 0;\r\n transit: number = 0;\r\n tbName: string = '';\r\n tbId: number = 0;\r\n tbType: number = 0;\r\n\r\n u1Id: string = '';\r\n u1Date: string | null = null;\r\n u2Id: string = '';\r\n u2Date: string | null = null;\r\n\r\n // for only font-end\r\n edit: boolean = false;\r\n view: boolean = false;\r\n sName: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('sName','edit', 'view');\r\n this.getdateProps.push('u1Date', 'u2Date'); \r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n const dicFieldMap:IDictionary = {};\r\n _.keys(RateTable.dicFieldMappings).forEach(m=>{\r\n dicFieldMap[m] = RateTable.dicFieldMappings[m];\r\n });\r\n\r\n return dicFieldMap;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_ID', table: 'T_AOTHERINFO' }),\r\n 'effectETD': new DBMappingInfo({ field: 'F_D1', table: 'T_AOTHERINFO' }),\r\n 'expireETD': new DBMappingInfo({ field: 'F_D2', table: 'T_AOTHERINFO' }),\r\n 'mode': new DBMappingInfo({ field: 'F_C1', table: 'T_AOTHERINFO' }),\r\n 'origin': new DBMappingInfo({ field: 'F_C2', table: 'T_AOTHERINFO' }),\r\n 'destination': new DBMappingInfo({ field: 'F_C3', table: 'T_AOTHERINFO' }),\r\n 'doorBy': new DBMappingInfo({ field: 'F_C4', table: 'T_AOTHERINFO' }),\r\n 'carrier': new DBMappingInfo({ field: 'F_C5', table: 'T_AOTHERINFO' }),\r\n 'remark': new DBMappingInfo({ field: 'F_C6', table: 'T_AOTHERINFO' }),\r\n 'size': new DBMappingInfo({ field: 'F_C7', table: 'T_AOTHERINFO' }),\r\n 'commodity': new DBMappingInfo({ field: 'F_C8', table: 'T_AOTHERINFO' }),\r\n 'rate1': new DBMappingInfo({ field: 'F_F1', table: 'T_AOTHERINFO' }),\r\n 'rate2': new DBMappingInfo({ field: 'F_F2', table: 'T_AOTHERINFO' }),\r\n 'transit': new DBMappingInfo({ field: 'F_F3', table: 'T_AOTHERINFO' }),\r\n 'tbName': new DBMappingInfo({ field: 'F_TBNAME', table: 'T_AOTHERINFO' }),\r\n 'tbId': new DBMappingInfo({ field: 'F_TBID', table: 'T_AOTHERINFO' }),\r\n 'tbType': new DBMappingInfo({ field: 'F_TYPE', table: 'T_AOTHERINFO' }),\r\n 'u1Id': new DBMappingInfo({ field: 'F_U1ID', table: 'T_AOTHERINFO' }),\r\n 'u1Date': new DBMappingInfo({ field: 'F_U1DATE', table: 'T_AOTHERINFO' }),\r\n 'u2Id': new DBMappingInfo({ field: 'F_U2ID', table: 'T_AOTHERINFO' }),\r\n 'u2Date': new DBMappingInfo({ field: 'F_U2DATE', table: 'T_AOTHERINFO' }),\r\n };\r\n}\r\n","export default __webpack_public_path__ + \"static/media/preview_print_White.932b8bc1.svg\";","import './buttons.css';\r\nimport { Portal } from 'react-portal';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useMemo, useRef, useState } from 'react';\r\nimport { usePopper } from 'react-popper';\r\n\r\nimport postal from 'postal';\r\nimport Menu, { IfmsMenuItem } from './menu/Menu';\r\nimport PrimaryInverseButton from './PrimaryInverseButton';\r\nimport { faFilter } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { replaceJobMenuMetadata } from '../features/jobMenuSlice';\r\nimport { replaceScreenStackMetadata } from '../features/screenStackSlice';\r\nimport { useAppDispatch, useAppSelector } from '../app/hooks';\r\nimport { formatDate } from '../dateUtils';\r\nimport { FilterStorageVersion } from '../filtering';\r\n\r\ninterface IStandAloneInfoModel {\r\n index: number\r\n}\r\n\r\nexport interface TooltipButtonItem {\r\n [x: string]: any,\r\n label: React.ReactNode | string | undefined,\r\n};\r\nexport const borderColors = ['#0079A4', '#B5038F', '#FF3300', '#89C064', '#00B0F0', '#007BFF'];\r\n\r\nexport function splitMenuItemsIntoSections(tooltipButtonItems: TooltipButtonItem[]): IfmsMenuItem[][][] {\r\n const result: IfmsMenuItem[][][] = [[[]]]\r\n tooltipButtonItems.forEach((item, index) => {\r\n result[result.length - 1][result[result.length - 1].length - 1].push({\r\n text: item.label,\r\n selected: false,\r\n index,\r\n icon: item?.icon ?? null,\r\n });\r\n })\r\n return result;\r\n}\r\n\r\nfunction renderDateRangeValue(x: any) {\r\n const parts = x.value ? x.value.split('~') : [];\r\n const from = parts.length > 0 ? formatDate(parts[0].trim()) : '';\r\n const to = parts.length > 1 ? formatDate(parts[1].trim()) : '';\r\n\r\n return `${formatDate(from)} ~ ${formatDate(to)}`;\r\n}\r\n\r\nfunction renderValue(x: any) {\r\n let result = ''\r\n\r\n if (x.type === 'bool')\r\n result = x.value ? 'Checked' : 'Unchecked';\r\n else if (x.type === 'date')\r\n result = renderDateRangeValue(x);\r\n else\r\n result = x.value === null ? '' : x.value\r\n\r\n return result;\r\n}\r\n\r\nfunction TooltipButton({\r\n jobMenuLabel,\r\n jobMenuUrl,\r\n jobMenuMetadata,\r\n standAloneInfo,\r\n isActiveMenu = false,\r\n}: {\r\n jobMenuLabel: string,\r\n jobMenuUrl: string,\r\n jobMenuMetadata?: any,\r\n standAloneInfo?: IStandAloneInfoModel,\r\n children?: React.ReactChild | React.ReactNode | string | null | undefined,\r\n isActiveMenu: boolean\r\n}) {\r\n const storage = useAppSelector(x => x.storage);\r\n const channel = postal.channel('ifms-filter');\r\n\r\n const [menuVisible, _setMenuVisible] = useState(false);\r\n const [referenceElement, setReferenceElement] = useState(null);\r\n const [popperElement, setPopperElement] = useState(null);\r\n const [arrowElement, setArrowElement] = useState(null);\r\n const { styles, attributes } = usePopper(referenceElement, popperElement, {\r\n modifiers: [\r\n {\r\n name: 'arrow',\r\n options: {\r\n element: arrowElement,\r\n }\r\n }],\r\n placement: 'bottom',\r\n });\r\n\r\n const dispatch = useAppDispatch();\r\n const filterOrdersStorageKey = `filter-order-${FilterStorageVersion}-${jobMenuUrl}${standAloneInfo ? `-${standAloneInfo.index}` : ''}`;\r\n const filterOrderStorage = storage[filterOrdersStorageKey];\r\n\r\n const menuContainerRef = useRef(null);\r\n const buttonRef = useRef(null);\r\n const openRef = useRef(false);\r\n\r\n function getSearchTooltipLabel(filterOrder: any) {\r\n let result: TooltipButtonItem[] = [];\r\n if (!filterOrder || filterOrder.length <= 0)\r\n return result;\r\n\r\n const tempReverseArray = [...filterOrder].reverse();\r\n tempReverseArray.slice(-6).map((x: any, i: number) => {\r\n return result.push({\r\n label:\r\n \r\n {`Search ${tempReverseArray.length <= 6 ? i + 1 : tempReverseArray.length - (5 - i)} ${x.label}: `}\r\n {String(renderValue(x))}\r\n \r\n });\r\n })\r\n\r\n if (isActiveMenu) {\r\n result.push({ label: '' });\r\n result.push({ label: CLICK {} TO RESET FILTER })\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function resetSearch() {\r\n if (jobMenuUrl.includes('common/joblistview')) {\r\n const rowSelector = '.data-row-selected';\r\n const currentRowSelections = document.querySelectorAll(rowSelector);\r\n if (currentRowSelections && currentRowSelections.length > 0) {\r\n currentRowSelections[0].classList.remove('data-row-selected');\r\n currentRowSelections[0].classList.add('data-row-selectable');\r\n }\r\n }\r\n channel.publish('ifms-filter.forceclear');\r\n\r\n if (!standAloneInfo) {\r\n dispatch(replaceJobMenuMetadata({ url: jobMenuUrl, metadata: jobMenuMetadata }));\r\n dispatch(replaceScreenStackMetadata({ url: jobMenuUrl, metadata: jobMenuMetadata }));\r\n }\r\n }\r\n\r\n function setMenuVisible(v: boolean) {\r\n openRef.current = v;\r\n _setMenuVisible(v);\r\n }\r\n\r\n function onMenuItemSelected(item: IfmsMenuItem, e: React.MouseEvent) {\r\n //setMenuVisible(false);\r\n\r\n if (!item) {\r\n resetSearch();\r\n }\r\n }\r\n\r\n const appliedPopperStyles = {\r\n ...styles.popper,\r\n minWidth: '75px',\r\n\r\n /*paddingTop: 10*/\r\n };\r\n\r\n const items = getSearchTooltipLabel(filterOrderStorage);\r\n\r\n /* reformat array by separator. This is done because of avoiding changes in tons of files. */\r\n const formatterItems = useMemo(() => splitMenuItemsIntoSections(items),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [items])\r\n\r\n return (\r\n <>\r\n setMenuVisible(true)}\r\n onMouseLeave={() => setMenuVisible(false)}\r\n size=\"small\"\r\n style={{ height: '12px', padding: '0px', fontSize: '9px' }}\r\n onClick={() => {\r\n if (isActiveMenu)\r\n resetSearch();\r\n }}\r\n >\r\n \r\n \r\n \r\n\r\n \r\n {menuVisible &&\r\n { e.stopPropagation(); e.preventDefault(); }}\r\n onMouseMove={(e) => { e.stopPropagation() }}\r\n onMouseEnter={() => setMenuVisible(true)}\r\n onMouseLeave={() => setMenuVisible(false)}\r\n ref={setPopperElement} style={appliedPopperStyles} {...attributes.popper}>\r\n
    \r\n { onMenuItemSelected(item, e) }}\r\n subMenuStyle={{\r\n minWidth: 150,\r\n whiteSpace: 'nowrap',\r\n }}\r\n menuStyle={(i: number) => ({\r\n marginTop: -10,\r\n marginBottom: -10\r\n })}\r\n />\r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n \r\n );\r\n}\r\n\r\nTooltipButton.propTypes = {\r\n items: PropTypes.arrayOf(PropTypes.shape({\r\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\r\n separator: PropTypes.bool,\r\n })),\r\n};\r\n\r\nexport default React.memo(TooltipButton);","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeAirportListItem extends SearchModelBase {\r\n code: string = '';\r\n usCode: string = '';\r\n portName: string = '';\r\n cid: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Airport Name', width: 500, dataIndex: 'portName', defaultColumnFocus : true}),\r\n XCol.Create({ col: 1, text: 'Code', width: 50, dataIndex: 'code'}),\r\n XCol.Create({ col: 2, text: 'Custom Code', width: 100, dataIndex: 'usCode'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeAirportListItem.prototype.code, orderByAscending: true };\r\n\r\n public static formatData(data: CodeAirportListItem[]) {\r\n return data.map((d: CodeAirportListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import _ from 'lodash';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { ApplicableTableSettings, codesAirportList } from '../../../../tableSettings';\r\n\r\nimport useFastStorage from '../../../../hooks/useFastStorage';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\n\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport { Search, initialSearch, isFilterObjectEmpty } from '../../../../filtering';\r\nimport { Portal } from 'react-portal';\r\nimport { CodeAirportListItem } from '../../../../fms.data/models/CodeAirportListItem';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { ApiResult, InsertResult } from '../../../../framework.core/data/ApiResult';\r\nimport { SQLType } from '../../../../framework.core/data/SQLInfo';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport EditableTable, { CellData, EditableTableHandle, TableCellAligns, TableCellTypes } from '../../../../ui/tables/editing/EditableTable';\r\nimport GreenButton from '../../../../ui/GreenButton';\r\nimport { checkTabIsDirty, sortingListData } from '../../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../../util';\r\nimport useFilterBar from '../../../../hooks/useFilterBar';\r\nimport { ListOrderBy } from \"../../../common/AbstractListView\";\r\n\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport constants from '../../../../constants';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\n\r\nclass CodeAirport extends CodeAirportListItem {\r\n isNew: boolean = false;\r\n isDelete: boolean = false;\r\n isUpdate: boolean = false;\r\n}\r\n\r\nfunction PortNameRenderer({ data, row, cell }: any) {\r\n useEffect(() => {\r\n const focusElement = document.getElementById('ifms-airport-name') as HTMLInputElement;\r\n if (focusElement) {\r\n focusElement.focus();\r\n focusElement.select();\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n const changeLineItem = data[0].changeLineItem;\r\n return (\r\n {\r\n changeLineItem(row.index, { portName: e.target.value, isUpdate: true })\r\n }} />\r\n );\r\n\r\n}\r\n\r\nfunction CodeRenderer({ data, row, cell }: any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n return (\r\n {\r\n changeLineItem(row.index, { code: e.target.value, isUpdate: true })\r\n }} />\r\n );\r\n}\r\n\r\nfunction CustomCodeRenderer({ data, row, cell }: any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n return (\r\n {\r\n changeLineItem(row.index, { usCode: e.target.value, isUpdate: true })\r\n }} />\r\n );\r\n}\r\n\r\nclass EditableCodeAirportInfoListItem extends CodeAirportListItem {\r\n isNew: boolean = false;\r\n isDelete: boolean = false;\r\n isUpdate: boolean = false;\r\n}\r\n\r\nfunction formatElement(data: any) {\r\n const result = new EditableCodeAirportInfoListItem();\r\n result.code = data.code;\r\n result.usCode = data.usCode;\r\n result.portName = data.portName;\r\n result.cid = data.cid;\r\n result.isNew = false;\r\n result.isDelete = false;\r\n\r\n return data;\r\n}\r\n\r\nfunction formatData(data: Array) {\r\n return data.map(d => formatElement(d));\r\n}\r\n\r\nfunction Airports({\r\n componentIndex\r\n}: {\r\n componentIndex: number\r\n}) {\r\n useFunction({\r\n invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n }\r\n });\r\n useFunctionKeys({ onSave: handleSaveAndClose });\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const savedDataRef = useRef>([]);\r\n const oriData = useRef([]);\r\n const tableRef = useRef(null);\r\n const masterTableRef = useRef(null);\r\n\r\n const [loading, setLoading] = useState(false);\r\n const [allData, setAllData] = useState(Array());\r\n //const addingToTheFirstLine = useRef(false);\r\n const [hasChanges, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, dataRef] = useFastStorage(`ifms-referenceFiles-airport-list`, []);\r\n //const [data, _setData, removeData, dataRef] = useTypedFastStorage>(`ifms-referenceFiles-airport-list`, []);\r\n //const [ei, setEi, , ediRef] = useFastStorage(`ifms-referenceFiles-airport-editindex`, -1);\r\n const [orderBy, setOrderBy] = useFastStorage(`ifms-referenceFiles-airport-orderby`, {\r\n orderBy: 'portName',\r\n orderByAscending: true,\r\n //general1: 'PortName',\r\n //pageSize: systemSettings.defaultPageSize,\r\n });\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeAirPort);\r\n\r\n const listItemType = 'CodeAirportListItem';\r\n //const { selectTableRow } = useTableNavigation('codes-airport-list', undefined, undefined, [], false, true, true);\r\n\r\n const [focusFirstCell, setFocusFirstCell] = useState(true);\r\n const { FilterButton, search } = useFilterBar(\r\n codesAirportList,\r\n undefined,\r\n getDefaultOrderBy, \r\n String(componentIndex)\r\n );\r\n\r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if (!modals)\r\n saveBtn.click();\r\n }\r\n }\r\n \r\n function getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'code',\r\n orderByAscending: true,\r\n };\r\n }\r\n\r\n function setData(d: Array, callByFetchData: boolean = false) {\r\n setFocusFirstCell(callByFetchData);\r\n _setData(d, null, { forceClone: callByFetchData });\r\n setHasChanges(checkTabIsDirty(CodeAirportListItem, oriData.current, d));\r\n }\r\n\r\n async function fetchData(api: any, search: Search) {\r\n setLoading(true);\r\n\r\n const searchModel = CodeAirportListItem.calculateSearchParameters(search);\r\n const apiResult = await api.getListItems(JobNames.AirPort,\r\n listItemType,\r\n searchModel, 1, search.pageSize);\r\n\r\n setData(formatData(apiResult && apiResult.entities ? apiResult.entities : []), true);\r\n setOrderBy(getDefaultOrderBy());\r\n\r\n setFocusFirstCell(false);\r\n setLoading(false);\r\n setHasChanges(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (isFilterObjectEmpty(search) && search.version === 1) reload(false);\r\n \r\n return () => {\r\n removeData();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n if (loading || (isFilterObjectEmpty(search) && search.version === 1)) {\r\n return;\r\n }\r\n fetchData(appContext.api, search);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [search]\r\n );\r\n\r\n useEffect(() => {\r\n if (dataRef.current?.length > 0 && !loading) {\r\n oriData.current = _.cloneDeep(data);\r\n savedDataRef.current = _.cloneDeep(data);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [loading]\r\n );\r\n\r\n async function reload(clearAll:boolean = true) {\r\n const searchValue = clearAll ? initialSearch : search;\r\n await fetchData(appContext.api, searchValue);\r\n }\r\n\r\n function onHeaderClick(header: any) {\r\n if (header && header.id !== 'indicator') {\r\n if (header.id === orderBy.orderBy) {\r\n setOrderBy({ orderByAscending: !orderBy.orderByAscending });\r\n } else {\r\n setOrderBy({ orderBy: header.id, orderByAscending: true });\r\n }\r\n }\r\n\r\n removeData();\r\n sortingListData(CodeAirportListItem, data, setData, orderBy);\r\n }\r\n\r\n // async function requestOperationCancel() {\r\n // const doCancel = await showGlobalYesNoDialog(

    Are you sure you want to cancel Edit operation

    );\r\n // if (doCancel) {\r\n // cancelOperation(false)\r\n // } else {\r\n // setTimeout(() => {\r\n // selectTableRow(ediRef.current);\r\n // }, 80);\r\n // }\r\n // }\r\n\r\n // async function onRowIndexChanged(rowIndex:number) {\r\n // if (rowIndex < 0 && ediRef.current >= 0) {\r\n // setTimeout(() => {\r\n // selectTableRow(ediRef.current);\r\n // }, 80)\r\n // return;\r\n // }\r\n\r\n // if (ediRef.current >= 0 && ediRef.current !== rowIndex) {\r\n // await requestOperationCancel();\r\n // }\r\n // }\r\n\r\n // function onRowSelect(rowIndex:number) {\r\n // if (rowIndex >= 0 && rowIndex < dataRef.current.length && _.isEmpty(inlineElement) && (listSec?.grantEdit || listSec?.grantDel)) {\r\n // setHasChanges(true);\r\n // inlineElement = {...dataRef.current[rowIndex], isNew: false};\r\n // setEi(rowIndex);\r\n // }\r\n // }\r\n\r\n // function selectForNew() {\r\n // inlineElement = {\r\n // code: '', portName: '', usCode: '', isNew: true,\r\n // };\r\n // data.unshift(inlineElement);\r\n // setData(data);\r\n // setEi(0);\r\n // setHasChanges(true);\r\n // }\r\n\r\n // function cancelOperation(leaveNew:boolean=false) {\r\n // setHasChanges(false);\r\n\r\n // clearTableSelection();\r\n // setEi(-1);\r\n\r\n // if (!leaveNew && inlineElement.isNew) {\r\n // dataRef.current.splice(0, 1);\r\n // setData(dataRef.current);\r\n // }\r\n\r\n // inlineElement = {};\r\n // }\r\n\r\n async function cancelOperation(){\r\n setHasChanges(false);\r\n removeData();\r\n return true;\r\n }\r\n\r\n function getIndexOfFirstInvalidCell(rowIndex: number){\r\n if(!data){\r\n return undefined;\r\n }\r\n\r\n if(!data[rowIndex].portName){\r\n return 1;\r\n }\r\n if (!data[rowIndex].code) {\r\n return 2;\r\n }\r\n if (allData) { //기존데이터 목록\r\n const newData = [...allData];\r\n if(newData.filter(x => x === data[rowIndex].code.toLowerCase()).length === 0) // 현재 목록에 없음\r\n {\r\n newData.splice(rowIndex, 1, data[rowIndex].code.toLowerCase());\r\n setAllData(newData);\r\n return undefined;\r\n }else{\r\n if(newData[rowIndex].toLowerCase() === data[rowIndex].code.toLowerCase()) return undefined;\r\n else{\r\n showGlobalOkDialog(

    '{data[rowIndex].code}' is a duplicate value.

    );\r\n return 2;\r\n }\r\n }\r\n } \r\n else {\r\n const newData = [data[rowIndex].code.toLowerCase()];\r\n setAllData(newData);\r\n }\r\n return undefined;\r\n }\r\n \r\n async function duplicateCell(checkData: any) {\r\n let duplicateFieldText = '';\r\n\r\n let isDuplicate = false;\r\n let insList = checkData.filter((x: any) => x.isNew === true);\r\n let chgList = checkData.filter((x: any) => !x.isNew && x.hasBeenChanged === true);\r\n let focusRow = -1;\r\n\r\n if (!data) return isDuplicate;\r\n\r\n if (insList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < insList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (insList[i].code.toUpperCase() === data[j].code.toUpperCase()) {\r\n if (count === 0) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${insList[i].code}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (chgList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < chgList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (chgList[i].code.toUpperCase() === data[j].code.toUpperCase()) {\r\n if (data[j].hasBeenChanged === true && !data[j].isNew && tempRow === -1) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${chgList[i].code}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (!isDuplicate) {\r\n const apiResult = await appContext.api.checkDuplicatedKeys(JobNames.AirPort, listItemType, insList, chgList);\r\n if (apiResult && apiResult.success && apiResult.message) {\r\n duplicateFieldText = `${apiResult.message}`;\r\n isDuplicate = true;\r\n } else if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog('Could not check duplication.\\r\\nPlease try later.');\r\n return true;\r\n }\r\n }\r\n else\r\n await showGlobalOkDialog(`${duplicateFieldText}Please try after correcting duplication.`);\r\n\r\n return isDuplicate;\r\n }\r\n\r\n // function addingLineToFirstLine() {\r\n // addingToTheFirstLine.current = true;\r\n // masterTableRef.current?.add();\r\n // }\r\n\r\n function addLineItem() {\r\n const newRow = new EditableCodeAirportInfoListItem();\r\n newRow.isNew = true;\r\n\r\n return {\r\n setDataFunc: (list: any) => setData(list),\r\n curListData: data,\r\n newData: newRow\r\n };\r\n }\r\n\r\n function applyToLineItem(rowIndex: number, change: Partial | null) {\r\n if (!change || !data) {\r\n return;\r\n }\r\n const newData = [...data];\r\n const checkData = data[rowIndex];\r\n if (!change.isNew && (change.code !== checkData.code || change.usCode !== checkData.usCode || change.portName !== checkData.portName)) {\r\n _.merge(newData[rowIndex], { ..._.omit(change, ['isNew']), hasBeenChanged: true });\r\n setData(newData);\r\n //setHasChanges(true);\r\n }\r\n }\r\n\r\n function deleteEntity(index: number): boolean {\r\n if (!data) {\r\n return false;\r\n }\r\n\r\n\r\n const element = data[index];\r\n if (!element.isNew) {\r\n let deleteRow = savedDataRef.current.find(x => x.code === element.code);\r\n if (deleteRow) {\r\n deleteRow.isDelete = true;\r\n }\r\n }\r\n data.splice(index, 1);\r\n setData(data);\r\n\r\n const tempData = data.map((a: CodeAirportListItem) => a.code.toLowerCase());\r\n const newData = allData.splice(0,tempData.length,tempData);\r\n setAllData(newData);\r\n\r\n return true;\r\n }\r\n\r\n\r\n /**\r\n function checkValid() {\r\n if (data === null) return;\r\n\r\n let validData = dataRef.current.filter((x:any) => x.code);\r\n setData(validData);\r\n }\r\n */\r\n\r\n async function save() {\r\n // if (!inlineElement.isNew && !hasChanges) {\r\n // cancelOperation();\r\n // return;\r\n // }\r\n\r\n // = await appContext.api.saveListItem('CodeAirportListItem',\r\n // inlineElement.isNew ? SQLType.Insert : SQLType.Update,\r\n // _.omit(inlineElement, ['isNew']));\r\n // if(!apiResult.success) {\r\n // await showGlobalOkDialog(

    {apiResult.message}

    );\r\n // return;\r\n // }\r\n\r\n // // code is pkey\r\n // data[ei] = formatElement(inlineElement);\r\n // //pt220817>\r\n // cancelOperation(true);\r\n if (!data) {\r\n return;\r\n }\r\n \r\n // checkValid();\r\n let validData = dataRef.current.filter((x:any) => x.code);\r\n\r\n let errMsg = '';\r\n const dataToSave = validData.filter((x: any, i: number) => x.isNew || x.hasBeenChanged === true);\r\n const dataToDelete = savedDataRef.current.filter((x) => x.isDelete);\r\n if(dataToSave.length === 0 && dataToDelete.length === 0) {\r\n if (hasChanges) reload(false);\r\n return;\r\n }\r\n setLoading(true);\r\n\r\n for (let i = 0; i < dataToDelete.length; ++i) {\r\n const s = dataToDelete[i];\r\n const apiResult: ApiResult = await appContext.api.saveListItem(listItemType, SQLType.Delete, _.omit(s, ['isDelete']));\r\n if (!apiResult || !apiResult.success)\r\n errMsg = apiResult?.message ?? constants.SAVE_ERROR_MESSAGE;\r\n }\r\n\r\n if (dataToSave.length > 0) {\r\n const isDuplicate = await duplicateCell(dataToSave);\r\n if(isDuplicate){\r\n setLoading(false);\r\n return;\r\n }\r\n const cidData = dataToSave.map((a: CodeAirportListItem) => a.cid?.toLowerCase()) as Array;\r\n\r\n const secondSave = dataToSave.filter((x: CodeAirportListItem) => cidData.includes(x.code.toLowerCase()));\r\n const firstSave = dataToSave.filter((x: CodeAirportListItem) => !secondSave.includes(x));\r\n\r\n\r\n if (firstSave.length > 0) {\r\n const apiResult: ApiResult = await appContext.api.saveList(listItemType, firstSave);\r\n if (!apiResult || !apiResult.success) {\r\n errMsg += (errMsg ? '\\n' : '') + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n }\r\n else {\r\n firstSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.code === x.code);\r\n if (index >= 0) {\r\n data[index].cid = x.code;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n x.isNew = false;\r\n // delete data[index].isNew;\r\n }\r\n })\r\n }\r\n }\r\n if (secondSave.length > 0) {\r\n const apiResult: ApiResult = await appContext.api.saveList(listItemType, secondSave);\r\n if (!apiResult || !apiResult.success) {\r\n errMsg += (errMsg ? '\\n' : '') + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n }\r\n else {\r\n secondSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.code === x.code);\r\n if (index >= 0) {\r\n data[index].cid = x.code;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n x.isNew = false;\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n if (errMsg) {\r\n await showGlobalOkDialog(

    {errMsg}

    );\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n // setData(data);\r\n // savedDataRef.current = _.cloneDeep(data);\r\n // oriData.current = _.cloneDeep(data);\r\n\r\n // setLoading(false);\r\n // setHasChanges(false);\r\n reload(false);\r\n\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n }\r\n\r\n const tableOptions: ApplicableTableSettings = {\r\n customTableId: 'codes-airport-list',\r\n ref: tableRef,\r\n selectable: true,\r\n tableName: 'airportList',\r\n ...codesAirportList,\r\n height: '520px',\r\n //data: data.map((x:any, i:number) => ({...x, indicator: (i + 1).toString(), editIndex: ei, onDelete: deleteEntity, onSave: save, onCancel: cancelOperation, setHasChanges, requestOperationCancel, listSec})),\r\n data: (data ?? []).map((x: any, i: number) => ({ ...x, indicator: (i + 1).toString(), changeLineItem: applyToLineItem })),\r\n rowRenderers: [\r\n { accessor: 'indicator' },\r\n { accessor: 'portName', EditCell: PortNameRenderer },\r\n { accessor: 'code', EditCell: CodeRenderer },\r\n { accessor: 'usCode', EditCell: CustomCodeRenderer },\r\n // { accessor: 'action', Cell: ActionRenderer },\r\n ],\r\n getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n if (accessor === 'portName')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].portName };\r\n else if (accessor === 'code')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].code, align: TableCellAligns.Center };\r\n else if (accessor === 'usCode')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].usCode, align: TableCellAligns.Center };\r\n else\r\n return undefined;\r\n },\r\n isCellLock: (accessor: string, rowData: any): boolean => {\r\n if(!(listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel))\r\n return true\r\n else\r\n return false;\r\n },\r\n orderBy: [orderBy],\r\n onHeaderClick,\r\n useEditControls: (listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel),\r\n };\r\n\r\n //const canSelectForNew = ei === -1;\r\n const canBeAdd = listSec?.grantAdd;\r\n\r\n return (\r\n
    \r\n {/* \r\n

    Air  Airport

    \r\n
    \r\n setOrderBy({general1: generalText1 ? orderBy?.orderBy : null, generalText1})} />\r\n
    \r\n
    */}\r\n \r\n {/*
    \r\n {\r\n await reload(generalText1 === null ? '' : generalText1);\r\n }}\r\n />\r\n
    */}\r\n \r\n
    \r\n
    \r\n Save\r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n \r\n \r\n \r\n
    */}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n   \r\n
    \r\n {// { addingLineToFirstLine() }}>  Add Line   \r\n }\r\n { reload(false) }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n {/* */}\r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default Airports;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeBLTypeListItem extends SearchModelBase {\r\n mblType: string = '';\r\n cid: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Master B/L Type', width: 300, dataIndex: 'mblType'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeBLTypeListItem.prototype.mblType, orderByAscending: false };\r\n\r\n public static formatData(data: CodeBLTypeListItem[]) {\r\n return data.map((d: CodeBLTypeListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import _ from 'lodash';\r\nimport React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { ApplicableTableSettings, codesObltypeList } from '../../../../tableSettings';\r\n\r\n\r\nimport useFastStorage from '../../../../hooks/useFastStorage';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\n\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport { Portal } from 'react-portal';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { CodeBLTypeListItem } from '../../../../fms.data/models/CodeBLTypeListItem';\r\n\r\nimport { Search } from '../../../../filtering';\r\nimport useSystemSettings from '../../../../hooks/useSystemSettings';\r\nimport { ApiResult, InsertResult } from '../../../../framework.core/data/ApiResult';\r\nimport { SQLType } from '../../../../framework.core/data/SQLInfo';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport EditableTable, { CellData, EditableTableHandle, TableCellTypes } from '../../../../ui/tables/editing/EditableTable';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport GreenButton from '../../../../ui/GreenButton';\r\nimport { checkTabIsDirty } from '../../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../../util';\r\n\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport constants from '../../../../constants';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\n\r\nfunction TypeRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n \r\n changeLineItem(row.index, {mblType: e.target.value, isUpdate:true})} />\r\n );\r\n}\r\n\r\nfunction formatElement(data:any) {\r\n return data;\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data.map(d => formatElement(d));\r\n}\r\n\r\nfunction OriginalBlTypes() {\r\n useFunction({invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n //ifmsReferenceFilesCancel: () => {},\r\n }});\r\n useFunctionKeys({onSave: handleSaveAndClose});\r\n \r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const tableRef = useRef(null);\r\n const masterTableRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n const [allData, setAllData] = useState(Array());\r\n const [hasChanges, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData] = useFastStorage(`ifms-referenceFiles-obltype-list`, []);\r\n \r\n const savedDataRef = useRef>([]);\r\n const oriData = useRef([]);\r\n //const addingToTheFirstLine = useRef(false);\r\n\r\n const listItemType = 'CodeBLTypeListItem';\r\n\r\n const tableHeight = 520;\r\n const systemSettings = useSystemSettings();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeBLType);\r\n const [focusFirstCell, setFocusFirstCell] = useState(true);\r\n\r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if (!modals)\r\n saveBtn.click();\r\n }\r\n }\r\n\r\n function setData(d:Array, callByFetchData: boolean = false) {\r\n setFocusFirstCell(callByFetchData);\r\n _setData(d, null, { forceClone: callByFetchData });\r\n setHasChanges(checkTabIsDirty(CodeBLTypeListItem, oriData.current, d));\r\n }\r\n\r\n async function fetchData(api:any) {\r\n setLoading(true);\r\n const newDataSearch = { pageSize: systemSettings.defaultPageSize } as Search;\r\n const searchModel = CodeBLTypeListItem.calculateSearchParameters(newDataSearch);\r\n\r\n const apiResult = await api.getListItems(JobNames.BLType,\r\n 'CodeBLTypeListItem',\r\n searchModel,\r\n 1,\r\n newDataSearch.pageSize);\r\n\r\n const apiResultforAll = await api.getListItems(JobNames.BLType,\r\n 'CodeBLTypeListItem',\r\n searchModel,\r\n 1);\r\n\r\n oriData.current = formatData(apiResult && apiResult.entities ? apiResult.entities : []);\r\n setData(formatData(apiResult && apiResult.entities ? apiResult.entities : []), true);\r\n\r\n savedDataRef.current = apiResult && apiResult.entities ? apiResult.entities : [];\r\n if(apiResultforAll && apiResultforAll.entities){\r\n setAllData(apiResultforAll.entities.map((a: CodeBLTypeListItem) => a.mblType.toLowerCase()));\r\n }\r\n\r\n setFocusFirstCell(false);\r\n setLoading(false);\r\n //setHasChanges(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (data.length === 0)\r\n reload();\r\n else {\r\n oriData.current = _.cloneDeep(data);\r\n savedDataRef.current = _.cloneDeep(data);\r\n }\r\n return () => {\r\n removeData();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function reload() {\r\n fetchData(appContext.api);\r\n }\r\n\r\n function getIndexOfFirstInvalidCell(rowIndex: number): number | undefined {\r\n if (!data) {\r\n return undefined;\r\n }\r\n\r\n if (!data[rowIndex].mblType) {\r\n return 1;\r\n }\r\n\r\n if (allData) { //기존데이터 목록\r\n const newData = [...allData];\r\n if(newData.filter(x => x === data[rowIndex].mblType.toLowerCase()).length === 0) // 현재 목록에 없음\r\n {\r\n newData.splice(rowIndex, 1, data[rowIndex].mblType.toLowerCase());\r\n setAllData(newData);\r\n return undefined;\r\n }else{\r\n if(newData[rowIndex] === data[rowIndex].mblType.toLowerCase()) return undefined;\r\n else{\r\n showGlobalOkDialog(

    '{data[rowIndex].mblType}' is a duplicate value.

    );\r\n return 1;\r\n }\r\n }\r\n } \r\n else {\r\n const newData = [data[rowIndex].mblType.toLowerCase()];\r\n setAllData(newData);\r\n }\r\n return undefined;\r\n }\r\n\r\n async function cancelOperation(){\r\n setHasChanges(false);\r\n removeData();\r\n return true;\r\n }\r\n\r\n function deleteRow(index: number): boolean {\r\n if (!data) {\r\n return false;\r\n }\r\n\r\n const element = data[index];\r\n\r\n if (element.isNew === undefined) {\r\n let deleteRow = savedDataRef.current.find(x => x.mblType === element.mblType);\r\n if (deleteRow) {\r\n deleteRow.isDelete = true;\r\n //setHasChanges(true);\r\n\r\n }\r\n }\r\n data.splice(index, 1);\r\n setData(data);\r\n\r\n const tempData = data.map((a: CodeBLTypeListItem) => a.mblType.toLowerCase());\r\n const newData = allData.splice(0, tempData.length, tempData);\r\n setAllData(newData);\r\n\r\n return true;\r\n }\r\n\r\n function applyToLineItem(rowIndex: number, change: Partial|null) {\r\n if (!change || !data) {\r\n return;\r\n }\r\n const newData = [...data];\r\n const checkData = newData[rowIndex];\r\n if (!change.isNew && change.mblType !== checkData.mblType) {\r\n _.merge(newData[rowIndex], { ...change, hasBeenChanged: true });\r\n //setHasChanges(true);\r\n setData(newData);\r\n }\r\n }\r\n\r\n // function addingLineToFirstLine(){\r\n // addingToTheFirstLine.current = true;\r\n // masterTableRef.current?.add();\r\n // }\r\n\r\n function addLineItem() {\r\n return {\r\n setDataFunc: (list: any) => setData(list),\r\n curListData: data,\r\n newData: { mblType: '', isNew: true }\r\n };\r\n }\r\n \r\n async function duplicateCell(checkData: any) {\r\n let duplicateFieldText = '';\r\n\r\n let isDuplicate = false;\r\n let insList = checkData.filter((x: any) => x.isNew === true);\r\n let chgList = checkData.filter((x: any) => x.isNew === undefined && x.hasBeenChanged === true);\r\n let focusRow = -1;\r\n\r\n if (insList.length > 0 && data?.length > 0) {\r\n for (let i = 0; i < insList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (insList[i].mblType.toUpperCase() === data[j].mblType.toUpperCase()) {\r\n if (count === 0) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${insList[i].mblType}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (chgList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < chgList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (chgList[i].mblType.toUpperCase() === data[j].mblType.toUpperCase()) {\r\n if (data[j].isNew === undefined && data[j].hasBeenChanged === true && tempRow === -1) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${chgList[i].mblType}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (!isDuplicate) {\r\n const apiResult = await appContext.api.checkDuplicatedKeys(JobNames.BLType, listItemType, insList, chgList);\r\n if (apiResult && apiResult.success && apiResult.message) {\r\n duplicateFieldText = `${apiResult.message}`;\r\n isDuplicate = true;\r\n } else if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog('Could not check duplication.\\r\\nPlease try later.');\r\n return true;\r\n }\r\n }\r\n else\r\n await showGlobalOkDialog(`${duplicateFieldText}Please try after correcting duplication.`);\r\n\r\n return isDuplicate;\r\n }\r\n\r\n async function save() {\r\n if (!data) {\r\n return;\r\n }\r\n\r\n let validData = data.filter((x:any) => x.mblType);\r\n \r\n let errMsg = '';\r\n const dataToSave = validData.filter((x: any) => x.isNew || x.hasBeenChanged === true); // new data is always last so index check works\r\n const dataToDelete = savedDataRef.current.filter((x) => x.isDelete);\r\n if(dataToSave.length === 0 && dataToDelete.length === 0) {\r\n if (hasChanges) reload();\r\n return;\r\n }\r\n setLoading(true);\r\n\r\n for (let i = 0; i < dataToDelete.length; ++i) {\r\n const s = dataToDelete[i];\r\n const apiResult:ApiResult = await appContext.api.saveListItem(listItemType, \r\n SQLType.Delete, \r\n _.omit(s, ['isDelete']));\r\n\r\n if(!apiResult || !apiResult.success)\r\n errMsg = apiResult?.message ?? constants.SAVE_ERROR_MESSAGE;\r\n }\r\n\r\n if (dataToSave.length > 0) {\r\n const cidData = dataToSave.map((a: CodeBLTypeListItem) => a.cid?.toLowerCase()) as Array;\r\n \r\n const secondSave = dataToSave.filter((x: CodeBLTypeListItem) => cidData.includes(x.mblType.toLowerCase()));\r\n const firstSave = dataToSave.filter((x: CodeBLTypeListItem) => !secondSave.includes(x));\r\n\r\n const isDuplicate = await duplicateCell(dataToSave);\r\n if (isDuplicate) {\r\n setLoading(false);\r\n return;\r\n }\r\n if (firstSave.length > 0) {\r\n const apiResult: ApiResult = await appContext.api.saveList(listItemType, firstSave);\r\n if (!apiResult || !apiResult.success)\r\n errMsg += (errMsg ? '\\n' : '') + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n else {\r\n firstSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.mblType === x.mblType);\r\n if (index >= 0) {\r\n data[index].cid = x.mblType;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n delete data[index].isNew;\r\n }\r\n })\r\n }\r\n }\r\n if (secondSave.length > 0) {\r\n const apiResult2: ApiResult = await appContext.api.saveList(listItemType, secondSave);\r\n if (!apiResult2 || !apiResult2.success)\r\n errMsg += (errMsg ? '\\n' : '') + (apiResult2?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n else {\r\n secondSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.mblType === x.mblType);\r\n if (index >= 0) {\r\n data[index].cid = x.mblType;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n delete data[index].isNew;\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n if(errMsg) {\r\n await showGlobalOkDialog(

    {errMsg}

    );\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n // setData(data);\r\n // savedDataRef.current = _.cloneDeep(data);\r\n // oriData.current = _.cloneDeep(data);\r\n\r\n // setLoading(false);\r\n // setHasChanges(false);\r\n reload();\r\n\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n }\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n customTableId: 'codes-obltype-list',\r\n ref: tableRef,\r\n tableName: 'oblTypeList',\r\n ...codesObltypeList,\r\n height: `${tableHeight}px`,\r\n data: data.map((x: any) => ({...x, changeLineItem: applyToLineItem})),\r\n rowRenderers: [\r\n { accessor: 'indicator' },\r\n { accessor: 'mblType', EditCell: TypeRenderer },\r\n ],\r\n getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n if (accessor === 'mblType')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].mblType };\r\n else\r\n return undefined;\r\n },\r\n isCellLock: (accessor: string, rowData: any): boolean => {\r\n if(!(listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel))\r\n return true\r\n else\r\n return false;\r\n },\r\n useEditControls: (listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel),\r\n };\r\n\r\n //const typeCount = data ? data.length : 0;\r\n\r\n return (\r\n
    \r\n {/* \r\n

    Ocean  Original B/L Type

    \r\n
    */}\r\n\r\n {/*
    \r\n\r\n
    \r\n Double Click B/L Type to Edit\r\n
    \r\n
    */}\r\n\r\n \r\n
    \r\n
    \r\n Save\r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n \r\n \r\n \r\n
    */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {// { addingLineToFirstLine() }}>  Add Line   \r\n }\r\n { reload() }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n listSec?.grantDel ?? false}\r\n />\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default OriginalBlTypes;\r\n","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\n\r\nexport class CodeContainerType extends TrackableEntity {\r\n containerType: string = '';\r\n relatedType: string = ''; // merged typeCode\r\n isoCode: string = '';\r\n isoName: string = '';\r\n containerGrp: string = ''; // merged group\r\n description: string = '';\r\n length: string = '';\r\n height: string = '';\r\n inactive: boolean = false;\r\n u2Date: string | null = null;\r\n inactiveDate: string | null = null;\r\n updatedBy: string = '';\r\n inactiveBy: string = '';\r\n\r\n // for only font-end\r\n edit: boolean = false;\r\n view: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='containerType';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('edit', 'view');\r\n\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n return CodeContainerType.dicFieldMappings;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'containerType': new DBMappingInfo({ field: 'F_TYPE', table: 'T_CODECONTAINER' }),\r\n 'relatedType': new DBMappingInfo({ field: 'F_C2', table: 'T_AOTHERINFO', tbName: 'T_CNTR', tbId: '0', type: 0, c1: '@ConType' }),\r\n 'isoCode': new DBMappingInfo({ field: 'F_C3', table: 'T_AOTHERINFO', tbName: 'T_CNTR', tbId: '0', type: 0, c1: '@ConType' }),\r\n 'containerGrp': new DBMappingInfo({ field: 'F_C4', table: 'T_AOTHERINFO', tbName: 'T_CNTR', tbId: '0', type: 0, c1: '@ConType' }),\r\n 'description': new DBMappingInfo({ field: 'F_C5', table: 'T_AOTHERINFO', tbName: 'T_CNTR', tbId: '0', type: 0, c1: '@ConType' }),\r\n 'length': new DBMappingInfo({ field: 'F_C6', table: 'T_AOTHERINFO', tbName: 'T_CNTR', tbId: '0', type: 0, c1: '@ConType' }),\r\n 'height': new DBMappingInfo({ field: 'F_C7', table: 'T_AOTHERINFO', tbName: 'T_CNTR', tbId: '0', type: 0, c1: '@ConType' }),\r\n 'inactive': new DBMappingInfo({ field: 'F_n1', table: 'T_AOTHERINFO', tbName: 'T_CNTR', tbId: '0', type: 0, c1: '@ConType' }),\r\n 'u2Date': new DBMappingInfo({ field: 'F_d1', table: 'T_AOTHERINFO', tbName: 'T_CNTR', tbId: '0', type: 0, c1: '@ConType' }),\r\n 'inactiveDate': new DBMappingInfo({ field: 'F_d2', table: 'T_AOTHERINFO', tbName: 'T_CNTR', tbId: '0', type: 0, c1: '@ConType' }),\r\n 'updatedBy': new DBMappingInfo({ field: 'F_c8', table: 'T_AOTHERINFO', tbName: 'T_CNTR', tbId: '0', type: 0, c1: '@ConType' }),\r\n 'inactiveBy': new DBMappingInfo({ field: 'F_c9', table: 'T_AOTHERINFO', tbName: 'T_CNTR', tbId: '0', type: 0, c1: '@ConType' }),\r\n\r\n };\r\n}\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeContainerTypeListItem extends SearchModelBase {\r\n containerType: string = '';\r\n isoType: string = '';\r\n containerGroup: string = '';\r\n description: string = '';\r\n length: string = '';\r\n height: string = '';\r\n relatedType: string = '';\r\n inactive: boolean = false;\r\n inactiveDate: string | null = null;\r\n inactiveBy: string = '';\r\n u2Date: string | null = null;\r\n updatedBy: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Container Type', width: 150, dataIndex: 'containerType'}),\r\n XCol.Create({ col: 1, text: 'Description', width: 150, dataIndex: 'description'}),\r\n XCol.Create({ col: 2, text: 'Group', width: 150, dataIndex: 'containerGroup'}),\r\n XCol.Create({ col: 3, text: 'ISO Type', width: 150, dataIndex: 'isoType'}),\r\n XCol.Create({ col: 4, text: 'Length', width: 150, dataIndex: 'length'}),\r\n XCol.Create({ col: 5, text: 'Height', width: 150, dataIndex: 'height'}),\r\n XCol.Create({ col: 6, text: 'Type', width: 150, dataIndex: 'relatedType: '}),\r\n XCol.Create({ col: 7, text: 'Inactive', width: 150, dataIndex: 'inactive'}),\r\n XCol.Create({ col: 8, text: 'Inactive Date', width: 150, dataIndex: 'inactiveDate'}),\r\n XCol.Create({ col: 9, text: 'Update Date', width: 150, dataIndex: 'updatedBy'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeContainerTypeListItem.prototype.containerType, orderByAscending: false };\r\n\r\n public static formatData(data: CodeContainerTypeListItem[]) {\r\n return data.map((d: CodeContainerTypeListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import _ from 'lodash';\r\nimport {useContext, useEffect, useRef, useState} from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\n\r\nimport PrimaryButton from '../../../../ui/PrimaryButton';\r\nimport IfmsModal from '../../../../ui/IfmsModal';\r\nimport useTableNavigation from '../../../../ui/tables/useTableNavigation';\r\n\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\nimport useFastStorage, {useTypedFastStorage} from '../../../../hooks/useFastStorage';\r\n\r\nimport {ApplicableTableSettings, codesContainerTypeList} from '../../../../tableSettings';\r\n\r\nimport {\r\n NumberedIndicatorRenderer,\r\n TextAlignLeftRenderer,\r\n TextRenderer,\r\n} from '../../../../uiControls/SmartTableRenderers';\r\n\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\nimport SecondaryButton from '../../../../ui/SecondaryButton';\r\nimport InputControlRow from '../../../../ui/layout/InputControlRow';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport Date from '../../../../ui/Date';\r\nimport LeftRightSplit from '../../../../ui/LeftRightSplit';\r\nimport Select from '../../../../ui/Select';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport {now} from '../../../../dateUtils';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\nimport { CodeContainerType } from '../../../../fms.core/CodeContainerType';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { ApiResult, InsertResultsWithData } from '../../../../framework.core/data/ApiResult';\r\nimport useDirtyCheck from '../../../../hooks/useDirtyCheck2';\r\nimport { getSQLInfoList } from '../../../../fms.core/data/TrackingModule';\r\nimport { findSecurityTask, stringsEqualIgnoreCase } from '../../../../util';\r\nimport useSystemSettings from '../../../../hooks/useSystemSettings';\r\nimport { Search } from '../../../../filtering';\r\nimport { CodeContainerTypeListItem } from '../../../../fms.data/models/CodeContainerTypeListItem';\r\nimport GreenButton from '../../../../ui/GreenButton';\r\nimport { TrackableEntity } from '../../../../fms.core/data/ChangeTrackable';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\nimport useGlobalYesNoDialog from '../../../../hooks/useGlobalYesNoDialog';\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport constants from '../../../../constants';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport { Portal } from 'react-portal';\r\n\r\nconst LengthOptions = [\r\n { value: '2', label: '20 Feet' },\r\n { value: '4', label: '40 Feet' },\r\n { value: 'L', label: '45 Feet' },\r\n { value: 'M', label: '48 Feet' },\r\n];\r\n\r\nconst HeightOptions = [\r\n { value: '2', label: '8 feet 6 inches' },\r\n { value: '5', label: '9 feet 6 inches \"Hight Cube\"' },\r\n];\r\n\r\nconst GroupOptions = [\r\n { value: '20', label: '20 feet' },\r\n { value: '40', label: '40 feet' },\r\n { value: '45', label: '45 feet' },\r\n { value: 'HQ', label: 'High Cube' },\r\n];\r\n\r\nconst TypeOptions = [\r\n { value: 'G0', label: 'General Purpose Container' },\r\n { value: 'R0', label: 'Refrigerated Container' },\r\n { value: 'U0', label: 'Open Top Container' },\r\n { value: 'P0', label: 'Platform Container' },\r\n { value: 'T0', label: 'Tank Container' },\r\n { value: 'B0', label: 'Dry Bulk Container' },\r\n];\r\n\r\nfunction RowSpacer() {\r\n return (\r\n
     
    \r\n );\r\n}\r\n\r\ninterface IContainerType {\r\n containerType: string,\r\n description: string,\r\n containerGroup: string,\r\n isoType?: string,\r\n height: string,\r\n length: string,\r\n relatedType: string,\r\n editable: boolean,\r\n inactive: boolean,\r\n u2Date?: string,\r\n updatedBy?: string,\r\n inactiveDate?: string,\r\n inactiveBy?: string,\r\n // Current operation\r\n edit: boolean,\r\n view: boolean,\r\n //\r\n // When editing, container type does not have id\r\n //oldType?: string,\r\n}\r\n\r\nfunction calculateIsoSizeAndType(length:string, height:string, type:string) {\r\n if (!length || !height || !type) {\r\n return '';\r\n }\r\n\r\n return `${length}${height}${type}`;\r\n}\r\n\r\nfunction ContainerTypeDetails({\r\n readonly,\r\n containerType,\r\n onChange\r\n}:{\r\n readonly: boolean,\r\n containerType: CodeContainerType,\r\n onChange: (change: Partial) => void\r\n}) {\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n\r\n \r\n onChange({containerType: e.target.value})} />\r\n \r\n\r\n \r\n onChange({description: e.target.value})} />\r\n \r\n\r\n \r\n \r\n onChange({containerGrp: e.target.value})}\r\n />\r\n
    \r\n }\r\n right={<>}\r\n />\r\n \r\n\r\n \r\n \r\n \r\n \r\n
    \r\n }\r\n right={\r\n
    \r\n \r\n \r\n \r\n
    \r\n }\r\n />\r\n \r\n\r\n
    \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n }\r\n right={<>}\r\n />\r\n \r\n\r\n \r\n \r\n onChange({length: e.target.value, isoCode: calculateIsoSizeAndType(e.target.value, containerType?.height, containerType?.relatedType)})}\r\n />\r\n \r\n \r\n }\r\n right={\r\n
    \r\n \r\n onChange({height: e.target.value, isoCode: calculateIsoSizeAndType(containerType?.length, e.target.value, containerType?.relatedType)})}\r\n />\r\n \r\n
    \r\n }\r\n />\r\n\r\n \r\n \r\n onChange({relatedType: e.target.value, isoCode: calculateIsoSizeAndType(containerType?.length, containerType?.height, e.target.value)})}\r\n onTabNext={() => {\r\n if (containerType.edit) {\r\n document.getElementById('code-description')?.focus();\r\n }\r\n else {\r\n document.getElementById('code-containerType')?.focus();\r\n }\r\n return true;\r\n }}\r\n />\r\n \r\n \r\n }\r\n right={\r\n
    \r\n
    \r\n }\r\n />\r\n \r\n \r\n );\r\n}\r\n\r\nfunction formatElement(data:any, index:number) {\r\n return {...data, indicator: index + 1};\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data.map((d, i) => formatElement(d, i));\r\n}\r\n\r\nfunction ContainerTypeComponent() {\r\n useFunction({invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n }});\r\n useFunctionKeys({ onEsc: cancelOperation, onSave: handleSaveAndClose });\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const { selectTableRow, tableNavigationCleanup } = useTableNavigation('codes-container-type-list', onRowSelect, onRowDoubleSelect, ['containerType'], false, false, false);\r\n\r\n const tableRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n const [, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, dataRef] = useFastStorage(`ifms-referenceFiles-container-type-list`, []);\r\n const [containerType, _setContainerType, removeContainerTypeFromStorage, containerTypeRef] = useTypedFastStorage(`ifms-referenceFiles-container-type-editable`, null);\r\n const { setCleanState, dirtyCleanup } = useDirtyCheck(`ifms-referenceFiles-container-type-editable`, ['edit', 'view']);\r\n const systemSettings = useSystemSettings();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeContainerType);\r\n const [selectedRow, setSelectedRow] = useState(-1);\r\n\r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelectorAll('[class^=\"ReactModal__Content\"]');\r\n const modalsWithoutSaveBtn = Array.from(modals).filter(modal => { return !modal.contains(saveBtn); });\r\n if (modalsWithoutSaveBtn.length <= 0)\r\n saveBtn.click();\r\n }\r\n }\r\n\r\n function setContainerType(c:any, skipDirty:boolean = false) {\r\n if (!skipDirty) {\r\n setHasChanges(true);\r\n }\r\n _setContainerType(c);\r\n }\r\n\r\n const tableHeight = 520;\r\n\r\n function setData(d:Array) {\r\n removeData();\r\n _setData(d);\r\n }\r\n\r\n async function fetchData(api: any) {\r\n setLoading(true);\r\n\r\n //\r\n setHasChanges(false);\r\n setLoading(false);\r\n }\r\n\r\n useEffect(() => {\r\n async function executeAsyncFunc() {\r\n if (data.length === 0)\r\n await reload();\r\n }\r\n executeAsyncFunc();\r\n return () => {\r\n removeData();\r\n tableNavigationCleanup();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n if (dataRef.current?.length > 0 && loading === false) {\r\n selectTableRow(0);\r\n onRowSelect(0);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [loading]\r\n );\r\n\r\n async function onRowSelect(rowIndex: number){\r\n setSelectedRow(!isNaN(rowIndex) ? rowIndex : -1 );\r\n }\r\n\r\n\r\n async function onRowDoubleSelect(rowIndex:number) {\r\n if (!dataRef || !dataRef.current) {\r\n return;\r\n }\r\n if (rowIndex >= 0 && rowIndex < dataRef.current.length && _.isEmpty(containerType) //&& dataRef.current[rowIndex].editable\r\n ) {\r\n // = await appContext.api.getJobDetail(JobNames.Container,\r\n { containerType: dataRef.current[rowIndex].containerType});\r\n if(!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

    );\r\n return;\r\n }\r\n \r\n const objContainer = { ...apiResult.result, edit: true, view: true, editIndex: rowIndex};\r\n setCleanState(objContainer);\r\n const tEntity = new CodeContainerType(objContainer);\r\n tEntity.trackable = true;\r\n setContainerType(tEntity, true);\r\n //pt220819>\r\n }\r\n }\r\n\r\n async function reload() {\r\n await fetchData(appContext.api);\r\n }\r\n\r\n function selectContainerTypeForNew() {\r\n //clearTableSelection();\r\n \r\n const newCodeModel = new CodeContainerType(); \r\n setContainerType(newCodeModel, false);\r\n setCleanState(newCodeModel);\r\n \r\n setContainerType({\r\n edit : false,\r\n view: false,\r\n description: '',\r\n editable: true,\r\n containerGrp: GroupOptions[0].value,\r\n height: HeightOptions[0].value,\r\n length: LengthOptions[0].value,\r\n type: '',\r\n relatedType: TypeOptions[0].value,\r\n isoCode: calculateIsoSizeAndType(LengthOptions[0].value, HeightOptions[0].value, TypeOptions[0].value)\r\n //inactive: false\r\n });\r\n\r\n if (containerTypeRef.current) {\r\n containerTypeRef.current.trackable = true;\r\n }\r\n }\r\n\r\n function cancelOperation() {\r\n setHasChanges(false);\r\n\r\n //clearTableSelection();\r\n removeContainerTypeFromStorage();\r\n return true;\r\n }\r\n\r\n async function save() {\r\n if (!containerType) {\r\n return;\r\n }\r\n\r\n if (!containerType.containerType) {\r\n await showGlobalOkDialog(

    Please check following information. (Specify the missing entries.)\r\n
    \r\n * Must Enter Container Type\r\n

    );\r\n return;\r\n }\r\n\r\n interface CntrCheckParam {\r\n u2Date: string, // org u2Date in ISO format\r\n containerType: string\r\n }\r\n\r\n const CntrCheckData:CntrCheckParam = {\r\n u2Date: containerType.u2Date ?? '',\r\n containerType : containerType.containerType\r\n };\r\n\r\n const checkData:CntrCheckParam = await appContext.api.chkdupContainer(\r\n containerType.containerType, CntrCheckData\r\n );\r\n\r\n if (checkData && checkData.containerType === \"error\" && !containerType.edit) {\r\n await showGlobalOkDialog(

    * Duplicate Container Type *

    );\r\n return;\r\n }\r\n \r\n const mainChange:Partial = {};\r\n mainChange.u2Date = now();\r\n mainChange.updatedBy = appContext.user?.id ?? '';\r\n setContainerType(mainChange)\r\n\r\n // const tEntity = new CodeContainerType(containerType);\r\n // tEntity.trackable = true;\r\n // tEntity.u2Date = now();\r\n // tEntity.updatedBy = appContext.user?.id ?? '';\r\n // setContainerType(tEntity, false);\r\n\r\n if(!containerTypeRef.current?.isDirty) {\r\n cancelOperation();\r\n await reload();\r\n return;\r\n }\r\n\r\n const sqlInfoList = getSQLInfoList(containerType as TrackableEntity);\r\n // update @ConType of t_aotherinfo\r\n const sqlInfo = sqlInfoList.find(x => stringsEqualIgnoreCase(x.tableName, 't_aotherinfo'));\r\n if(sqlInfo) {\r\n sqlInfo.whereFields.forEach(f => {\r\n if(f.value === '@ConType')\r\n f.value = containerType.containerType;\r\n });\r\n }\r\n\r\n const apiResult:ApiResult = await appContext.api.saveJobDetail(\r\n JobNames.Container,\r\n sqlInfoList\r\n );\r\n\r\n if(!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.SAVE_ERROR_MESSAGE}

    );\r\n return;\r\n }\r\n\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n \r\n cancelOperation();\r\n dirtyCleanup();\r\n await reload();\r\n //pt220819>\r\n }\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n customTableId: 'codes-container-type-list',\r\n ref: tableRef,\r\n selectable: true,\r\n tableName: 'codesContainerTypeList',\r\n ...codesContainerTypeList,\r\n height: `${tableHeight}px`,\r\n data: (data ?? []).map((x:any) => ({...x})),\r\n rowRenderers: [\r\n { accessor: 'indicator', Cell: NumberedIndicatorRenderer },\r\n { accessor: 'containerType', Cell: TextAlignLeftRenderer },\r\n { accessor: 'description', Cell: TextAlignLeftRenderer },\r\n { accessor: 'containerGroup', Cell: TextRenderer },\r\n { accessor: 'isoType', Cell: TextRenderer },\r\n // { accessor: 'length', Cell: TextRenderer },\r\n // { accessor: 'height', Cell: TextRenderer },\r\n // { accessor: 'relatedType', Cell: TextRenderer },\r\n // { accessor: 'inactive', Cell: NullableCheckboxIconRenderer },\r\n // { accessor: 'inactiveDate', Cell: DateRenderer },\r\n // { accessor: 'u2Date', Cell: DateTimeRenderer },\r\n ],\r\n };\r\n\r\n //const newEnabled = containerType === null;\r\n const hasSelectedRow = !isNaN(selectedRow) && !(selectedRow < 0);\r\n const canBeAdd = listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n \r\n async function selectContainerTypeForView() {\r\n //clearTableSelection();\r\n await setContainerTypeDetail(true);\r\n }\r\n\r\n async function selectContainerTypeForEdit() {\r\n //clearTableSelection();\r\n await setContainerTypeDetail(false);\r\n }\r\n\r\n async function selectContainerTypeForDelete() {\r\n const doConfirm = await showGlobalYesNoDialog(\r\n
    \r\n

    Confirm to Delete?

    \r\n
    \r\n , false, 0, true, 'warning');\r\n if (doConfirm) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.Container, { id: dataRef.current[selectedRow].containerType, pimsLinkId: 0 });\r\n if (apiResult && apiResult.success) {\r\n await reload();\r\n } else\r\n showGlobalOkDialog(

    {\"Cannot delete\"}

    );\r\n } else\r\n return;\r\n }\r\n\r\n async function setContainerTypeDetail(isView: boolean) {\r\n if (selectedRow >= 0 && selectedRow < dataRef.current.length && _.isEmpty(containerType)) {\r\n const apiResult: ApiResult = await appContext.api.getJobDetail(JobNames.Container,\r\n { containerType: dataRef.current[selectedRow].containerType });\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

    );\r\n return;\r\n }\r\n const objContainer = { ...apiResult.result, edit: true, view: isView, editIndex: selectedRow };\r\n setCleanState(objContainer);\r\n const tEntity = new CodeContainerType(objContainer);\r\n tEntity.trackable = true;\r\n setContainerType(tEntity, true);\r\n }\r\n }\r\n\r\n const containerCount = data ? data.length : 0;\r\n return (\r\n
    \r\n {/* \r\n

    Ocean  Container Type

    \r\n
    */}\r\n\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n ** Total Number Container Size: {containerCount} **\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n New  \r\n View  \r\n Edit  \r\n Delete \r\n { await reload() }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n \r\n\r\n \r\n {!!containerType &&\r\n
    \r\n
    \r\n
    \r\n
    \r\n {containerType.view && listSec?.grantEdit &&\r\n setContainerType({ view: false }, true)}>Edit\r\n }\r\n {!containerType.view &&\r\n Save\r\n }\r\n  \r\n
      \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default ContainerTypeComponent;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeMoveTypeListItem extends SearchModelBase {\r\n moveType: string = '';\r\n inactive: boolean|null = null;\r\n inactiveAlt: boolean = false;\r\n id: number = 0;\r\n description: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Move Type', width: 150, dataIndex: 'moveType', noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 1, text: 'Description', width: 100, dataIndex: 'description'}),\r\n XCol.Create({ col: 2, text: 'Inactive', width: 100, dataIndex: 'inactive', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeMoveTypeListItem.prototype.moveType, orderByAscending: true };\r\n\r\n public static formatData(data: CodeMoveTypeListItem[]) {\r\n return data.map((d: CodeMoveTypeListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import _ from 'lodash';\r\nimport {useContext, useEffect, useRef, useState} from 'react';\r\nimport {faSync} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\n\r\nimport {ApplicableTableSettings, codesMoveTypeList} from '../../../../tableSettings';\r\n\r\nimport useFastStorage from '../../../../hooks/useFastStorage';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\n\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport { Portal } from 'react-portal';\r\nimport useSystemSettings from '../../../../hooks/useSystemSettings';\r\nimport { Search } from '../../../../filtering';\r\nimport { CodeMoveTypeListItem } from '../../../../fms.data/models/CodeMoveTypeListItem';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { SQLType } from '../../../../framework.core/data/SQLInfo';\r\nimport { ApiResult, InsertResult } from '../../../../framework.core/data/ApiResult';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport EditableTable, { CellData, EditableTableHandle, TableCellTypes } from '../../../../ui/tables/editing/EditableTable';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport GreenButton from '../../../../ui/GreenButton';\r\nimport { checkTabIsDirty } from '../../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../../util';\r\n\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport constants from '../../../../constants';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\n\r\nfunction MoveTypeRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n changeLineItem(row.index, {moveType: e.target.value, isUpdate:true })} />\r\n );\r\n}\r\n\r\nfunction DescriptionRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n changeLineItem(row.index, {description: e.target.value, isUpdate:true })} \r\n onTabNext={() => {\r\n const focusElement = document.getElementById(`moveType-${row.index}`);\r\n if (focusElement) {\r\n focusElement.focus();\r\n return true;\r\n }\r\n return false;\r\n }}/>\r\n );\r\n}\r\n\r\nfunction formatElement(data:any) {\r\n const result = new CodeMoveTypeListItem();\r\n result.id = data.id;\r\n result.moveType = data.moveType;\r\n result.description = data.description;\r\n result.inactive = false;\r\n\r\n return result;\r\n}\r\n\r\nfunction formatData(data: Array) {\r\n return data.map(d => formatElement(d));\r\n}\r\n\r\nfunction MoveTypes() {\r\n useFunction({invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n //ifmsReferenceFilesCancel: () => {},\r\n }});\r\n useFunctionKeys({onSave: handleSaveAndClose});\r\n \r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const tableRef = useRef(null);\r\n const masterTableRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n const [allData, setAllData] = useState(Array());\r\n const [hasChanges, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, /*dataRef*/] = useFastStorage(`ifms-referenceFiles-movetype-list`, []);\r\n\r\n const savedDataRef = useRef>([]);\r\n const oriData = useRef([]);\r\n // const addingToTheFirstLine = useRef(false);\r\n\r\n const tableHeight = 520;\r\n const systemSettings = useSystemSettings();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeMoveType);\r\n const [focusFirstCell, setFocusFirstCell] = useState(true);\r\n\r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if (!modals)\r\n saveBtn.click();\r\n }\r\n }\r\n\r\n function setData(d:Array, callByFetchData: boolean = false) {\r\n setFocusFirstCell(callByFetchData);\r\n _setData(d, null, { forceClone: callByFetchData });\r\n setHasChanges(checkTabIsDirty(CodeMoveTypeListItem, oriData.current, d));\r\n }\r\n\r\n async function fetchData(api:any) {\r\n setLoading(true);\r\n //\r\n\r\n savedDataRef.current = apiResult && apiResult.entities ? apiResult.entities : [];\r\n if(apiResultforAll && apiResultforAll.entities){\r\n setAllData(apiResultforAll.entities.map((a: CodeMoveTypeListItem) => a.moveType.toLowerCase()));\r\n }\r\n \r\n setFocusFirstCell(false);\r\n setLoading(false);\r\n //setHasChanges(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (data.length === 0)\r\n reload();\r\n else {\r\n oriData.current = _.cloneDeep(data);\r\n savedDataRef.current = _.cloneDeep(data);\r\n }\r\n return () => {\r\n removeData();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function reload() {\r\n fetchData(appContext.api);\r\n }\r\n\r\n async function cancelOperation(){\r\n setHasChanges(false);\r\n removeData();\r\n return true;\r\n }\r\n\r\n function getIndexOfFirstInvalidCell(rowIndex: number):number|undefined {\r\n if (!data) {\r\n return undefined;\r\n }\r\n\r\n if (!data[rowIndex].moveType) {\r\n return 1;\r\n }\r\n if (allData) { //기존데이터 목록\r\n const newData = [...allData];\r\n if(newData.filter(x => x === data[rowIndex].moveType.toLowerCase()).length === 0) // 현재 목록에 없음\r\n {\r\n newData.splice(rowIndex, 1, data[rowIndex].moveType.toLowerCase());\r\n setAllData(newData);\r\n return undefined;\r\n }else{\r\n if(newData[rowIndex] === data[rowIndex].moveType.toLowerCase()) return undefined;\r\n else{\r\n showGlobalOkDialog(

    '{data[rowIndex].moveType}' is a duplicate value.

    );\r\n return 1;\r\n }\r\n }\r\n } \r\n else {\r\n const newData = [data[rowIndex].moveType.toLowerCase()];\r\n setAllData(newData);\r\n }\r\n return undefined;\r\n }\r\n\r\n function deleteRow(index: number): boolean {\r\n if (!data) {\r\n return false;\r\n }\r\n\r\n const element = data[index];\r\n\r\n // const wasNew = element.id <= 0;\r\n\r\n if (element.id > 0) {\r\n // setLoading(true);\r\n // const apiResult:ApiResult = await appContext.api.saveListItem('CodeMoveTypeListItem', SQLType.Delete, _.omit(data[index], ['isNew']));\r\n\r\n // setLoading(false);\r\n // window.console.log(apiResult);\r\n\r\n let deleteRow = savedDataRef.current.find(x => x.id === element.id);\r\n if (deleteRow) {\r\n deleteRow.isDelete = true;\r\n //setHasChanges(true);\r\n }\r\n }\r\n\r\n data.splice(index, 1);\r\n\r\n setData(data);\r\n\r\n const tempData = data.map((a: CodeMoveTypeListItem) => a.moveType.toLowerCase());\r\n const newData = allData.splice(0, tempData.length, tempData);\r\n setAllData(newData);\r\n\r\n return true;\r\n }\r\n\r\n function applyToLineItem(rowIndex: number, change: Partial|null) {\r\n if (!change || !data) {\r\n return;\r\n }\r\n const checkData = data[rowIndex];\r\n if (!change.isNew && (change.moveType !== checkData.moveType || change.description !== checkData.description)) {\r\n _.merge(data[rowIndex], {..._.omit(change, ['id']), hasBeenChanged: true});\r\n //setHasChanges(true);\r\n setData(data);\r\n }\r\n }\r\n\r\n // function addingLineToFirstLine(){\r\n // addingToTheFirstLine.current = true;\r\n // masterTableRef.current?.add();\r\n // }\r\n\r\n function addLineItem() {\r\n const newItem = new CodeMoveTypeListItem();\r\n newItem.moveType = '';\r\n newItem.description = '';\r\n newItem.id = 0;\r\n newItem.inactive = false;\r\n newItem.isNew = true;\r\n\r\n return {\r\n setDataFunc: (list: any) => setData(list),\r\n curListData: data,\r\n newData: newItem\r\n };\r\n }\r\n\r\n async function duplicateCell(checkData: any) {\r\n if (!data) {\r\n return;\r\n }\r\n\r\n let duplicateFieldText = '';\r\n\r\n let isDuplicate = false;\r\n let insList = checkData.filter((x: any) => x.id <= 0);\r\n let chgList = checkData.filter((x: any) => x.id > 0 && x.hasBeenChanged === true);\r\n let focusRow = -1;\r\n\r\n if (insList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < insList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (insList[i].moveType.toUpperCase() === data[j].moveType.toUpperCase()) {\r\n if (count === 0) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${insList[i].moveType}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (chgList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < chgList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (chgList[i].moveType.toUpperCase() === data[j].moveType.toUpperCase()) {\r\n if (data[j].id > 0 && data[j].hasBeenChanged === true && tempRow === -1) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${chgList[i].moveType}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (!isDuplicate) {\r\n const apiResult = await appContext.api.checkDuplicatedKeys(JobNames.MoveType, 'CodeMoveTypeListItem', insList, chgList);\r\n if (apiResult && apiResult.success && apiResult.message) {\r\n duplicateFieldText = `${apiResult.message}`;\r\n isDuplicate = true;\r\n } else if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog('Could not check duplication.\\r\\nPlease try later.');\r\n return true;\r\n }\r\n }\r\n else\r\n await showGlobalOkDialog(`${duplicateFieldText}Please try after correcting duplication.`);\r\n\r\n return isDuplicate;\r\n }\r\n\r\n async function save() {\r\n if (!data) {\r\n return;\r\n }\r\n\r\n let validData = data.filter((x:any) => x.moveType);\r\n\r\n let errMsg = '';\r\n const dataToSave = validData.filter((x: any) => x.id <= 0 || x.hasBeenChanged === true); // new data is always last so index check works\r\n const dataToDelete = savedDataRef.current.filter((x) => x.isDelete);\r\n if(dataToSave.length === 0 && dataToDelete.length === 0) {\r\n if (hasChanges) reload();\r\n return;\r\n }\r\n setLoading(true);\r\n\r\n for (let i = 0; i < dataToDelete.length; ++i) {\r\n const s = dataToDelete[i];\r\n const apiResult:ApiResult = await appContext.api.saveListItem('CodeMoveTypeListItem', \r\n SQLType.Delete, \r\n _.omit(s, ['isDelete']));\r\n\r\n if(!apiResult || !apiResult.success)\r\n errMsg = apiResult?.message ?? constants.SAVE_ERROR_MESSAGE;\r\n }\r\n\r\n\r\n if (dataToSave.length > 0) {\r\n const isDuplicate = await duplicateCell(dataToSave);\r\n if(isDuplicate){\r\n setLoading(false);\r\n return;\r\n }\r\n const cidData = dataToSave.map((a: CodeMoveTypeListItem) => a.cid?.toLowerCase()) as Array;\r\n\r\n const secondSave = dataToSave.filter((x: CodeMoveTypeListItem) => cidData.includes(x.moveType.toLowerCase()));\r\n const firstSave = dataToSave.filter((x: CodeMoveTypeListItem) => !secondSave.includes(x));\r\n\r\n if (firstSave.length > 0) {\r\n const apiResult = await appContext.api.saveList('CodeMoveTypeListItem', firstSave);\r\n if (!apiResult || !apiResult.success) {\r\n errMsg += (errMsg ? '\\n' : '') + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n }\r\n else {\r\n firstSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.moveType === x.moveType);\r\n if (index >= 0) {\r\n data[index].cid = x.moveType;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n delete data[index].isNew;\r\n }\r\n })\r\n }\r\n }\r\n\r\n if (secondSave.length > 0) {\r\n const apiResult = await appContext.api.saveList('CodeMoveTypeListItem', secondSave);\r\n if (!apiResult || !apiResult.success) {\r\n errMsg += (errMsg ? '\\n' : '') + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n }\r\n else {\r\n secondSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.moveType === x.moveType);\r\n if (index >= 0) {\r\n data[index].cid = x.moveType;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n delete data[index].isNew;\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n if(errMsg) {\r\n await showGlobalOkDialog(

    {errMsg}

    );\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n // setData(data);\r\n // savedDataRef.current = _.cloneDeep(data);\r\n // oriData.current = _.cloneDeep(data);\r\n\r\n // setLoading(false);\r\n // setHasChanges(false);\r\n reload();\r\n\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n }\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n customTableId: 'codes-movetype-list',\r\n ref: tableRef,\r\n tableName: 'moveTypeList',\r\n ...codesMoveTypeList,\r\n height: `${tableHeight}px`,\r\n data: (data ?? []).map((x:any) => ({...x, changeLineItem: applyToLineItem})),\r\n rowRenderers: [\r\n { accessor: 'indicator' },\r\n { accessor: 'moveType', EditCell: MoveTypeRenderer },\r\n { accessor: 'description', EditCell: DescriptionRenderer },\r\n ],\r\n getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n if (accessor === 'moveType')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].moveType };\r\n else if (accessor === 'description')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].description };\r\n else\r\n return undefined;\r\n },\r\n isCellLock: (accessor: string, rowData: any): boolean => {\r\n if(!(listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel))\r\n return true\r\n else\r\n return false;\r\n },\r\n useEditControls: (listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel),\r\n };\r\n\r\n //const moveTypeCount = data ? data.length : 0;\r\n\r\n return (\r\n
    \r\n {/* \r\n

    Ocean  Move Type

    \r\n
    */}\r\n\r\n \r\n
    \r\n
    \r\n Save\r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n \r\n \r\n \r\n
    */}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n {// { addingLineToFirstLine() }}>  Add Line   \r\n }\r\n { reload() }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n listSec?.grantDel ?? false}\r\n />\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default MoveTypes;","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeScheduleDKListItem extends SearchModelBase {\r\n code: string = '';\r\n portName: string = '';\r\n id: number = 0;\r\n cy: number = 0;\r\n cyName: string = '';\r\n cfs: number = 0;\r\n cfsName: string = '';\r\n\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Code', width: 100, dataIndex: 'code'}),\r\n XCol.Create({ col: 1, text: 'Port Name', width: 500, dataIndex: 'portName'}),\r\n XCol.Create({ col: 2, text: 'CY Location', width: 500, dataIndex: 'cyName'}),\r\n XCol.Create({ col: 3, text: 'CFS Location', width: 500, dataIndex: 'cfsName'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeScheduleDKListItem.prototype.code, orderByAscending: true };\r\n\r\n public static formatData(data: CodeScheduleDKListItem[]) {\r\n return data.map((d: CodeScheduleDKListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import _ from 'lodash';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nimport useTableNavigation from '../../../../ui/tables/useTableNavigation';\r\n\r\nimport { ApplicableTableSettings, codesPortCodeList } from '../../../../tableSettings';\r\n\r\nimport {\r\n NumberedIndicatorRenderer,\r\n TextAlignLeftRenderer,\r\n} from '../../../../uiControls/SmartTableRenderers';\r\n\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\n\r\nimport useFastStorage, { useTypedFastStorage } from '../../../../hooks/useFastStorage';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\n\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport SecondaryButton from '../../../../ui/SecondaryButton';\r\nimport CyLocationLookupField from '../../../../uiControls/lookup/CyLocationLookupField';\r\nimport { Search, initialSearch, isFilterObjectEmpty } from '../../../../filtering';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { CodeScheduleDKListItem } from '../../../../fms.data/models/CodeScheduleDKListItem';\r\nimport { ApiResult, InsertResult } from '../../../../framework.core/data/ApiResult';\r\nimport { SQLType } from '../../../../framework.core/data/SQLInfo';\r\nimport { CheckLookup } from '../../../../fms.data/lookup/CheckLookup';\r\nimport { TextValue } from '../../../../framework.core/data/TextValue';\r\nimport InlineInputControlRow from '../../../../ui/layout/InlineInputControlRow';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport IfmsModal from '../../../../ui/IfmsModal';\r\nimport useGlobalYesNoDialog from '../../../../hooks/useGlobalYesNoDialog';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\nimport { sortingListData } from '../../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../../util';\r\nimport useFilterBar from '../../../../hooks/useFilterBar';\r\nimport { ListOrderBy } from \"../../../common/AbstractListView\";\r\nimport postal from 'postal';\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport constants from '../../../../constants';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport { Portal } from 'react-portal';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\n\r\nfunction SdpDetails({\r\n readonly,\r\n sdp,\r\n onChange\r\n}:{\r\n readonly: boolean,\r\n sdp: CodeScheduleDKListItem,\r\n onChange: (change: Partial) => void\r\n}) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n onChange({code: e.target.value})} />\r\n
    \r\n
    \r\n\r\n \r\n onChange({portName: e.target.value})} />\r\n \r\n
    \r\n\r\n
    \r\n \r\n onChange({\r\n cy: 0,\r\n cyName: cyName ?? '',\r\n })}\r\n onSelect={cyLocation => {\r\n onChange({\r\n cy: cyLocation.id,\r\n cyName: cyLocation.shortName ?? '',\r\n })\r\n }}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n cfs: 0,\r\n cfsName: cyName ?? '',\r\n })}\r\n onSelect={cyLocation => {\r\n onChange({\r\n cfs: cyLocation.id,\r\n cfsName: cyLocation.shortName ?? '',\r\n })\r\n }}\r\n />\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\n// let inlineElement:ISchDkPort = {};\r\n\r\n// function ActionRenderer({ data, row }:any) {\r\n// return (\r\n//
    \r\n// data[row.index].isNew ? data[row.index].onDelete() : data[row.index].requestOperationCancel()}\r\n// >\r\n// \r\n//   \r\n// data[row.index].onSave()}\r\n// >\r\n// \r\n//   \r\n// {!data[row.index].isNew &&\r\n// <>\r\n// data[row.index].onDelete()}\r\n// >\r\n// \r\n// \r\n// \r\n// }\r\n//
    \r\n// );\r\n// }\r\n\r\n// function CodeRenderer({data, row, cell}:any) {\r\n// useEffect(() => {\r\n// const focusElement = document.getElementById('ifms-sdk-name') as HTMLInputElement;\r\n// if (focusElement) {\r\n// focusElement.focus();\r\n// focusElement.select();\r\n// }\r\n// },\r\n// // eslint-disable-next-line react-hooks/exhaustive-deps\r\n// []\r\n// );\r\n\r\n// if (data[row.index].editIndex !== row.index) {\r\n// return ;\r\n// } else {\r\n// return (\r\n//
    \r\n// ) => {\r\n// inlineElement.code = e.target.value;\r\n// data[row.index].setHasChanges(true);\r\n// }} />\r\n//
    \r\n// );\r\n// }\r\n// }\r\n\r\n\r\n// function PortNameRenderer({data, row, cell}:any) {\r\n// if (data[row.index].editIndex !== row.index) {\r\n// return ;\r\n// } else {\r\n// return (\r\n//
    \r\n// ) => {\r\n// inlineElement.portName = e.target.value;\r\n// data[row.index].setHasChanges(true);\r\n// }} />\r\n//
    \r\n// );\r\n// }\r\n// }\r\n\r\n\r\n// function CyRenderer({data, row, cell}:any) {\r\n// if (data[row.index].editIndex !== row.index) {\r\n// return ;\r\n// } else {\r\n// return (\r\n//
    \r\n// {\r\n// inlineElement.cy = 0;\r\n// inlineElement.cyName = cyName ?? '';\r\n// }}\r\n// onSelect={cyLocation => {\r\n// if(inlineElement.cy !== cyLocation.id) {\r\n// data[row.index].setHasChanges(true);\r\n// }\r\n// inlineElement.cy = cyLocation.id;\r\n// inlineElement.cyName = cyLocation.shortName ?? '';\r\n// }}\r\n// />\r\n//
    \r\n// );\r\n// }\r\n// }\r\n\r\n// function CfsRenderer({data, row, cell}:any) {\r\n// if (data[row.index].editIndex !== row.index) {\r\n// return ;\r\n// } else {\r\n// return (\r\n//
    \r\n// {\r\n// inlineElement.cfs = 0;\r\n// inlineElement.cfsName = cyName ?? '';\r\n// }}\r\n// onSelect={cfsLocation => {\r\n// if(inlineElement.cfs !== cfsLocation.id) {\r\n// data[row.index].setHasChanges(true);\r\n// }\r\n// inlineElement.cfs = cfsLocation.id;\r\n// inlineElement.cfsName = cfsLocation.shortName ?? '';\r\n// }}\r\n// />\r\n//
    \r\n// );\r\n// }\r\n// }\r\n\r\nfunction formatElement(data:any) {\r\n return data;\r\n}\r\n\r\nfunction formatData(data: Array) {\r\n return data.map(d => formatElement(d));\r\n}\r\n\r\nfunction ScheduleDkPort({\r\n componentIndex\r\n}: {\r\n componentIndex: number\r\n}) {\r\n useFunction({invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n }});\r\n useFunctionKeys({onEsc: cancelOperation});\r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const {selectTableRow, tableNavigationCleanup } = useTableNavigation('codes-sdk-list', onRowSelect, onRowDoubleSelect, ['code'], false, false, false);\r\n\r\n const tableRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n const [hasChanges, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, dataRef] = useFastStorage(`ifms-referenceFiles-sdk-list`, []);\r\n const [sdp, _setSdp, removeSdpFromStorage] = useTypedFastStorage(`ifms-referenceFiles-sdk-editable`, null);\r\n const [orderBy, setOrderBy] = useFastStorage(`ifms-referenceFiles-sdk-orderby`, {\r\n orderBy: 'code',\r\n orderByAscending: true,\r\n //general1: 'Code',\r\n //pageSize: systemSettings.defaultPageSize,\r\n });\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeOceanPort);\r\n const [selectedRow, setSelectedRow] = useState(-1);\r\n const tableHeight = 520;\r\n const listItemType = 'CodeScheduleDKListItem';\r\n\r\n //////////////////////////////////////////////////\r\n\r\n const { FilterButton, search } = useFilterBar(\r\n codesPortCodeList,\r\n undefined,\r\n getDefaultOrderBy,\r\n String(componentIndex),\r\n undefined,\r\n );\r\n\r\n function getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'code',\r\n orderByAscending: true,\r\n };\r\n }\r\n\r\n ///////////////////////////////////////////////////\r\n\r\n\r\n function setSdp(c:any) {\r\n setHasChanges(true);\r\n _setSdp(c);\r\n }\r\n\r\n function setData(d:Array) {\r\n removeData();\r\n _setData(d);\r\n }\r\n\r\n async function fetchData(api:any, search:Search) {\r\n setLoading(true);\r\n //\r\n\r\n const fetchedTableData = formatData(apiResult && apiResult.entities ? apiResult.entities : []);\r\n sortingListData(CodeScheduleDKListItem, fetchedTableData , setData, orderBy);\r\n setLoading(false);\r\n setHasChanges(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (isFilterObjectEmpty(search) && search.version === 1) reload(false);\r\n \r\n return () => {\r\n removeData();\r\n tableNavigationCleanup();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n if (loading || (isFilterObjectEmpty(search) && search.version === 1)) {\r\n return;\r\n }\r\n fetchData(appContext.api, search);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [search]\r\n );\r\n\r\n useEffect(() => {\r\n if (dataRef.current?.length > 0 && !loading) {\r\n selectTableRow(0, true);\r\n onRowSelect(0);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [loading]\r\n );\r\n\r\n // async function reload(generalText:string = '') {\r\n // setOrderBy({\r\n // orderBy: 'code',\r\n // orderByAscending: true,\r\n // generalText1: generalText,\r\n // pageSize: systemSettings.defaultPageSize,\r\n // })\r\n\r\n // await fetchData(appContext.api, orderBy);\r\n // }\r\n\r\n async function reload(clearAll:boolean = true) {\r\n const searchValue = clearAll ? initialSearch : search;\r\n await fetchData(appContext.api, searchValue);\r\n }\r\n\r\n function onHeaderClick(header:any) {\r\n if (header && header.id !== 'indicator') {\r\n if (header.id === orderBy.orderBy) {\r\n setOrderBy({orderByAscending: !orderBy.orderByAscending });\r\n } else {\r\n setOrderBy({orderBy: header.id, orderByAscending: true});\r\n }\r\n }\r\n sortingListData(CodeScheduleDKListItem, data, setData, orderBy);\r\n }\r\n\r\n function onRowDoubleSelect(rowIndex:number) {\r\n if (!dataRef || !dataRef.current) {\r\n return;\r\n }\r\n if (rowIndex >= 0 && rowIndex < dataRef.current.length && _.isEmpty(sdp)) {\r\n const objContainer = { ...dataRef.current[rowIndex], edit: true, view: true, editIndex: rowIndex};\r\n setSdp(objContainer);\r\n }\r\n }\r\n\r\n function onRowSelect(rowIndex:number) {\r\n setSelectedRow(!isNaN(rowIndex) ? rowIndex : -1 );\r\n }\r\n\r\n function selectForNew() {\r\n // clearTableSelection();\r\n \r\n const newCodeModel = new CodeScheduleDKListItem(); \r\n setSdp(newCodeModel);\r\n \r\n setSdp({\r\n edit : false,\r\n view: false,\r\n isNew: true,\r\n code: '',\r\n portName: '',\r\n id: 0,\r\n cy: 0,\r\n cyName: '',\r\n cfs: 0,\r\n cfsName: '',\r\n });\r\n }\r\n\r\n function selectForEdit(){\r\n if (selectedRow >= 0 && selectedRow < dataRef.current.length && _.isEmpty(sdp)) {\r\n const objContainer = { ...dataRef.current[selectedRow], edit: true, view: false, editIndex: selectedRow};\r\n setSdp(objContainer);\r\n \r\n }\r\n }\r\n\r\n function selectForView(){\r\n if (selectedRow >= 0 && selectedRow < dataRef.current.length && _.isEmpty(sdp)) {\r\n const objContainer = { ...dataRef.current[selectedRow], edit: true, view: true, editIndex: selectedRow};\r\n setSdp(objContainer);\r\n }\r\n }\r\n\r\n async function selectForDelete(){\r\n const doConfirm = await showGlobalYesNoDialog(\r\n
    \r\n

    Confirm to Delete?

    \r\n
    \r\n , false, 0, true, 'warning');\r\n if(doConfirm){\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.OceanPort, { id:dataRef.current[selectedRow].id , pimsLinkId: 0 });\r\n if (apiResult && apiResult.success) {\r\n await reload(false);\r\n } else\r\n showGlobalOkDialog(

    {\"Cannot delete\"}

    );\r\n } else\r\n return;\r\n }\r\n\r\n async function deleteEntity() {\r\n if (!sdp) {\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(

    Are you sure you want to delete?

    , false, 0, true, 'warning');\r\n if (!doDelete) {\r\n return;\r\n }\r\n\r\n // = await appContext.api.saveListItem(listItemType,\r\n SQLType.Delete, _.omit(sdp, ['isNew']));\r\n if(!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.SAVE_ERROR_MESSAGE}

    );\r\n return;\r\n }\r\n //pt220819>\r\n\r\n cancelOperation();\r\n await reload(false);\r\n }\r\n\r\n function cancelOperation() {\r\n const filterNode = document.getElementById('ifms-list-screen-filter');\r\n const channel = postal.channel('ifms-filter');\r\n\r\n if (!filterNode) {\r\n setHasChanges(false);\r\n removeSdpFromStorage();\r\n } else {\r\n channel.publish('ifms-filter.dismiss');\r\n }\r\n return true;\r\n }\r\n\r\n async function checkDataAsync(): Promise{\r\n if(!sdp) return false;\r\n\r\n if(sdp.code?.length === 0){\r\n await showGlobalOkDialog(

    {\" * Empty Code\"}

    );\r\n return false;\r\n }\r\n else {\r\n //if(inlineElement.isNew || checkPropDirty(inlineElement as TrackableEntity, 'code')){\r\n if(sdp.isNew || hasChanges ){\r\n if (await appContext.api.checkupDuplicateFieldValueIsDuplicate(\"T_CODEOCEANPORT\", \"F_Code\", sdp.code, 'F_Id', sdp.id)) {\r\n await showGlobalOkDialog(

    * Duplicate Number in [Code]

    );\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n const comLks: CheckLookup[] = [];\r\n\r\n comLks.push(new CheckLookup({\r\n labelName: \"CY Location\",\r\n textValue: new TextValue({Text: sdp.cyName, IntValue: sdp.cy})\r\n }))\r\n comLks.push(new CheckLookup({\r\n labelName: \"CFS Location\",\r\n textValue: new TextValue({Text: sdp.cfsName, IntValue: sdp.cfs})\r\n }))\r\n\r\n const tempErrMsg = await appContext.api.checkCompanyLookupField(comLks);\r\n if (tempErrMsg) {\r\n await showGlobalOkDialog(tempErrMsg);\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n async function save() {\r\n if (!sdp) {\r\n return;\r\n }\r\n\r\n if (!sdp.isNew && !hasChanges) {\r\n cancelOperation();\r\n return;\r\n }\r\n\r\n if (!await checkDataAsync()) return;\r\n\r\n // = await appContext.api.saveListItem(listItemType,\r\n sdp.isNew ? SQLType.Insert : SQLType.Update,\r\n _.omit(sdp, ['isNew']));\r\n if(!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.SAVE_ERROR_MESSAGE}

    );\r\n return;\r\n }\r\n\r\n // data[ei] = formatElement(inlineElement);\r\n // if(apiResult.result) {\r\n // data[ei].id = apiResult.result.newId;\r\n // }\r\n\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n\r\n cancelOperation();\r\n await reload(false);\r\n }\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n customTableId: 'codes-sdk-list',\r\n ref: tableRef,\r\n selectable: true,\r\n tableName: 'sdktypeList',\r\n ...codesPortCodeList,\r\n height: `${tableHeight}px`,\r\n // data: data.map((x:any, i:number) => ({...x, indicator: (i + 1).toString(), editIndex: ei, onDelete: deleteEntity, onSave: save, onCancel: cancelOperation, setHasChanges})),\r\n data: (data ?? []).map((x:any) => ({...x})),\r\n rowRenderers: [\r\n { accessor: 'indicator', Cell: NumberedIndicatorRenderer },\r\n { accessor: 'code', Cell: TextAlignLeftRenderer },\r\n { accessor: 'portName', Cell: TextAlignLeftRenderer },\r\n { accessor: 'cyName', Cell: TextAlignLeftRenderer },\r\n { accessor: 'cfsName', Cell: TextAlignLeftRenderer },\r\n ],\r\n orderBy: [orderBy],\r\n onHeaderClick,\r\n };\r\n\r\n //const newEnabled = sdp === null;\r\n const hasSelectedRow = !isNaN(selectedRow) && !(selectedRow < 0);\r\n const canBeAdd = listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n\r\n return (\r\n
    \r\n {/* \r\n

    Ocean  Schedule D&K Port

    \r\n
    \r\n \r\n
    \r\n
    */}\r\n\r\n\r\n {/*
    \r\n {\r\n await reload(generalText1 === null ? '' : generalText1);\r\n }}\r\n />\r\n
    */}\r\n\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n   \r\n
    \r\n New  \r\n View  \r\n Edit  \r\n Delete \r\n {cancelOperation(); reload(false); }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n {!!sdp &&\r\n
    \r\n \r\n
    \r\n {canBeEdit && !sdp.view &&\r\n \r\n SAVE\r\n \r\n }\r\n {canBeEdit && sdp.view &&\r\n setSdp({edit:true, view:false})}\r\n >\r\n Edit\r\n \r\n }\r\n \r\n {!sdp.isNew && !sdp.view && listSec?.grantDel &&\r\n \r\n DELETE\r\n \r\n }\r\n \r\n CANCEL\r\n \r\n
    \r\n
    \r\n }\r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default ScheduleDkPort;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeVesselListItem extends SearchModelBase {\r\n vesselName: string = '';\r\n country: string = '';\r\n vesselFlag: string = '';\r\n lloydsCode: string = '';\r\n groupName: string = '';\r\n cid: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Vessel Name', width: 500, dataIndex: 'vesselName'}),\r\n XCol.Create({ col: 1, text: 'Country', width: 70, dataIndex: 'country'}),\r\n XCol.Create({ col: 2, text: 'Vessel Flag', width: 150, dataIndex: 'vesselFlag'}),\r\n XCol.Create({ col: 3, text: 'Lloyds Code', width: 150, dataIndex: 'lloydsCode'}),\r\n XCol.Create({ col: 4, text: 'Group', width: 70, dataIndex: 'groupName'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeVesselListItem.prototype.vesselName, orderByAscending: true };\r\n\r\n public static formatData(data: CodeVesselListItem[]) {\r\n return data.map((d: CodeVesselListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import _ from 'lodash';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nimport { ApplicableTableSettings, codesVesselNameList } from '../../../../tableSettings';\r\n\r\nimport useFastStorage from '../../../../hooks/useFastStorage';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport { Search, initialSearch, isFilterObjectEmpty } from '../../../../filtering';\r\nimport { Portal } from 'react-portal';\r\nimport { CodeVesselListItem } from '../../../../fms.data/models/CodeVesselListItem';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { ApiResult, InsertResult } from '../../../../framework.core/data/ApiResult';\r\nimport { SQLType } from '../../../../framework.core/data/SQLInfo';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport GreenButton from '../../../../ui/GreenButton';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport EditableTable, { CellData, EditableTableHandle, TableCellAligns, TableCellTypes } from '../../../../ui/tables/editing/EditableTable';\r\nimport { checkTabIsDirty, sortingListData } from '../../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../../util';\r\nimport useFilterBar from '../../../../hooks/useFilterBar';\r\nimport { ListOrderBy } from \"../../../common/AbstractListView\";\r\n\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport constants from '../../../../constants';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\n\r\nclass EditableVesselName extends CodeVesselListItem {\r\n isNew: boolean = false;\r\n isDelete: boolean = false;\r\n isUpdate: boolean = false;\r\n tested: boolean = false;\r\n}\r\n\r\n\r\n// function ActionRenderer({ data, row }:any) {\r\n// return (\r\n//
    \r\n// data[row.index].isNew ? data[row.index].onDelete() : data[row.index].requestOperationCancel()}\r\n// >\r\n// \r\n//   \r\n// data[row.index].onSave()}\r\n// >\r\n// \r\n//   \r\n// {!data[row.index].isNew && data[row.index].listSec?.grantDel &&\r\n// <>\r\n// data[row.index].onDelete()}\r\n// >\r\n// \r\n// \r\n// \r\n// }\r\n//
    \r\n// );\r\n// }\r\n\r\nfunction VesselNameRenderer({data, row, cell}:any) {\r\n\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n\r\n /**\r\n async function checkDuplicateVesselName(newValue:string) {\r\n if (l.tested && l.vesselName === newValue) {\r\n return true;\r\n }\r\n\r\n if (l.cid === newValue) {\r\n changeLineItem(row.index, { tested: true });\r\n return true;\r\n }\r\n\r\n if (await appContext.api.checkupDuplicateFieldValueIsDuplicate(\"T_CODEVESSEL\", \"F_VesselName\", newValue.trim())) {\r\n await showGlobalOkDialog(

    You didn't enter a duplicate Vessel Name.

    );\r\n return false;\r\n }\r\n else\r\n changeLineItem(row.index, { tested: true });\r\n\r\n return true;\r\n }\r\n */\r\n\r\n return (\r\n {\r\n changeLineItem(row.index, { vesselName: e.target.value, isUpdate: true, tested: false });\r\n }}\r\n // onBlur={async (e) => {\r\n // return await checkDuplicateVesselName(e.target.value);\r\n // }}\r\n />\r\n );\r\n}\r\n\r\n\r\nfunction CountryRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, {country: e.target.value, isUpdate:true });\r\n \r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nfunction VesselFlagRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem; \r\n const l = data[row.index];\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, {vesselFlag: e.target.value, isUpdate:true });\r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nfunction LloydsRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, {lloydsCode: e.target.value, isUpdate:true });\r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nfunction GroupRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, {groupName: e.target.value, isUpdate:true });\r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nfunction formatElement(data:any) {\r\n const result = new EditableVesselName();\r\n result.vesselName = data.vesselName;\r\n result.country = data.country;\r\n result.vesselFlag = data.vesselFlag;\r\n result.lloydsCode = data.lloydsCode;\r\n result.groupName = data.groupName;\r\n result.cid = data.cid;\r\n result.isNew = false;\r\n result.isDelete = false;\r\n\r\n return result;\r\n}\r\n\r\nfunction formatData(data: Array) {\r\n return data.map(d => formatElement(d));\r\n}\r\n\r\nfunction VesselNameComponent({\r\n componentIndex\r\n}: {\r\n componentIndex: number\r\n}) {\r\n useFunction({\r\n invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n }\r\n });\r\n useFunctionKeys({ onSave: handleSaveAndClose });\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n //const { selectTableRow } = useTableNavigation('codes-vessel-name-list', undefined, undefined, [], false, true, true);\r\n\r\n const tableRef = useRef(null);\r\n const masterTableRef = useRef(null);\r\n\r\n const [loading, setLoading] = useState(false);\r\n const [allData, setAllData] = useState(Array());\r\n const [hasChanges, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, dataRef] = useFastStorage(`ifms-referenceFiles-vessel-name-list`, []);\r\n\r\n const savedDataRef = useRef>([]);\r\n const oriData = useRef([]);\r\n //const addingToTheFirstLine = useRef(false);\r\n\r\n //const [, , , ediRef] = useFastStorage(`ifms-referenceFiles-vessel-name-editindex`, -1);\r\n const [orderBy, setOrderBy] = useFastStorage(`ifms-referenceFiles-vessel-name-orderby`, {\r\n orderBy: 'vesselName',\r\n orderByAscending: true,\r\n //general1: 'VesselName',\r\n //generalText1: '', //\r\n //pageSize: systemSettings.defaultPageSize,\r\n });\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeVessel);\r\n const tableHeight = 520;\r\n const listItemType = 'CodeVesselListItem';\r\n\r\n const [focusFirstCell, setFocusFirstCell] = useState(true);\r\n const { FilterButton, search } = useFilterBar(\r\n codesVesselNameList,\r\n undefined,\r\n getDefaultOrderBy,\r\n String(componentIndex)\r\n );\r\n\r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if (!modals)\r\n saveBtn.click();\r\n }\r\n }\r\n\r\n function getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'vesselName',\r\n orderByAscending: true,\r\n };\r\n }\r\n\r\n function setData(d: any, callByFetchData: boolean = false) {\r\n setFocusFirstCell(callByFetchData);\r\n _setData(d, null, { forceClone: callByFetchData });\r\n setHasChanges(checkTabIsDirty(CodeVesselListItem, oriData.current, d));\r\n }\r\n\r\n async function fetchData(api: any, search: Search) {\r\n setLoading(true);\r\n\r\n const searchModel = CodeVesselListItem.calculateSearchParameters(search);\r\n const apiResult = await api.getListItems(JobNames.Vessel,\r\n listItemType,\r\n searchModel, 1, search.pageSize);\r\n\r\n setData(formatData(apiResult && apiResult.entities ? apiResult.entities : []), true);\r\n setOrderBy(getDefaultOrderBy());\r\n\r\n setFocusFirstCell(false);\r\n setLoading(false);\r\n setHasChanges(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (isFilterObjectEmpty(search) && search.version === 1) reload(false);\r\n \r\n return () => {\r\n removeData();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n if (loading || (isFilterObjectEmpty(search) && search.version === 1)) {\r\n return;\r\n }\r\n fetchData(appContext.api, search);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [search]\r\n );\r\n\r\n useEffect(() => {\r\n if (dataRef.current?.length > 0 && !loading) {\r\n //selectTableRow(0);\r\n oriData.current = _.cloneDeep(data);\r\n savedDataRef.current = _.cloneDeep(data);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [loading]\r\n );\r\n\r\n async function reload(clearAll:boolean = true) {\r\n const searchValue = clearAll ? initialSearch : search;\r\n await fetchData(appContext.api, searchValue);\r\n }\r\n\r\n function onHeaderClick(header: any) {\r\n // if (ediRef.current !== -1) {\r\n // return;\r\n // }\r\n\r\n if (header && header.id !== 'indicator') {\r\n if (header.id === orderBy.orderBy) {\r\n setOrderBy({ orderByAscending: !orderBy.orderByAscending });\r\n } else {\r\n setOrderBy({ orderBy: header.id, orderByAscending: true });\r\n }\r\n }\r\n\r\n removeData();\r\n sortingListData(CodeVesselListItem, data, setData, orderBy);\r\n }\r\n\r\n // async function requestOperationCancel() {\r\n // const doCancel = await showGlobalYesNoDialog(

    Are you sure you want to cancel Edit operation

    );\r\n // if (doCancel) {\r\n // cancelOperation(false)\r\n // } else {\r\n // setTimeout(() => {\r\n // selectTableRow(ediRef.current);\r\n // }, 80);\r\n // }\r\n // }\r\n\r\n // async function onRowIndexChanged(rowIndex:number) {\r\n // if (rowIndex < 0 && ediRef.current >= 0) {\r\n // setTimeout(() => {\r\n // selectTableRow(ediRef.current);\r\n // }, 80)\r\n // return;\r\n // }\r\n\r\n // if (ediRef.current >= 0 && ediRef.current !== rowIndex) {\r\n // await requestOperationCancel();\r\n // }\r\n // }\r\n\r\n // function onRowSelect(rowIndex:number) {\r\n // if (rowIndex >= 0 && rowIndex < dataRef.current.length && _.isEmpty(inlineElement) && (listSec?.grantEdit || listSec?.grantDel)) {\r\n // setHasChanges(true);\r\n // inlineElement = {...dataRef.current[rowIndex], isNew: false};\r\n // setEi(rowIndex);\r\n // }\r\n // }\r\n\r\n // function selectForNew() {\r\n // inlineElement = {\r\n // vesselName: '', country: '', vesselFlag: '', lloydsCode: '', groupName: '', isNew: true,\r\n // };\r\n // data.unshift(inlineElement);\r\n // setData(data);\r\n // setEi(0);\r\n // setHasChanges(true);\r\n // }\r\n\r\n // function addingLineToFirstLine(){\r\n // addingToTheFirstLine.current = true;\r\n // masterTableRef.current?.add();\r\n // }\r\n\r\n function addLineItem() {\r\n let newrow = new EditableVesselName();\r\n newrow.isNew = true;\r\n\r\n return {\r\n setDataFunc: (list: any) => setData(list),\r\n curListData: data,\r\n newData: newrow\r\n };\r\n }\r\n\r\n async function cancelOperation(){\r\n setHasChanges(false);\r\n removeData();\r\n return true;\r\n }\r\n/*\r\n function getIndexOfFirstInvalidCell(rowIndex: number){\r\n if(!data) return undefined;\r\n\r\n if(!data[rowIndex].vesselName){\r\n return 1;\r\n }\r\n if (allData) { //기존데이터 목록\r\n const newData = [...allData];\r\n if(newData.filter(x => x === data[rowIndex].vesselName.toLowerCase()).length === 0) // 현재 목록에 없음\r\n {\r\n newData.splice(rowIndex, 1, data[rowIndex].vesselName.toLowerCase());\r\n setAllData(newData);\r\n return undefined;\r\n }else{\r\n if(newData[rowIndex] === data[rowIndex].vesselName.toLowerCase()) return undefined;\r\n else{\r\n showGlobalOkDialog(

    '{data[rowIndex].vesselName}' is a duplicate value.

    );\r\n return 1;\r\n }\r\n }\r\n } \r\n else {\r\n const newData = [data[rowIndex].vesselName.toLowerCase()];\r\n setAllData(newData);\r\n }\r\n return undefined;\r\n }\r\n*/\r\n\r\n function applyToLineItem(rowIndex: number, change: Partial|null) {\r\n if (!change || !data) {\r\n return;\r\n }\r\n const checkData = data[rowIndex];\r\n if (!change.isNew && (change.vesselName !== checkData.vesselName || change.country !== checkData.country\r\n || change.vesselFlag !== checkData.vesselFlag|| change.lloydsCode !== checkData.lloydsCode|| change.groupName !== checkData.groupName)) {\r\n _.merge(data[rowIndex], {...change, hasBeenChanged: true});\r\n setData(data);\r\n //setHasChanges(true);\r\n }\r\n return true;\r\n }\r\n\r\n function deleteEntity(rowIndex: number): boolean {\r\n if (!data) {\r\n return false;\r\n }\r\n\r\n const element = data[rowIndex];\r\n if (!element.isNew) {\r\n let deleteRow = savedDataRef.current.find(x => x.vesselName === element.vesselName);\r\n if (deleteRow) {\r\n deleteRow.isDelete = true;\r\n //setHasChanges(true);\r\n }\r\n }\r\n data.splice(rowIndex, 1);\r\n setData(data);\r\n\r\n const tempData = data.map((a: CodeVesselListItem) => a.vesselName.toLowerCase());\r\n const newData = allData.splice(0, tempData.length, tempData);\r\n setAllData(newData);\r\n\r\n return true;\r\n }\r\n\r\n async function duplicateCell(checkData: any) {\r\n let duplicateFieldText = '';\r\n\r\n let isDuplicate = false;\r\n let insList = checkData.filter((x: any) => x.isNew === true);\r\n let chgList = checkData.filter((x: any) => x.hasBeenChanged === true && !x.isNew);\r\n let focusRow = -1;\r\n\r\n if (!data) return isDuplicate;\r\n\r\n if (insList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < insList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (insList[i].vesselName.toUpperCase() === data[j].vesselName.toUpperCase()) {\r\n if (count === 0) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${insList[i].vesselName}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (chgList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < chgList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (chgList[i].vesselName.toUpperCase() === data[j].vesselName.toUpperCase()) {\r\n if (data[j].hasBeenChanged === true && !data[j].isNew && tempRow === -1) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${chgList[i].vesselName} is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (!isDuplicate) {\r\n const apiResult = await appContext.api.checkDuplicatedKeys(JobNames.Vessel, listItemType, insList, chgList);\r\n if (apiResult && apiResult.success && apiResult.message) {\r\n duplicateFieldText = `${apiResult.message}`;\r\n isDuplicate = true;\r\n } else if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog('Could not check duplication.\\r\\nPlease try later.');\r\n return true;\r\n }\r\n }\r\n else\r\n await showGlobalOkDialog(`${duplicateFieldText}Please try after correcting duplication.`);\r\n\r\n return isDuplicate;\r\n }\r\n/**\r\nfunction checkValidVesselName() {\r\n if (data === null) return;\r\n\r\n let validData = dataRef.current.filter((x:any) => x.vesselName);\r\n setData(validData);\r\n}\r\n */\r\n\r\n async function save() {\r\n if (!data) {\r\n return;\r\n }\r\n\r\n // checkValidVesselName();\r\n let validData = dataRef.current.filter((x:any) => x.vesselName);\r\n\r\n let errMsg = '';\r\n const dataToSave = validData.filter((x: any) => x.id <= 0 || x.hasBeenChanged === true); // new data is always last so index check works\r\n const dataToDelete = savedDataRef.current.filter((x) => x.isDelete);\r\n if(dataToSave.length === 0 && dataToDelete.length === 0) {\r\n if (hasChanges) reload(false);\r\n return;\r\n }\r\n setLoading(true);\r\n\r\n for (let i = 0; i < dataToDelete.length; ++i) {\r\n const s = dataToDelete[i];\r\n const apiResult: ApiResult = await appContext.api.saveListItem(listItemType,\r\n SQLType.Delete,\r\n _.omit(s, ['isDelete']));\r\n\r\n if (!apiResult || !apiResult.success)\r\n errMsg = apiResult.message?? constants.SAVE_ERROR_MESSAGE;\r\n }\r\n\r\n if (dataToSave.length > 0) {\r\n const isDuplicate = await duplicateCell(dataToSave);\r\n if(isDuplicate){\r\n setLoading(false);\r\n return;\r\n }\r\n const cidData = dataToSave.map((a: CodeVesselListItem) => a.cid?.toLowerCase()) as Array;\r\n\r\n const secondSave = dataToSave.filter((x: CodeVesselListItem) => cidData.includes(x.vesselName.toLowerCase()));\r\n const firstSave = dataToSave.filter((x: CodeVesselListItem) => !secondSave.includes(x));\r\n\r\n if (firstSave.length > 0) {\r\n const apiResult: ApiResult = await appContext.api.saveList(listItemType, firstSave);\r\n if (!apiResult || !apiResult.success)\r\n errMsg += (errMsg ? '\\n' : '') + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE );\r\n else {\r\n firstSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.vesselName === x.vesselName);\r\n if (index >= 0) {\r\n data[index].cid = x.vesselName;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n x.isNew = false;\r\n //delete data[index].isNew;\r\n }\r\n })\r\n }\r\n }\r\n if (secondSave.length > 0) {\r\n const apiResult: ApiResult = await appContext.api.saveList(listItemType, secondSave);\r\n if (!apiResult || !apiResult.success)\r\n errMsg += (errMsg ? '\\n' : '') + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n else {\r\n secondSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.vesselName === x.vesselName);\r\n if (index >= 0) {\r\n data[index].cid = x.vesselName;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n x.isNew = false;\r\n //delete data[index].isNew;\r\n }\r\n })\r\n }\r\n }\r\n }\r\n \r\n if(errMsg) {\r\n await showGlobalOkDialog(

    {errMsg}

    );\r\n setLoading(false);\r\n return;\r\n }\r\n // setData(data);\r\n // savedDataRef.current = _.cloneDeep(data);\r\n // oriData.current = _.cloneDeep(data);\r\n\r\n // setLoading(false);\r\n // setHasChanges(false);\r\n reload(false);\r\n\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n }\r\n\r\n \r\n const tableOptions: ApplicableTableSettings = {\r\n customTableId: 'codes-vessel-name-list',\r\n ref: tableRef,\r\n selectable: true,\r\n tableName: 'vesselNameList',\r\n ...codesVesselNameList,\r\n height: `${tableHeight}px`,\r\n //data: data.map((x:any, i:number) => ({...x, indicator: (i + 1).toString(), editIndex: ei, onDelete: deleteEntity, onSave: save, onCancel: cancelOperation, setHasChanges, requestOperationCancel, listSec})),\r\n data: (data ?? []).map((x: any, i: number) => ({ ...x, indicator: (i + 1).toString(), changeLineItem: applyToLineItem })),\r\n rowRenderers: [\r\n { accessor: 'indicator' },\r\n { accessor: 'vesselName', EditCell: VesselNameRenderer },\r\n { accessor: 'country', EditCell: CountryRenderer },\r\n { accessor: 'vesselFlag', EditCell: VesselFlagRenderer },\r\n { accessor: 'lloydsCode', EditCell: LloydsRenderer },\r\n { accessor: 'groupName', EditCell: GroupRenderer },\r\n // { accessor: 'action', Cell: ActionRenderer },\r\n ],\r\n getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n if (accessor === 'vesselName')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].vesselName };\r\n else if (accessor === 'country')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].country, align: TableCellAligns.Center };\r\n else if (accessor === 'vesselFlag')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].vesselFlag, align: TableCellAligns.Center};\r\n else if (accessor === 'lloydsCode')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].lloydsCode, align: TableCellAligns.Center};\r\n else if (accessor === 'groupName')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].groupName, align: TableCellAligns.Center};\r\n else\r\n return undefined;\r\n },\r\n isCellLock: (accessor: string, rowData: any): boolean => {\r\n if(!(listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel))\r\n return true\r\n else\r\n return false;\r\n },\r\n orderBy: [orderBy],\r\n onHeaderClick,\r\n useEditControls: (listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel),\r\n };\r\n\r\n //const canSelectForNew = ei === -1;\r\n const canBeAdd = listSec?.grantAdd;\r\n\r\n return (\r\n
    \r\n {/* \r\n

    Ocean  Vessel Name

    \r\n
    \r\n \r\n
    \r\n
    */}\r\n \r\n
    \r\n
    \r\n Save\r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n \r\n \r\n \r\n
    */}\r\n
    \r\n
    \r\n\r\n {/*
    \r\n {\r\n await reload(generalText1 === null ? '' : generalText1);\r\n }}\r\n />\r\n
    */}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n   \r\n
    \r\n {// { addingLineToFirstLine() }}>  Add Line   \r\n }\r\n { reload(false); }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {/* */}\r\n listSec?.grantDel??false}\r\n />\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default VesselNameComponent;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeOtherOPCategoryListItem extends SearchModelBase {\r\n type: string = '';\r\n description: string = '';\r\n prefix: string = '';\r\n no: string = '';\r\n cid: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Category', width: 100, dataIndex: 'type', defaultColumnFocus : true}),\r\n XCol.Create({ col: 1, text: 'Description', width: 300, dataIndex: 'description'}),\r\n XCol.Create({ col: 2, text: 'Ref # Prefix', width: 100, dataIndex: 'prefix'}),\r\n XCol.Create({ col: 3, text: 'Next #', width: 100, dataIndex: 'no'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeOtherOPCategoryListItem.prototype.type, orderByAscending: true };\r\n\r\n public static formatData(data: CodeOtherOPCategoryListItem[]) {\r\n return data.map((d: CodeOtherOPCategoryListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import _ from 'lodash';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faPlus, faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { ApplicableTableSettings, codesOtherShipmentTypeList } from '../../../tableSettings';\r\n\r\nimport {\r\n NumberedIndicatorRenderer,\r\n TextAlignLeftRenderer,\r\n} from '../../../uiControls/SmartTableRenderers';\r\n\r\nimport useFastStorage from '../../../hooks/useFastStorage';\r\nimport useFunction from '../../../hooks/useFunction';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport useGlobalYesNoDialog from '../../../hooks/useGlobalYesNoDialog';\r\n\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport { Portal } from 'react-portal';\r\nimport useSystemSettings from '../../../hooks/useSystemSettings';\r\nimport { Search } from '../../../filtering';\r\nimport { CodeOtherOPCategoryListItem } from '../../../fms.data/models/CodeOtherOPCategoryListItem';\r\nimport { JobNames } from '../../../framework.core/JobNames';\r\nimport { ApiResult, InsertResult } from '../../../framework.core/data/ApiResult';\r\nimport { SQLType } from '../../../framework.core/data/SQLInfo';\r\nimport TextBox from '../../../ui/TextBox';\r\nimport EditableTable, { CellData, EditableTableHandle, TableCellTypes } from '../../../ui/tables/editing/EditableTable';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport GreenButton from '../../../ui/GreenButton';\r\nimport { checkTabIsDirty } from '../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../util';\r\n\r\nimport postal from 'postal';\r\nimport SecondaryButton from '../../../ui/SecondaryButton';\r\nimport BlackInverseButton from '../../../ui/BlackInverseButton';\r\nimport constants from '../../../constants';\r\nimport IFmsReferenceFilesContext from '../IfmsReferenceFilesContext';\r\nimport CloseButton from '../../../ui/CloseButton';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\n\r\nfunction TypeRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n changeLineItem(row.index, {type: e.target.value, isUpdate:true})} />\r\n );\r\n}\r\n\r\nfunction DescriptionRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n changeLineItem(row.index, {description: e.target.value, isUpdate:true})} />\r\n );\r\n}\r\n\r\nfunction PrefixRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n changeLineItem(row.index, {prefix: e.target.value, isUpdate:true})} />\r\n );\r\n}\r\n\r\nfunction NoRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n changeLineItem(row.index, {no: e.target.value, isUpdate:true})} />\r\n );\r\n}\r\n\r\n\r\nfunction formatElement(data:any) {\r\n const result = new CodeOtherOPCategoryListItem();\r\n result.type = data.type;\r\n result.description = data.description;\r\n result.prefix = data.prefix;\r\n result.no = data.no;\r\n result.cid = data.cid;\r\n result.isNew = false;\r\n return result;\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data.map(d => formatElement(d));\r\n}\r\n\r\nfunction OtherShipmentTypes() {\r\n useFunction({invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n //ifmsReferenceFilesCancel: () => {},\r\n }});\r\n useFunctionKeys({ onSave: handleSaveAndClose });\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const tableRef = useRef(null);\r\n const masterTableRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n const [allData, setAllData] = useState(Array());\r\n const [hasChanges, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, /*dataRef*/] = useFastStorage(`ifms-referenceFiles-ostype-list`, []);\r\n\r\n const savedDataRef = useRef>([]);\r\n const oriData = useRef([]);\r\n //const addingToTheFirstLine = useRef(false);\r\n\r\n const tableHeight = 520;\r\n const systemSettings = useSystemSettings();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeOtherOPType);\r\n const [focusFirstCell, setFocusFirstCell] = useState(true);\r\n\r\n const listItemType = 'CodeOtherOPCategoryListItem';\r\n \r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if (!modals)\r\n saveBtn.click();\r\n }\r\n }\r\n \r\n function cancelOperation() {\r\n setHasChanges(false);\r\n removeData();\r\n return true;\r\n }\r\n \r\n function setData(d:Array, callByFetchData: boolean = false) {\r\n setFocusFirstCell(callByFetchData);\r\n _setData(d, null, { forceClone: callByFetchData });\r\n setHasChanges(checkTabIsDirty(CodeOtherOPCategoryListItem, oriData.current, d));\r\n }\r\n\r\n async function fetchData(api:any) {\r\n setLoading(true);\r\n // a.type.toLowerCase()));\r\n }\r\n //pt220818>\r\n setFocusFirstCell(false);\r\n setLoading(false);\r\n setHasChanges(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (data.length === 0)\r\n reload();\r\n else {\r\n oriData.current = _.cloneDeep(data);\r\n savedDataRef.current = _.cloneDeep(data);\r\n }\r\n return () => {\r\n removeData();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n function reload() {\r\n fetchData(appContext.api);\r\n }\r\n\r\n function getIndexOfFirstInvalidCell(rowIndex: number):number|undefined {\r\n if (!data) {\r\n return undefined;\r\n }\r\n\r\n if (!data[rowIndex].type) {\r\n return 1;\r\n }\r\n if (allData) { //기존데이터 목록\r\n const newData = [...allData];\r\n if(newData.filter(x => x === data[rowIndex].type.toLowerCase()).length === 0) // 현재 목록에 없음\r\n {\r\n newData.splice(rowIndex, 1, data[rowIndex].type.toLowerCase());\r\n setAllData(newData);\r\n return undefined;\r\n }else{\r\n if(newData[rowIndex] === data[rowIndex].type.toLowerCase()) return undefined;\r\n else{\r\n showGlobalOkDialog(

    '{data[rowIndex].type}' is a duplicate value.

    );\r\n return 1;\r\n }\r\n }\r\n } \r\n else {\r\n const newData = [data[rowIndex].type.toLowerCase()];\r\n setAllData(newData);\r\n }\r\n return undefined;\r\n }\r\n\r\n async function duplicateCell(checkData: any) {\r\n if (!data) {\r\n return;\r\n }\r\n let duplicateFieldText = '';\r\n\r\n let isDuplicate = false;\r\n let insList = checkData.filter((x: any) => x.isNew === true);\r\n let chgList = checkData.filter((x: any) => x.hasBeenChanged === true && !x.isNew);\r\n let focusRow = -1;\r\n\r\n if (insList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < insList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (insList[i].type.toUpperCase() === data[j].type.toUpperCase()) {\r\n if (count === 0) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${insList[i].type}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (chgList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < chgList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (chgList[i].type.toUpperCase() === data[j].type.toUpperCase()) {\r\n if (!data[j].isNew && data[j].hasBeenChanged === true && tempRow === -1) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${chgList[i].type}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (!isDuplicate) {\r\n const apiResult = await appContext.api.checkDuplicatedKeys(JobNames.OtherOP, listItemType, insList, chgList);\r\n if (apiResult && apiResult.success && apiResult.message) {\r\n duplicateFieldText = `${apiResult.message}`;\r\n isDuplicate = true;\r\n } else if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog('Could not check duplication.\\r\\nPlease try later.');\r\n return true;\r\n }\r\n }\r\n else\r\n await showGlobalOkDialog(`${duplicateFieldText}Please try after correcting duplication.`);\r\n\r\n return isDuplicate;\r\n }\r\n\r\n function deleteRow(index: number): boolean {\r\n if (!data) {\r\n return false;\r\n }\r\n\r\n const element = data[index];\r\n\r\n if (!element.isNew) {\r\n\r\n let deleteRow = savedDataRef.current.find(x => x.type === element.type);\r\n if (deleteRow) {\r\n deleteRow.isDelete = true;\r\n }\r\n }\r\n\r\n data.splice(index, 1);\r\n\r\n setData(data);\r\n\r\n const tempData = data.map((a: CodeOtherOPCategoryListItem) => a.type.toLowerCase());\r\n const newData = allData.splice(0, tempData.length, tempData);\r\n setAllData(newData);\r\n\r\n return true;\r\n }\r\n\r\n function applyToLineItem(rowIndex: number, change: Partial | null) {\r\n if (!change || !data) {\r\n return;\r\n }\r\n const checkData = data[rowIndex];\r\n if (!change.isNew && (change.type !== checkData.type || change.description !== checkData.description || change.no !== checkData.no || change.prefix !== checkData.prefix)) {\r\n _.merge(data[rowIndex], { ..._.omit(change, ['isNew']), hasBeenChanged: true });\r\n setData(data);\r\n //setHasChanges(true);\r\n }\r\n }\r\n\r\n // function addingLineToFirstLine(){\r\n // addingToTheFirstLine.current = true;\r\n // masterTableRef.current?.add();\r\n // }\r\n\r\n function addLineItem() {\r\n const newItem = new CodeOtherOPCategoryListItem();\r\n newItem.type = '';\r\n newItem.description = '';\r\n newItem.prefix = '';\r\n newItem.no = '';\r\n newItem.isNew = true;\r\n\r\n return {\r\n setDataFunc: (list: any) => setData(list),\r\n curListData: data,\r\n newData: newItem\r\n };\r\n }\r\n\r\n async function save() {\r\n if (!data) {\r\n return;\r\n }\r\n\r\n let validData = data.filter((x:any) => x.type);\r\n\r\n let errMsg = '';\r\n const dataToSave = validData.filter((x: any) => x.isNew || x.hasBeenChanged === true); // new data is always last so index check works\r\n const dataToDelete = savedDataRef.current.filter((x) => x.isDelete);\r\n if(dataToSave.length === 0 && dataToDelete.length === 0) {\r\n if (hasChanges) reload();\r\n return;\r\n }\r\n setLoading(true);\r\n\r\n for (let i = 0; i < dataToDelete.length; ++i) {\r\n const s = dataToDelete[i];\r\n const apiResult: ApiResult = await appContext.api.saveListItem(listItemType, SQLType.Delete, _.omit(s, ['isDelete']));\r\n //window.console.log(s);\r\n if (!apiResult || !apiResult.success)\r\n errMsg = apiResult?.message ?? constants.SAVE_ERROR_MESSAGE;\r\n }\r\n\r\n\r\n if (dataToSave.length > 0) {\r\n const isDuplicate = await duplicateCell(dataToSave);\r\n if(isDuplicate){\r\n setLoading(false);\r\n return;\r\n }\r\n const cidData = dataToSave.map((a: CodeOtherOPCategoryListItem) => a.cid?.toLowerCase()) as Array;\r\n\r\n const secondSave = dataToSave.filter((x: CodeOtherOPCategoryListItem) => cidData.includes(x.type.toLowerCase()));\r\n const firstSave = dataToSave.filter((x: CodeOtherOPCategoryListItem) => !secondSave.includes(x));\r\n\r\n if (firstSave.length > 0) {\r\n const apiResult: ApiResult = await appContext.api.saveList(listItemType, firstSave);\r\n if (!apiResult || !apiResult.success)\r\n errMsg += (errMsg ? '\\n' : '') + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n\r\n else {\r\n firstSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.type === x.type);\r\n if (index >= 0) {\r\n data[index].cid = x.type;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n delete data[index].isNew;\r\n }\r\n });\r\n }\r\n }\r\n if (secondSave.length > 0) {\r\n const apiResult: ApiResult = await appContext.api.saveList(listItemType, secondSave);\r\n if (!apiResult || !apiResult.success)\r\n errMsg += (errMsg ? '\\n' : '') + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n\r\n else {\r\n secondSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.type === x.type);\r\n if (index >= 0) {\r\n data[index].cid = x.type;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n delete data[index].isNew;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (errMsg) {\r\n await showGlobalOkDialog(

    {errMsg}

    );\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n // setData(data);\r\n // savedDataRef.current = _.cloneDeep(data);\r\n // oriData.current = _.cloneDeep(data);\r\n \r\n // setLoading(false);\r\n // setHasChanges(false);\r\n reload();\r\n\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n }\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n customTableId: 'codes-ostype-list',\r\n ref: tableRef,\r\n tableName: 'osTypeList',\r\n ...codesOtherShipmentTypeList,\r\n height: `${tableHeight}px`,\r\n data: (data ?? []).map((x:any) => ({...x, changeLineItem: applyToLineItem})),\r\n rowRenderers: [\r\n { accessor: 'indicator' },\r\n { accessor: 'type', EditCell: TypeRenderer },\r\n { accessor: 'description', EditCell: DescriptionRenderer },\r\n { accessor: 'prefix', EditCell: PrefixRenderer },\r\n { accessor: 'no', EditCell: NoRenderer },\r\n ],\r\n getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n if (accessor === 'type')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].type };\r\n else if (accessor === 'description')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].description };\r\n else if (accessor === 'prefix')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].prefix };\r\n else if (accessor === 'no')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].no };\r\n else\r\n return undefined;\r\n },\r\n isCellLock: (accessor: string, rowData: any): boolean => {\r\n if(!(listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel))\r\n return true\r\n else\r\n return false;\r\n },\r\n\r\n useEditControls: (listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel)\r\n };\r\n\r\n //const otherShipmentCount = data ? data.length : 0;\r\n\r\n return (\r\n
    \r\n {/* \r\n

    Other Shipment Type

    \r\n
    */}\r\n\r\n \r\n
    \r\n
    \r\n Save\r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n \r\n \r\n \r\n
    */}\r\n
    \r\n
    \r\n\r\n {/*
    \r\n Double Click Other Shipment Type to Edit\r\n
    */}\r\n
    \r\n
    \r\n
    \r\n {// { addingLineToFirstLine() }}>  Add Line   \r\n }\r\n { reload() }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n listSec?.grantDel ?? false}\r\n initializeFocusedCell={focusFirstCell}\r\n />\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default OtherShipmentTypes;","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeExportInfoListItem extends SearchModelBase {\r\n code: string = '';\r\n description: string = '';\r\n cid: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Code', width: 60, dataIndex: 'code'}),\r\n XCol.Create({ col: 1, text: 'Description', width: 600, dataIndex: 'description'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeExportInfoListItem.prototype.code , orderByAscending: true };\r\n\r\n public static formatData(data: CodeExportInfoListItem[]) {\r\n return data.map((d: CodeExportInfoListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import _ from 'lodash';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { ApplicableTableSettings, codesAesExportInfoList } from '../../../../tableSettings';\r\n\r\nimport useFastStorage from '../../../../hooks/useFastStorage';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\n\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport { Portal } from 'react-portal';\r\nimport useSystemSettings from '../../../../hooks/useSystemSettings';\r\nimport { Search } from '../../../../filtering';\r\nimport { CodeExportInfoListItem } from '../../../../fms.data/models/CodeExportInfoListItem';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { ApiResult, InsertResult } from '../../../../framework.core/data/ApiResult';\r\nimport { SQLType } from '../../../../framework.core/data/SQLInfo';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport GreenButton from '../../../../ui/GreenButton';\r\nimport ClearableSearch from '../../../../uiControls/ClearableSearch';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport EditableTable, { CellData, EditableTableHandle, TableCellTypes } from '../../../../ui/tables/editing/EditableTable';\r\nimport { checkTabIsDirty, sortingListData } from '../../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../../util';\r\n\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport constants from '../../../../constants';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\n\r\n\r\n// export interface IExportInfo {\r\n// code?: string,\r\n// description?: string,\r\n// isNew?: boolean,\r\n// }\r\n\r\n// let inlineElement:IExportInfo = {};\r\n\r\n// function ActionRenderer({ data, row }:any) {\r\n// return (\r\n//
    \r\n// data[row.index].isNew ? data[row.index].onDelete() : data[row.index].requestOperationCancel()}\r\n// >\r\n// \r\n//   \r\n// data[row.index].onSave()}\r\n// >\r\n// \r\n//   \r\n// {!data[row.index].isNew && data[row.index].listSec?.grantDel &&\r\n// <>\r\n// data[row.index].onDelete()}\r\n// >\r\n// \r\n// \r\n// \r\n// }\r\n//
    \r\n// );\r\n// }\r\n\r\nfunction CodeRenderer({data, row, cell}:any) {\r\n useEffect(() => {\r\n const focusElement = document.getElementById('ifms-aescode') as HTMLInputElement;\r\n if (focusElement) {\r\n focusElement.focus();\r\n focusElement.select();\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n const changeLineItem = data[0].changeLineItem;\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, {code: e.target.value, isUpdate: true })\r\n \r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nfunction DescriptionRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, {description: e.target.value, isUpdate: true })\r\n }} />\r\n
    \r\n );\r\n \r\n}\r\n\r\nclass EditableCodeExportInfoListItem extends CodeExportInfoListItem {\r\n isNew: boolean = false;\r\n isDelete: boolean = false;\r\n isUpdate: boolean = false;\r\n}\r\n\r\nfunction formatElement(data:any) {\r\n const result = new EditableCodeExportInfoListItem();\r\n result.description = data.description;\r\n result.cid = data.cid;\r\n result.code = data.code;\r\n result.isNew = false;\r\n result.isDelete = false;\r\n\r\n return result;\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data.map(d => formatElement(d));\r\n}\r\n\r\nfunction ExportInfos() {\r\n useFunction({invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n }});\r\n useFunctionKeys({onSave: handleSaveAndClose});\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const savedDataRef = useRef>([]);\r\n\r\n const tableRef = useRef(null);\r\n const masterTableRef = useRef(null);\r\n \r\n const [loading, setLoading] = useState(false);\r\n const [allData, setAllData] = useState(Array());\r\n const [hasChanges, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, ] = useFastStorage(`ifms-referenceFiles-aes-exportinfo-list`, []);\r\n //const [ei, setEi, , ediRef] = useFastStorage(`ifms-referenceFiles-aes-exportinfo-editindex`, -1);\r\n const systemSettings = useSystemSettings();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeExportInfo);\r\n const [focusFirstCell, setFocusFirstCell] = useState(true);\r\n const [orderBy, setOrderBy] = useFastStorage(`ifms-referenceFiles-aes-exportinfo-orderby`,{\r\n orderBy: 'code',\r\n orderByAscending: true,\r\n general1: 'code',\r\n pageSize: systemSettings.defaultPageSize,\r\n });\r\n const oriData = useRef([]);\r\n\r\n const tableHeight = 520;\r\n const listItemType = 'CodeExportInfoListItem';\r\n\r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if (!modals)\r\n saveBtn.click();\r\n }\r\n }\r\n \r\n function setData(d: Array, callByFetchData: boolean = false) {\r\n setFocusFirstCell(callByFetchData);\r\n _setData(d, null, { forceClone: callByFetchData });\r\n setHasChanges(checkTabIsDirty(CodeExportInfoListItem, oriData.current, d));\r\n }\r\n\r\n async function fetchData(api:any,search:Search) {\r\n setLoading(true);\r\n\r\n const searchModel = CodeExportInfoListItem.calculateSearchParameters(search);\r\n const apiResult = await api.getListItems(JobNames.ExportInfo,\r\n 'CodeExportInfoListItem',\r\n searchModel, 1, search.pageSize);\r\n // const apiResultforAll = await api.getListItems(JobNames.ExportInfo,\r\n // 'CodeExportInfoListItem',\r\n // searchModel,\r\n // 1);\r\n\r\n oriData.current = formatData(apiResult && apiResult.entities ? apiResult.entities : []);\r\n setData(formatData(apiResult && apiResult.entities ? apiResult.entities : []), true);\r\n savedDataRef.current = apiResult && apiResult.entities ? apiResult.entities : [];\r\n\r\n // if(apiResultforAll && apiResultforAll.entities){\r\n // setAllData(apiResultforAll.entities.map((a: CodeExportInfoListItem) => a.code.toLowerCase()));\r\n // }\r\n\r\n setFocusFirstCell(false);\r\n setLoading(false);\r\n setHasChanges(false);\r\n }\r\n\r\n // useEffect(() => {\r\n // // inlineElement = {};\r\n // //setEi(-1);\r\n // reload();\r\n\r\n // return () => {\r\n // //tableNavigationCleanup();\r\n // };\r\n // },\r\n // // eslint-disable-next-line react-hooks/exhaustive-deps\r\n // []\r\n // );\r\n\r\n useEffect(() => {\r\n if (data.length === 0)\r\n reload();\r\n else {\r\n oriData.current = _.cloneDeep(data);\r\n savedDataRef.current = _.cloneDeep(data);\r\n }\r\n return () => {\r\n removeData();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n async function reload(generalText:string = '') {\r\n setOrderBy({\r\n orderBy: 'code',\r\n orderByAscending: true,\r\n pageSize: systemSettings.defaultPageSize,\r\n generalText1: generalText,\r\n })\r\n\r\n await fetchData(appContext.api, orderBy);\r\n }\r\n\r\n function onHeaderClick(header: any) {\r\n if (header && header.id !== 'indicator') {\r\n if (header.id === orderBy.orderBy) {\r\n setOrderBy({ orderByAscending: !orderBy.orderByAscending });\r\n } else {\r\n setOrderBy({ orderBy: header.id, orderByAscending: true });\r\n }\r\n }\r\n\r\n removeData();\r\n sortingListData(CodeExportInfoListItem, data, setData, orderBy);\r\n }\r\n\r\n function cancelOperation(){\r\n setHasChanges(false);\r\n removeData();\r\n return true;\r\n }\r\n\r\n // async function requestOperationCancel() {\r\n // const doCancel = await showGlobalYesNoDialog(

    Are you sure you want to cancel Edit operation

    );\r\n // if (doCancel) {\r\n // cancelOperation(false)\r\n // } else {\r\n // setTimeout(() => {\r\n // selectTableRow(ediRef.current);\r\n // }, 80);\r\n // }\r\n // }\r\n\r\n // async function onRowIndexChanged(rowIndex:number) {\r\n // if (rowIndex < 0 && ediRef.current >= 0) {\r\n // setTimeout(() => {\r\n // selectTableRow(ediRef.current);\r\n // }, 80)\r\n // return;\r\n // }\r\n\r\n // if (ediRef.current >= 0 && ediRef.current !== rowIndex) {\r\n // await requestOperationCancel();\r\n // }\r\n // }\r\n\r\n // function onRowSelect(rowIndex:number) {\r\n // if (rowIndex >= 0 && rowIndex < dataRef.current.length && _.isEmpty(inlineElement) && (listSec?.grantEdit || listSec?.grantDel)) {\r\n // setHasChanges(true);\r\n // inlineElement = {...dataRef.current[rowIndex], isNew: false};\r\n // setEi(rowIndex);\r\n // }\r\n // }\r\n\r\n // function selectForNew() {\r\n // inlineElement = {\r\n // code: '', description: '', isNew: true,\r\n // };\r\n // data.unshift(inlineElement);\r\n // setData(data);\r\n // setEi(0);\r\n // setHasChanges(true);\r\n // }\r\n\r\n // function cancelOperation(leaveNew:boolean=false) {\r\n // setHasChanges(false);\r\n\r\n // clearTableSelection();\r\n // setEi(-1);\r\n\r\n // if (!leaveNew && inlineElement.isNew) {\r\n // dataRef.current.splice(0, 1);\r\n // setData(dataRef.current);\r\n // }\r\n\r\n // inlineElement = {};\r\n // }\r\n\r\n\r\n function getIndexOfFirstInvalidCell(rowIndex: number):number|undefined {\r\n if(!data){\r\n return undefined;\r\n }\r\n\r\n if(!data[rowIndex].code){\r\n return 1;\r\n }\r\n if (allData) { //기존데이터 목록\r\n const newData = [...allData];\r\n if(newData.filter(x => x === data[rowIndex].code.toLowerCase()).length === 0) // 현재 목록에 없음\r\n {\r\n newData.splice(rowIndex, 1, data[rowIndex].code.toLowerCase());\r\n setAllData(newData);\r\n return undefined;\r\n }else{\r\n if(newData[rowIndex] === data[rowIndex].code.toLowerCase()) return undefined;\r\n else{\r\n showGlobalOkDialog(

    '{data[rowIndex].code}' is a duplicate value.

    );\r\n return 1;\r\n }\r\n }\r\n } \r\n else {\r\n const newData = [data[rowIndex].code.toLowerCase()];\r\n setAllData(newData);\r\n }\r\n return undefined;\r\n }\r\n\r\n function addLineItem() {\r\n const newRow = new EditableCodeExportInfoListItem();\r\n newRow.isNew = true;\r\n\r\n return {\r\n setDataFunc: (list: any) => setData(list),\r\n curListData: data,\r\n newData: newRow\r\n };\r\n }\r\n\r\n function applyToLineItem(rowIndex: number, change: Partial|null) {\r\n if (!change || !data) {\r\n return;\r\n }\r\n const newData = [...data];\r\n const checkData = newData[rowIndex];\r\n if (!change.isNew && (change.code !== checkData.code || change.description !== checkData.description)) {\r\n _.merge(newData[rowIndex], {..._.omit(change, ['isNew']), hasBeenChanged : true});\r\n //setHasChanges(true);\r\n setData(newData);\r\n }\r\n }\r\n\r\n function deleteEntity(index: number): boolean {\r\n if (!data) {\r\n return false;\r\n }\r\n\r\n const element = data[index];\r\n if (!element.isNew) {\r\n let deleteRow = savedDataRef.current.find(x => x.code === element.code)\r\n if (deleteRow) {\r\n deleteRow.isDelete = true;\r\n //setHasChanges(true);\r\n }\r\n }\r\n data.splice(index, 1);\r\n setData(data);\r\n\r\n const tempData = data.map((a: CodeExportInfoListItem) => a.code.toLowerCase());\r\n const newData = allData.splice(0, tempData.length, tempData);\r\n setAllData(newData);\r\n\r\n return true;\r\n }\r\n\r\n async function duplicateCell(checkData: any) {\r\n let duplicateFieldText = '';\r\n\r\n let isDuplicate = false;\r\n let insList = checkData.filter((x: any) => x.isNew === true);\r\n let chgList = checkData.filter((x: any) => x.hasBeenChanged === true && !x.isNew);\r\n let focusRow = -1;\r\n\r\n if (insList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < insList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (insList[i].code.toUpperCase() === data[j].code.toUpperCase()) {\r\n if (count === 0) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${insList[i].code}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (chgList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < chgList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (chgList[i].code.toUpperCase() === data[j].code.toUpperCase()) {\r\n if (!data[j].isNew && data[j].hasBeenChanged === true && tempRow === -1) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${chgList[i].code}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (!isDuplicate) {\r\n const apiResult = await appContext.api.checkDuplicatedKeys(JobNames.ExportInfo, listItemType, insList, chgList);\r\n if (apiResult && apiResult.success && apiResult.message) {\r\n duplicateFieldText = `${apiResult.message}`;\r\n isDuplicate = true;\r\n } else if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog('Could not check duplication.\\r\\nPlease try later.');\r\n return true;\r\n }\r\n }\r\n else\r\n await showGlobalOkDialog(`${duplicateFieldText}Please try after correcting duplication.`);\r\n\r\n return isDuplicate;\r\n }\r\n\r\n async function save() {\r\n // if (!inlineElement.isNew && !hasChanges) {\r\n // cancelOperation();\r\n // return;\r\n // }\r\n\r\n // if (!hasChanges) {\r\n // cancelOperation();\r\n // return;\r\n // }\r\n\r\n // = await appContext.api.saveListItem('CodeExportInfoListItem',\r\n // inlineElement.isNew ? SQLType.Insert : SQLType.Update,\r\n // _.omit(inlineElement, ['isNew']));\r\n // if(!apiResult.success) {\r\n // await showGlobalOkDialog(

    {apiResult.message}

    );\r\n // return;\r\n // }\r\n\r\n // // code is pkey\r\n // data[ei] = formatElement(inlineElement);\r\n // //pt220818>\r\n // cancelOperation(true);\r\n if (!data) {\r\n return;\r\n }\r\n\r\n let validData = data.filter((x:any) => x.code);\r\n\r\n let errMsg = '';\r\n const dataToSave = validData.filter((x: any, i: number) => x.isNew || x.hasBeenChanged === true); // new data is always last so index check works\r\n const dataToDelete = savedDataRef.current.filter((x) => x.isDelete);\r\n if(dataToSave.length === 0 && dataToDelete.length === 0) {\r\n if (hasChanges) reload(orderBy?.generalText1 || '');\r\n return;\r\n }\r\n setLoading(true);\r\n\r\n for (let i = 0; i < dataToDelete.length; ++i) {\r\n const s = dataToDelete[i];\r\n const apiResult: ApiResult = await appContext.api.saveListItem(listItemType, SQLType.Delete, _.omit(s, ['isDelete']));\r\n if (!apiResult || !apiResult.success)\r\n errMsg = apiResult?.message ?? constants.SAVE_ERROR_MESSAGE;\r\n }\r\n\r\n if (dataToSave.length > 0) {\r\n const isDuplicate = await duplicateCell(dataToSave);\r\n if(isDuplicate){\r\n setLoading(false);\r\n return;\r\n }\r\n const cidData = dataToSave.map((a: CodeExportInfoListItem) => a.cid?.toLowerCase()) as Array;\r\n\r\n const secondSave = dataToSave.filter((x: CodeExportInfoListItem) => cidData.includes(x.code.toLowerCase()));\r\n const firstSave = dataToSave.filter((x: CodeExportInfoListItem) => !secondSave.includes(x));\r\n\r\n if (firstSave.length > 0) {\r\n const apiResult: ApiResult = await appContext.api.saveList(listItemType, firstSave);\r\n if (!apiResult || !apiResult.success) {\r\n errMsg += (errMsg ? '\\n' : '') + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n }\r\n else {\r\n firstSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.code === x.code);\r\n if (index >= 0) {\r\n data[index].cid = x.code;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n delete data[index].isNew;\r\n }\r\n })\r\n }\r\n }\r\n if (secondSave.length > 0) {\r\n const apiResult: ApiResult = await appContext.api.saveList(listItemType, secondSave);\r\n if (!apiResult || !apiResult.success) {\r\n errMsg += (errMsg ? '\\n' : '') + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n }\r\n else {\r\n secondSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.code === x.code);\r\n if (index >= 0) {\r\n data[index].cid = x.code;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n delete data[index].isNew;\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n if (errMsg) {\r\n await showGlobalOkDialog(

    {errMsg}

    );\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n // setData(data);\r\n // savedDataRef.current = _.cloneDeep(data);\r\n // oriData.current = _.cloneDeep(data);\r\n \r\n // setLoading(false);\r\n // setHasChanges(false);\r\n reload(orderBy?.generalText1 || '');\r\n\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n }\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n customTableId: 'codes-aes-exportinfo-list',\r\n ref: tableRef,\r\n selectable: true,\r\n tableName: 'aesExportInfoList',\r\n ...codesAesExportInfoList,\r\n height: `${tableHeight}px`,\r\n // data: data.map((x:any, i:number) => ({...x, indicator: (i + 1).toString(), editIndex: ei, onDelete: deleteEntity, onSave: save, onCancel: cancelOperation, setHasChanges, requestOperationCancel, listSec})),\r\n data: data.map((x:any, i:number) => ({...x, indicator: (i + 1).toString(),changeLineItem : applyToLineItem })),\r\n rowRenderers: [\r\n { accessor: 'indicator' },\r\n { accessor: 'code', EditCell: CodeRenderer },\r\n { accessor: 'description', EditCell: DescriptionRenderer },\r\n // { accessor: 'action', Cell: ActionRenderer },\r\n ],\r\n getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n if (accessor === 'code')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].code };\r\n else if (accessor === 'description')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].description };\r\n else\r\n return undefined;\r\n },\r\n isCellLock: (accessor: string, rowData: any): boolean => {\r\n if(!(listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel))\r\n return true\r\n else\r\n return false;\r\n },\r\n\r\n\r\n onHeaderClick,\r\n orderBy: [orderBy],\r\n useEditControls: (listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel),\r\n };\r\n\r\n //const canSelectForNew = ei === -1;\r\n const canBeAdd = listSec?.grantAdd;\r\n\r\n return (\r\n
    \r\n {/* \r\n

    AES  Export Info

    \r\n
    */}\r\n\r\n {/* \r\n \r\n Save\r\n \r\n */}\r\n\r\n \r\n
    \r\n
    \r\n Save\r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n \r\n \r\n \r\n
    */}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n { await reload(generalText1 === null ? '' : generalText1); }} />\r\n
    \r\n
    \r\n
    \r\n { reload(orderBy?.generalText1 || '') }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {/* */}\r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default ExportInfos;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeExportLicListItem extends SearchModelBase {\r\n code: string = '';\r\n description: string = '';\r\n cid: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Code', width: 60, dataIndex: 'code'}),\r\n XCol.Create({ col: 1, text: 'Description', width: 600, dataIndex: 'description'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeExportLicListItem.prototype.code, orderByAscending: true };\r\n\r\n public static formatData(data: CodeExportLicListItem[]) {\r\n return data.map((d: CodeExportLicListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import _ from 'lodash';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { ApplicableTableSettings, codesAesExportLicenseList } from '../../../../tableSettings';\r\n\r\nimport useFastStorage from '../../../../hooks/useFastStorage';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\n\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport { Portal } from 'react-portal';\r\nimport useSystemSettings from '../../../../hooks/useSystemSettings';\r\nimport { Search } from '../../../../filtering';\r\nimport { CodeExportLicListItem } from '../../../../fms.data/models/CodeExportLicListItem';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { ApiResult, InsertResult } from '../../../../framework.core/data/ApiResult';\r\nimport { SQLType } from '../../../../framework.core/data/SQLInfo';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport GreenButton from '../../../../ui/GreenButton';\r\nimport ClearableSearch from '../../../../uiControls/ClearableSearch';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport EditableTable, { CellData, EditableTableHandle, TableCellTypes } from '../../../../ui/tables/editing/EditableTable';\r\nimport { checkTabIsDirty, sortingListData } from '../../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../../util';\r\n\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport constants from '../../../../constants';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\n// interface ILicenseInfo {\r\n// code?: string,\r\n// description?: string,\r\n// isNew?: boolean,\r\n// }\r\n\r\n// let inlineElement:ILicenseInfo = {};\r\n\r\n// function ActionRenderer({ data, row }:any) {\r\n// return (\r\n//
    \r\n// data[row.index].isNew ? data[row.index].onDelete() : data[row.index].requestOperationCancel()}\r\n// >\r\n// \r\n//   \r\n// data[row.index].onSave()}\r\n// >\r\n// \r\n//   \r\n// {!data[row.index].isNew && data[row.index].listSec?.grantDel &&\r\n// <>\r\n// data[row.index].onDelete()}\r\n// >\r\n// \r\n// \r\n// \r\n// }\r\n//
    \r\n// );\r\n// }\r\n\r\nfunction CodeRenderer({data, row, cell}:any) {\r\n // useEffect(() => {\r\n // const focusElement = document.getElementById('ifms-aescode') as HTMLInputElement;\r\n // if (focusElement) {\r\n // focusElement.focus();\r\n // focusElement.select();\r\n // }\r\n // },\r\n // // eslint-disable-next-line react-hooks/exhaustive-deps\r\n // []\r\n // );\r\n\r\n const changeLineItem = data[0].changeLineItem;\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, {code: e.target.value, isUpdate: true});\r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nfunction DescriptionRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, {description: e.target.value, isUpdate: true});\r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nclass EditableCodeExportInfoListItem extends CodeExportLicListItem {\r\n isNew: boolean = false;\r\n isDelete: boolean = false;\r\n isUpdate: boolean = false;\r\n}\r\n\r\nfunction formatElement(data: any) {\r\n const result = new EditableCodeExportInfoListItem();\r\n result.code = data.code;\r\n result.description = data.description;\r\n result.cid = data.cid;\r\n result.isNew = false;\r\n result.isDelete = false;\r\n\r\n return result;\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data.map(d => formatElement(d));\r\n}\r\n\r\nfunction LicenseInfos() {\r\n useFunction({invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n }});\r\n useFunctionKeys({onSave: handleSaveAndClose});\r\n \r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const savedDataRef = useRef>([]);\r\n const tableRef = useRef(null);\r\n const masterTableRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n const [allData, setAllData] = useState(Array());\r\n const [hasChanges, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, ] = useFastStorage(`ifms-referenceFiles-aes-licenseinfo-list`, []);\r\n //const [ei, setEi, , ediRef] = useFastStorage(`ifms-referenceFiles-aes-licenseinfo-editindex`, -1);\r\n const systemSettings = useSystemSettings();\r\n const tableHeight = 520;\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeExportLic);\r\n const [focusFirstCell, setFocusFirstCell] = useState(true);\r\n const [orderBy, setOrderBy] = useFastStorage(`ifms-referenceFiles-aes-licenseinfo-orderby`,{\r\n orderBy: 'code',\r\n orderByAscending: true,\r\n general1: 'Code',\r\n pageSize: systemSettings.defaultPageSize,\r\n })\r\n // const addingToTheFirstLine = useRef(false);\r\n const oriData = useRef([]);\r\n\r\n const listItemType = 'CodeExportLicListItem';\r\n\r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if (!modals)\r\n saveBtn.click();\r\n }\r\n }\r\n\r\n function setData(d:Array, callByFetchData: boolean = false) {\r\n setFocusFirstCell(callByFetchData);\r\n _setData(d, null, { forceClone: callByFetchData });\r\n setHasChanges(checkTabIsDirty(CodeExportLicListItem, oriData.current, d));\r\n }\r\n\r\n async function cancelOperation(){\r\n setHasChanges(false);\r\n removeData();\r\n return true;\r\n }\r\n\r\n function getIndexOfFirstInvalidCell(rowIndex: number){\r\n if(!data){\r\n return undefined;\r\n }\r\n\r\n if(!data[rowIndex].code){\r\n return 1;\r\n }\r\n if (allData) { //기존데이터 목록\r\n const newData = [...allData];\r\n if(newData.filter(x => x === data[rowIndex].code.toLowerCase()).length === 0) // 현재 목록에 없음\r\n {\r\n newData.splice(rowIndex, 1, data[rowIndex].code.toLowerCase());\r\n setAllData(newData);\r\n return undefined;\r\n }else{\r\n if(newData[rowIndex] === data[rowIndex].code.toLowerCase()) return undefined;\r\n else{\r\n showGlobalOkDialog(

    '{data[rowIndex].code}' is a duplicate value.

    );\r\n return 1;\r\n }\r\n }\r\n } \r\n else {\r\n const newData = [data[rowIndex].code.toLowerCase()];\r\n setAllData(newData);\r\n }\r\n return undefined;\r\n }\r\n \r\n\r\n async function fetchData(api:any, search: Search) {\r\n setLoading(true);\r\n\r\n const searchModel = CodeExportLicListItem.calculateSearchParameters(search);\r\n const apiResult = await api.getListItems(JobNames.ExportLic,\r\n 'CodeExportLicListItem',\r\n searchModel, 1, search.pageSize);\r\n // const apiResultforAll = await api.getListItems(JobNames.ExportLic,\r\n // 'CodeExportLicListItem',\r\n // searchModel,\r\n // 1);\r\n\r\n oriData.current = formatData(apiResult && apiResult.entities ? apiResult.entities : []);\r\n setData(formatData(apiResult && apiResult.entities ? apiResult.entities : []), true);\r\n savedDataRef.current = apiResult && apiResult.entities ? apiResult.entities : [];\r\n\r\n // if(apiResultforAll && apiResultforAll.entities){\r\n // setAllData(apiResultforAll.entities.map((a: CodeExportLicListItem) => a.code.toLowerCase()));\r\n // }\r\n\r\n setFocusFirstCell(false);\r\n setLoading(false);\r\n setHasChanges(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (data.length === 0)\r\n reload();\r\n else {\r\n oriData.current = _.cloneDeep(data);\r\n savedDataRef.current = _.cloneDeep(data);\r\n }\r\n return () => {\r\n removeData();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n async function reload(generalText:string = '') {\r\n setOrderBy({\r\n orderBy: 'code',\r\n orderByAscending: true,\r\n pageSize: systemSettings.defaultPageSize,\r\n generalText1: generalText,\r\n })\r\n\r\n await fetchData(appContext.api, orderBy);\r\n }\r\n\r\n function onHeaderClick(header: any) {\r\n if (header && header.id !== 'indicator') {\r\n if (header.id === orderBy.orderBy) {\r\n setOrderBy({ orderByAscending: !orderBy.orderByAscending });\r\n } else {\r\n setOrderBy({ orderBy: header.id, orderByAscending: true });\r\n }\r\n }\r\n\r\n removeData();\r\n sortingListData(CodeExportLicListItem, data, setData, orderBy);\r\n }\r\n\r\n // async function requestOperationCancel() {\r\n // const doCancel = await showGlobalYesNoDialog(

    Are you sure you want to cancel Edit operation

    );\r\n // if (doCancel) {\r\n // cancelOperation(false)\r\n // } else {\r\n // setTimeout(() => {\r\n // selectTableRow(ediRef.current);\r\n // }, 80);\r\n // }\r\n // }\r\n\r\n // async function onRowIndexChanged(rowIndex:number) {\r\n // if (rowIndex < 0 && ediRef.current >= 0) {\r\n // setTimeout(() => {\r\n // selectTableRow(ediRef.current);\r\n // }, 80)\r\n // return;\r\n // }\r\n\r\n // if (ediRef.current >= 0 && ediRef.current !== rowIndex) {\r\n // await requestOperationCancel();\r\n // }\r\n // }\r\n\r\n // function onRowSelect(rowIndex:number) {\r\n // if (rowIndex >= 0 && rowIndex < dataRef.current.length && _.isEmpty(inlineElement) && (listSec?.grantEdit || listSec?.grantDel)) {\r\n // setHasChanges(true);\r\n // inlineElement = {...dataRef.current[rowIndex], isNew: false};\r\n // setEi(rowIndex);\r\n // }\r\n // }\r\n\r\n // function selectForNew() {\r\n // inlineElement = {\r\n // code: '', description: '', isNew: true,\r\n // };\r\n // data.unshift(inlineElement);\r\n // setData(data);\r\n // setEi(0);\r\n // setHasChanges(true);\r\n // }\r\n\r\n // function cancelOperation(leaveNew:boolean=false) {\r\n // setHasChanges(false);\r\n\r\n // clearTableSelection();\r\n // setEi(-1);\r\n\r\n // if (!leaveNew && inlineElement.isNew) {\r\n // dataRef.current.splice(0, 1);\r\n // setData(dataRef.current);\r\n // }\r\n\r\n // inlineElement = {};\r\n // }\r\n\r\n // function addingLineToFirstLine(){\r\n // addingToTheFirstLine.current = true;\r\n // masterTableRef.current?.add();\r\n // }\r\n\r\n function addLineItem() {\r\n const newRow = new EditableCodeExportInfoListItem();\r\n newRow.isNew = true;\r\n\r\n return {\r\n setDataFunc: (list: any) => setData(list),\r\n curListData: data,\r\n newData: newRow\r\n };\r\n }\r\n\r\n\r\n // function addLineItem() {\r\n // const newData = [...data];\r\n // newData.push({description: '', code: '', isNew: true});\r\n // //setHasChanges(true);\r\n // setData(newData);\r\n // return true;\r\n // }\r\n\r\n function applyToLineItem(rowIndex: number, change: Partial|null) {\r\n if (!change || !data) {\r\n return;\r\n }\r\n const newData = [...data];\r\n const checkData = newData[rowIndex];\r\n if (!change.isNew && (change.code !== checkData.code || change.description !== checkData.description)) {\r\n _.merge(newData[rowIndex], {..._.omit(change, ['isNew']), hasBeenChanged: true});\r\n setData(newData);\r\n //setHasChanges(true);\r\n }\r\n }\r\n\r\n\r\n function deleteEntity(index:number):boolean {\r\n if(!data){\r\n return false;\r\n }\r\n\r\n const element = data[index];\r\n if(!element.isNew){\r\n let deleteRow = savedDataRef.current.find(x=>x.code === element.code)\r\n if(deleteRow){\r\n deleteRow.isDelete = true;\r\n }\r\n }\r\n data.splice(index, 1);\r\n setData(data);\r\n const tempData = data.map((a: CodeExportLicListItem) => a.code.toLowerCase());\r\n const newData = allData.splice(0,tempData.length,tempData);\r\n setAllData(newData);\r\n return true;\r\n }\r\n\r\n async function duplicateCell(checkData: any) {\r\n let duplicateFieldText = '';\r\n\r\n let isDuplicate = false;\r\n let insList = checkData.filter((x: any) => x.isNew === true);\r\n let chgList = checkData.filter((x: any) => x.hasBeenChanged === true && !x.isNew);\r\n let focusRow = -1;\r\n\r\n if (insList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < insList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (insList[i].code.toUpperCase() === data[j].code.toUpperCase()) {\r\n if (count === 0) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${insList[i].code}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (chgList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < chgList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (chgList[i].code.toUpperCase() === data[j].code.toUpperCase()) {\r\n if (!data[j].isNew && data[j].hasBeenChanged === true && tempRow === -1) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${chgList[i].code}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (!isDuplicate) {\r\n const apiResult = await appContext.api.checkDuplicatedKeys(JobNames.ExportLic, listItemType, insList, chgList);\r\n if (apiResult && apiResult.success && apiResult.message) {\r\n duplicateFieldText = `${apiResult.message}`;\r\n isDuplicate = true;\r\n } else if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog('Could not check duplication.\\r\\nPlease try later.');\r\n return true;\r\n }\r\n }\r\n else\r\n await showGlobalOkDialog(`${duplicateFieldText}Please try after correcting duplication.`);\r\n\r\n return isDuplicate;\r\n }\r\n\r\n async function save() {\r\n // if (!inlineElement.isNew && !hasChanges) {\r\n // cancelOperation();\r\n // return;\r\n // }\r\n\r\n // x.code);\r\n \r\n let errMsg = '';\r\n const dataToSave = validData.filter((x: any, i: number) => x.isNew || x.hasBeenChanged === true);\r\n const dataToDelete = savedDataRef.current.filter((x) => x.isDelete);\r\n if(dataToSave.length === 0 && dataToDelete.length === 0) {\r\n if (hasChanges) reload(orderBy?.generalText1 || '');\r\n return;\r\n }\r\n setLoading(true);\r\n\r\n for (let i = 0; i < dataToDelete.length; ++i) {\r\n const s = dataToDelete[i];\r\n const apiResult: ApiResult = await appContext.api.saveListItem(listItemType, SQLType.Delete, _.omit(s, ['isDelete']));\r\n if (!apiResult || !apiResult.success)\r\n errMsg = apiResult?.message ?? constants.SAVE_ERROR_MESSAGE;\r\n }\r\n\r\n if (dataToSave.length > 0) {\r\n const isDuplicate = await duplicateCell(dataToSave);\r\n if(isDuplicate){\r\n setLoading(false);\r\n return;\r\n }\r\n const cidData = dataToSave.map((a: CodeExportLicListItem) => a.cid?.toLowerCase()) as Array;\r\n\r\n const secondSave = dataToSave.filter((x: CodeExportLicListItem) => cidData.includes(x.code.toLowerCase()));\r\n const firstSave = dataToSave.filter((x: CodeExportLicListItem) => !secondSave.includes(x));\r\n\r\n if (firstSave.length > 0) {\r\n const apiResult: ApiResult = await appContext.api.saveList(listItemType, firstSave);\r\n if (!apiResult || !apiResult.success) {\r\n errMsg += (errMsg ? '\\n' : '') + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n }\r\n else {\r\n firstSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.code === x.code);\r\n if (index >= 0) {\r\n data[index].cid = x.code;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n delete data[index].isNew;\r\n }\r\n })\r\n }\r\n }\r\n if (secondSave.length > 0) {\r\n const apiResult: ApiResult = await appContext.api.saveList(listItemType, secondSave);\r\n if (!apiResult || !apiResult.success) {\r\n errMsg += (errMsg ? '\\n' : '') + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n }\r\n else {\r\n secondSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.code === x.code);\r\n if (index >= 0) {\r\n data[index].cid = x.code;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n delete data[index].isNew;\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n if (errMsg) {\r\n await showGlobalOkDialog(

    {errMsg}

    );\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n // setData(data);\r\n // savedDataRef.current = _.cloneDeep(data);\r\n // oriData.current = _.cloneDeep(data);\r\n \r\n // setLoading(false);\r\n // setHasChanges(false);\r\n reload(orderBy?.generalText1 || '');\r\n\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n\r\n // const apiResult:ApiResult = await appContext.api.saveListItem('CodeExportLicListItem',\r\n // inlineElement.isNew ? SQLType.Insert : SQLType.Update,\r\n // _.omit(inlineElement, ['isNew']));\r\n // if(!apiResult.success) {\r\n // await showGlobalOkDialog(

    {apiResult.message}

    );\r\n // return;\r\n // }\r\n\r\n // // code is pkey\r\n // data[ei] = formatElement(inlineElement);\r\n // //pt220818>\r\n // cancelOperation(true);\r\n }\r\n\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n customTableId: 'codes-aes-licenseinfo-list',\r\n ref: tableRef,\r\n selectable: true,\r\n tableName: 'aesLicenseInfoList',\r\n ...codesAesExportLicenseList,\r\n height: `${tableHeight}px`,\r\n //data: data.map((x:any, i:number) => ({...x, indicator: (i + 1).toString(), editIndex: ei, onDelete: deleteEntity, onSave: save, onCancel: cancelOperation, setHasChanges, requestOperationCancel, listSec})),\r\n data: data.map((x:any, i:number) => ({...x, indicator: (i + 1).toString(), changeLineItem: applyToLineItem})),\r\n rowRenderers: [\r\n { accessor: 'indicator' },\r\n { accessor: 'code', EditCell: CodeRenderer },\r\n { accessor: 'description', EditCell: DescriptionRenderer },\r\n // { accessor: 'action', Cell: ActionRenderer },\r\n ],\r\n getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n if (accessor === 'code')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].code };\r\n else if (accessor === 'description')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].description };\r\n else\r\n return undefined;\r\n },\r\n isCellLock: (accessor: string, rowData: any): boolean => {\r\n if(!(listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel))\r\n return true\r\n else\r\n return false;\r\n },\r\n\r\n onHeaderClick,\r\n orderBy: [orderBy],\r\n useEditControls: (listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel),\r\n };\r\n\r\n //const canSelectForNew = ei === -1;\r\n const canBeAdd = listSec?.grantAdd;\r\n\r\n return (\r\n
    \r\n {/* \r\n

    AES  License Info

    \r\n
    */}\r\n \r\n \r\n
    \r\n
    \r\n Save\r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n { reload(orderBy?.generalText1 || '') }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    */}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {await reload(generalText1 === null ? '' : generalText1); }} />\r\n
    \r\n
    \r\n
    \r\n {// { addingLineToFirstLine() }}>  Add Line   \r\n }\r\n { reload(orderBy?.generalText1 || '') }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n {/* */}\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default LicenseInfos;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeScheduleBListItem extends SearchModelBase {\r\n code: string = '';\r\n sdescription: string = '';\r\n unit1: string = '';\r\n unit2: string = '';\r\n cid: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Schedule B', width: 100, dataIndex: 'code'}),\r\n XCol.Create({ col: 1, text: 'Description', width: 500, dataIndex: 'sdescription'}),\r\n XCol.Create({ col: 2, text: 'Unit 1', width: 70, dataIndex: 'unit1'}),\r\n XCol.Create({ col: 3, text: 'Unit 2', width: 70, dataIndex: 'unit2'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeScheduleBListItem.prototype.code, orderByAscending: true };\r\n\r\n public static formatData(data: CodeScheduleBListItem[]) {\r\n return data.map((d: CodeScheduleBListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import _ from 'lodash';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport ClearableSearch from '../../../../uiControls/ClearableSearch';\r\n\r\nimport { ApplicableTableSettings, codesAesScheduleBList } from '../../../../tableSettings';\r\n\r\nimport useFastStorage from '../../../../hooks/useFastStorage';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\n\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport useSystemSettings from '../../../../hooks/useSystemSettings';\r\nimport { Search } from '../../../../filtering';\r\nimport { Portal } from 'react-portal';\r\nimport { CodeScheduleBListItem } from '../../../../fms.data/models/CodeScheduleBListItem';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { ApiResult, InsertResult } from '../../../../framework.core/data/ApiResult';\r\nimport { SQLType } from '../../../../framework.core/data/SQLInfo';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport GreenButton from '../../../../ui/GreenButton';\r\nimport EditableTable, { CellData, EditableTableHandle, TableCellAligns, TableCellTypes } from '../../../../ui/tables/editing/EditableTable';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport { checkTabIsDirty, sortingListData } from '../../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../../util';\r\n\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport constants from '../../../../constants';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\n\r\nfunction CodeRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, {code: e.target.value, isUpdate: true})\r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nfunction DescriptionRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, {sdescription: e.target.value, isUpdate: true})\r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nfunction Unit1Renderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, {unit1: e.target.value, isUpdate: true})\r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nfunction Unit2Renderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, {unit2: e.target.value, isUpdate: true})\r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nclass EditableCodeExportInfoListItem extends CodeScheduleBListItem {\r\n isNew: boolean = false;\r\n isDelete: boolean = false;\r\n isUpdate: boolean = false;\r\n}\r\n\r\nfunction formatElement(data:any) {\r\n const result = new EditableCodeExportInfoListItem();\r\n result.code = data.code;\r\n result.sdescription = data.sdescription;\r\n result.unit1 = data.unit1;\r\n result.unit2 = data.unit2;\r\n result.cid = data.cid;\r\n result.isNew = false;\r\n result.isDelete = false;\r\n\r\n return result;\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data.map(d => formatElement(d));\r\n}\r\n\r\nfunction Scheduleb() {\r\n useFunction({invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n //ifmsReferenceFilesCancel: () => {},\r\n }});\r\n useFunctionKeys({ onSave: handleSaveAndClose });\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const systemSettings = useSystemSettings();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const tableRef = useRef(null);\r\n const masterTableRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n const [allData, setAllData] = useState(Array());\r\n //const addingToTheFirstLine = useRef(false);\r\n const [hasChanges, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n \r\n const [data, _setData, removeData, /*dataRef*/] = useFastStorage(`ifms-referenceFiles-scheduleb-list`, []);\r\n\r\n const savedDataRef = useRef>([]);\r\n const oriData = useRef([]);\r\n\r\n //const [ei, setEi, , ediRef] = useFastStorage(`ifms-referenceFiles-scheduleb-editindex`, -1);\r\n const [orderBy, setOrderBy] = useFastStorage(`ifms-referenceFiles-scheduleb-orderby`, {\r\n orderBy: 'code',\r\n orderByAscending: true,\r\n general1: 'Code',\r\n pageSize: systemSettings.defaultPageSize,\r\n });\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeScheduleB);\r\n const [focusFirstCell, setFocusFirstCell] = useState(true);\r\n\r\n const listItemType = 'CodeScheduleBListItem';\r\n \r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if (!modals)\r\n saveBtn.click();\r\n }\r\n }\r\n \r\n async function cancelOperation(){\r\n setHasChanges(false);\r\n removeData();\r\n return true;\r\n }\r\n\r\n function setData(d: Array, callByFetchData: boolean = false) {\r\n setFocusFirstCell(callByFetchData);\r\n _setData(d, null, { forceClone: callByFetchData });\r\n setHasChanges(checkTabIsDirty(CodeScheduleBListItem, oriData.current, d));\r\n }\r\n\r\n const tableHeight = 520;\r\n\r\n async function fetchData(api:any, search:Search) {\r\n setLoading(true);\r\n\r\n const searchModel = CodeScheduleBListItem.calculateSearchParameters(search);\r\n const apiResult = await api.getListItems(JobNames.ScheduleB,\r\n listItemType,\r\n searchModel, 1, search.pageSize);\r\n // const apiResultforAll = await api.getListItems(JobNames.ScheduleB,\r\n // listItemType,\r\n // searchModel,\r\n // 1);\r\n\r\n oriData.current = formatData(apiResult && apiResult.entities ? apiResult.entities : []);\r\n setData(formatData(apiResult && apiResult.entities ? apiResult.entities : []), true);\r\n savedDataRef.current = apiResult && apiResult.entities ? apiResult.entities : [];\r\n\r\n // if(apiResultforAll && apiResultforAll.entities){\r\n // setAllData(apiResultforAll.entities.map((a: CodeScheduleBListItem) => a.code.toLowerCase()));\r\n // }\r\n\r\n setFocusFirstCell(false);\r\n setLoading(false);\r\n setHasChanges(false);\r\n }\r\n\r\n useEffect(() => {\r\n async function executeAsyncFunc() {\r\n if (data.length === 0)\r\n await reload('');\r\n else{\r\n oriData.current = _.cloneDeep(data);\r\n savedDataRef.current = _.cloneDeep(data);\r\n }\r\n }\r\n executeAsyncFunc();\r\n return () => {\r\n removeData();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n async function reload(generalText:string = '') {\r\n setOrderBy({\r\n orderBy: 'code',\r\n orderByAscending: true,\r\n pageSize: systemSettings.defaultPageSize,\r\n generalText1: generalText,\r\n })\r\n\r\n await fetchData(appContext.api, orderBy);\r\n }\r\n\r\n function onHeaderClick(header: any) {\r\n // if (ediRef.current !== -1) {\r\n // return;\r\n // }\r\n\r\n //let newOrderBy = { ...orderBy, orderByAscending: !orderBy.orderByAscending };\r\n\r\n if (header && header.id !== 'indicator') {\r\n if (header.id === orderBy.orderBy) {\r\n setOrderBy({ orderByAscending: !orderBy.orderByAscending });\r\n } else {\r\n setOrderBy({ orderBy: header.id, orderByAscending: true });\r\n }\r\n\r\n removeData();\r\n sortingListData(CodeScheduleBListItem, data, setData, orderBy);\r\n }\r\n\r\n // const sortResult = sortSettingListData(data ?? [], newOrderBy, codesAesScheduleBList.columns);\r\n\r\n // if (sortResult.sorted) {\r\n // setData(sortResult.data);\r\n // }\r\n\r\n }\r\n\r\n // async function requestOperationCancel() {\r\n // const doCancel = await showGlobalYesNoDialog(

    Are you sure you want to cancel Edit operation

    );\r\n // if (doCancel) {\r\n // cancelOperation(false)\r\n // } else {\r\n // setTimeout(() => {\r\n // selectTableRow(ediRef.current);\r\n // }, 80);\r\n // }\r\n // }\r\n\r\n // async function onRowIndexChanged(rowIndex:number) {\r\n // if (rowIndex < 0 && ediRef.current >= 0) {\r\n // setTimeout(() => {\r\n // selectTableRow(ediRef.current);\r\n // }, 80)\r\n // return;\r\n // }\r\n\r\n // if (ediRef.current >= 0 && ediRef.current !== rowIndex) {\r\n // await requestOperationCancel();\r\n // }\r\n // }\r\n\r\n // function onRowSelect(rowIndex:number) {\r\n // if (rowIndex >= 0 && rowIndex < dataRef.current.length && _.isEmpty(inlineElement) && (listSec?.grantEdit || listSec?.grantDel)) {\r\n // setHasChanges(true);\r\n // inlineElement = {...dataRef.current[rowIndex], isNew: false};\r\n // setEi(rowIndex);\r\n // }\r\n // }\r\n\r\n // function selectForNew() {\r\n // inlineElement = {\r\n // code: '', sdescription: '', unit1: '', unit2: '', isNew: true,\r\n // };\r\n // data.unshift(inlineElement);\r\n // setData(data);\r\n // setEi(0);\r\n // setHasChanges(true);\r\n // }\r\n\r\n // function cancelOperation(leaveNew:boolean=false) {\r\n // setHasChanges(false);\r\n\r\n // //clearTableSelection();\r\n // setEi(-1);\r\n\r\n // if (!leaveNew && inlineElement.isNew) {\r\n // dataRef.current.splice(0, 1);\r\n // setData(dataRef.current);\r\n // }\r\n\r\n // //inlineElement = {};\r\n // }\r\n\r\n function deleteEntity(index:number): boolean {\r\n if(!data){\r\n return false;\r\n }\r\n\r\n const element = data[index];\r\n if(!element.isNew){\r\n let deleteRow = savedDataRef.current.find(x=>x.code === element.code);\r\n if(deleteRow){\r\n deleteRow.isDelete = true;\r\n }\r\n }\r\n\r\n data.splice(index, 1);\r\n setData(data);\r\n const tempData = data.map((a: CodeScheduleBListItem) => a.code.toLowerCase());\r\n const newData = allData.splice(0,tempData.length,tempData);\r\n setAllData(newData);\r\n return true; \r\n }\r\n\r\n function getIndexOfFirstInvalidCell(rowIndex: number):number|undefined {\r\n if(!data){\r\n return undefined;\r\n }\r\n if(!data[rowIndex].code){\r\n return 1;\r\n }\r\n if (allData) { //기존데이터 목록\r\n const newData = [...allData];\r\n if(newData.filter(x => x === data[rowIndex].code.toLowerCase()).length === 0) // 현재 목록에 없음\r\n {\r\n newData.splice(rowIndex, 1, data[rowIndex].code.toLowerCase());\r\n setAllData(newData);\r\n return undefined;\r\n }else{\r\n if(newData[rowIndex] === data[rowIndex].code.toLowerCase()) return undefined;\r\n else{\r\n showGlobalOkDialog(

    '{data[rowIndex].code}' is a duplicate value.

    );\r\n return 1;\r\n }\r\n }\r\n } \r\n else {\r\n const newData = [data[rowIndex].code.toLowerCase()];\r\n setAllData(newData);\r\n }\r\n return undefined;\r\n }\r\n\r\n async function duplicateCell(checkData: any) {\r\n if (!data) {\r\n return;\r\n }\r\n\r\n let duplicateFieldText = '';\r\n\r\n let isDuplicate = false;\r\n let insList = checkData.filter((x: any) => x.isNew === true);\r\n let chgList = checkData.filter((x: any) => x.hasBeenChanged === true && !x.isNew);\r\n let focusRow = -1;\r\n\r\n if (insList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < insList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (insList[i].code.toUpperCase() === data[j].code.toUpperCase()) {\r\n if (count === 0) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${insList[i].code}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (chgList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < chgList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (chgList[i].code.toUpperCase() === data[j].code.toUpperCase()) {\r\n if (!data[j].isNew && data[j].hasBeenChanged === true && tempRow === -1) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${chgList[i].code}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (!isDuplicate) {\r\n const apiResult = await appContext.api.checkDuplicatedKeys(JobNames.ScheduleB, listItemType, insList, chgList);\r\n if (apiResult && apiResult.success && apiResult.message) {\r\n duplicateFieldText = `${apiResult.message}`;\r\n isDuplicate = true;\r\n } else if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog('Could not check duplication.\\r\\nPlease try later.');\r\n return true;\r\n }\r\n }\r\n else\r\n await showGlobalOkDialog(`${duplicateFieldText}Please try after correcting duplication.`);\r\n\r\n return isDuplicate;\r\n }\r\n\r\n async function save() {\r\n // if (!inlineElement.isNew && !hasChanges) {\r\n // cancelOperation();\r\n // return;\r\n // }\r\n\r\n // = await appContext.api.saveListItem(listItemType,\r\n // inlineElement.isNew ? SQLType.Insert : SQLType.Update,\r\n // _.omit(inlineElement, ['isNew']));\r\n // if(!apiResult.success) {\r\n // await showGlobalOkDialog(

    {apiResult.message}

    );\r\n // return;\r\n // }\r\n\r\n //code is pkey\r\n //data[ei] = formatElement(inlineElement);\r\n //pt220818>\r\n\r\n // cancelOperation(true);\r\n //await showGlobalOkDialog(

    The data has been saved

    );\r\n if (!data) {\r\n return;\r\n }\r\n\r\n let validData = data.filter((x:any) => x.code);\r\n\r\n let errMsg = '';\r\n const dataToSave = validData.filter((x: any) => x.isNew || x.hasBeenChanged === true);\r\n const dataToDelete = savedDataRef.current.filter((x) => x.isDelete);\r\n if(dataToSave.length === 0 && dataToDelete.length === 0) {\r\n if (hasChanges) reload(orderBy.generalText1);\r\n return;\r\n }\r\n setLoading(true);\r\n\r\n for (let i = 0; i < dataToDelete.length; ++i) {\r\n const s = dataToDelete[i];\r\n const apiResult: ApiResult = await appContext.api.saveListItem(listItemType, SQLType.Delete, _.omit(s, ['isDelete']));\r\n if (!apiResult || !apiResult.success)\r\n errMsg = apiResult?.message ?? constants.SAVE_ERROR_MESSAGE;\r\n }\r\n\r\n if (dataToSave.length > 0) {\r\n const isDuplicate = await duplicateCell(dataToSave);\r\n if(isDuplicate){\r\n setLoading(false);\r\n return;\r\n }\r\n const cidData = dataToSave.map((a: CodeScheduleBListItem) =>a.cid?.toLowerCase()) as Array;\r\n\r\n const secondSave = dataToSave.filter((x: CodeScheduleBListItem) => cidData.includes(x.code?.toLowerCase()));\r\n const firstSave = dataToSave.filter((x: CodeScheduleBListItem) => !secondSave.includes(x));\r\n\r\n if (firstSave.length > 0) {\r\n const apiResult: ApiResult = await appContext.api.saveList(listItemType, firstSave);\r\n if (!apiResult || !apiResult.success)\r\n errMsg += (errMsg ? '\\n' : '') + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n\r\n else {\r\n firstSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.code === x.code);\r\n if (index >= 0) {\r\n data[index].cid = x.code;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n delete data[index].isNew;\r\n }\r\n })\r\n }\r\n }\r\n if (secondSave.length > 0) {\r\n const apiResult: ApiResult = await appContext.api.saveList(listItemType, secondSave);\r\n if (!apiResult || !apiResult.success)\r\n errMsg += (errMsg ? '\\n' : '') + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n\r\n else {\r\n secondSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.code === x.code);\r\n if (index >= 0) {\r\n data[index].cid = x.code;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n delete data[index].isNew;\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\nif(errMsg) {\r\n await showGlobalOkDialog(

    {errMsg}

    );\r\n setLoading(false);\r\n return;\r\n} \r\n\r\n// setData(data);\r\n// savedDataRef.current = _.cloneDeep(data);\r\n// oriData.current = _.cloneDeep(data);\r\n\r\n// setLoading(false);\r\n// setHasChanges(false);\r\nreload(orderBy.generalText1);\r\n\r\nawait showGlobalOkDialog(

    The data has been saved

    );\r\n}\r\n\r\n function applyToLineItem(rowIndex: number, change: Partial|null) {\r\n if (!change || !data) {\r\n return;\r\n }\r\n const newData = [...data];\r\n const checkData = data[rowIndex];\r\n if (!change.isNew && (change.code !== checkData.code || change.sdescription !== checkData.sdescription ||\r\n change.unit1 !== checkData.unit1 || change.unit2 !== checkData.unit2)) {\r\n _.merge(newData[rowIndex], {..._.omit(change, ['isNew']), hasBeenChanged: true});\r\n setData(newData);\r\n //setHasChanges(true);\r\n }\r\n }\r\n \r\n // function addingLineToFirstLine(){\r\n // addingToTheFirstLine.current = true;\r\n // masterTableRef.current?.add();\r\n // }\r\n\r\n function addLineItem() {\r\n const newRow = new EditableCodeExportInfoListItem();\r\n newRow.isNew = true;\r\n\r\n return {\r\n setDataFunc: (list: any) => setData(list),\r\n curListData: data,\r\n newData: newRow\r\n };\r\n }\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n customTableId: 'codes-aes-scheduleb-list',\r\n ref: tableRef,\r\n selectable: true,\r\n tableName: 'scheduleBList',\r\n ...codesAesScheduleBList,\r\n height: `${tableHeight}px`,\r\n data: (data ?? []).map((x:any, i:number) => ({...x, indicator: (i + 1).toString(), changeLineItem: applyToLineItem})),\r\n rowRenderers: [\r\n { accessor: 'indicator' },\r\n { accessor: 'code', EditCell: CodeRenderer },\r\n { accessor: 'sdescription', EditCell: DescriptionRenderer },\r\n { accessor: 'unit1', EditCell: Unit1Renderer},\r\n { accessor: 'unit2', EditCell: Unit2Renderer },\r\n //{ accessor: 'action', Cell: ActionRenderer },\r\n ],\r\n getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n if (accessor === 'code')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].code };\r\n else if (accessor === 'sdescription')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].sdescription };\r\n else if (accessor === 'unit1')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].unit1, align: TableCellAligns.Center};\r\n else if (accessor === 'unit2')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].unit2, align: TableCellAligns.Center};\r\n else\r\n return undefined;\r\n },\r\n isCellLock: (accessor: string, rowData: any): boolean => {\r\n if(!(listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel))\r\n return true\r\n else\r\n return false;\r\n },\r\n \r\n orderBy: [orderBy],\r\n onHeaderClick,\r\n useEditControls: (listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel)\r\n };\r\n\r\n //const canSelectForNew = ei === -1;\r\n const canBeAdd = listSec?.grantAdd;\r\n\r\n return (\r\n
    \r\n {/* \r\n

    AES  Schedule B

    \r\n
    \r\n setOrderBy({general1: generalText1 ? orderBy?.orderBy : null, generalText1})} />\r\n
    \r\n
    */}\r\n \r\n {/*
    */}\r\n\r\n {/*
    \r\n Double Click Schedule B to Edit\r\n
    */}\r\n\r\n \r\n
    \r\n
    \r\n Save\r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n { reload(orderBy.generalText1) }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    */}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {\r\n await reload(generalText1 === null ? '' : generalText1);\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n {// { addingLineToFirstLine() }}>  Add Line   \r\n }\r\n { reload(orderBy.generalText1) }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n {/*
    */}\r\n
    \r\n {/* */}\r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default Scheduleb;\r\n","import { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport PrimaryButton from '../../../../ui/PrimaryButton';\r\nimport IfmsModal from '../../../../ui/IfmsModal';\r\nimport useTableNavigation from '../../../../ui/tables/useTableNavigation';\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\nimport useFastStorage, { useTypedFastStorage } from '../../../../hooks/useFastStorage';\r\n\r\nimport { ApplicableTableSettings, buyingRateList } from '../../../../tableSettings';\r\n\r\nimport {\r\n DateRenderer,\r\n FloatRenderer,\r\n TextAlignLeftRenderer,\r\n TextRenderer,\r\n} from '../../../../uiControls/SmartTableRenderers';\r\n\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\nimport SecondaryButton from '../../../../ui/SecondaryButton';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport { Search, initialSearch } from '../../../../filtering';\r\nimport InputControlRow from '../../../../ui/layout/InputControlRow';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport LeftRightSplit from '../../../../ui/LeftRightSplit';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport useDirtyCheck from '../../../../hooks/useDirtyCheck2';\r\nimport { ApiResult, InsertResultsWithData } from '../../../../framework.core/data/ApiResult';\r\nimport { TrackableEntity } from '../../../../fms.core/data/ChangeTrackable';\r\nimport { getSQLInfoList } from '../../../../fms.core/data/TrackingModule';\r\nimport useGlobalYesNoDialog from '../../../../hooks/useGlobalYesNoDialog';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\nimport { CarrierInfo, sortingListData } from '../../ReferenceFiles';\r\nimport _ from 'lodash';\r\nimport { RateTableListItem } from '../../../../fms.data/models/RateTableListItem';\r\nimport { RateTable } from '../../../../fms.core/RateTable';\r\nimport InlineInputControlRow from '../../../../ui/layout/InlineInputControlRow';\r\nimport Select from '../../../../ui/Select';\r\nimport Date from '../../../../ui/Date';\r\nimport Float from '../../../../ui/Float';\r\nimport MultilineTextBox from '../../../../ui/MultilineTextBox';\r\nimport useFilterBar from '../../../../hooks/useFilterBar';\r\nimport { ListOrderBy } from \"../../../common/AbstractListView\";\r\nimport postal from 'postal';\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport constants from '../../../../constants';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport { Portal } from 'react-portal';\r\nimport GreenButton from '../../../../ui/GreenButton';\r\n\r\nfunction RowSpacer() {\r\n return (\r\n
     
    \r\n );\r\n}\r\n\r\nexport function BuyingRateDetail({\r\n readonly,\r\n buyingRate,\r\n onChange\r\n}: {\r\n readonly: boolean,\r\n buyingRate: RateTable,\r\n onChange: (change: Partial) => void,\r\n}) {\r\n return (\r\n
    \r\n
    \r\n \r\n\r\n \r\n onChange({ carrier: e.target.value })} />\r\n \r\n \r\n
    \r\n onChange({ mode: e.target.value})}\r\n items={[\r\n { label: 'FCL', value: 'FCL'},\r\n { label: 'LCL', value: 'LCL'},\r\n ]}\r\n />\r\n
    \r\n
    \r\n\r\n \r\n onChange({effectETD}))}\r\n />\r\n }\r\n right={\r\n
    \r\n Valid By
    }\r\n right={\r\n onChange({expireETD}))}\r\n />\r\n }/>\r\n
    \r\n }\r\n />\r\n \r\n \r\n onChange({ origin: e.target.value })} />\r\n \r\n \r\n onChange({ destination: e.target.value })} />\r\n \r\n \r\n \r\n
    \r\n onChange({remark: e.target.value})}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n \r\n
    \r\n onChange({ size: e.target.value })} />\r\n
    \r\n
    \r\n \r\n
    \r\n onChange({rate1: rate1??0})} />\r\n
    \r\n
    \r\n \r\n onChange({commodity: e.target.value})} />\r\n \r\n \r\n \r\n onChange({transit: transit??0})}\r\n onTabNext={() => {\r\n document.getElementById('carrier-mode')?.focus();\r\n return true;\r\n }} />\r\n\r\n }\r\n right={\r\n
    \r\n days\r\n
    \r\n }\r\n />\r\n
    \r\n
    \r\n \r\n \r\n );\r\n}\r\n\r\nfunction formatElement(data:any, index:number) {\r\n return {\r\n ...data,\r\n companyName: data.company?.shortName ?? '',\r\n indicator: index + 1\r\n };\r\n}\r\n\r\nfunction formatData(data: Array) {\r\n return data.map((d, i) => formatElement(d, i));\r\n}\r\n\r\nfunction BuyingRate({\r\n componentIndex,\r\n carrierBuyRate\r\n}: {\r\n componentIndex: number,\r\n carrierBuyRate: CarrierInfo\r\n}) {\r\n useFunction({\r\n invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n }\r\n });\r\n useFunctionKeys({ onEsc: cancelOperation});\r\n \r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const {selectTableRow, tableNavigationCleanup } = useTableNavigation('codes-buyingRate-list', onRowSelect, onRowDoubleSelect, ['carrier'], false, false, false);\r\n\r\n const tableRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n const [, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, dataRef] = useFastStorage(`ifms-referenceFiles-buyingRate-list`, []);\r\n //const [viewId, setViewId] = useTypedFastStorage(`ifms-referenceFiles-buyingRate-view-id`, -1);\r\n const [buyingRate, _setBuyingRate, removeBuyingRateFromStorage] = useTypedFastStorage(`ifms-referenceFiles-buyingRate-editable`, null);\r\n const [orderBy, setOrderBy] = useFastStorage(`ifms-referenceFiles-buyingRate-orderby`, {\r\n orderBy: 'carrier',\r\n orderByAscending: true,\r\n // general1: 'Carrier',\r\n // pageSize: systemSettings.defaultPageSize,\r\n // tbId:carrierBuyRate.tbId,\r\n });\r\n //\r\n const {setCleanState, dirtyCleanup} = useDirtyCheck(`ifms-referenceFiles-buyingRate-editable`, ['edit', 'view']);\r\n const [selectedRow, setSelectedRow] = useState(-1);\r\n const { FilterButton, search } = useFilterBar(\r\n buyingRateList,\r\n undefined,\r\n getDefaultOrderBy,\r\n String(componentIndex)\r\n );\r\n\r\n function getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'carrier',\r\n orderByAscending: true,\r\n };\r\n }\r\n\r\n function setBuyingRate(c:Partial, skipDirty:boolean = false) {\r\n if (!skipDirty) {\r\n setHasChanges(true);\r\n }\r\n _setBuyingRate(c);\r\n }\r\n\r\n const tableHeight = 520;\r\n\r\n function setData(d:Array) {\r\n removeData();\r\n _setData(d);\r\n }\r\n\r\n async function fetchData(api:any, search:Search) {\r\n const searchTemp = {...search, tbid: carrierBuyRate.tbId};\r\n\r\n setLoading(true);\r\n const apiResult = await api.getListItems(JobNames.SellingRate,\r\n 'RateTableListItem',\r\n RateTableListItem.calculateSearchParameters(searchTemp, RateTableListItem.MapSearchFields),\r\n 1,\r\n searchTemp.pageSize);\r\n\r\n const fetchedTableData = formatData(apiResult && apiResult.entities ? apiResult.entities : []);\r\n sortingListData(RateTableListItem, fetchedTableData , setData, orderBy);\r\n setHasChanges(false);\r\n setLoading(false);\r\n }\r\n/*\r\n function checkViewIdOnInitialLoad() {\r\n if (!viewId || viewId <= 0) {\r\n return;\r\n }\r\n\r\n setViewId(-1);\r\n }\r\n*/\r\n useEffect(() => {\r\n // async function executeAsyncFunc() {\r\n // await reload();\r\n // }\r\n // executeAsyncFunc();\r\n return () => {\r\n removeData();\r\n tableNavigationCleanup();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n fetchData(appContext.api, search);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [search]\r\n );\r\n \r\n useEffect(() => {\r\n if (dataRef.current?.length > 0 && loading === false) {\r\n selectTableRow(0);\r\n onRowSelect(0);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [loading]\r\n );\r\n\r\n async function onRowSelect(rowIndex: number){\r\n setSelectedRow(!isNaN(rowIndex) ? rowIndex: -1);\r\n }\r\n\r\n async function onRowDoubleSelect(rowIndex:number) {\r\n if (!dataRef || !dataRef.current) {\r\n return;\r\n }\r\n\r\n const apiResult:ApiResult = await appContext.api.getJobDetail(JobNames.SellingRate,\r\n {id: dataRef.current[rowIndex].id });\r\n if(!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

    );\r\n return;\r\n }\r\n\r\n const objScac = {...apiResult.result, edit: true, view: true, editIndex: rowIndex};\r\n setCleanState(objScac);\r\n const tEntity = new RateTable(objScac);\r\n tEntity.trackable = true;\r\n setBuyingRate(tEntity, true);\r\n //pt220818>\r\n }\r\n\r\n async function setBuyingRateDetail(isView: boolean){\r\n const apiResult:ApiResult = await appContext.api.getJobDetail(JobNames.SellingRate,\r\n {jobId: dataRef.current[selectedRow].id });\r\n if(!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

    );\r\n return;\r\n }\r\n\r\n const objScac = {...apiResult.result, edit: true, view: isView, editIndex: selectedRow};\r\n setCleanState(objScac);\r\n const tEntity = new RateTable(objScac);\r\n tEntity.trackable = true;\r\n setBuyingRate(tEntity, true);\r\n }\r\n\r\n // async function reload(generalText:string = '') {\r\n // setOrderBy({\r\n // orderBy: 'carrier',\r\n // orderByAscending: true,\r\n // pageSize: systemSettings.defaultPageSize,\r\n // generalText1: generalText,\r\n // tbId:carrierBuyRate.tbId,\r\n // })\r\n \r\n // await fetchData(appContext.api, orderBy);\r\n // checkViewIdOnInitialLoad();\r\n // }\r\n\r\n async function reload(clearAll:boolean = true) {\r\n const searchValue = clearAll ? initialSearch : search;\r\n await fetchData(appContext.api, searchValue);\r\n //checkViewIdOnInitialLoad();\r\n }\r\n\r\n function onHeaderClick(header:any) {\r\n if (buyingRate !== null) {\r\n return;\r\n }\r\n\r\n if (header && header.id !== 'indicator') {\r\n if (header.id === orderBy.orderBy) {\r\n setOrderBy({orderByAscending: !orderBy.orderByAscending});\r\n } else {\r\n setOrderBy({orderBy: header.id, orderByAscending: true});\r\n }\r\n }\r\n sortingListData(RateTableListItem, data, setData, orderBy);\r\n }\r\n\r\n function selectUserForNew() {\r\n\r\n const newCodeModel = new RateTable(); \r\n setBuyingRate(newCodeModel, false);\r\n newCodeModel.carrier = carrierBuyRate.code;\r\n newCodeModel.tbName = 'T_CODESCAC';\r\n newCodeModel.tbType = 88;\r\n newCodeModel.tbId = carrierBuyRate.tbId;\r\n setCleanState(newCodeModel);\r\n \r\n setBuyingRate({\r\n edit : false,\r\n view: false});\r\n }\r\n\r\n async function selectUserForEdit(){\r\n //clearTableSelection();\r\n await setBuyingRateDetail(false);\r\n }\r\n\r\n async function selectUserForView(){\r\n //clearTableSelection();\r\n await setBuyingRateDetail(true);\r\n }\r\n \r\n async function selectUserForDelete(){\r\n const doConfirm = await showGlobalYesNoDialog(\r\n
    \r\n

    Confirm to Delete?

    \r\n
    \r\n , false, 0, true, 'warning');\r\n if(doConfirm){\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.SellingRate, { id:dataRef.current[selectedRow].id });\r\n if (apiResult && apiResult.success) {\r\n await reload(false);\r\n }else\r\n showGlobalOkDialog(

    {\"Cannot delete\"}

    );\r\n }else\r\n return;\r\n }\r\n\r\n function cancelOperation() {\r\n const filterNode = document.getElementById('ifms-list-screen-filter');\r\n const channel = postal.channel('ifms-filter');\r\n\r\n if (!filterNode) {\r\n setHasChanges(false);\r\n removeBuyingRateFromStorage();\r\n } else {\r\n channel.publish('ifms-filter.dismiss');\r\n }\r\n return true;\r\n }\r\n\r\n async function save() {\r\n if (!buyingRate) {\r\n return;\r\n }\r\n\r\n const mainChange: Partial= {};\r\n const userID = appContext.user ? appContext.user.id ?? '' : '';\r\n if(buyingRate.edit === false && buyingRate.view === false){\r\n mainChange.u1Id = userID;\r\n }\r\n mainChange.u2Id = userID;\r\n if(!_.isEmpty(mainChange)){\r\n setBuyingRate(mainChange);\r\n }\r\n\r\n const sqlInfoList = getSQLInfoList(buyingRate as TrackableEntity);\r\n const apiResult:ApiResult = await appContext.api.saveJobDetail(\r\n JobNames.SellingRate,\r\n sqlInfoList\r\n );\r\n\r\n if(!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.SAVE_ERROR_MESSAGE}

    );\r\n return;\r\n }\r\n \r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n \r\n cancelOperation();\r\n dirtyCleanup();\r\n await reload(false);\r\n\r\n //pt220818>\r\n }\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n customTableId: 'codes-buyingRate-list',\r\n ref: tableRef,\r\n selectable: true,\r\n tableName: 'codesbuyingRateList',\r\n ...buyingRateList,\r\n height: `${tableHeight}px`,\r\n data: (data ?? []).map((x: any, i:number) => ({ ...x, indicator: (i + 1).toString(), })),\r\n rowRenderers: [\r\n { accessor: 'indicator', Cell: TextRenderer },\r\n { accessor: 'carrier', Cell: TextAlignLeftRenderer },\r\n { accessor: 'mode', Cell: TextRenderer },\r\n { accessor: 'origin', Cell: TextAlignLeftRenderer },\r\n { accessor: 'destination', Cell: TextAlignLeftRenderer },\r\n { accessor: 'commodity', Cell: TextAlignLeftRenderer },\r\n { accessor: 'size', Cell: TextAlignLeftRenderer },\r\n { accessor: 'transit', Cell: (props:any) => },\r\n { accessor: 'rate1', Cell: FloatRenderer },\r\n { accessor: 'effectETD', Cell: DateRenderer },\r\n { accessor: 'expireETD', Cell: DateRenderer },\r\n { accessor:'remark', Cell: TextAlignLeftRenderer },\r\n ],\r\n orderBy: [orderBy],\r\n onHeaderClick,\r\n };\r\n\r\n const canBeAdd = buyingRate === null ;\r\n const canBeEdit = !isNaN(selectedRow) && !(selectedRow < 0);\r\n\r\n return (\r\n
    \r\n\r\n {/*
    \r\n {\r\n await reload(generalText1 === null ? '' : generalText1);\r\n }}\r\n />\r\n
    */}\r\n\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n   \r\n
    \r\n New  \r\n View  \r\n Edit  \r\n Delete \r\n { reload(false) }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n \r\n {!!buyingRate &&\r\n
    \r\n
    \r\n
    \r\n
    \r\n  \r\n {buyingRate.view &&\r\n setBuyingRate({view: false}, true)}>Edit\r\n }\r\n {!buyingRate.view &&\r\n Save\r\n }\r\n  \r\n
    \r\n
    \r\n \r\n
      \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default BuyingRate;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeAccountListItem extends SearchModelBase {\r\n accountCode: string = '';\r\n accountName: string = '';\r\n glType: string = '';\r\n subGroup1: string = '';\r\n subGroup2: string = '';\r\n iocalDesc: string = '';\r\n inactive: boolean|null = null;\r\n remark: string = '';\r\n id: number = 0;\r\n inactiveDate: string | null = null;\r\n isDefault: boolean|null = null;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Account Code', width: 85, dataIndex: 'accountCode'}),\r\n XCol.Create({ col: 1, text: 'Default Account Name', width: 315, dataIndex: 'accountName'}),\r\n XCol.Create({ col: 2, text: 'Group', width: 130, dataIndex: 'glType'}),\r\n XCol.Create({ col: 3, text: 'Sub Group 1', width: 170, dataIndex: 'subGroup1'}),\r\n XCol.Create({ col: 4, text: 'Sub Group 2', width: 170, dataIndex: 'subGroup2'}),\r\n XCol.Create({ col: 5, text: 'Custom Account Name', width: 320, dataIndex: 'iocalDesc'}),\r\n XCol.Create({ col: 6, text: 'Inactive', width: 65, dataIndex: 'inactive', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 7, text: 'Inactive Date', width: 65, dataIndex: 'inactiveDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 8, text: 'Remark', width: 350, dataIndex: 'remark'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeAccountListItem.prototype.accountCode, orderByAscending: true };\r\n\r\n public static formatData(data: CodeAccountListItem[]) {\r\n return data.map((d: CodeAccountListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\n\r\nexport class CodeGlNo extends TrackableEntity {\r\n id: number = 0;\r\n glNo: string = '';\r\n glNo0: string = '';\r\n glNo1: string = '';\r\n glNo2: string = '';\r\n glNo3: string = '';\r\n glNo4: string = '';\r\n glNo5: string = '';\r\n glTypeText: string = '';\r\n glType: string = '';\r\n glGroupText: string = '';\r\n glGroup: string = '';\r\n glSubGroupText: string = '';\r\n glSubGroup: string = '';\r\n glSubGroup3Text: string = '';\r\n glDescription: string = '';\r\n frontGlDesc: string = '';\r\n localDesc: string = '';\r\n frontLocalDesc: string = '';\r\n inactive: boolean = false;\r\n cashFlowType: string = '';\r\n cashFlowGroup: string = '';\r\n remark: string = '';\r\n inactiveDate: string | null = null;\r\n inactiveBy: string = '';\r\n\r\n otherGlDesc: string = '';\r\n otherFrontGlDesc: string = '';\r\n otherLocalDesc: string = '';\r\n otherFrontLocalDesc: string = '';\r\n otherRemark: string = '';\r\n otherId: number = 0;\r\n\r\n useOnBillPay: boolean = false;\r\n useOnCustPay: boolean = false;\r\n billPayShowOption: string = '';\r\n custPayShowOption: string = '';\r\n\r\n // for only font-end\r\n edit: boolean = false;\r\n view: boolean = false;\r\n isDefault : boolean = false;\r\n displayDesc: string = '';\r\n displayLocalDesc: string = '';\r\n otherdisplayDesc: string = '';\r\n otherdisplayLocalDesc: string = '';\r\n existingCode : string = '';\r\n otherExistingCode : string = '';\r\n otehrGlno: string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('id', 'glTypeText', 'glGroupText', 'glSubGroupText', 'glSubGroup3Text', 'existingCode', 'otherExistingCode','isDefault');\r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n return CodeGlNo.dicFieldMappings;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_Id', table: 'T_CODEGLNO' }),\r\n 'glNo': new DBMappingInfo({ field: 'F_GlNo', table: 'T_CODEGLNO' }),\r\n 'glType': new DBMappingInfo({ field: 'F_GlType', table: 'T_CODEGLNO' }),\r\n 'glGroup': new DBMappingInfo({ field: 'F_GlGroup', table: 'T_CODEGLNO' }),\r\n 'glSubGroup': new DBMappingInfo({ field: 'F_GlSubGroup', table: 'T_CODEGLNO' }),\r\n 'glDescription': new DBMappingInfo({ field: 'F_GlDescription', table: 'T_CODEGLNO' }),\r\n 'localDesc': new DBMappingInfo({ field: 'F_LocalDesc', table: 'T_CODEGLNO' }),\r\n 'inactive': new DBMappingInfo({ field: 'F_Inactive', table: 'T_CODEGLNO' }),\r\n 'inactiveDate': new DBMappingInfo({ field: 'F_InactiveDate', table: 'T_CODEGLNO' }),\r\n 'remark': new DBMappingInfo({ field: 'F_Remark', table: 'T_CODEGLNO' }),\r\n 'inactiveBy': new DBMappingInfo({ field: 'InactiveBy', table: 'T_CODEGLNO' }),\r\n 'useOnBillPay': new DBMappingInfo({ field: 'F_UseOnBillPay', table: 'T_CODEGLNO' }),\r\n 'useOnCustPay': new DBMappingInfo({ field: 'F_UseOnCustPay', table: 'T_CODEGLNO' }),\r\n 'billPayShowOption': new DBMappingInfo({ field: 'F_BillPayShowOption', table: 'T_CODEGLNO' }),\r\n 'custPayShowOption': new DBMappingInfo({ field: 'F_CustPayShowOption', table: 'T_CODEGLNO' }),\r\n };\r\n}\r\n","import React, { useContext, useEffect, useRef, useState } from 'react';\r\n\r\nimport InputControlRow from '../../../../ui/layout/InputControlRow';\r\nimport LeftRightSplit from '../../../../ui/LeftRightSplit';\r\nimport Select from '../../../../ui/Select';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport MultilineTextBox from '../../../../ui/MultilineTextBox';\r\nimport PrimaryButton from '../../../../ui/PrimaryButton';\r\nimport Date from '../../../../ui/Date';\r\nimport CheckBox from '../../../../ui/CheckBox';\r\n\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\nimport useFastStorage, { useTypedFastStorage } from '../../../../hooks/useFastStorage';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport { now, nowDate } from '../../../../dateUtils';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\nimport { getSQLInfoList } from '../../../../fms.core/data/TrackingModule';\r\nimport { TrackableEntity } from '../../../../fms.core/data/ChangeTrackable';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { CodeGlNo } from '../../../../fms.core/CodeGlNo';\r\nimport { historyUpdate } from '../../../../fms.data/modules/FmsModFunc';\r\nimport { SQLField, SQLInfo, SQLType } from '../../../../framework.core/data/SQLInfo';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport { findSecurityTask, getLayoutSizes } from '../../../../util';\r\nimport GlNoLookupField from '../../../../uiControls/lookup/GlNoLookupField';\r\nimport Float from '../../../../ui/Float';\r\nimport moment from 'moment';\r\nimport _ from 'lodash';\r\nimport RadioButton from '../../../../ui/RadioButton';\r\nimport { getFmsGlobal } from '../../../../globals';\r\nimport useGlobalYesNoDialog from '../../../../hooks/useGlobalYesNoDialog';\r\nimport useDirtyCheck from '../../../../hooks/useDirtyCheck2';\r\nimport { ArrivalReleaseNoticeViewModel } from '../../../../fms.core/report/ArrivalReleaseNoticeViewModel';\r\nimport GreenButton from '../../../../ui/GreenButton';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\n\r\nlet suntekId: string = '';\r\nlet isSuntekAdmin: boolean = false;\r\n\r\nfunction RowSpacer_30() {\r\n return (\r\n
     
    \r\n );\r\n}\r\nfunction RowSpacer_40() {\r\n return (\r\n
     
    \r\n );\r\n}\r\nfunction RowSpacer_60() {\r\n return (\r\n
     
    \r\n );\r\n}\r\nconst Groups = [\r\n { label: '1 ASSET', value: 'A', glNo: '1' },\r\n { label: '2 LIABILITY', value: 'L', glNo: '2' },\r\n { label: '3 EQUITY', value: 'Q', glNo: '3' },\r\n { label: '4 EXPENSE', value: 'E', glNo: '4' },\r\n { label: '5 SALES', value: 'I', glNo: '5', forFront: 'SALES' },\r\n { label: '6 COST', value: 'C', glNo: '6', forFront: 'COST' },\r\n // \r\n { label: '45 NON-OP EXPENSE', value: 'N', glNo: '4' },\r\n { label: '55 NON-OP INCOME', value: 'M', glNo: '5' },\r\n // \r\n];\r\n\r\nlet SubGroups1: Array = [];\r\n\r\nlet SubGroups2: Array = [];\r\n\r\nfunction AccountCodeInitializedImpl({\r\n accountCode,\r\n onChange,\r\n cancelOperation,\r\n readonly,\r\n save,\r\n getFrontDesc,\r\n}: {\r\n accountCode: CodeGlNo,\r\n onChange: (change: Partial) => void,\r\n cancelOperation: () => boolean,\r\n readonly: boolean,\r\n save: () => Promise,\r\n getFrontDesc: (accountCode: CodeGlNo, isInitialize?: boolean) => string\r\n}) {\r\n\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const isDefault = accountCode.isDefault;\r\n const checkSuntek = appContext.suntekSettings?.company?.companyId === \"FSSUNTEK\" || appContext.user?.isSuntekAdmin ? true : false;\r\n\r\n useEffect(() => {\r\n suntekId = appContext.suntekSettings?.company?.companyId?.toUpperCase() ?? '';\r\n isSuntekAdmin = appContext.user?.isSuntekAdmin ?? false;\r\n getSubGroup1Items(accountCode.glType);\r\n getSubGroup2Items(accountCode.glType, accountCode.glGroup)\r\n setLocalKey();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function getSubGroup1Items(group: string) {\r\n SubGroups1 = [];\r\n switch (group) {\r\n case \"A\":\r\n SubGroups1.push({ label: \"1 CURRENT ASSET\", value: \"CA\", glNo: \"1\" });\r\n SubGroups1.push({ label: \"2 OTHER ASSET\", value: \"IA\", glNo: \"2\" });\r\n SubGroups1.push({ label: \"3 FIXED ASSET\", value: \"FA\", glNo: \"3\" });\r\n break;\r\n case \"L\":\r\n SubGroups1.push({ label: \"1 CURRENT LIABILITY\", value: \"CL\", glNo: \"1\" });\r\n SubGroups1.push({ label: \"2 NON-CURRENT LIABILITY\", value: \"NL\", glNo: \"2\" });\r\n break;\r\n case \"Q\":\r\n SubGroups1.push({ label: \"1 SHARE HOLDER'S EQUITY\", value: \"SQ\", glNo: \"1\" });\r\n SubGroups1.push({ label: \"2 CAPITAL SURPLUS\", value: \"CQ\", glNo: \"2\" });\r\n SubGroups1.push({ label: \"3 RETAINED EARNING\", value: \"NQ\", glNo: \"3\" });\r\n break;\r\n case \"E\":\r\n SubGroups1.push({ label: \"3 GENERAL EXPENSE\", value: \"GE\", glNo: \"3\" });\r\n //SubGroups1.push({ label: \"NON-OP EXPENSE\", value: \"OE\", glNo: \"5\"}); // \r\n SubGroups1.push({ label: \"6 INCOME TAX\", value: \"TE\", glNo: \"6\" });\r\n break;\r\n case \"I\":\r\n SubGroups1.push({ label: \"1 OCEAN IMPORT\", value: \"II\", glNo: \"1\", extraCode: \"OI\" });\r\n SubGroups1.push({ label: \"1 OCEAN EXPORT\", value: \"EI\", glNo: \"1\", extraCode: \"OE\" });\r\n SubGroups1.push({ label: \"2 AIR IMPORT\", value: \"AI\", glNo: \"2\", extraCode: \"AI\" });\r\n SubGroups1.push({ label: \"2 AIR EXPORT\", value: \"PI\", glNo: \"2\", extraCode: \"AE\" });\r\n SubGroups1.push({ label: \"3 OTHER SHIPMENT\", value: \"TI\", glNo: \"3\", extraCode: \"OTHR\" });\r\n SubGroups1.push({ label: \"4 WAREHOUSING\", value: \"WI\", glNo: \"4\", extraCode: \"WH\" });\r\n //SubGroups1.push({ label: \"NON-OP INCOME\", value: \"OI\", glNo: \"5\", extraCode: \"\"}); // \r\n if (suntekId === \"FSSUNTEK\") {\r\n SubGroups1.push({ label: \"8 SUNTEK SALES\", value: \"TI\", glNo: \"8\", extraCode: \"\" });\r\n }\r\n SubGroups1.push({ label: \"6 FULFILLMENT\", value: \"FF\", glNo: \"6\", extraCode: \"FF\" });\r\n SubGroups1.push({ label: \"7 CHB\", value: \"CH\", glNo: \"7\", extraCode: \"CH\" });\r\n break;\r\n case \"C\":\r\n SubGroups1.push({ label: \"1 OCEAN IMPORT\", value: \"IC\", glNo: \"1\", extraCode: \"OI\" });\r\n SubGroups1.push({ label: \"1 OCEAN EXPORT\", value: \"EC\", glNo: \"1\", extraCode: \"OE\" });\r\n SubGroups1.push({ label: \"2 AIR IMPORT\", value: \"AC\", glNo: \"2\", extraCode: \"AI\" });\r\n SubGroups1.push({ label: \"2 AIR EXPORT\", value: \"PC\", glNo: \"2\", extraCode: \"AE\" });\r\n SubGroups1.push({ label: \"3 OTHER SHIPMENT\", value: \"TC\", glNo: \"3\", extraCode: \"OTHR\" });\r\n SubGroups1.push({ label: \"4 WAREHOUSING\", value: \"WC\", glNo: \"4\", extraCode: \"WH\" });\r\n if (suntekId === \"FSSUNTEK\") {\r\n SubGroups1.push({ label: \"8 SUNTEK COST\", value: \"TC\", glNo: \"8\", extraCode: \"\" });\r\n }\r\n SubGroups1.push({ label: \"6 FULFILLMENT\", value: \"FF\", glNo: \"6\", extraCode: \"FF\" });\r\n SubGroups1.push({ label: \"7 CHB\", value: \"CH\", glNo: \"7\", extraCode: \"CH\" });\r\n break;\r\n // \r\n case \"N\":\r\n SubGroups1.push({ label: \"5 NON-OP EXPENSE\", value: \"OE\", glNo: \"5\" });\r\n break;\r\n case \"M\":\r\n SubGroups1.push({ label: \"5 NON-OP INCOME\", value: \"OI\", glNo: \"5\", extraCode: \"\" });\r\n break;\r\n // \r\n }\r\n }\r\n\r\n function getSubGroup2Items(group: string, subGroup1: string) {\r\n\r\n // + glSubGroup은 중복이 존재하고 있어서 기존 로직으론 문제가 있음. 유니크한 Key를 만들어 이를 value로 사용하게 수정. chuck 2024-04-01\r\n\r\n SubGroups2 = [];\r\n if (group === \"A\") {\r\n switch (subGroup1) {\r\n case \"CA\":\r\n SubGroups2.push({ label: \"1 QUICK ASSET\", value: \"QA1\", glNo: \"1\", glCode: \"QA\" });\r\n SubGroups2.push({ label: \"2 OTHER CURRENT ASSET\", value: \"CA2\", glNo: \"2\", glCode: \"CA\" });\r\n break;\r\n case \"IA\":\r\n SubGroups2.push({ label: \"1 OTHER ASSET\", value: \"OA1\", glNo: \"1\", glCode: \"OA\" });\r\n break;\r\n case \"FA\":\r\n SubGroups2.push({ label: \"1 TANGIBLE FIXED ASSET\", value: \"TA1\", glNo: \"1\", glCode: \"TA\" });\r\n SubGroups2.push({ label: \"2 INTANGIBLE FIXED ASSET\", value: \"GA2\", glNo: \"2\", glCode: \"GA\" });\r\n SubGroups2.push({ label: \"3 INVESTMENT\", value: \"IA3\", glNo: \"3\", glCode: \"IA\" });\r\n break;\r\n }\r\n } else if (group === \"L\") {\r\n if (subGroup1 === \"CL\") {\r\n SubGroups2.push({ label: \"1 CURRENT LIABILITY\", value: \"CL1\", glNo: \"1\", glCode: \"CL\" });\r\n SubGroups2.push({ label: \"2 OTHER CURRENCT LIABILITY\", value: \"OCL2\", glNo: \"2\", glCode: \"OCL\" });\r\n if (isSuntekAdmin) {\r\n SubGroups2.push({ label: \"5 CURRENT LIABILITY - Suntek\", value: \"CL5\", glNo: \"5\", glCode: \"CL\" });\r\n }\r\n } else if (subGroup1 === \"NL\") {\r\n SubGroups2.push({ label: \"1 NON-CURRENT LIABILITY\", value: \"NL1\", glNo: \"1\", glCode: \"NL\" });\r\n SubGroups2.push({ label: \"2 OTHER NON-CURRENCT LIABILITY\", value: \"ONL2\", glNo: \"2\", glCode: \"ONL\" });\r\n }\r\n } else if (group === \"Q\") {\r\n switch (subGroup1) {\r\n case \"SQ\":\r\n SubGroups2.push({ label: \"1 SHARE HOLDER'S EQUITY\", value: \"SQ1\", glNo: \"1\", glCode: \"SQ\" });\r\n break;\r\n case \"CQ\":\r\n SubGroups2.push({ label: \"1 CAPITAL SURPLUS\", value: \"CQ1\", glNo: \"1\", glCode: \"CQ\" });\r\n break;\r\n case \"NQ\":\r\n SubGroups2.push({ label: \"1 RETAINED EARNING\", value: \"NQ1\", glNo: \"1\", glCode: \"NQ\" });\r\n SubGroups2.push({ label: \"2 CAPITAL ADJUSTMENT\", value: \"AQ2\", glNo: \"2\", glCode: \"AQ2\" });\r\n break;\r\n }\r\n } else if (group === \"E\") {\r\n switch (subGroup1) {\r\n case \"GE\":\r\n SubGroups2.push({ label: \"1 GENERAL & ADMIN EXPENSE\", value: \"GE1\", glNo: \"1\", glCode: \"GE\" });\r\n break;\r\n // \r\n // case \"OE\":\r\n // SubGroups2.push({ label: \"NON-OP EXPENSE\", value: \"OE\", glNo: \"1\"});\r\n // SubGroups2.push({ label: \"TANGIBLE ASSET LOSS\", value: \"OE\", glNo: \"2\"});\r\n // SubGroups2.push({ label: \"INTANGIBLE ASSET LOSS\", value: \"OE\", glNo: \"3\"});\r\n // SubGroups2.push({ label: \"CORRECTION LOSS\", value: \"SE\", glNo: \"4\"});\r\n // break;\r\n // \r\n case \"TE\":\r\n SubGroups2.push({ label: \"1 FEDERAL\", value: \"IT1\", glNo: \"1\", glCode: \"IT\" });\r\n SubGroups2.push({ label: \"2 STATE\", value: \"IT2\", glNo: \"2\", glCode: \"IT\" });\r\n break;\r\n }\r\n } else if (group === \"I\") {\r\n switch (subGroup1) {\r\n case \"II\":\r\n SubGroups2.push({ label: \"1 DS\", value: \"DS1\", glNo: \"1\", glCode: \"DS\" });\r\n SubGroups2.push({ label: \"2 IDS\", value: \"IDS2\", glNo: \"2\", glCode: \"IDS\" });\r\n SubGroups2.push({ label: \"3 TS\", value: \"TS3\", glNo: \"3\", glCode: \"TS\" });\r\n break;\r\n case \"EI\":\r\n SubGroups2.push({ label: \"5 DS\", value: \"DS5\", glNo: \"5\", glCode: \"DS\" });\r\n SubGroups2.push({ label: \"6 IDS\", value: \"IDS6\", glNo: \"6\", glCode: \"IDS\" });\r\n SubGroups2.push({ label: \"7 TS\", value: \"TS7\", glNo: \"7\", glCode: \"TS\" });\r\n break;\r\n case \"AI\":\r\n SubGroups2.push({ label: \"1 DS\", value: \"DS1\", glNo: \"1\", glCode: \"DS\" });\r\n SubGroups2.push({ label: \"2 IDS\", value: \"IDS2\", glNo: \"2\", glCode: \"IDS\" });\r\n SubGroups2.push({ label: \"3 TS\", value: \"TS3\", glNo: \"3\", glCode: \"TS\" });\r\n break;\r\n case \"PI\":\r\n SubGroups2.push({ label: \"5 DS\", value: \"DS5\", glNo: \"5\", glCode: \"DS\" });\r\n SubGroups2.push({ label: \"6 IDS\", value: \"IDS6\", glNo: \"6\", glCode: \"IDS\" });\r\n SubGroups2.push({ label: \"7 TS\", value: \"TS7\", glNo: \"7\", glCode: \"TS\" });\r\n break;\r\n case \"TI\":\r\n SubGroups2.push({ label: \"1 DS\", value: \"DS1\", glNo: \"1\", glCode: \"DS\" });\r\n SubGroups2.push({ label: \"2 IDS\", value: \"IDS2\", glNo: \"2\", glCode: \"IDS\" });\r\n SubGroups2.push({ label: \"3 TS\", value: \"TS3\", glNo: \"3\", glCode: \"TS\" });\r\n break;\r\n case \"WI\":\r\n SubGroups2.push({ label: \"1 DS\", value: \"DS1\", glNo: \"1\", glCode: \"DS\" });\r\n break;\r\n // \r\n // case \"OI\":\r\n // SubGroups2.push({ label: \"NON-OP INCOME\", value: \"OI\", glNo: \"1\"});\r\n // SubGroups2.push({ label: \"TANGIBLE ASSET INCOME\", value: \"OI\", glNo: \"2\"});\r\n // SubGroups2.push({ label: \"INTANGIBLE ASSET INCOME\", value: \"OI\", glNo: \"3\"});\r\n // SubGroups2.push({ label: \"CORRECTION GAIN\", value: \"SI\", glNo: \"4\"});\r\n // break;\r\n // \r\n case \"FF\":\r\n SubGroups2.push({ label: \"1 DS\", value: \"DS1\", glNo: \"1\", glCode: \"DS\" });\r\n break;\r\n case \"CH\":\r\n SubGroups2.push({ label: \"1 DS\", value: \"DS1\", glNo: \"1\", glCode: \"DS\" });\r\n break;\r\n }\r\n } else if (group === \"C\") {\r\n switch (subGroup1) {\r\n case \"IC\":\r\n SubGroups2.push({ label: \"1 DS\", value: \"DS1\", glNo: \"1\", glCode: \"DS\" });\r\n SubGroups2.push({ label: \"2 IDS\", value: \"IDS2\", glNo: \"2\", glCode: \"IDS\" });\r\n SubGroups2.push({ label: \"3 TS\", value: \"TS3\", glNo: \"3\", glCode: \"TS\" });\r\n break;\r\n case \"EC\":\r\n SubGroups2.push({ label: \"5 DS\", value: \"DS5\", glNo: \"5\", glCode: \"DS\" });\r\n SubGroups2.push({ label: \"6 IDS\", value: \"IDS6\", glNo: \"6\", glCode: \"IDS\" });\r\n SubGroups2.push({ label: \"7 TS\", value: \"TS7\", glNo: \"7\", glCode: \"TS\" });\r\n break;\r\n case \"AC\":\r\n SubGroups2.push({ label: \"1 DS\", value: \"DS1\", glNo: \"1\", glCode: \"DS\" });\r\n SubGroups2.push({ label: \"2 IDS\", value: \"IDS2\", glNo: \"2\", glCode: \"IDS\" });\r\n SubGroups2.push({ label: \"3 TS\", value: \"TS3\", glNo: \"3\", glCode: \"TS\" });\r\n break;\r\n case \"PC\":\r\n SubGroups2.push({ label: \"5 DS\", value: \"DS5\", glNo: \"5\", glCode: \"DS\" });\r\n SubGroups2.push({ label: \"6 IDS\", value: \"IDS6\", glNo: \"6\", glCode: \"IDS\" });\r\n SubGroups2.push({ label: \"7 TS\", value: \"TS7\", glNo: \"7\", glCode: \"TS\" });\r\n break;\r\n case \"TC\":\r\n SubGroups2.push({ label: \"1 DS\", value: \"DS1\", glNo: \"1\", glCode: \"DS\" });\r\n SubGroups2.push({ label: \"2 IDS\", value: \"IDS2\", glNo: \"2\", glCode: \"IDS\" });\r\n SubGroups2.push({ label: \"3 TS\", value: \"TS3\", glNo: \"3\", glCode: \"TS\" });\r\n break;\r\n case \"WC\":\r\n SubGroups2.push({ label: \"1 DS\", value: \"DS1\", glNo: \"1\", glCode: \"DS\" });\r\n break;\r\n case \"FF\":\r\n SubGroups2.push({ label: \"1 DS\", value: \"DS1\", glNo: \"1\", glCode: \"DS\" });\r\n break;\r\n case \"CH\":\r\n SubGroups2.push({ label: \"1 DS\", value: \"DS1\", glNo: \"1\", glCode: \"DS\" });\r\n break;\r\n }\r\n // \r\n } else if (group === \"N\") {\r\n switch (subGroup1) {\r\n case \"OE\":\r\n SubGroups2.push({ label: \"1 NON-OP EXPENSE\", value: \"OE1\", glNo: \"1\", glCode: \"OE\" });\r\n SubGroups2.push({ label: \"2 TANGIBLE ASSET LOSS\", value: \"OE2\", glNo: \"2\", glCode: \"OE\" });\r\n SubGroups2.push({ label: \"3 INTANGIBLE ASSET LOSS\", value: \"OE3\", glNo: \"3\", glCode: \"OE\" });\r\n SubGroups2.push({ label: \"4 CORRECTION LOSS\", value: \"SE4\", glNo: \"4\", glCode: \"SE\" });\r\n break;\r\n }\r\n } else if (group === \"M\") {\r\n switch (subGroup1) {\r\n case \"OI\":\r\n SubGroups2.push({ label: \"1 NON-OP INCOME\", value: \"OI1\", glNo: \"1\", glCode: \"OI\" });\r\n SubGroups2.push({ label: \"2 TANGIBLE ASSET INCOME\", value: \"OI2\", glNo: \"2\", glCode: \"OI\" });\r\n SubGroups2.push({ label: \"3 INTANGIBLE ASSET INCOME\", value: \"OI3\", glNo: \"3\", glCode: \"OI\" });\r\n SubGroups2.push({ label: \"4 CORRECTION GAIN\", value: \"SI4\", glNo: \"4\", glCode: \"SI\" });\r\n break;\r\n }\r\n }\r\n // \r\n }\r\n\r\n function setFrontDescription() {\r\n if (accountCode.glType !== \"I\" && accountCode.glType !== \"C\") return;\r\n const frontDesc = getFrontDesc(accountCode);\r\n onChange({ frontGlDesc: frontDesc, frontLocalDesc: frontDesc })\r\n }\r\n\r\n function setLocalKey() {\r\n const glTypeKey = accountCode.glType + accountCode.glNo0;\r\n const glGroupKey = accountCode.glGroup + accountCode.glNo1;\r\n const glSubGroupKey = accountCode.glSubGroup + accountCode.glNo2;\r\n onChange({ glTypeText: glTypeKey, glGroupText: glGroupKey, glSubGroupText: glSubGroupKey });\r\n }\r\n\r\n function setExistingCode() {\r\n let code = accountCode.glNo0 + accountCode.glNo1 + accountCode.glNo2 + (accountCode.glNo3 || '') + (accountCode.glNo4 || '') + (accountCode.glNo5 || '');\r\n onChange({ existingCode: code });\r\n if (accountCode.glType === 'I') {\r\n let costCode = 6 + accountCode.glNo1 + accountCode.glNo2 + (accountCode.glNo3 || '') + (accountCode.glNo4 || '') + (accountCode.glNo5 || '');\r\n onChange({ otherExistingCode: costCode });\r\n } else if (accountCode.glType === 'C') {\r\n let costCode = 5 + accountCode.glNo1 + accountCode.glNo2 + (accountCode.glNo3 || '') + (accountCode.glNo4 || '') + (accountCode.glNo5 || '');\r\n onChange({ otherExistingCode: costCode });\r\n }\r\n }\r\n\r\n function setAccountCodeText() {\r\n switch (accountCode.glType) {\r\n case 'A':\r\n return 'Asset';\r\n case 'L':\r\n return 'Liability';\r\n case 'Q':\r\n return 'Equity';\r\n case 'E':\r\n return 'Expense';\r\n case 'I':\r\n return 'Sales';\r\n case 'C':\r\n return 'Cost';\r\n case 'N':\r\n return 'Non-OP-Expense';\r\n case 'M':\r\n return 'Non-OP-Income';\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n function onlySuntekField() {\r\n return (\r\n <>\r\n {checkSuntek &&\r\n <>\r\n \r\n
    \r\n onChange({ useOnBillPay: false, useOnCustPay: false, custPayShowOption: '', billPayShowOption: '' })} />\r\n
    \r\n
    \r\n onChange({ useOnBillPay: true, useOnCustPay: false, custPayShowOption: '' })} />\r\n
    \r\n
    \r\n onChange({ useOnCustPay: true, useOnBillPay: false, billPayShowOption: '' })} />\r\n
    \r\n
    \r\n \r\n }\r\n \r\n );\r\n }\r\n\r\n function redioChanged(glType: string) {\r\n const item = Groups.find(x => x.value === glType);\r\n const mainChange: Partial = {\r\n glType: glType, glGroup: '', glSubGroup: '',\r\n glNo0: item?.glNo, glNo1: '', glNo2: '', glNo3: '', glNo4: '', glNo5: ''\r\n };\r\n if (glType !== \"I\" && glType !== \"C\") {\r\n mainChange.frontGlDesc = '';\r\n mainChange.frontLocalDesc = '';\r\n }\r\n getSubGroup1Items(glType);\r\n // \r\n if (SubGroups1.length === 1) {\r\n mainChange.glGroup = SubGroups1[0].value;\r\n mainChange.glNo1 = SubGroups1[0].glNo;\r\n getSubGroup2Items(glType, SubGroups1[0].value);\r\n } else {\r\n mainChange.glGroup = '';\r\n mainChange.glSubGroupText = '';\r\n }\r\n // \r\n onChange(mainChange);\r\n setExistingCode();\r\n getSubGroup1Items(accountCode.glType);\r\n setFrontDescription();\r\n }\r\n\r\n function otherSalesCostView(isSalesDetail: boolean) { //Sales나 Cost를 선택했을 경우 선택하지 않은 쪽을 보여주기 위함 1. GlNo를 입력할수 없고 2. \r\n let glNo0 = isSalesDetail ? 5 : 6;\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n
    (if No Look-up Table Show, It is OK.)
    \r\n
    \r\n onChange({ otherExistingCode: select.code })}\r\n />\r\n
    \r\n
    \r\n \r\n {isSalesDetail ? '4' : '7'}. Enter {isSalesDetail ? 'Sales' : 'Cost'} Account Code (4/5/6th Digits)} bold customFontSize='12px'>\r\n
    \r\n
    1st
    \r\n
    2nd
    \r\n
    3rd
    \r\n
    4th
    \r\n
    5th
    \r\n
    6th
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n onChange({\r\n otherGlDesc: e.target.value, otherdisplayDesc: e.target.value, otherLocalDesc: e.target.value, otherdisplayLocalDesc: e.target.value\r\n })} />\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n onChange({ otherLocalDesc: e.target.value, otherdisplayLocalDesc: e.target.value })}\r\n placeholder={' Enter Your Own Custom Account Code Name'} />\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n onChange({ otherRemark: e.target.value })} />\r\n
    \r\n
    \r\n \r\n {isSalesDetail && onlySuntekField()}\r\n
    \r\n \r\n );\r\n }\r\n\r\n function inactive() {\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n onChange({\r\n inactive,\r\n inactiveDate: inactive ? now() : null,\r\n inactiveBy: inactive ? appContext.user?.id ?? '' : ''\r\n })} />\r\n }\r\n right={<>Inactive}\r\n />\r\n }\r\n >\r\n \r\n \r\n
    \r\n }\r\n right={\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n { redioChanged('A'); }} />\r\n
    \r\n
    \r\n { redioChanged('L'); }} />\r\n
    \r\n
    \r\n { redioChanged('Q'); }} />\r\n
    \r\n
    \r\n { redioChanged('E'); }} />\r\n
    \r\n
    \r\n
    \r\n { redioChanged('I'); }} />\r\n
    \r\n
    \r\n { redioChanged('C'); }} />\r\n
    \r\n
    \r\n { redioChanged('N'); }} />\r\n
    \r\n
    \r\n { redioChanged('M'); }} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {\r\n const item = SubGroups2.find(x => x.value === e.target.value);\r\n onChange({ glSubGroup: item?.glCode, glSubGroupText: e.target.value, glNo2: item?.glNo });\r\n setExistingCode();\r\n setFrontDescription();\r\n }}\r\n />\r\n }\r\n {\r\n (accountCode.glType === 'C' || accountCode.glType === 'I') &&\r\n
    \r\n
    \r\n
    \r\n {\r\n const item = SubGroups2.find(x => x.glCode === 'DS');\r\n onChange({ glSubGroup: item?.glCode, glSubGroupText: 'DS', glNo2: item?.glNo });\r\n setExistingCode();\r\n setFrontDescription();\r\n }\r\n } />\r\n
    \r\n {\r\n accountCode.glGroup !== 'FF' && accountCode.glGroup !== 'CH' && accountCode.glGroup !== 'WI' && accountCode.glGroup !== 'WC' &&\r\n
    \r\n {\r\n const item = SubGroups2.find(x => x.glCode === 'IDS');\r\n onChange({ glSubGroup: item?.glCode, glSubGroupText: 'IDS', glNo2: item?.glNo });\r\n setExistingCode();\r\n setFrontDescription();\r\n }\r\n } />\r\n
    \r\n }\r\n {\r\n accountCode.glGroup !== 'FF' && accountCode.glGroup !== 'CH' && accountCode.glGroup !== 'WI' && accountCode.glGroup !== 'WC' &&\r\n
    \r\n {\r\n const item = SubGroups2.find(x => x.glCode === 'TS');\r\n onChange({ glSubGroup: item?.glCode, glSubGroupText: 'TS', glNo2: item?.glNo });\r\n setExistingCode();\r\n setFrontDescription();\r\n }\r\n } />\r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n {accountCode.glType === 'C' &&\r\n //Cost일때 나타나는 Sales창\r\n otherSalesCostView(true)\r\n }\r\n\r\n
    \r\n \r\n
    (if No Look-up Table Show, It is OK.)
    \r\n
    \r\n onChange({ existingCode: select.code })}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n {accountCode.glType === 'C' ? '7' : '4'}. Enter {setAccountCodeText()} Account Code (4/5/6th Digits)} bold customFontSize='12px'>\r\n
    \r\n
    1st
    \r\n
    2nd
    \r\n
    3rd
    \r\n
    4th
    \r\n
    5th
    \r\n
    6th
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {\r\n onChange({ glNo3: glNo3?.toString() });\r\n if (!glNo3) onChange({ glNo4: '', glNo5: '' }); setExistingCode();\r\n }} style={{ paddingRight: '13px' }} decimals={0} />
    \r\n
    \r\n {\r\n onChange({ glNo4: glNo4?.toString() });\r\n if (!glNo4) onChange({ glNo5: '' }); setExistingCode();\r\n }} style={{ paddingRight: '13px' }} decimals={0} />
    \r\n
    \r\n { onChange({ glNo5: glNo5?.toString() }); setExistingCode(); }} style={{ paddingRight: '13px' }} decimals={0} />
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n onChange({ displayDesc: e.target.value, glDescription: e.target.value })}\r\n onBlur={() => {\r\n if (accountCode.displayLocalDesc === '') {\r\n onChange({ displayLocalDesc: accountCode.displayDesc, localDesc: accountCode.displayDesc })\r\n }\r\n if (accountCode.otherdisplayDesc === '') onChange({ \r\n otherGlDesc: accountCode.glDescription, otherdisplayDesc: accountCode.displayDesc , \r\n otherdisplayLocalDesc:accountCode.displayDesc});\r\n }} />\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n onChange({ displayLocalDesc: e.target.value, localDesc: e.target.value })}\r\n onBlur={() => { if (!accountCode.otherdisplayLocalDesc) onChange({ otherLocalDesc: accountCode.displayLocalDesc, otherdisplayLocalDesc: accountCode.displayLocalDesc }) }}\r\n placeholder={' Enter Your Own Custom Account Code Name'} />\r\n
    \r\n
    \r\n \r\n {(accountCode.glType === 'C' || accountCode.glType === 'I') &&\r\n
    \r\n \r\n
    \r\n onChange({ remark: e.target.value })} />\r\n
    \r\n
    \r\n \r\n
    \r\n }\r\n {accountCode.glType === 'I' &&\r\n onlySuntekField()\r\n }\r\n {accountCode.glType === 'C' && checkSuntek &&\r\n inactive()\r\n }\r\n
    \r\n\r\n {accountCode.glType !== 'C' &&\r\n
    \r\n
    \r\n {accountCode.glType === 'I' &&\r\n otherSalesCostView(false)\r\n }\r\n {accountCode.glType !== 'I' &&\r\n
    \r\n \r\n
    \r\n onChange({ remark: e.target.value })} />\r\n
    \r\n
    \r\n \r\n
    \r\n }\r\n {accountCode.glType !== 'I' &&\r\n onlySuntekField()\r\n }\r\n
    \r\n {checkSuntek &&\r\n inactive()\r\n }\r\n
    \r\n }\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nfunction AccountCodeDetails({\r\n accountCodeT,\r\n reload,\r\n cancelOperation,\r\n checkSuntek\r\n}: {\r\n accountCodeT: CodeGlNo,\r\n reload: (clearAll?: boolean) => Promise,\r\n cancelOperation: any,\r\n checkSuntek:boolean\r\n}) {\r\n useFunction({\r\n invokers: {\r\n ifmsSettingsSave: save,\r\n ifmsSettingsCancel: cancelOperation,\r\n }\r\n });\r\n useFunctionKeys({ onSave: handleSaveAndClose });\r\n\r\n const fmsGlobal = getFmsGlobal();\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n\r\n const [accountCode, _setAccountCode, removeAccountCodeFromStorage, accountCodeRef] = useTypedFastStorage(`ifms-referenceFiles-accountcode-editable`, null);\r\n const { setCleanState } = useDirtyCheck(`ifms-referenceFiles-accountcode-editable`, ['edit', 'view']);\r\n const [, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeAccountCode);\r\n\r\n useEffect(() => {\r\n initialize();\r\n }, []);\r\n\r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelectorAll('[class^=\"ReactModal__Content\"]');\r\n const modalsWithoutSaveBtn = Array.from(modals).filter(modal => { return !modal.contains(saveBtn); });\r\n if (modalsWithoutSaveBtn.length <= 0)\r\n saveBtn.click();\r\n }\r\n }\r\n\r\n async function initialize() {\r\n setAccountCode(accountCodeT);\r\n }\r\n\r\n function setAccountCode(d: any, skipDirty: boolean = false) {\r\n if (!skipDirty) {\r\n setHasChanges(true);\r\n }\r\n _setAccountCode(d)\r\n }\r\n\r\n function getFrontDesc(accountCode: CodeGlNo, isInitialize: boolean = false): string {\r\n if (accountCode.glType !== \"I\" && accountCode.glType !== \"C\") return '';\r\n\r\n let frontDesc = '';\r\n if (isInitialize) {\r\n let splitDesc = accountCode.glDescription.split('.');\r\n frontDesc = splitDesc[0] + '.' + splitDesc[1] + '.' + splitDesc[2] + '.';\r\n }\r\n else {\r\n let desc = Groups?.find(x => x.value === accountCode.glType)?.forFront ?? '';\r\n if (desc) frontDesc += desc + '.';\r\n desc = SubGroups1?.find(x => x.value === accountCode.glGroup)?.extraCode ?? '';\r\n if (desc) frontDesc += desc + '.';\r\n if (accountCode.glSubGroup) frontDesc += accountCode.glSubGroup + '.';\r\n }\r\n return frontDesc;\r\n }\r\n\r\n async function checkDataAsync(): Promise {\r\n if (!accountCode) {\r\n return true;\r\n }\r\n\r\n const glNo = accountCode.glNo0 + accountCode.glNo1 + accountCode.glNo2 + accountCode.glNo3 + accountCode.glNo4 + accountCode.glNo5;\r\n\r\n if (!glNo || glNo.length !== 6) {\r\n await showGlobalOkDialog(

    * Please fill out the [Account Code] (Fixed Length : 6 )

    );\r\n return false;\r\n }\r\n if (!accountCode.glDescription) {\r\n await showGlobalOkDialog(

    * Please fill out the [Account Name]

    );\r\n return false;\r\n }\r\n if (['I', 'C'].indexOf(accountCode.glType) >= 0 && !accountCode.otherGlDesc) {\r\n await showGlobalOkDialog(

    * Please fill out the {accountCode.glType === 'I' ? 'Cost' : 'Sales'} [Account Name]

    );\r\n return false;\r\n }\r\n\r\n if (await appContext.api.checkupDuplicateFieldValueIsDuplicate(\"T_CODEGLNO\", \"F_GLNO\", glNo, \"F_ID\", accountCode.id)) {\r\n await showGlobalOkDialog(

    * Duplicate Number in [Account Code]

    );\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n async function save() {\r\n if (!accountCode) {\r\n return;\r\n }\r\n\r\n if (!accountCodeRef.current?.isDirty) {\r\n cancelOperation();\r\n await reload();\r\n return;\r\n }\r\n\r\n const isDataValid = await checkDataAsync();\r\n if (!isDataValid) {\r\n return;\r\n }\r\n\r\n saveAccountCode();\r\n\r\n let sqlInfo: SQLInfo | null;\r\n const sqlInfoList: SQLInfo[] = [];\r\n\r\n sqlInfo = historyUpdate(\"T_CODEGLNO\", accountCode.id, appContext.user?.id ?? '', accountCode.inactive ? \"Inactive\" : \"Active\");\r\n if (sqlInfo) {\r\n sqlInfoList.push(sqlInfo);\r\n }\r\n const sqlInfos = getSQLInfoList(accountCode as TrackableEntity);\r\n sqlInfoList.push(...sqlInfos);\r\n\r\n //Type이 I나 C일때 다른 데이터도 저장할 필요가 있음\r\n if (['I', 'C'].indexOf(accountCode.glType) >= 0) {\r\n if (accountCode.otherId === 0) { //Insert\r\n sqlInfoList.push(new SQLInfo({\r\n type: SQLType.Insert,\r\n tableName: 'T_CODEGLNO',\r\n key: new SQLField({ fieldName: 'F_ID', propertyName: 'id', value: -1 }),\r\n fields: [\r\n new SQLField({ fieldName: 'F_GlNo', propertyName: 'glNo', value: accountCode.otehrGlno }),\r\n new SQLField({ fieldName: 'F_GlType', propertyName: 'glType', value: accountCode.glType === 'I' ? 'C' : 'I' }),\r\n new SQLField({ fieldName: 'F_GlGroup', propertyName: 'glGroup', value: accountCode.glGroup.substring(0, 1) + (accountCode.glType === 'I' ? 'C' : 'I') }),\r\n new SQLField({ fieldName: 'F_GlSubGroup', propertyName: 'glSubGroup', value: accountCode.glSubGroup }),\r\n new SQLField({ fieldName: 'F_GlDescription', propertyName: 'glDescription', value: accountCode.otherGlDesc }),\r\n new SQLField({ fieldName: 'F_LocalDesc', propertyName: 'localDesc', value: accountCode.otherLocalDesc }),\r\n new SQLField({ fieldName: 'F_Remark', propertyName: 'remark', value: accountCode.otherRemark ?? '' }),\r\n new SQLField({ fieldName: 'F_Inactive', propertyName: 'inactive', value: accountCode.inactive }),\r\n new SQLField({ fieldName: 'F_InactiveDate', propertyName: 'inactiveDate', value: _.isEmpty(accountCode.inactiveDate) ? null : accountCode.inactiveDate }),\r\n new SQLField({ fieldName: 'InactiveBy', propertyName: 'inactiveBy', value: accountCode.inactiveBy ?? '' }),\r\n new SQLField({ fieldName: 'F_UseOnBillPay', propertyName: 'useOnBillPay', value: accountCode.useOnBillPay}),\r\n new SQLField({ fieldName: 'F_UseOnCustPay', propertyName: 'useOnCustPay', value: accountCode.useOnCustPay}),\r\n ]\r\n }));\r\n } else { //Update\r\n sqlInfoList.push(new SQLInfo({\r\n tableName: \"T_CODEGLNO\",\r\n type: SQLType.Update,\r\n fields: [\r\n new SQLField({ fieldName: 'F_GlNo', propertyName: 'glNo', value: accountCode.otehrGlno }),\r\n new SQLField({ fieldName: 'F_GlType', propertyName: 'glType', value: accountCode.glType === 'I' ? 'C' : 'I' }),\r\n new SQLField({ fieldName: 'F_GlGroup', propertyName: 'glGroup', value: accountCode.glGroup.substring(0, 1) + (accountCode.glType === 'I' ? 'C' : 'I') }),\r\n new SQLField({ fieldName: 'F_GlSubGroup', propertyName: 'glSubGroup', value: accountCode.glSubGroup }),\r\n new SQLField({ fieldName: 'F_GlDescription', propertyName: 'glDescription', value: accountCode.otherGlDesc }),\r\n new SQLField({ fieldName: 'F_LocalDesc', propertyName: 'localDesc', value: accountCode.otherLocalDesc }),\r\n new SQLField({ fieldName: 'F_Remark', propertyName: 'remark', value: accountCode.otherRemark ?? '' }),\r\n new SQLField({ fieldName: 'F_Inactive', propertyName: 'inactive', value: accountCode.inactive }),\r\n new SQLField({ fieldName: 'F_InactiveDate', propertyName: 'inactiveDate', value: _.isEmpty(accountCode.inactiveDate) ? null : accountCode.inactiveDate }),\r\n new SQLField({ fieldName: 'InactiveBy', propertyName: 'inactiveBy', value: accountCode.inactiveBy ?? '' }),\r\n new SQLField({ fieldName: 'F_UseOnBillPay', propertyName: 'useOnBillPay', value: accountCode.useOnBillPay}),\r\n new SQLField({ fieldName: 'F_UseOnCustPay', propertyName: 'useOnCustPay', value: accountCode.useOnCustPay}),\r\n ],\r\n key: new SQLField({ fieldName: \"F_ID\", propertyName: \"id\", value: accountCode.otherId }),\r\n }));\r\n }\r\n }\r\n\r\n const isSuspenseCode = accountCode.glNo === fmsGlobal.SuspensePay || accountCode.glNo === fmsGlobal.SuspenseRcv;\r\n if ((accountCode.useOnBillPay || accountCode.useOnCustPay) && !isSuspenseCode) {\r\n const isAssetOrLiabilityCode = accountCode.glNo0 === '1' || accountCode.glNo0 === '2';\r\n const billPayOptionValue = isAssetOrLiabilityCode ? '' : (accountCode.useOnBillPay ? '1' : '');\r\n const custPayOptionValue = isAssetOrLiabilityCode ? '' : (accountCode.useOnCustPay ? '1' : '');\r\n\r\n sqlInfos.push(new SQLInfo({\r\n tableName: \"T_CODEGLNO\",\r\n type: SQLType.Update,\r\n fields: [\r\n new SQLField({ fieldName: \"F_BillPayShowOption\", propertyName: \"billPayShowOption\", value: billPayOptionValue }),\r\n new SQLField({ fieldName: \"F_CustPayShowOption\", propertyName: \"custPayShowOption\", value: custPayOptionValue }),\r\n ],\r\n key: new SQLField({ fieldName: \"F_ID\", propertyName: \"id\", value: accountCode.otherId })\r\n }));\r\n }\r\n\r\n const apiResult = await appContext.api.saveJobDetail(JobNames.GLNo, sqlInfoList, {});\r\n\r\n if (apiResult && apiResult.success) {\r\n if (accountCode.glType === 'I' || accountCode.glType === 'C') {\r\n const checkApiResult = await appContext.api.checkNonExistAcctCode(accountCode.glType, accountCode.glGroup, accountCode.glNo.substring(3));\r\n if (!!checkApiResult && !!checkApiResult.msg && checkApiResult.msg !== 'AllSaved') {\r\n const newForm = await showGlobalYesNoDialog(\r\n
    \r\n

    The data has been saved

    \r\n

    Are you going to continue

    \r\n

    {checkApiResult.msg}

    \r\n
    \r\n ,false, 0, true);\r\n if (!newForm) {\r\n cancelOperation();\r\n reload(false);\r\n } else {\r\n //const newModel = _.cloneDeep(accountCode);\r\n // newModel.glSubGroup = '';\r\n // newModel.remark = '';\r\n // newModel.otherRemark = '';\r\n // newModel.glNo2 = '';\r\n // newModel.existingCode = '';\r\n // newModel.otherExistingCode = '';\r\n\r\n const newModel = new CodeGlNo();\r\n newModel.glType = accountCode.glType;\r\n newModel.glGroup = accountCode.glGroup;\r\n newModel.glNo0 = accountCode.glNo0;\r\n newModel.glNo1 = accountCode.glNo1;\r\n newModel.glNo3 = accountCode.glNo3;\r\n newModel.glNo4 = accountCode.glNo4;\r\n newModel.glNo5 = accountCode.glNo5;\r\n\r\n newModel.displayDesc = accountCode.displayDesc;\r\n newModel.displayLocalDesc = accountCode.displayLocalDesc;\r\n newModel.otherdisplayDesc = accountCode.otherdisplayDesc;\r\n newModel.otherdisplayLocalDesc = accountCode.otherdisplayLocalDesc;\r\n\r\n newModel.glDescription = accountCode.glDescription;\r\n newModel.localDesc = accountCode.localDesc;\r\n newModel.otherGlDesc = accountCode.otherGlDesc;\r\n newModel.otherLocalDesc = accountCode.otherLocalDesc;\r\n\r\n newModel.edit = false;\r\n newModel.view = false;\r\n setAccountCode(newModel, false);\r\n setCleanState(newModel);\r\n\r\n if (accountCodeRef.current) {\r\n accountCodeRef.current.trackable = true;\r\n setAccountCode({\r\n edit: false,\r\n view: false,\r\n });\r\n }\r\n reload(false);\r\n }\r\n } else {\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n cancelOperation();\r\n reload(false);\r\n }\r\n }\r\n else {\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n cancelOperation();\r\n reload(false);\r\n }\r\n }\r\n }\r\n\r\n function saveAccountCode() {\r\n if (!accountCode) return;\r\n\r\n const mainChange: Partial = {};\r\n\r\n mainChange.glNo = accountCode.glNo0 + accountCode.glNo1 + accountCode.glNo2 + accountCode.glNo3 + accountCode.glNo4 + accountCode.glNo5;\r\n if (accountCode.glType === 'I') { mainChange.otehrGlno = 6 + accountCode.glNo1 + accountCode.glNo2 + accountCode.glNo3 + accountCode.glNo4 + accountCode.glNo5; }\r\n else if (accountCode.glType === 'C') { mainChange.otehrGlno = 5 + accountCode.glNo1 + accountCode.glNo2 + accountCode.glNo3 + accountCode.glNo4 + accountCode.glNo5; }\r\n\r\n if (accountCode.frontGlDesc) {\r\n mainChange.glDescription = accountCode.frontGlDesc + accountCode.displayDesc;\r\n mainChange.otherGlDesc = accountCode.frontGlDesc.replace((accountCode.glType === 'I' ? \"SALES\" : \"COST\"), (accountCode.glType === 'I' ? \"COST\" : \"SALES\")) + accountCode.otherdisplayDesc;\r\n if (mainChange.glDescription.length > 100) {\r\n mainChange.glDescription = mainChange.glDescription.substring(0, 100);\r\n mainChange.otherGlDesc = mainChange.otherGlDesc.substring(0, 100);\r\n }\r\n mainChange.localDesc = accountCode.frontLocalDesc + accountCode.displayLocalDesc;\r\n mainChange.otherLocalDesc = accountCode.frontLocalDesc.replace((accountCode.glType === 'I' ? \"SALES\" : \"COST\"), (accountCode.glType === 'I' ? \"COST\" : \"SALES\")) + accountCode.otherdisplayLocalDesc;\r\n if (mainChange.localDesc.length > 50) {\r\n mainChange.localDesc = mainChange.localDesc.substring(0, 50);\r\n mainChange.otherLocalDesc = mainChange.otherLocalDesc.substring(0, 50);\r\n }\r\n } else {\r\n mainChange.glDescription = accountCode.displayDesc;\r\n mainChange.localDesc = accountCode.displayLocalDesc;\r\n if (!accountCode.displayLocalDesc) mainChange.localDesc = accountCode.displayDesc;\r\n if (mainChange.localDesc.length > 50) {\r\n mainChange.localDesc = mainChange.localDesc.substring(0, 50);\r\n }\r\n }\r\n if (!accountCode.edit) {\r\n let userDesc = moment(nowDate()).format('MM-DD-YYYY') + ' by ' + (appContext.user?.id ?? '');\r\n mainChange.remark = accountCode.remark === '' ? userDesc : (accountCode.remark + '\\r\\n' + userDesc);\r\n mainChange.otherRemark = accountCode.otherRemark === '' ? userDesc : (accountCode.otherRemark + '\\r\\n' + userDesc);\r\n }\r\n if (accountCode.edit && accountCode.otherId === 0) {\r\n let userDesc = moment(nowDate()).format('MM-DD-YYYY') + ' by ' + (appContext.user?.id ?? '');\r\n mainChange.otherRemark = accountCode.otherRemark === '' ? userDesc : (accountCode.otherRemark + '\\r\\n' + userDesc);\r\n }\r\n\r\n if (!_.isEmpty(mainChange)) {\r\n setAccountCode(mainChange);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n  \r\n {accountCode?.view && listSec?.grantEdit &&\r\n setAccountCode({ view: false }, true)}>Edit\r\n }\r\n {!accountCode?.view &&\r\n Save\r\n }\r\n  \r\n
    \r\n
      \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default AccountCodeDetails;\r\n","import _ from 'lodash';\r\nimport React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faPencilAlt, faPlus, faTrashAlt, faFileAlt, faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport SecondaryButton from '../../../../ui/SecondaryButton';\r\nimport IfmsModal from '../../../../ui/IfmsModal';\r\nimport useTableNavigation from '../../../../ui/tables/useTableNavigation';\r\nimport { accountCodeList, ApplicableTableSettings } from '../../../../tableSettings';\r\n\r\nimport {\r\n TextAlignLeftRenderer,\r\n TextRenderer,\r\n NumberedIndicatorRenderer,\r\n NullableCheckboxRedIconRenderer,\r\n DateRenderer,\r\n} from '../../../../uiControls/SmartTableRenderers';\r\n\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport useGlobalYesNoDialog from '../../../../hooks/useGlobalYesNoDialog';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\nimport useFastStorage, { useTypedFastStorage } from '../../../../hooks/useFastStorage';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { CodeAccountListItem } from '../../../../fms.data/models/CodeAccountListItem';\r\nimport { initialSearch, isFilterObjectEmpty, Search } from '../../../../filtering';\r\nimport { CodeGlNo } from '../../../../fms.core/CodeGlNo';\r\nimport useDirtyCheck from '../../../../hooks/useDirtyCheck2';\r\nimport { ApiResult } from '../../../../framework.core/data/ApiResult';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\nimport { sortingListData } from '../../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../../util';\r\nimport useFilterBar from '../../../../hooks/useFilterBar';\r\nimport { ListOrderBy } from \"../../../common/AbstractListView\";\r\nimport postal from 'postal';\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport constants from '../../../../constants';\r\nimport AccountCodeDetails from './AccountCodeDetails';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport { Portal } from 'react-portal';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\nimport { exportCodeDataIntoExcel } from '../../../../excel';\r\nimport { formatDate, now } from '../../../../dateUtils';\r\nimport { getFmsGlobal } from '../../../../globals';\r\n\r\nconst Groups = [\r\n { label: '1 ASSET', value: 'A', glNo: '1' },\r\n { label: '2 LIABILITY', value: 'L', glNo: '2' },\r\n { label: '3 EQUITY', value: 'Q', glNo: '3' },\r\n { label: '4 EXPENSE', value: 'E', glNo: '4' },\r\n { label: '5 SALES', value: 'I', glNo: '5', forFront: 'SALES' },\r\n { label: '6 COST', value: 'C', glNo: '6', forFront: 'COST' },\r\n // \r\n { label: '45 NON-OP EXPENSE', value: 'N', glNo: '4' },\r\n { label: '55 NON-OP INCOME', value: 'M', glNo: '5' },\r\n // \r\n];\r\n\r\nlet SubGroups1: Array = [];\r\n\r\nfunction formatElement(data: any, index: number) {\r\n return { ...data, indicator: index + 1 };\r\n}\r\n\r\nfunction formatData(data: any) {\r\n return data.map((d: any, i: number) => formatElement(d, i));\r\n}\r\n\r\nfunction AccountCode({ \r\n componentIndex\r\n}: {\r\n componentIndex: number\r\n}) {\r\n useFunctionKeys({ onEsc: cancelOperation });\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const { selectTableRow, tableNavigationCleanup } = useTableNavigation('account-code-list', onRowSelect, selectAccountCodeForView, ['accountCode'], false, false, false);\r\n\r\n const tableRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n const [, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, dataRef] = useFastStorage(`ifms-referenceFiles-accountcode-list`, []);\r\n const [selectedRow, setSelectedRow] = useState(-1);\r\n\r\n const [accountCode, _setAccountCode, removeAccountCodeFromStorage, accountCodeRef] = useTypedFastStorage(`ifms-referenceFiles-accountcode-editable`, null);\r\n const { setCleanState } = useDirtyCheck(`ifms-referenceFiles-accountcode-editable`, ['edit', 'view']);\r\n const [orderBy, setOrderBy] = useFastStorage(`ifms-referenceFiles-accountcode-orderby`, {\r\n orderBy: 'accountCode',\r\n orderByAscending: true,\r\n // general1: 'AccountCode',\r\n // pageSize: systemSettings.defaultPageSize,\r\n });\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeAccountCode);\r\n const tableHeight = 520;\r\n\r\n const fmsGlobal = getFmsGlobal();\r\n\r\n const { FilterButton, search } = useFilterBar(\r\n accountCodeList,\r\n undefined,\r\n getDefaultOrderBy,\r\n String(componentIndex)\r\n );\r\n\r\n function getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'accountCode',\r\n orderByAscending: true,\r\n };\r\n }\r\n\r\n function setData(d: any) {\r\n removeData();\r\n _setData(d);\r\n }\r\n\r\n function setAccountCode(d: any, skipDirty: boolean = false) {\r\n if (!skipDirty) {\r\n setHasChanges(true);\r\n }\r\n _setAccountCode(d)\r\n }\r\n\r\n\r\n async function fetchData(api: any, search: Search) {\r\n setLoading(true);\r\n\r\n const apiResult = await api.getListItems(JobNames.GLNo,\r\n 'CodeAccountListItem',\r\n CodeAccountListItem.calculateSearchParameters(search),\r\n 1, search.pageSize);\r\n\r\n const fetchedTableData = formatData(apiResult && apiResult.entities ? apiResult.entities : []);\r\n sortingListData(CodeAccountListItem, fetchedTableData , setData, orderBy);\r\n setHasChanges(false);\r\n setLoading(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (isFilterObjectEmpty(search) && search.version === 1) reload(false);\r\n\r\n return () => {\r\n removeData();\r\n tableNavigationCleanup();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n if (loading || (isFilterObjectEmpty(search) && search.version === 1)) {\r\n return;\r\n }\r\n fetchData(appContext.api, search);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [search]\r\n );\r\n\r\n useEffect(() => {\r\n if (dataRef.current?.length > 0 && !loading) {\r\n selectTableRow(0, true);\r\n onRowSelect(0);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [loading]\r\n );\r\n\r\n async function reload(clearAll: boolean = true) {\r\n const searchValue = clearAll ? initialSearch : search;\r\n await fetchData(appContext.api, searchValue);\r\n }\r\n\r\n function onRowSelect(rowIndex: number) {\r\n setSelectedRow(!isNaN(rowIndex) ? rowIndex : -1);\r\n }\r\n\r\n function onHeaderClick(header: any) {\r\n if (header && header.id !== 'indicator') {\r\n if (header.id === orderBy.orderBy) {\r\n setOrderBy({ orderByAscending: !orderBy.orderByAscending });\r\n } else {\r\n setOrderBy({ orderBy: header.id, orderByAscending: true });\r\n }\r\n }\r\n sortingListData(CodeAccountListItem, data, setData, orderBy);\r\n }\r\n\r\n async function selectAccountCodeForNew() {\r\n const newModel = new CodeGlNo();\r\n newModel.edit = false;\r\n newModel.view = false;\r\n setAccountCode(newModel, false);\r\n setCleanState(newModel);\r\n\r\n if (accountCodeRef.current) {\r\n accountCodeRef.current.trackable = true;\r\n setAccountCode({\r\n edit: false,\r\n view: false,\r\n });\r\n }\r\n }\r\n async function selectAccountCodeForView(row: number) {\r\n await setAccountCodeDetail(true, row);\r\n }\r\n async function selectAccountCodeForEdit() {\r\n await setAccountCodeDetail(false);\r\n }\r\n async function selectAccountCodeForDelete() {\r\n const doConfirm = await showGlobalYesNoDialog(\r\n
    \r\n

    Confirm to Delete?

    \r\n
    \r\n , false, 0, true, 'warning');\r\n if (doConfirm) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.GLNo, { id: dataRef.current[selectedRow].id, pimsLinkId: 0 });\r\n if (apiResult && apiResult.success) {\r\n await reload(false);\r\n } else if (apiResult && apiResult.message) {\r\n showGlobalOkDialog(

    {apiResult.message}

    );\r\n } else\r\n showGlobalOkDialog(

    {\"Cannot delete\"}

    );\r\n } else\r\n return;\r\n }\r\n\r\n\r\n async function exportExcel() {\r\n const apiResult = await appContext.api.getListItems(JobNames.GLNo,\r\n 'CodeAccountListItem',\r\n CodeAccountListItem.calculateSearchParameters(initialSearch),\r\n 1, 0);\r\n\r\n exportCodeDataIntoExcel(apiResult.entities ?? [], `AcctCode-${fmsGlobal.AcmeID}`, CodeAccountListItem.getExportCollection());\r\n }\r\n\r\n\r\n async function setAccountCodeDetail(isView: boolean, row: number = -1) {\r\n const tempRow = row > -1 ? row : selectedRow; // row double click시 row 값에 rowindex가 들어옴. 이를 우선시 해서 사용함.\r\n\r\n if (tempRow >= 0 && tempRow < dataRef.current.length && _.isEmpty(accountCode)) {\r\n const apiResult: ApiResult = await appContext.api.getJobDetail(JobNames.GLNo,\r\n { id: dataRef.current[tempRow].id });\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

    );\r\n return null;\r\n } else {\r\n const accountCode = { ...apiResult.result, edit: true, view: isView, editIndex: tempRow };\r\n readAccountCode(accountCode);\r\n\r\n //setCleanState(accountCode);\r\n const tEntity = new CodeGlNo(accountCode);\r\n setCleanState(tEntity);\r\n setAccountCode(tEntity, true);\r\n tEntity.trackable = true;\r\n }\r\n }\r\n }\r\n\r\n function readAccountCode(accountCode: any) {\r\n let frontDesc = getFrontDesc(accountCode, true);\r\n\r\n let otherFrontDesc = accountCode.glType === 'I' ? frontDesc.replace('SALES', 'COST') : frontDesc.replace('COST', 'SALES');\r\n accountCode.frontGlDesc = frontDesc\r\n accountCode.frontLocalDesc = frontDesc;\r\n accountCode.displayDesc = accountCode.glDescription.replace(frontDesc, '');\r\n accountCode.displayLocalDesc = accountCode.localDesc.replace(frontDesc, '');\r\n\r\n accountCode.otherFrontGlDesc = otherFrontDesc\r\n accountCode.otherFrontLocalDesc = otherFrontDesc;\r\n accountCode.otherdisplayDesc = accountCode.otherGlDesc?.replace(otherFrontDesc, '');\r\n accountCode.otherdisplayLocalDesc = accountCode.otherLocalDesc?.replace(otherFrontDesc, '');\r\n }\r\n\r\n function getFrontDesc(accountCode: CodeGlNo, isInitialize : boolean = false): string {\r\n if (accountCode.glType !== \"I\" && accountCode.glType !== \"C\") return '';\r\n\r\n let frontDesc = '';\r\n if(isInitialize){\r\n let splitDesc = accountCode.glDescription.split('.');\r\n frontDesc = splitDesc[0] + '.' + splitDesc[1] + '.' + splitDesc[2] + '.';\r\n }\r\n else{\r\n let desc = Groups?.find(x => x.value === accountCode.glType)?.forFront ?? '';\r\n if (desc) frontDesc += desc + '.';\r\n desc = SubGroups1?.find(x => x.value === accountCode.glGroup)?.extraCode ?? '';\r\n if (desc) frontDesc += desc + '.';\r\n if (accountCode.glSubGroup) frontDesc += accountCode.glSubGroup + '.';\r\n }\r\n return frontDesc;\r\n }\r\n\r\n function cancelOperation() {\r\n const filterNode = document.getElementById('ifms-list-screen-filter');\r\n const channel = postal.channel('ifms-filter');\r\n\r\n if (!filterNode) {\r\n setHasChanges(false);\r\n removeAccountCodeFromStorage();\r\n } else {\r\n channel.publish('ifms-filter.dismiss');\r\n }\r\n \r\n return true;\r\n }\r\n\r\n const accountCodeTableOptions: ApplicableTableSettings = {\r\n customTableId: 'account-code-list',\r\n ref: tableRef,\r\n selectable: true,\r\n tableName: 'accountCodeList',\r\n ...accountCodeList,\r\n height: `${tableHeight}px`,\r\n data: data.map((x: any) => ({ ...x })),\r\n rowRenderers: [\r\n { accessor: 'indicator', Cell: NumberedIndicatorRenderer },\r\n { accessor: 'accountCode', Cell: TextRenderer },\r\n { accessor: 'accountName', Cell: TextAlignLeftRenderer },\r\n { accessor: 'glType', Cell: TextRenderer },\r\n { accessor: 'subGroup1', Cell: TextAlignLeftRenderer },\r\n { accessor: 'subGroup2', Cell: TextAlignLeftRenderer },\r\n { accessor: 'iocalDesc', Cell: TextAlignLeftRenderer },\r\n { accessor: 'inactive', Cell: NullableCheckboxRedIconRenderer },\r\n { accessor: 'inactiveDate', Cell: DateRenderer },\r\n { accessor: 'remark', Cell: TextAlignLeftRenderer },\r\n ],\r\n orderBy: [orderBy],\r\n onHeaderClick,\r\n };\r\n\r\n const checkSuntek = appContext.suntekSettings?.company?.companyId === \"FSSUNTEK\" || appContext.user?.isSuntekAdmin ? true : false;\r\n\r\n const hasSelectedRow = !isNaN(selectedRow) && !(selectedRow < 0);\r\n const canBeAdd = listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel && (checkSuntek ||(!!dataRef?.current && !dataRef?.current[selectedRow]?.isDefault));\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const RenderedTable = React.useMemo(() => , [dataRef.current]);\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n   \r\n
    \r\n New\r\n   \r\n View\r\n   \r\n Edit\r\n   \r\n Delete\r\n  \r\n {checkSuntek &&\r\n <>\r\n  \r\n Export\r\n  \r\n \r\n }\r\n { cancelOperation(); reload(false); }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n {RenderedTable}\r\n
    \r\n\r\n \r\n {!!accountCode &&\r\n \r\n }\r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default AccountCode;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeAccountSubListItem extends SearchModelBase {\r\n code: string = '';\r\n desc1: string = '';\r\n id: number = 0;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Sub Code', width: 200, dataIndex: 'code'}),\r\n XCol.Create({ col: 1, text: 'Desc', width: 1000, dataIndex: 'desc1'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeAccountSubListItem.prototype.id, orderByAscending: false };\r\n\r\n public static formatData(data: CodeAccountSubListItem[]) {\r\n return data.map((d: CodeAccountSubListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import _ from 'lodash';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nimport { accountSubCodeList } from '../../../../tableSettings';\r\n\r\nimport useFastStorage from '../../../../hooks/useFastStorage';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\nimport useFunction from '../../../../hooks/useFunction';\r\n\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport ClearableSearch from '../../../../uiControls/ClearableSearch';\r\nimport EditableTable, { CellData, EditableTableHandle, TableCellTypes } from '../../../../ui/tables/editing/EditableTable';\r\nimport { Portal } from 'react-portal';\r\nimport GreenButton from '../../../../ui/GreenButton';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { SQLType } from '../../../../framework.core/data/SQLInfo';\r\nimport { CodeAccountSubListItem } from '../../../../fms.data/models/CodeAccountSubListItem';\r\nimport { Search } from '../../../../filtering';\r\nimport useSystemSettings from '../../../../hooks/useSystemSettings';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport { checkTabIsDirty } from '../../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../../util';\r\nimport postal from 'postal';\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport constants from '../../../../constants';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\n\r\nfunction AccountSubCodeRenderer({data, row}: any) {\r\n const applyToLineItem = data[0].applyToLineItem;\r\n\r\n return (\r\n {\r\n applyToLineItem(row.index, {code: e.target.value, isUpdate:true})\r\n }}\r\n />\r\n );\r\n}\r\n\r\nfunction DescriptionRenderer({data, row}: any) {\r\n const applyToLineItem = data[0].applyToLineItem;\r\n\r\n return (\r\n {\r\n applyToLineItem(row.index, {desc1: e.target.value, isUpdate:true})\r\n }}\r\n />\r\n );\r\n}\r\n\r\nfunction formatElement(data: any) {\r\n return data;\r\n}\r\n\r\nfunction formatData(data: any) {\r\n return data.map((d: any) => formatElement(d));\r\n}\r\n\r\nfunction AccountSubCode() {\r\n useFunction({invokers: {\r\n ifmsSettingsSave: save,\r\n ifmsSettingsCancel: cancelOperation,\r\n }});\r\n useFunctionKeys({ onSave: handleSaveAndClose });\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const systemSettings = useSystemSettings();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n //const tickRef = useRef(0);\r\n //const [, _setTick] = useState(0);\r\n\r\n const tableRef = useRef(null);\r\n const masterTableRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n const [allData, setAllData] = useState(Array());\r\n const [//readyForEdit\r\n , setReadyForEdit] = useState(false);\r\n const [hasChanges, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, ] = useFastStorage(`ifms-referenceFiles-accountSubCode-list`, []);\r\n const [orderBy, setOrderBy] = useFastStorage(`ifms-referenceFiles-accountSubCode-orderby`,{\r\n orderBy: 'code',\r\n orderByAscending: true,\r\n general1: 'code',\r\n pageSize: systemSettings.defaultPageSize,\r\n //generalText1: null,\r\n });\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeAccountSubCode);\r\n const [focusFirstCell, setFocusFirstCell] = useState(true);\r\n\r\n const savedDataRef = useRef>([]);\r\n const oriData = useRef([]);\r\n // const addingToTheFirstLine = useRef(false);\r\n\r\n const newIdRef = useRef(-1);\r\n\r\n const listItemType = 'CodeAccountSubListItem';\r\n\r\n useEffect(() => {\r\n setReadyForEdit(!loading)\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [loading]\r\n );\r\n\r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if (!modals)\r\n saveBtn.click();\r\n }\r\n }\r\n\r\n function setData(d:any, callByFetchData: boolean = false) {\r\n setFocusFirstCell(callByFetchData);\r\n _setData(d, null, { forceClone: callByFetchData });\r\n setHasChanges(checkTabIsDirty(CodeAccountSubListItem, oriData.current, d));\r\n }\r\n\r\n function getNextReferenceId() {\r\n const result = newIdRef.current;\r\n newIdRef.current = newIdRef.current - 1;\r\n return result;\r\n }\r\n\r\n /**\r\n function setTick(tick: any) {\r\n tickRef.current = tick;\r\n _setTick(tick);\r\n }\r\n */\r\n\r\n const tableHeight = 520;\r\n\r\n async function fetchData(api: any, search: Search) {\r\n setLoading(true);\r\n // const apiResult = await api.getSettingsCodesAccountSubCodes();\r\n const apiResult = await api.getListItems(JobNames.SubGLCode,\r\n listItemType,\r\n CodeAccountSubListItem.calculateSearchParameters(search),\r\n 1, search.pageSize);\r\n const apiResultforAll = await api.getListItems(JobNames.SubGLCode,\r\n listItemType,\r\n CodeAccountSubListItem.calculateSearchParameters(search),\r\n 1);\r\n oriData.current = formatData(apiResult && apiResult.entities ? apiResult.entities : []);\r\n setData(formatData(apiResult && apiResult.entities ? apiResult.entities : []), true);\r\n savedDataRef.current = apiResult && apiResult.entities ? apiResult.entities : [];\r\n if(apiResultforAll && apiResultforAll.entities){\r\n setAllData(apiResultforAll.entities.map((a: CodeAccountSubListItem) => a.code.toLowerCase()));\r\n }\r\n\r\n setFocusFirstCell(false);\r\n setLoading(false);\r\n setHasChanges(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (data.length === 0)\r\n reload();\r\n else {\r\n oriData.current = _.cloneDeep(data);\r\n savedDataRef.current = _.cloneDeep(data);\r\n }\r\n return () => {\r\n removeData();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function reload(generalText:string = '') {\r\n setOrderBy({\r\n orderBy: 'code',\r\n orderByAscending: true,\r\n pageSize: systemSettings.defaultPageSize,\r\n generalText1: generalText,\r\n });\r\n fetchData(appContext.api, orderBy);\r\n }\r\n\r\n /*\r\n function onHeaderClick(header: any) {\r\n if (!header || !header.id || header.id === 'indicator' || !header.sortable) {\r\n return;\r\n }\r\n\r\n let newOrderBy = {...orderBy, orderByAscending: !orderBy.orderByAscending};\r\n\r\n if (header && header.id !== 'indicator') {\r\n if (header.id === orderBy.orderBy) {\r\n setOrderBy({ orderByAscending: !orderBy.orderByAscending });\r\n } else {\r\n setOrderBy({ orderBy: header.id, orderByAscending: true });\r\n }\r\n }\r\n sortingListData(CodeAccountSubListItem, data, setData, orderBy);\r\n // const sortResult = sortSettingListData(dataRef.current ?? [], newOrderBy, accountSubCodeList.columns);\r\n\r\n // if (sortResult.sorted) {\r\n // setData(sortResult.data);\r\n // }\r\n }\r\n*/\r\n function cancelOperation() {\r\n setHasChanges(false);\r\n removeData();\r\n return true;\r\n }\r\n\r\n async function save() {\r\n //const accountSubCodes = data.filter(x => x.id === 0 || x.hasBeenChanged);\r\n // const apiResult = await appContext.api.saveSettingsCodesAccountSubCodes(accountSubCodes);\r\n if (!data) {\r\n return;\r\n }\r\n\r\n let validData = data.filter((x:any) => x.code);\r\n\r\n let errMsg = '';\r\n const dataToSave = validData.filter((x: any) => x.id <= 0 || x.hasBeenChanged);\r\n const deleteData = savedDataRef.current.filter((x) => x.isDelete);\r\n if(dataToSave.length === 0 && deleteData.length === 0) {\r\n if (hasChanges) reload(orderBy.generalText1);\r\n return;\r\n }\r\n setLoading(true);\r\n\r\n for (let i = 0; i < deleteData.length; ++i) {\r\n const s = deleteData[i];\r\n const apiResult = await appContext.api.saveListItem(listItemType,\r\n SQLType.Delete, _.omit(s, ['isDelete']));\r\n if (!apiResult || !apiResult.success) {\r\n errMsg = apiResult?.message ?? constants.SAVE_ERROR_MESSAGE;\r\n }\r\n\r\n }\r\n if (dataToSave.length > 0) {\r\n const isDuplicate = await duplicateCell(dataToSave);\r\n if(isDuplicate){\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n const apiResult = await appContext.api.saveList(listItemType, dataToSave);\r\n if (!apiResult || !apiResult.success) {\r\n errMsg += (errMsg ? '\\n' : '') + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n }\r\n else {\r\n dataToSave.forEach((item: any) => {\r\n const index = data.findIndex((d: any) => d.code === item.code);\r\n if (index >= 0) {\r\n data[index].id = item.newId;\r\n data[index].hasBeenChanged = false;\r\n }\r\n // 정상 저장된 경우 isNew Flag 제거\r\n if (item.isNew) {\r\n delete data[index].isNew;\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (errMsg) {\r\n await showGlobalOkDialog(

    {errMsg}

    );\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n // setData(data);\r\n // savedDataRef.current = _.cloneDeep(data);\r\n // oriData.current = _.cloneDeep(data);\r\n\r\n // setLoading(false);\r\n // setHasChanges(false);\r\n //cancelOperation();\r\n reload(orderBy.generalText1);\r\n\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n }\r\n\r\n function deleteRow(index: number) {\r\n if (!data) {\r\n return false;\r\n }\r\n\r\n const element = data[index];\r\n if (!element.isNew) {\r\n let deleteRow = savedDataRef.current.find(x => x.id === data[index].id);\r\n if (deleteRow) {\r\n deleteRow.isDelete = true;\r\n }\r\n }\r\n data.splice(index, 1);\r\n setData(data);\r\n\r\n const tempData = data.map((a: CodeAccountSubListItem) => a.code.toLowerCase());\r\n const newAllData = allData.splice(0, tempData.length, tempData);\r\n setAllData(newAllData);\r\n\r\n // setTick(tickRef.current + 1);\r\n return true;\r\n }\r\n\r\n function applyToLineItem(rowIndex: number, change: any) {\r\n if (!change) {\r\n return;\r\n }\r\n\r\n const newData = [...data];\r\n const checkData = data[rowIndex];\r\n if (!change.isNew && (change.code !== checkData.code || change.desc1 !== checkData.desc1)) {\r\n _.merge(newData[rowIndex], { ...change, hasBeenChanged: true });\r\n setData(newData);\r\n //setHasChanges(true);\r\n // setTick(tickRef.current + 1);\r\n }\r\n }\r\n\r\n // function addingLineToFirstLine(){\r\n // addingToTheFirstLine.current = true;\r\n // masterTableRef.current?.add();\r\n // }\r\n\r\n function addLineItem() {\r\n const newData = _.cloneDeep(data);\r\n\r\n return {\r\n setDataFunc: (list: any) => setData(list),\r\n curListData: newData,\r\n newData: { desc1: '', code: '', id: getNextReferenceId(), isNew: true, isCancel: true, isUpdate: false, isDelete: false }\r\n };\r\n }\r\n\r\n async function duplicateCell(checkData: any) {\r\n if (!data) {\r\n return;\r\n }\r\n\r\n let duplicateFieldText = '';\r\n\r\n let isDuplicate = false;\r\n let insList = checkData.filter((x: any) => x.isNew === true);\r\n let chgList = checkData.filter((x: any) => x.hasBeenChanged === true && !x.isNew);\r\n let focusRow = -1;\r\n\r\n if (insList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < insList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (insList[i].code.toUpperCase() === data[j].code.toUpperCase()) {\r\n if (count === 0) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${insList[i].code}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (chgList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < chgList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (chgList[i].code.toUpperCase() === data[j].code.toUpperCase()) {\r\n if (!data[j].isNew && data[j].hasBeenChanged === true && tempRow === -1) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${chgList[i].code}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (!isDuplicate) {\r\n const apiResult = await appContext.api.checkDuplicatedKeys(JobNames.SubGLCode, listItemType, insList, chgList);\r\n if (apiResult && apiResult.success && apiResult.message) {\r\n duplicateFieldText = `${apiResult.message}`;\r\n isDuplicate = true;\r\n } else if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog('Could not check duplication.\\r\\nPlease try later.');\r\n return true;\r\n }\r\n }\r\n else\r\n await showGlobalOkDialog(`${duplicateFieldText}Please try after correcting duplication.`);\r\n\r\n return isDuplicate;\r\n }\r\n\r\n function getIndexOfFirstInvalidCell(rowIndex: number) {\r\n if (!data) {\r\n return undefined;\r\n }\r\n if (!data[rowIndex].code) {\r\n return 1;\r\n }\r\n if (allData) { //기존데이터 목록\r\n const newData = [...allData];\r\n if(newData.filter(x => x === data[rowIndex].code.toLowerCase()).length === 0) // 현재 목록에 없음\r\n {\r\n newData.splice(rowIndex, 1, data[rowIndex].code.toLowerCase());\r\n setAllData(newData);\r\n return undefined;\r\n }else{\r\n if(newData[rowIndex] === data[rowIndex].code.toLowerCase()) return undefined;\r\n else{\r\n showGlobalOkDialog(

    '{data[rowIndex].code}' is a duplicate value.

    );\r\n return 1;\r\n }\r\n }\r\n } \r\n else {\r\n const newData = [data[rowIndex].code.toLowerCase()];\r\n setAllData(newData);\r\n }\r\n return undefined;\r\n }\r\n\r\n const accountSubCodeTableOptions = {\r\n customTableId: 'account-sub-code-list',\r\n ref: tableRef,\r\n selectable: false,\r\n tableName: 'account-sub-code-list',\r\n ...accountSubCodeList,\r\n height: `${tableHeight}px`,\r\n data: data.map((x: any, i: number) => ({...x, indicator: (i + 1).toString(), applyToLineItem})),\r\n rowRenderers: [\r\n { accessor: 'indicator' },\r\n { accessor: 'code', EditCell: AccountSubCodeRenderer },\r\n { accessor: 'desc1', EditCell: DescriptionRenderer },\r\n ],\r\n getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n if (accessor === 'code')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].code };\r\n else if (accessor === 'desc1')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].desc1 };\r\n else\r\n return undefined;\r\n },\r\n isCellLock: (accessor: string, rowData: any): boolean => {\r\n if(!(listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel))\r\n return true\r\n else\r\n return false;\r\n },\r\n //orderBy: [orderBy],\r\n //onHeaderClick,\r\n useEditControls: (listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel),\r\n };\r\n\r\n //const dataCount = data ? data.length : 0;\r\n const canBeEdit = !loading && (listSec?.grantAdd || listSec?.grantEdit);\r\n\r\n return (\r\n
    \r\n {/* \r\n

    Codes Account Sub Code

    \r\n
    \r\n {\r\n setOrderBy({...orderBy, general1: generalText1 ? orderBy?.orderBy : null, generalText1});\r\n reload();\r\n }} />\r\n
    \r\n
    */}\r\n
    \r\n \r\n
    \r\n
    \r\n Save\r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n { reload(orderBy.generalText1); }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    */}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {\r\n await reload(generalText1 === null ? '' : generalText1);\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n {// { addingLineToFirstLine() }}>  Add Line   \r\n }\r\n { reload(orderBy.generalText1); }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n listSec?.grantDel ?? false}\r\n />\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default AccountSubCode;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeBillingListItem extends SearchModelBase {\r\n code: string = '';\r\n desc1: string = '';\r\n jobType: string = '';\r\n localDesc: string = '';\r\n salesGLNo: string = '';\r\n salesGLNoDesc: string = '';\r\n costGLNo: string = '';\r\n costGLNoDesc: string = '';\r\n inactive: boolean|null = null;\r\n inactiveDate: string | null = null;\r\n remark: string = '';\r\n id: number = 0;\r\n isDefault: boolean = false;\r\n billingCodeIndex: string = '';\r\n\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Billing Code', width: 200, dataIndex: 'code'}),\r\n XCol.Create({ col: 1, text: 'Default Description', width: 300, dataIndex: 'desc1'}),\r\n XCol.Create({ col: 2, text: 'Job Type', width: 170, dataIndex: 'jobType'}),\r\n XCol.Create({ col: 3, text: 'Custom Description', width: 300, dataIndex: 'localDesc'}),\r\n XCol.Create({ col: 4, text: 'Sales Acct.Code', width: 100, dataIndex: 'salesGLNo'}),\r\n XCol.Create({ col: 5, text: 'Sales Acct.Code Desc.', width: 200, dataIndex: 'salesGLNoDesc'}),\r\n XCol.Create({ col: 6, text: 'Cost Acct.Code', width: 100, dataIndex: 'costGLNo'}),\r\n XCol.Create({ col: 7, text: 'Cost Acct.Code Desc.', width: 200, dataIndex: 'costGLNoDesc'}),\r\n XCol.Create({ col: 8, text: 'Inactive', width: 65, dataIndex: 'inactive', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 9, text: 'Inactive Date', width: 65, dataIndex: 'inactiveDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 10, text: 'Remark', width: 400, dataIndex: 'remark'})\r\n ];\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeBillingListItem.prototype.code, orderByAscending: false };\r\n\r\n public static formatData(data: CodeBillingListItem[]) {\r\n return data.map((d: CodeBillingListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\nimport _ from 'lodash';\r\n\r\nexport class NCodeCharge extends TrackableEntity {\r\n id: number = 0;\r\n code: string = '';\r\n codeName: string = '';\r\n description: string = '';\r\n\r\n //데이터 저장용\r\n oi: string = '0';\r\n oo: string = '0';\r\n ai: string = '0';\r\n ao: string = '0';\r\n wh: string = '0';\r\n ot: string = '0'; // Payroll - 4\r\n //체크박스 보여주기용\r\n oiForView: boolean = false;\r\n ooForView: boolean = false;\r\n aiForView: boolean = false;\r\n aoForView: boolean = false;\r\n whForView: boolean = false;\r\n otForView: boolean = false;\r\n\r\n sales1: string = '';\r\n cost1: string = '';\r\n chgType1: boolean = false;\r\n sales2: string = '';\r\n cost2: string = '';\r\n chgType2: boolean = false;\r\n sales3: string = '';\r\n cost3: string = '';\r\n chgType3: boolean = false;\r\n sales4: string = '';\r\n cost4: string = '';\r\n chgType4: boolean = false;\r\n sales5: string = '';\r\n cost5: string = '';\r\n chgType5: boolean = false;\r\n sales6: string = ''; //Payroll\r\n cost6: string = ''; //Payroll\r\n chgType6: boolean = false; //Payroll\r\n inActive: boolean = false;\r\n localDesc: string = '';\r\n jobNumber: number = 0;\r\n remark: string = '';\r\n useSuntek: boolean = false;\r\n isUseInInvoice: boolean = false;\r\n isUseInBill: boolean = false;\r\n isUseInWithhold: boolean = false; //Payroll\r\n isUseInCorporate: boolean = false; //Payroll\r\n inactiveDate: string | null = null;\r\n\r\n sales1Name: string = '';\r\n sales3Name: string = '';\r\n sales5Name: string = '';\r\n sales6Name: string = '';\r\n cost1Name: string = '';\r\n cost3Name: string = '';\r\n cost5Name: string = '';\r\n cost6Name: string = '';\r\n\r\n billingCodeSub: string = '';\r\n billingCodeIndex: string = '';\r\n\r\n inactiveBy: string = '';\r\n isDefault: boolean = false;\r\n\r\n // for only font-end\r\n edit: boolean = false;\r\n view: boolean = false;\r\n \r\n validCost1: boolean = false;\r\n validCost3: boolean = false;\r\n validCost5: boolean = false;\r\n validCost6: boolean = false;\r\n validSales1: boolean = false;\r\n validSales3: boolean = false;\r\n validSales5: boolean = false;\r\n validSales6: boolean = false;\r\n \r\n isOperation: boolean = false;\r\n isAll: boolean = false;\r\n billingCodeOthers : NCodeChargeOthers[] = [];\r\n salesCostList : SalesCostCode[] = [\r\n new SalesCostCode({ opTypeLabel: '', opType: 'OI', shipmentType: 'DS', sCode: '', sCodeName: '', cCode: '', cCodeName: '' }),\r\n new SalesCostCode({ opTypeLabel: 'OI', opType: 'OI', shipmentType: 'IDS', sCode: '', sCodeName: '', cCode: '', cCodeName: '' }),\r\n new SalesCostCode({ opTypeLabel: '', opType: 'OI', shipmentType: 'TS', sCode: '', sCodeName: '', cCode: '', cCodeName: '' }),\r\n new SalesCostCode({ opTypeLabel: '', opType: 'OE', shipmentType: 'DS', sCode: '', sCodeName: '', cCode: '', cCodeName: '' }),\r\n new SalesCostCode({ opTypeLabel: 'OE', opType: 'OE', shipmentType: 'IDS', sCode: '', sCodeName: '', cCode: '', cCodeName: '' }),\r\n new SalesCostCode({ opTypeLabel: '', opType: 'OE', shipmentType: 'TS', sCode: '', sCodeName: '', cCode: '', cCodeName: '' }),\r\n new SalesCostCode({ opTypeLabel: '', opType: 'AI', shipmentType: 'DS', sCode: '', sCodeName: '', cCode: '', cCodeName: '' }),\r\n new SalesCostCode({ opTypeLabel: 'AI', opType: 'AI', shipmentType: 'IDS', sCode: '', sCodeName: '', cCode: '', cCodeName: '' }),\r\n new SalesCostCode({ opTypeLabel: '', opType: 'AI', shipmentType: 'TS', sCode: '', sCodeName: '', cCode: '', cCodeName: '' }),\r\n new SalesCostCode({ opTypeLabel: '', opType: 'AE', shipmentType: 'DS', sCode: '', sCodeName: '', cCode: '', cCodeName: '' }),\r\n new SalesCostCode({ opTypeLabel: 'AE', opType: 'AE', shipmentType: 'IDS', sCode: '', sCodeName: '', cCode: '', cCodeName: '' }),\r\n new SalesCostCode({ opTypeLabel: '', opType: 'AE', shipmentType: 'TS', sCode: '', sCodeName: '', cCode: '', cCodeName: '' }),\r\n new SalesCostCode({ opTypeLabel: '', opType: 'OT', shipmentType: 'DS', sCode: '', sCodeName: '', cCode: '', cCodeName: '' }),\r\n new SalesCostCode({ opTypeLabel: 'OT', opType: 'OT', shipmentType: 'IDS', sCode: '', sCodeName: '', cCode: '', cCodeName: '' }),\r\n new SalesCostCode({ opTypeLabel: '', opType: 'OT', shipmentType: 'TS', sCode: '', sCodeName: '', cCode: '', cCodeName: '' }),\r\n new SalesCostCode({ opTypeLabel: 'WH', opType: 'WH', shipmentType: 'DS', sCode: '', sCodeName: '', cCode: '', cCodeName: '' })\r\n ];\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n //Object.assign(this, init);\r\n this.applyInitDataExcludingNull(this, init);\r\n this.noTrackProps.push('id','edit','view');\r\n if(this.id === 0) this.id = this.GetNextId();\r\n\r\n if(this.billingCodeOthers.length > 0) {\r\n this.billingCodeOthers = this.billingCodeOthers.map(d => new NCodeChargeOthers(d));\r\n } else {\r\n this.billingCodeOthers = [];\r\n }\r\n }\r\n\r\n getDbMappings(arg?: any): IDictionary {\r\n const dicFieldMap: IDictionary = {};\r\n _.keys(NCodeCharge.dicFieldMappings).forEach(m => {\r\n dicFieldMap[m] = NCodeCharge.dicFieldMappings[m];\r\n });\r\n\r\n _.keys(NCodeChargeOthers.dicFieldMappings).forEach(m => {\r\n dicFieldMap[`billingCodeOthers.${m}`] = NCodeChargeOthers.dicFieldMappings[m];\r\n });\r\n return dicFieldMap;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_ID', table: 'T_NCodeCharge' }),\r\n 'code': new DBMappingInfo({ field: 'F_Code', table: 'T_NCodeCharge' }),\r\n 'codeName': new DBMappingInfo({ field: 'F_CodeName', table: 'T_NCodeCharge' }),\r\n 'description': new DBMappingInfo({ field: 'f_Description', table: 'T_NCodeCharge' }),\r\n 'oi': new DBMappingInfo({ field: 'F_OI', table: 'T_NCodeCharge' }),\r\n 'oo': new DBMappingInfo({ field: 'F_OO', table: 'T_NCodeCharge' }),\r\n 'ai': new DBMappingInfo({ field: 'F_AI', table: 'T_NCodeCharge' }),\r\n 'ao': new DBMappingInfo({ field: 'F_AO', table: 'T_NCodeCharge' }),\r\n 'wh': new DBMappingInfo({ field: 'F_WH', table: 'T_NCodeCharge' }),\r\n 'ot': new DBMappingInfo({ field: 'F_OT', table: 'T_NCodeCharge' }),\r\n 'chgType1': new DBMappingInfo({ field: 'F_ChgType1', table: 'T_NCodeCharge' }),\r\n 'chgType2': new DBMappingInfo({ field: 'F_ChgType2', table: 'T_NCodeCharge' }),\r\n 'chgType3': new DBMappingInfo({ field: 'F_ChgType3', table: 'T_NCodeCharge' }),\r\n 'chgType5': new DBMappingInfo({ field: 'F_ChgType5', table: 'T_NCodeCharge' }),\r\n 'chgType6': new DBMappingInfo({ field: 'F_ChgType6', table: 'T_NCodeCharge' }), //Payroll\r\n 'sales1': new DBMappingInfo({ field: 'F_Sales1', table: 'T_NCodeCharge' }),\r\n 'sales2': new DBMappingInfo({ field: 'F_Sales2', table: 'T_NCodeCharge' }),\r\n 'sales3': new DBMappingInfo({ field: 'F_Sales3', table: 'T_NCodeCharge' }),\r\n 'sales5': new DBMappingInfo({ field: 'F_Sales5', table: 'T_NCodeCharge' }),\r\n 'sales6': new DBMappingInfo({ field: 'F_Sales6', table: 'T_NCodeCharge' }), //Payroll\r\n 'cost1': new DBMappingInfo({ field: 'F_Cost1', table: 'T_NCodeCharge' }),\r\n 'cost2': new DBMappingInfo({ field: 'F_Cost2', table: 'T_NCodeCharge' }),\r\n 'cost3': new DBMappingInfo({ field: 'F_Cost3', table: 'T_NCodeCharge' }),\r\n 'cost5': new DBMappingInfo({ field: 'F_Cost5', table: 'T_NCodeCharge' }),\r\n 'cost6': new DBMappingInfo({ field: 'F_Cost6', table: 'T_NCodeCharge' }), //Payroll\r\n 'inActive': new DBMappingInfo({ field: 'F_inactive', table: 'T_NCodeCharge' }),\r\n 'localDesc': new DBMappingInfo({ field: 'F_LocalDesc', table: 'T_NCodeCharge' }),\r\n 'jobNumber': new DBMappingInfo({ field: 'F_JobNumber', table: 'T_NCodeCharge' }),\r\n 'remark': new DBMappingInfo({ field: 'F_Remark', table: 'T_NCodeCharge' }),\r\n 'isUseInInvoice': new DBMappingInfo({ field: 'F_IsUseInInvoice', table: 'T_NCodeCharge' }),\r\n 'isUseInBill': new DBMappingInfo({ field: 'F_IsUseInBill', table: 'T_NCodeCharge' }),\r\n 'useSuntek': new DBMappingInfo({ field: 'F_UseSuntek', table: 'T_NCodeCharge' }),\r\n 'inactiveDate': new DBMappingInfo({ field: 'F_InactiveDate', table: 'T_NCodeCharge' }),\r\n 'inactiveBy': new DBMappingInfo({ field: 'InactiveBy', table: 'T_NCodeCharge' }),\r\n 'isUseInWithhold': new DBMappingInfo({ field: 'F_IsUseInWithhold', table: 'T_NCodeCharge' }), //Payroll\r\n 'isUseInCorporate': new DBMappingInfo({ field: 'F_IsUseInCorporate', table: 'T_NCodeCharge' }), //Payroll\r\n };\r\n\r\n setChildTrackable(value: boolean): void {\r\n if(this.billingCodeOthers.length > 0) {\r\n this.billingCodeOthers.forEach(c => c.trackable = value);\r\n }\r\n if(this.salesCostList.length > 0) {\r\n this.salesCostList.forEach(c => c.trackable = value);\r\n }\r\n }\r\n}\r\nexport class NCodeChargeOthers extends TrackableEntity {\r\n id: number = 0;\r\n code: string = '';\r\n codeName: string = '';\r\n description: string = '';\r\n localDesc: string = '';\r\n opType : string = '';\r\n sales1: string = '';\r\n cost1: string = '';\r\n sales3: string = '';\r\n cost3: string = ''; \r\n sales5: string = '';\r\n cost5: string = '';\r\n sales1Name: string = '';\r\n sales3Name: string = '';\r\n sales5Name: string = '';\r\n sales6Name: string = '';\r\n cost1Name: string = '';\r\n cost3Name: string = '';\r\n cost5Name: string = '';\r\n inActive: boolean = false;\r\n\r\n changedMainprop : boolean = false;\r\n \r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n if(this.id === 0) this.id = this.GetNextId();\r\n this.applyInitDataExcludingNull(this, init);\r\n this.noTrackProps.push('opType','shipmentType');\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n return NCodeChargeOthers.dicFieldMappings;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {};\r\n}\r\n\r\nexport class SalesCostCode extends TrackableEntity { \r\n id: number = 0;\r\n opType : string = '';\r\n shipmentType: string = '';\r\n sCode: string = '';\r\n sCodeName: string = '';\r\n cCode: string = '';\r\n cCodeName: string = '';\r\n inActive: boolean = false;\r\n opTypeLabel : string = '';\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='sCode';\r\n this.applyInitDataExcludingNull(this, init);\r\n this.noTrackProps.push('opType','shipmentType');\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n return SalesCostCode.dicFieldMappings;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {};\r\n}\r\n","import _ from 'lodash';\r\nimport React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nimport InputControlRow from '../../../../ui/layout/InputControlRow';\r\nimport LeftRightSplit from '../../../../ui/LeftRightSplit';\r\nimport Date from '../../../../ui/Date';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport MultilineTextBox from '../../../../ui/MultilineTextBox';\r\nimport PrimaryButton from '../../../../ui/PrimaryButton';\r\nimport IfmsModal from '../../../../ui/IfmsModal';\r\nimport useTableNavigation from '../../../../ui/tables/useTableNavigation';\r\nimport RadioButton from '../../../../ui/RadioButton';\r\n\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport useGlobalYesNoDialog from '../../../../hooks/useGlobalYesNoDialog';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\nimport useFastStorage, { useTypedFastStorage } from '../../../../hooks/useFastStorage';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport { formatDate, now } from '../../../../dateUtils';\r\n\r\nimport { ApplicableTableSettings, billingCodeDetailList, billingCodeList } from '../../../../tableSettings';\r\n\r\nimport {\r\n TextAlignLeftRenderer,\r\n NumberedIndicatorRenderer,\r\n NullableCheckboxRedIconRenderer,\r\n DateRenderer,\r\n TextRenderer,\r\n} from '../../../../uiControls/SmartTableRenderers';\r\n\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\nimport SecondaryButton from '../../../../ui/SecondaryButton';\r\nimport CheckBox from '../../../../ui/CheckBox';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\n\r\nimport { checkPropDirty, getOriginalValue, getSQLInfoList } from '../../../../fms.core/data/TrackingModule';\r\nimport { TrackableEntity } from '../../../../fms.core/data/ChangeTrackable';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { CodeBillingListItem } from '../../../../fms.data/models/CodeBillingListItem';\r\nimport useDirtyCheck from '../../../../hooks/useDirtyCheck2';\r\nimport { Search, initialSearch, isFilterObjectEmpty } from '../../../../filtering';\r\nimport { ApiResult } from '../../../../framework.core/data/ApiResult';\r\nimport GlNoLookupField from '../../../../uiControls/lookup/GlNoLookupField';\r\nimport { NCodeCharge, NCodeChargeOthers, SalesCostCode } from '../../../../fms.core/NCodeCharge';\r\nimport { historyUpdate } from '../../../../fms.data/modules/FmsModFunc';\r\nimport { SQLField, SQLInfo, SQLType } from '../../../../framework.core/data/SQLInfo';\r\nimport { getFmsGlobal } from '../../../../globals';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\nimport { sortingListData } from '../../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../../util';\r\nimport useFilterBar from '../../../../hooks/useFilterBar';\r\nimport { ListOrderBy } from \"../../../common/AbstractListView\";\r\nimport postal from 'postal';\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport constants from '../../../../constants';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport { Portal } from 'react-portal';\r\nimport EditableTable, { CellData, TableCellAligns, TableCellTypes } from '../../../../ui/tables/editing/EditableTable';\r\nimport { CodeGlNo } from '../../../../fms.core/CodeGlNo';\r\nimport AccountCodeDetails from './AccountCodeDetails';\r\nimport { layer } from '@fortawesome/fontawesome-svg-core';\r\nimport { exportCodeDataIntoExcel } from '../../../../excel';\r\nimport GreenButton from '../../../../ui/GreenButton';\r\n\r\nfunction RowSpacer() {\r\n return (\r\n
    \r\n );\r\n}\r\n\r\nfunction RowSpacer2() {\r\n return (\r\n
    \r\n );\r\n}\r\nfunction salesCodeRenderer({ data, row, cell }: any) {\r\n const l = data[row.index];\r\n const changeLineItem = data[0].changeLineItem;\r\n const setCostSalesCode = data[0].setCostSalesCode;\r\n\r\n return (\r\n {\r\n changeLineItem({ sCode: select.code }, row.index);\r\n setCostSalesCode(select.code, l.opType)\r\n }}\r\n />)\r\n}\r\n\r\nfunction BillingCodeDetails({\r\n readonly,\r\n billingCode,\r\n onChange,\r\n checkSuntek\r\n}: {\r\n readonly: boolean,\r\n billingCode: NCodeCharge,\r\n onChange: (change: Partial) => void,\r\n checkSuntek: boolean\r\n}) {\r\n const [showAccountCode, setShowAccountCode] = useState(false);\r\n const appContext = useContext(ApplicationContext);\r\n const isDefault = billingCode.isDefault;\r\n const canBeEdit = checkSuntek || (!checkSuntek && !isDefault);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeBillingCode);\r\n const canBedel = listSec.grantDel;\r\n const isNew = !billingCode.edit && !billingCode.view;\r\n\r\n const [, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [accountCode, _setAccountCode, removeAccountCodeFromStorage, accountCodeRef] = useTypedFastStorage(`ifms-referenceFiles-accountcode-editable`, null);\r\n const { setCleanState } = useDirtyCheck(`ifms-referenceFiles-accountcode-editable`, ['edit', 'view']);\r\n const allBillingCode = billingCode.billingCodeOthers;\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n useFunctionKeys({ onEsc: cancelOperation });\r\n\r\n function newAccountCode() { //BillingCode Detail내에 있는 new Account Code를 위함\r\n const newModel = new CodeGlNo();\r\n newModel.edit = false;\r\n newModel.view = false;\r\n setAccountCode(newModel, false);\r\n setCleanState(newModel);\r\n\r\n if (accountCodeRef.current) {\r\n accountCodeRef.current.trackable = true;\r\n setAccountCode({\r\n edit: false,\r\n view: false,\r\n });\r\n }\r\n }\r\n\r\n function setAccountCode(d: any, skipDirty: boolean = false) {\r\n if (!skipDirty) {\r\n setHasChanges(true);\r\n }\r\n _setAccountCode(d)\r\n }\r\n\r\n async function setCostSalesCode(selectCode: string, opType: string) {\r\n const apiResult = await appContext.api.setCostSalesCode(selectCode);\r\n const copyModel = _.cloneDeep(billingCode.salesCostList);\r\n const newModel = copyModel.map((x: SalesCostCode) => {\r\n if (x.opType !== 'WH') {\r\n x.sCode = ''; x.sCodeName = ''; x.cCode = ''; x.cCodeName = '';\r\n }\r\n return x\r\n });\r\n if (apiResult !== null) {\r\n if (opType !== 'WH') {\r\n apiResult.forEach((element: any) => {\r\n let dataIndex = -1;\r\n const typeArray = element.glDescription.split('.');\r\n if (typeArray[1] === 'WH') return;\r\n dataIndex = newModel.findIndex(x => x.opType === (typeArray[1] === 'OTHR' ? 'OT' : typeArray[1]) && x.shipmentType === typeArray[2]);\r\n if (dataIndex !== -1) {\r\n if (typeArray[0] === 'SALES') {\r\n newModel[dataIndex].sCode = element.glNo;\r\n newModel[dataIndex].sCodeName = element.glDescription;\r\n }\r\n if (typeArray[0] === 'COST') {\r\n newModel[dataIndex].cCode = element.glNo;\r\n newModel[dataIndex].cCodeName = element.glDescription;\r\n }\r\n }\r\n });\r\n onChange({ salesCostList: newModel });\r\n }\r\n else {\r\n apiResult.forEach((element: any) => {\r\n let dataIndex = -1;\r\n const typeArray = element.glDescription.split('.');\r\n if (typeArray[1] !== 'WH') return;\r\n dataIndex = billingCode.salesCostList.findIndex(x => x.opType === 'WH' && x.shipmentType === 'DS');\r\n if (dataIndex !== -1) {\r\n if (typeArray[0] === 'SALES') {\r\n billingCode.salesCostList[dataIndex].sCode = element.glNo;\r\n billingCode.salesCostList[dataIndex].sCodeName = element.glDescription;\r\n }\r\n if (typeArray[0] === 'COST') {\r\n billingCode.salesCostList[dataIndex].cCode = element.glNo;\r\n billingCode.salesCostList[dataIndex].cCodeName = element.glDescription;\r\n }\r\n }\r\n });\r\n onChange({ salesCostList: billingCode.salesCostList });\r\n }\r\n checkOperation();\r\n }\r\n }\r\n\r\n function checkOperation() {\r\n const groupedByOp = billingCode.salesCostList.reduce>((acc, item) => {\r\n const key = item.opType;\r\n if (!acc[key]) {\r\n acc[key] = 0;\r\n }\r\n acc[key] += (item.sCode === '' && item.cCode === '' ? 1 : 0);\r\n return acc;\r\n }, {});\r\n onChange({\r\n oiForView: (allBillingCode.some(x => x.opType === 'OI') && billingCode.oiForView) || groupedByOp['OI'] !== 3,\r\n ooForView: (allBillingCode.some(x => x.opType === 'OE') && billingCode.ooForView) || groupedByOp['OE'] !== 3,\r\n aiForView: (allBillingCode.some(x => x.opType === 'AI') && billingCode.aiForView) || groupedByOp['AI'] !== 3,\r\n aoForView: (allBillingCode.some(x => x.opType === 'AE') && billingCode.aoForView) || groupedByOp['AE'] !== 3,\r\n otForView: (allBillingCode.some(x => x.opType === 'OT') && billingCode.otForView) || groupedByOp['OT'] !== 3\r\n });\r\n\r\n checkIsAll();\r\n }\r\n\r\n function changeLineItem(change: Partial, index: number) {\r\n billingCode.salesCostList[index] = _.merge(billingCode.salesCostList[index], change);\r\n onChange({ salesCostList: billingCode.salesCostList });\r\n }\r\n\r\n const tableOptions: ApplicableTableSettings = {\r\n tableName: 'billingCodeDetail',\r\n ...billingCodeDetailList,\r\n height: '342px',\r\n data: billingCode.salesCostList.map((x, i) => ({\r\n ...x,\r\n i,\r\n changeLineItem,\r\n setCostSalesCode,\r\n onChange,\r\n })),\r\n rowRenderers: [\r\n { accessor: 'opType' },\r\n { accessor: 'shipmentType' },\r\n { accessor: 'sCode', EditCell: salesCodeRenderer },\r\n { accessor: 'sCodeName' },\r\n { accessor: 'cCode' },\r\n { accessor: 'cCodeName' },\r\n ],\r\n getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n const curRowData = rowData as SalesCostCode;\r\n if (accessor === 'opType')\r\n return { type: TableCellTypes.Text, value: curRowData.opTypeLabel, align: TableCellAligns.Center };\r\n else if (accessor === 'shipmentType')\r\n return { type: TableCellTypes.Text, value: curRowData.shipmentType, align: TableCellAligns.Center };\r\n else if (accessor === 'sCode')\r\n return { type: TableCellTypes.Text, value: curRowData.sCode };\r\n else if (accessor === 'sCodeName')\r\n return { type: TableCellTypes.Text, value: curRowData.sCodeName };\r\n else if (accessor === 'cCode')\r\n return { type: TableCellTypes.Text, value: curRowData.cCode };\r\n else if (accessor === 'cCodeName')\r\n return { type: TableCellTypes.Text, value: curRowData.cCodeName };\r\n },\r\n isCellLock: (accessor: string, rowData: any, columnIndex: number, rowIndex: number): boolean => {\r\n if (readonly || !canBeEdit) return true;\r\n if (columnIndex !== 2) return true;\r\n if (rowData.inActive) return true;\r\n else {\r\n if (!billingCode.oiForView && [0, 1, 2].includes(rowIndex)) return true;\r\n if (!billingCode.ooForView && [3, 4, 5].includes(rowIndex)) return true;\r\n if (!billingCode.aiForView && [6, 7, 8].includes(rowIndex)) return true;\r\n if (!billingCode.aoForView && [9, 10, 11].includes(rowIndex)) return true;\r\n if (!billingCode.otForView && [12, 13, 14].includes(rowIndex)) return true;\r\n if (!billingCode.whForView && [15].includes(rowIndex)) return true;\r\n else return false;\r\n }\r\n },\r\n getCustomCellProps: (currentProps: any, cell: any, rowIndex: any) => {\r\n if ([0, 1, 3, 4, 6, 7, 9, 10, 12, 13].includes(rowIndex) && cell.column.id === 'opType') {\r\n currentProps.style.borderBottom = '0px';\r\n }\r\n if ([3, 6, 9, 12, 15, 16].includes(rowIndex)) {\r\n currentProps.style.borderTop = '1px solid lightgray';\r\n }\r\n return currentProps;\r\n },\r\n headersColor: 'gray',\r\n };\r\n\r\n function checkIsAll() {\r\n if (billingCode.oiForView && billingCode.ooForView && billingCode.aiForView && billingCode.aoForView && billingCode.otForView && billingCode.whForView)\r\n onChange({ isAll: true });\r\n else\r\n onChange({ isAll: false });\r\n }\r\n\r\n function resetCode(opType: string, reset: boolean) {\r\n if (!reset) return;\r\n let newModel;\r\n if (opType === '') {\r\n newModel = billingCode.salesCostList.map((x: SalesCostCode) => {\r\n x.sCode = ''; x.sCodeName = ''; x.cCode = ''; x.cCodeName = '';\r\n return x\r\n });\r\n } else {\r\n newModel = billingCode.salesCostList.map((x: SalesCostCode) => {\r\n if (x.opType === opType) {\r\n x.sCode = ''; x.sCodeName = ''; x.cCode = ''; x.cCodeName = '';\r\n }\r\n return x\r\n });\r\n }\r\n onChange({ salesCostList: newModel })\r\n }\r\n\r\n async function uncheckOP(operation: string) { //EditMode에서 Operation을 uncheck하면 delete와 동일한 기능이 되므로 billingcode가 사용되고 있는지 확인해야됨\r\n if (isNew) return '';\r\n let msg = ''\r\n const apiResultCheck = await appContext.api.chkBCodeDelete(0, { code: billingCode.codeName + `.${operation}` });\r\n if (apiResultCheck && apiResultCheck.errMsg) {\r\n\r\n return apiResultCheck.errMsg;\r\n }\r\n return '';\r\n }\r\n\r\n //forfAccountCode\r\n function cancelOperation() {\r\n const filterNode = document.getElementById('ifms-list-screen-filter');\r\n const channel = postal.channel('ifms-filter');\r\n\r\n if (!filterNode) {\r\n setHasChanges(false);\r\n removeAccountCodeFromStorage();\r\n setAccountCode(null);\r\n } else {\r\n channel.publish('ifms-filter.dismiss');\r\n }\r\n return true;\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n onChange({ code: e.target.value, codeName: e.target.value })} placeholder={'Enter billing code name'}\r\n onBlur={() => {\r\n if (!billingCode?.description) {\r\n onChange({ description: billingCode?.codeName });\r\n }\r\n if (!billingCode?.localDesc) {\r\n onChange({ localDesc: billingCode?.description });\r\n }\r\n }} />\r\n \r\n \r\n onChange({ description: e.target.value })}\r\n onBlur={() => {\r\n if (!billingCode?.localDesc) {\r\n onChange({ localDesc: billingCode?.description });\r\n }\r\n }}\r\n />\r\n \r\n \r\n onChange({ localDesc: e.target.value })}\r\n placeholder={'Enter billing code description'} />\r\n \r\n \r\n \r\n
    \r\n onChange({\r\n isOperation: true,\r\n isAll: true,\r\n billingCodeIndex: \"0\",\r\n sales1: '', sales1Name: '', cost1: '', cost1Name: '',\r\n sales3: '', sales3Name: '', cost3: '', cost3Name: '',\r\n sales5: '', sales5Name: '', cost5: '', cost5Name: '',\r\n oiForView: true, ooForView: true, aiForView: true, aoForView: true, otForView: true, whForView: true,\r\n sales6: '', sales6Name: '', cost6: '', cost6Name: '', chgType6: false,\r\n isUseInInvoice: false, isUseInBill: false, isUseInWithhold: false, isUseInCorporate: false, chgType1: true, chgType3: true, chgType5: true, ot: '0'\r\n })\r\n } />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n onChange({\r\n isAll: chk,\r\n oiForView: await uncheckOP('OI') !== '' ? true : chk,\r\n ooForView: await uncheckOP('OE') !== '' ? true : chk,\r\n aiForView: await uncheckOP('AI') !== '' ? true : chk,\r\n aoForView: await uncheckOP('AE') !== '' ? true : chk,\r\n otForView: await uncheckOP('OT') !== '' ? true : chk,\r\n whForView: await uncheckOP('WH') !== '' ? true : chk,\r\n });\r\n resetCode('OI', !billingCode.oiForView);\r\n resetCode('OE', !billingCode.ooForView);\r\n resetCode('AI', !billingCode.aiForView);\r\n resetCode('AE', !billingCode.aoForView);\r\n resetCode('OT', !billingCode.otForView);\r\n resetCode('WH', !billingCode.whForView);\r\n }} />
    \r\n
    \r\n x.opType === 'OI') && !canBedel)} value={billingCode.oiForView}\r\n onChange={async chk => {\r\n let msg = await uncheckOP('OI');\r\n if (msg !== '') {\r\n showGlobalOkDialog(msg);\r\n return;\r\n }\r\n onChange({\r\n oiForView: chk\r\n });\r\n checkIsAll();\r\n resetCode('OI', !billingCode.oiForView);\r\n }} />
    \r\n
    \r\n x.opType === 'OE') && !canBedel)} value={billingCode.ooForView}\r\n onChange={async chk => {\r\n let msg = await uncheckOP('OE');\r\n if (msg !== '') {\r\n showGlobalOkDialog(msg);\r\n return;\r\n }\r\n onChange({\r\n ooForView: chk,\r\n });\r\n checkIsAll();\r\n resetCode('OE', !billingCode.ooForView);\r\n }} />
    \r\n
    \r\n x.opType === 'AI') && !canBedel)} value={billingCode.aiForView}\r\n onChange={async chk => {\r\n let msg = await uncheckOP('AI');\r\n if (msg !== '') {\r\n showGlobalOkDialog(msg);\r\n return;\r\n }\r\n\r\n onChange({\r\n aiForView: chk\r\n });\r\n checkIsAll();\r\n resetCode('AI', !billingCode.aiForView);\r\n }} />
    \r\n
    \r\n x.opType === 'AE') && !canBedel)} value={billingCode.aoForView}\r\n onChange={async chk => {\r\n let msg = await uncheckOP('AE');\r\n if (msg !== '') {\r\n showGlobalOkDialog(msg);\r\n return;\r\n }\r\n onChange({\r\n aoForView: chk\r\n });\r\n checkIsAll();\r\n resetCode('AE', !billingCode.aoForView);\r\n }} />
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n x.opType === 'OT') && !canBedel)} value={billingCode.otForView}\r\n onChange={async chk => {\r\n let msg = await uncheckOP('OT');\r\n if (msg !== '') {\r\n showGlobalOkDialog(msg);\r\n return;\r\n }\r\n onChange({\r\n otForView: chk,\r\n });\r\n checkIsAll();\r\n resetCode('OT', !billingCode.otForView);\r\n }} />\r\n
    \r\n
    \r\n x.opType === 'WH') && !canBedel)} value={billingCode.whForView}\r\n onChange={async chk => {\r\n let msg = await uncheckOP('WH');\r\n if (msg !== '') {\r\n showGlobalOkDialog(msg);\r\n return;\r\n }\r\n onChange({\r\n whForView: chk\r\n });\r\n checkIsAll()\r\n resetCode('WH', !billingCode.whForView);\r\n }} />
    \r\n
    \r\n
    \r\n \r\n
    \r\n 0)} checked={billingCode?.billingCodeIndex === \"6\"}\r\n onChecked={() => {\r\n onChange({\r\n billingCodeIndex: \"6\",\r\n billingCodeSub: \"\",\r\n oi: \"0\",\r\n oo: \"0\",\r\n ai: \"0\",\r\n ao: \"0\",\r\n wh: \"0\",\r\n ot: \"2\",\r\n oiForView: false,\r\n ooForView: false,\r\n aiForView: false,\r\n aoForView: false,\r\n otForView: false,\r\n whForView: false,\r\n isAll: false,\r\n isOperation: false,\r\n chgType1: true,\r\n sales1: '',\r\n sales1Name: '',\r\n cost1: '',\r\n cost1Name: '',\r\n chgType3: false,\r\n cost3: '',\r\n cost3Name: '',\r\n sales3: '',\r\n sales3Name: '',\r\n chgType5: false,\r\n cost5: '',\r\n cost5Name: '',\r\n sales5: '',\r\n sales5Name: '',\r\n sales6: '',\r\n sales6Name: '',\r\n cost6: '',\r\n cost6Name: '',\r\n chgType6: false,\r\n isUseInInvoice: false,\r\n isUseInBill: true,\r\n isUseInWithhold: false,\r\n isUseInCorporate: false\r\n }); resetCode('', true)\r\n }} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n onChange({\r\n isUseInBill,\r\n cost1: isUseInBill ? billingCode.cost1 : \"\", cost1Name: isUseInBill ? billingCode.cost1Name : \"\"\r\n })} />\r\n }\r\n right={\r\n <>General Bill\r\n }\r\n />\r\n }\r\n right={\r\n onChange({\r\n isUseInInvoice,\r\n sales1: isUseInInvoice ? billingCode.sales1 : \"\", sales1Name: isUseInInvoice ? billingCode.sales1Name : \"\"\r\n })} />\r\n }\r\n right={\r\n <>General Invoice\r\n }\r\n />\r\n }\r\n />\r\n \r\n
    \r\n
    \r\n 0)} checked={billingCode?.billingCodeIndex === \"9\"}\r\n onChecked={() => {\r\n onChange({\r\n billingCodeIndex: \"9\",\r\n billingCodeSub: \"\",\r\n oi: \"0\",\r\n oo: \"0\",\r\n ai: \"0\",\r\n ao: \"0\",\r\n wh: \"0\",\r\n ot: \"4\",\r\n oiForView: false,\r\n ooForView: false,\r\n aiForView: false,\r\n aoForView: false,\r\n otForView: false,\r\n whForView: false,\r\n isOperation: false,\r\n isAll: false,\r\n chgType1: false,\r\n sales1: '',\r\n sales1Name: '',\r\n cost1: '',\r\n cost1Name: '',\r\n chgType3: false,\r\n cost3: '',\r\n cost3Name: '',\r\n sales3: '',\r\n sales3Name: '',\r\n chgType5: false,\r\n cost5: '',\r\n cost5Name: '',\r\n sales5: '',\r\n sales5Name: '',\r\n chgType6: true,\r\n isUseInWithhold: true,\r\n isUseInCorporate: true,\r\n isUseInInvoice: false,\r\n isUseInBill: false,\r\n sales6: \"211600\",\r\n sales6Name: \"PAYABLE\",\r\n cost6: '',\r\n cost6Name: ''\r\n }); resetCode('', true)\r\n }} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n onChange({ isUseInWithhold })} />\r\n }\r\n right={\r\n <>Withholding\r\n }\r\n />\r\n }\r\n right={\r\n \r\n onChange({\r\n isUseInCorporate,\r\n cost6: isUseInCorporate ? billingCode.cost6 : \"\", cost6Name: isUseInCorporate ? billingCode.cost6Name : \"\",\r\n })} />\r\n }\r\n right={\r\n <>Corporate\r\n }\r\n />\r\n }\r\n />\r\n \r\n
    \r\n \r\n
    \r\n \r\n onChange({ remark: e.target.value })} />\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n }\r\n right={\r\n { newAccountCode(); setShowAccountCode(true) }}>New Account Code\r\n }\r\n />\r\n \r\n
    \r\n {billingCode.isOperation &&\r\n { return false; }} addLine={() => { return undefined; }} />\r\n }\r\n {!billingCode.isOperation &&\r\n
    \r\n \r\n onChange({ validCost6: true, cost6: select.code, cost6Name: select.name })}\r\n onTextChange={code => onChange({ validCost6: false, cost6: code })}\r\n />\r\n \r\n :\r\n \r\n // expense\r\n subType={(billingCode.billingCodeIndex === '6' || billingCode.billingCodeIndex === '4') ? '' : 'DS'}\r\n opType={billingCode.billingCodeIndex}\r\n initialValue={billingCode.cost1}\r\n onSelect={select => { onChange({ validCost1: true, cost1: select.code, cost1Name: select.name }) }}\r\n onTextChange={code => onChange({ validCost1: false, cost1: code })}\r\n />\r\n \r\n }\r\n right={\r\n billingCode.billingCodeIndex === \"9\"\r\n ?\r\n     Name}>\r\n \r\n \r\n :\r\n     Name}>\r\n \r\n \r\n }\r\n />\r\n \r\n onChange({ validSales6: true, sales6: select.code, sales6Name: select.name })}\r\n //onTextChange={code => onChange({ validSales6: false, sales6: code })}\r\n />\r\n \r\n :\r\n \r\n // 'income'\r\n subType='DS'\r\n opType={billingCode.billingCodeIndex}\r\n initialValue={billingCode.sales1}\r\n onSelect={select => { onChange({ validSales1: true, sales1: select.code, sales1Name: select.name }); }}\r\n onTextChange={code => onChange({ validSales1: false, sales1: code })}\r\n />\r\n \r\n }\r\n right={\r\n billingCode.billingCodeIndex === \"9\"\r\n ?\r\n     Name}>\r\n \r\n \r\n :\r\n     Name}>\r\n \r\n \r\n }\r\n />\r\n
    \r\n }\r\n
    \r\n {checkSuntek &&\r\n
    \r\n \r\n onChange({\r\n inActive,\r\n inactiveDate: inActive ? now() : null,\r\n inactiveBy: inActive ? appContext.user?.id ?? '' : ''\r\n })\r\n }\r\n />\r\n }\r\n right={<>Inactive}\r\n />\r\n }\r\n >\r\n \r\n \r\n
    \r\n }\r\n right={\r\n \r\n \r\n \r\n }\r\n />\r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n {!!showAccountCode && !!accountCode ? (\r\n \r\n { }} cancelOperation={cancelOperation} checkSuntek={checkSuntek}/>\r\n \r\n ) : null}\r\n \r\n );\r\n}\r\n\r\nfunction formatElement(data: any, index: number) {\r\n return { ...data, indicator: index + 1, code: data.codeName };\r\n}\r\n\r\nfunction formatData(data: any) {\r\n return data.map((d: any, i: number) => formatElement(d, i));\r\n}\r\n\r\nfunction BillingCode({\r\n componentIndex\r\n}: {\r\n componentIndex: number\r\n}) {\r\n useFunction({\r\n invokers: {\r\n ifmsSettingsSave: save,\r\n ifmsSettingsCancel: cancelOperation,\r\n }\r\n });\r\n useFunctionKeys({ onEsc: cancelOperation, onSave: handleSaveAndClose });\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const { selectTableRow, tableNavigationCleanup } = useTableNavigation('billing-code-list', onRowSelect, selectBillingCodeForView, ['code'], false, false, false);\r\n\r\n const tableRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n const [, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, dataRef] = useFastStorage(`ifms-referenceFiles-billingcode-list`, []);\r\n const [selectedRow, setSelectedRow] = useState(-1);\r\n\r\n const [billingCode, _setBillingCode, removeBillingCodeFromStorage, billingCodeRef] = useTypedFastStorage(`ifms-referenceFiles-billingcode-editable`, null);\r\n const { setCleanState } = useDirtyCheck(`ifms-referenceFiles-billingcode-editable`, ['edit', 'view']);\r\n const [orderBy, setOrderBy] = useFastStorage(`ifms-referenceFiles-billingcode-orderby`, {\r\n orderBy: 'code',\r\n orderByAscending: true,\r\n });\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeBillingCode);\r\n\r\n const checkSuntek = appContext.suntekSettings?.company?.companyId === \"FSSUNTEK\" || appContext.user?.isSuntekAdmin ? true : false;\r\n const tableHeight = 520;\r\n\r\n const FmsGlobal = getFmsGlobal();\r\n\r\n const { FilterButton, search } = useFilterBar(\r\n billingCodeList,\r\n undefined,\r\n getDefaultOrderBy,\r\n String(componentIndex)\r\n );\r\n\r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelectorAll('[class^=\"ReactModal__Content\"]');\r\n const modalsWithoutSaveBtn = Array.from(modals).filter(modal => { return !modal.contains(saveBtn); });\r\n if (modalsWithoutSaveBtn.length <= 0)\r\n saveBtn.click();\r\n }\r\n }\r\n\r\n function getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'code',\r\n orderByAscending: true,\r\n };\r\n }\r\n\r\n function setData(d: any) {\r\n removeData();\r\n _setData(d);\r\n }\r\n\r\n function setBillingCode(b: any, skipDirty: boolean = false) {\r\n if (!skipDirty) {\r\n setHasChanges(true);\r\n }\r\n _setBillingCode(b);\r\n }\r\n\r\n async function fetchData(api: any, search: Search) {\r\n setLoading(true);\r\n\r\n const apiResult = await api.getListItems(JobNames.BillingCode,\r\n 'CodeBillingListItem',\r\n CodeBillingListItem.calculateSearchParameters(search),\r\n 1, search.pageSize);\r\n\r\n const fetchedTableData = formatData(apiResult && apiResult.entities ? apiResult.entities : []);\r\n sortingListData(CodeBillingListItem, fetchedTableData , setData, orderBy);\r\n setHasChanges(false);\r\n setLoading(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (isFilterObjectEmpty(search) && search.version === 1) reload(false);\r\n\r\n return () => {\r\n removeData();\r\n tableNavigationCleanup();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n if (loading || (isFilterObjectEmpty(search) && search.version === 1)) {\r\n return;\r\n }\r\n fetchData(appContext.api, search);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [search]\r\n );\r\n\r\n useEffect(() => {\r\n if (dataRef.current?.length > 0 && !loading) {\r\n selectTableRow(0, true);\r\n onRowSelect(0);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [loading]\r\n );\r\n\r\n async function reload(clearAll: boolean = true) {\r\n const searchValue = clearAll ? initialSearch : search;\r\n await fetchData(appContext.api, searchValue);\r\n }\r\n\r\n function onRowSelect(rowIndex: number) {\r\n setSelectedRow(!isNaN(rowIndex) ? rowIndex : -1);\r\n }\r\n\r\n function onHeaderClick(header: any) {\r\n if (!header || !header.id || header.id === 'indicator') {\r\n return;\r\n }\r\n\r\n if (header && header.id !== 'indicator') {\r\n if (header.id === orderBy.orderBy) {\r\n setOrderBy({ orderByAscending: !orderBy.orderByAscending });\r\n } else {\r\n setOrderBy({ orderBy: header.id, orderByAscending: true });\r\n }\r\n }\r\n sortingListData(CodeBillingListItem, data, setData, orderBy);\r\n }\r\n\r\n function selectBillingCodeForNew() {\r\n const newModel = new NCodeCharge();\r\n newModel.edit = false;\r\n newModel.view = false;\r\n newModel.isOperation = true;\r\n\r\n newModel.isAll = true;\r\n newModel.oiForView = true;\r\n newModel.ooForView = true;\r\n newModel.aiForView = true;\r\n newModel.aoForView = true;\r\n newModel.otForView = true;\r\n newModel.whForView = true;\r\n\r\n setBillingCode(newModel, false);\r\n setCleanState(newModel);\r\n\r\n if (billingCodeRef.current) {\r\n billingCodeRef.current.trackable = true;\r\n setBillingCode({\r\n edit: false,\r\n view: false,\r\n });\r\n }\r\n }\r\n async function selectBillingCodeForView(row: number) {\r\n await setBillingCodeDetail(true, row);\r\n }\r\n async function selectBillingCodeForEdit() {\r\n await setBillingCodeDetail(false);\r\n }\r\n async function selectBillingCodeForDelete() {\r\n const doConfirm = await showGlobalYesNoDialog(\r\n
    \r\n

    Confirm to Delete?

    \r\n
    \r\n , false, 0, true, 'warning');\r\n if (doConfirm) {\r\n const apiResultCheck = await appContext.api.chkBCodeDelete(dataRef.current[selectedRow].id, { id: dataRef.current[selectedRow].id, pimsLinkId: 0 });\r\n if (apiResultCheck && apiResultCheck.errMsg) {\r\n showGlobalOkDialog(

    {apiResultCheck.errMsg}

    );\r\n return;\r\n }\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.BillingCode, { id: dataRef.current[selectedRow].id, pimsLinkId: 0 });\r\n if (apiResult && apiResult.success) {\r\n await reload(false);\r\n } else\r\n showGlobalOkDialog(

    {\"Cannot delete\"}

    );\r\n } else\r\n return;\r\n }\r\n\r\n async function exportExcel() {\r\n const apiResult = await appContext.api.getListItems(JobNames.BillingCode,\r\n 'CodeBillingListItem',\r\n CodeBillingListItem.calculateSearchParameters(initialSearch),\r\n 1, 0);\r\n\r\n exportCodeDataIntoExcel(apiResult.entities ?? [], `BCode-${FmsGlobal.AcmeID}`, CodeBillingListItem.getExportCollection());\r\n }\r\n\r\n async function setBillingCodeDetail(isView: boolean, row: number = -1) {\r\n const tempRow = row > -1 ? row : selectedRow; // row double click시 row 값에 rowindex가 들어옴. 이를 우선시 해서 사용함.\r\n\r\n if (tempRow >= 0 && tempRow < dataRef.current.length && _.isEmpty(billingCode)) {\r\n const apiResult: ApiResult = await appContext.api.getJobDetail(JobNames.BillingCode,\r\n { id: dataRef.current[tempRow].id });\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

    );\r\n return null;\r\n } else {\r\n const accountCode = { ...apiResult.result, edit: true, view: isView, editIndex: tempRow };\r\n\r\n const tEntity = new NCodeCharge(accountCode);\r\n\r\n if (tEntity.ot === '4') {\r\n if (!tEntity.chgType6) tEntity.chgType6 = true;\r\n }\r\n if ([\"0\", \"1\", \"2\", \"3\", \"4\", \"5\"].includes(tEntity.billingCodeIndex)) {\r\n let sepIndex = tEntity.code.lastIndexOf('.');\r\n tEntity.billingCodeSub = tEntity.code.substring(sepIndex);\r\n tEntity.code = tEntity.code.substring(0, sepIndex);\r\n }\r\n if (tEntity.billingCodeOthers.length === 6) tEntity.isAll = true;\r\n if (tEntity.isOperation && !!tEntity.billingCodeOthers) {\r\n const types = tEntity.billingCodeOthers.map(x => x.opType);\r\n tEntity.oiForView = types.includes('OI');\r\n tEntity.ooForView = types.includes('OE');\r\n tEntity.aiForView = types.includes('AI');\r\n tEntity.aoForView = types.includes('AE');\r\n tEntity.otForView = types.includes('OT');\r\n tEntity.whForView = types.includes('WH');\r\n\r\n tEntity.billingCodeOthers.forEach(data => {\r\n if (!!data.opType) {\r\n if (!!data.sales1 && data.opType !== 'WH') {\r\n let index = tEntity.salesCostList.findIndex(x => x.opType === data.opType && x.shipmentType === 'DS')\r\n tEntity.salesCostList[index].id = data.id;\r\n tEntity.salesCostList[index].sCode = data.sales1;\r\n tEntity.salesCostList[index].sCodeName = data.sales1Name;\r\n tEntity.salesCostList[index].cCode = data.cost1;\r\n tEntity.salesCostList[index].cCodeName = data.cost1Name;\r\n tEntity.salesCostList[index].inActive = data.inActive;\r\n }\r\n if (!!data.sales3 && data.opType !== 'WH') {\r\n let index = tEntity.salesCostList.findIndex(x => x.opType === data.opType && x.shipmentType === 'IDS')\r\n tEntity.salesCostList[index].id = data.id;\r\n tEntity.salesCostList[index].sCode = data.sales3;\r\n tEntity.salesCostList[index].sCodeName = data.sales3Name;\r\n tEntity.salesCostList[index].cCode = data.cost3;\r\n tEntity.salesCostList[index].cCodeName = data.cost3Name;\r\n tEntity.salesCostList[index].inActive = data.inActive;\r\n }\r\n if (!!data.sales5 && data.opType !== 'WH') {\r\n let index = tEntity.salesCostList.findIndex(x => x.opType === data.opType && x.shipmentType === 'TS')\r\n tEntity.salesCostList[index].id = data.id;\r\n tEntity.salesCostList[index].sCode = data.sales5;\r\n tEntity.salesCostList[index].sCodeName = data.sales5Name;\r\n tEntity.salesCostList[index].cCode = data.cost5;\r\n tEntity.salesCostList[index].cCodeName = data.cost5Name;\r\n tEntity.salesCostList[index].inActive = data.inActive;\r\n }\r\n if (!!data.sales1 && data.opType === 'WH') {\r\n let index = tEntity.salesCostList.findIndex(x => x.opType === data.opType && x.shipmentType === 'DS')\r\n tEntity.salesCostList[index].id = data.id;\r\n tEntity.salesCostList[index].sCode = data.sales1;\r\n tEntity.salesCostList[index].sCodeName = data.sales1Name;\r\n tEntity.salesCostList[index].cCode = data.cost1;\r\n tEntity.salesCostList[index].cCodeName = data.cost1Name;\r\n tEntity.salesCostList[index].inActive = data.inActive;\r\n }\r\n }\r\n });\r\n }\r\n tEntity.trackable = true;\r\n\r\n setCleanState(tEntity);\r\n setBillingCode(tEntity, false);\r\n }\r\n }\r\n }\r\n\r\n function cancelOperation() {\r\n const filterNode = document.getElementById('ifms-list-screen-filter');\r\n const channel = postal.channel('ifms-filter');\r\n\r\n const modals = document.querySelectorAll('[class^=\"ReactModal__Content\"]');\r\n if (modals.length > 1) {\r\n return false;\r\n }\r\n\r\n if (!filterNode) {\r\n setHasChanges(false);\r\n removeBillingCodeFromStorage();\r\n } else {\r\n channel.publish('ifms-filter.dismiss');\r\n }\r\n return true;\r\n }\r\n\r\n async function checkDataAsync(): Promise {\r\n if (!billingCode) {\r\n return true;\r\n }\r\n if (billingCode.isOperation) {\r\n if (!billingCode.oiForView && !billingCode.ooForView && !billingCode.aiForView && !billingCode.aoForView && !billingCode.otForView && !billingCode.whForView) {\r\n await showGlobalOkDialog(

    * Please select at least one operation.

    );\r\n return false;\r\n }\r\n }\r\n let errors = [];\r\n if (billingCode.code) {\r\n if ((billingCode.edit === false && billingCode.view === false) || getOriginalValue(billingCode, 'codeName') !== billingCode.code) {\r\n if (billingCode.ot === '2' || billingCode.ot === '4') { //op가 아닐때\r\n if (await appContext.api.checkupDuplicateFieldValueIsDuplicate(\"T_NCodeCharge\", \"F_Code\", billingCode.code, \"F_ID\", billingCode.id)) {\r\n await showGlobalOkDialog(

    * Duplicate Billing Code

    );\r\n return false;\r\n }\r\n } else {//op\r\n if (await appContext.api.chkBCodeDup(billingCode.id, billingCode.code)) {\r\n await showGlobalOkDialog(

    * Duplicate Billing Code

    );\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!billingCode.code) {\r\n errors.push(\"Must Enter Billing Code\");\r\n }\r\n if (!billingCode.description) {\r\n errors.push(\"Must Enter Default Description\");\r\n }\r\n\r\n if (billingCode.oiForView && billingCode.salesCostList.findIndex(x => x.opType === 'OI' && x.sCode === '') !== -1)\r\n errors.push('Please fill all OI Cost/Sales Account Code');\r\n if (billingCode.ooForView && billingCode.salesCostList.findIndex(x => x.opType === 'OE' && x.sCode === '') !== -1)\r\n errors.push('Please fill all OE Cost/Sales Account Code');\r\n if (billingCode.aiForView && billingCode.salesCostList.findIndex(x => x.opType === 'AI' && x.sCode === '') !== -1)\r\n errors.push('Please fill all AI Cost/Sales Account Code');\r\n if (billingCode.aoForView && billingCode.salesCostList.findIndex(x => x.opType === 'AE' && x.sCode === '') !== -1)\r\n errors.push('Please fill all AE Cost/Sales Account Code');\r\n if (billingCode.otForView && billingCode.salesCostList.findIndex(x => x.opType === 'OT' && x.sCode === '') !== -1)\r\n errors.push('Please fill all OT Cost/Sales Account Code');\r\n if (billingCode.whForView && billingCode.salesCostList.findIndex(x => x.opType === 'WH' && x.sCode === '') !== -1)\r\n errors.push('Please fill WH Cost/Sales Account Code');\r\n\r\n if (billingCode.ot === '4') {\r\n if (!billingCode.isUseInWithhold && !billingCode.isUseInCorporate)\r\n errors.push(\"Please select at least one payroll option\");\r\n else {\r\n if (billingCode.isUseInCorporate && billingCode.cost6 === '')\r\n errors.push(\"Must Enter Cost Code\");\r\n if (billingCode.sales6 === '')\r\n errors.push(\"Must Enter Sales Code\");\r\n }\r\n }\r\n if (billingCode.ot === '2') {\r\n if (!billingCode.isUseInBill && !billingCode.isUseInInvoice)\r\n errors.push(\"Please select at least one option\");\r\n else {\r\n if (billingCode.isUseInBill && billingCode.cost1 === '')\r\n errors.push(\"Must Enter Cost Code\");\r\n if (billingCode.isUseInInvoice && billingCode.sales1 === '')\r\n errors.push(\"Must Enter Sales Code\");\r\n }\r\n }\r\n // if (billingCode.cost1 && !billingCode.validCost1) {\r\n // if (!await appContext.api.getFieldValue({ id: billingCode.cost1, tableName: \"T_CODEGLNO\", fieldName: \"F_ID\", idFieldName: \"F_GLNO\" })) {\r\n // errors.push(`Invalid ${[\"4\", \"6\"].includes(billingCode.billingCodeIndex) ? \"\" : \"Direct Shipment\"} Cost Code`);\r\n // }\r\n // }\r\n // if (billingCode.sales1 && !billingCode.validSales1) {\r\n // if (!await appContext.api.getFieldValue({ id: billingCode.sales1, tableName: \"T_CODEGLNO\", fieldName: \"F_ID\", idFieldName: \"F_GLNO\" })) {\r\n // errors.push(`Invalid ${[\"4\", \"6\"].includes(billingCode.billingCodeIndex) ? \"\" : \"Direct Shipment\"} Sales Code`);\r\n // }\r\n // }\r\n // if (billingCode.cost3 && !billingCode.validCost3) {\r\n // if (!await appContext.api.getFieldValue({ id: billingCode.cost3, tableName: \"T_CODEGLNO\", fieldName: \"F_ID\", idFieldName: \"F_GLNO\" })) {\r\n // errors.push(`Invalid ${[\"4\", \"6\"].includes(billingCode.billingCodeIndex) ? \"\" : \"Indirect Shipment\"} Cost Code`);\r\n // }\r\n // }\r\n // if (billingCode.sales3 && !billingCode.validSales3) {\r\n // if (!await appContext.api.getFieldValue({ id: billingCode.sales3, tableName: \"T_CODEGLNO\", fieldName: \"F_ID\", idFieldName: \"F_GLNO\" })) {\r\n // errors.push(`Invalid ${[\"4\", \"6\"].includes(billingCode.billingCodeIndex) ? \"\" : \"Indirect Shipment\"} Sales Code`);\r\n // }\r\n // }\r\n // if (billingCode.cost5 && !billingCode.validCost5) {\r\n // if (!await appContext.api.getFieldValue({ id: billingCode.cost5, tableName: \"T_CODEGLNO\", fieldName: \"F_ID\", idFieldName: \"F_GLNO\" })) {\r\n // errors.push(`Invalid ${[\"4\", \"6\"].includes(billingCode.billingCodeIndex) ? \"\" : \"Transit Shipment\"} Cost Code`);\r\n // }\r\n // }\r\n // if (billingCode.sales5 && !billingCode.validSales5) {\r\n // if (!await appContext.api.getFieldValue({ id: billingCode.sales5, tableName: \"T_CODEGLNO\", fieldName: \"F_ID\", idFieldName: \"F_GLNO\" })) {\r\n // errors.push(`Invalid ${[\"4\", \"6\"].includes(billingCode.billingCodeIndex) ? \"\" : \"Transit Shipment\"} Sales Code`);\r\n // }\r\n // }\r\n // if (billingCode.cost6 && !billingCode.validCost6) {\r\n // if (!await appContext.api.getFieldValue({ id: billingCode.cost6, tableName: \"T_CODEGLNO\", fieldName: \"F_ID\", idFieldName: \"F_GLNO\" })) {\r\n // errors.push('Cost Code');\r\n // }\r\n // }\r\n // if (billingCode.sales6 && !billingCode.validSales6) {\r\n // if (!await appContext.api.getFieldValue({ id: billingCode.sales6, tableName: \"T_CODEGLNO\", fieldName: \"F_ID\", idFieldName: \"F_GLNO\" })) {\r\n // errors.push('Sales Code');\r\n // }\r\n // }\r\n\r\n if (errors.length > 0) {\r\n await showGlobalOkDialog(\r\n
    \r\n
    \r\n
    \r\n Error\r\n
    \r\n
    \r\n
    \r\n
      \r\n {errors.map((e, i) =>
    • {e}
    • )}\r\n
    \r\n
    \r\n
    \r\n , false, null, 'error');\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function getSQLFromList(opType: string) {\r\n if (!billingCode) return;\r\n billingCode.oi = '0'; billingCode.oo = '0'; billingCode.ai = '0'; billingCode.ao = '0'; billingCode.ot = '0'; billingCode.wh = '0';\r\n if (opType === 'OI') billingCode.oi = '1';\r\n else if (opType === 'OE') billingCode.oo = '1';\r\n else if (opType === 'AI') billingCode.ai = '1';\r\n else if (opType === 'AE') billingCode.ao = '1';\r\n else if (opType === 'OT') billingCode.ot = '1';\r\n else if (opType === 'WH') billingCode.wh = '1';\r\n let tempList = billingCode.salesCostList.filter(x => x.opType === opType);\r\n billingCode.sales1 = tempList.find(x => x.shipmentType === 'DS')?.sCode ?? '';\r\n billingCode.sales1Name = tempList.find(x => x.shipmentType === 'DS')?.sCodeName ?? '';\r\n billingCode.cost1 = tempList.find(x => x.shipmentType === 'DS')?.cCode ?? '';\r\n billingCode.cost1Name = tempList.find(x => x.shipmentType === 'DS')?.cCodeName ?? '';\r\n billingCode.chgType1 = true;\r\n\r\n billingCode.sales3 = tempList.find(x => x.shipmentType === 'IDS')?.sCode ?? '';\r\n billingCode.sales3Name = tempList.find(x => x.shipmentType === 'IDS')?.sCodeName ?? '';\r\n billingCode.cost3 = tempList.find(x => x.shipmentType === 'IDS')?.cCode ?? '';\r\n billingCode.cost3Name = tempList.find(x => x.shipmentType === 'iDS')?.cCodeName ?? '';\r\n billingCode.chgType3 = true;\r\n\r\n billingCode.sales5 = tempList.find(x => x.shipmentType === 'TS')?.sCode ?? '';\r\n billingCode.sales5Name = tempList.find(x => x.shipmentType === 'TS')?.sCodeName ?? '';\r\n billingCode.cost5 = tempList.find(x => x.shipmentType === 'TS')?.cCode ?? '';\r\n billingCode.cost5Name = tempList.find(x => x.shipmentType === 'TS')?.cCodeName ?? '';\r\n billingCode.chgType5 = true;\r\n\r\n const fmsGlobal = getFmsGlobal();\r\n billingCode.sales2 = billingCode.cost5 ? (fmsGlobal.AgentAPGLNo ?? '') : \"\";\r\n billingCode.cost2 = billingCode.sales5 ? (fmsGlobal.AgentGLNo ?? '') : \"\";\r\n billingCode.chgType2 = billingCode.cost5 || billingCode.sales5 ? true : false;\r\n\r\n billingCode.code = (billingCode.codeName + '.' + opType);\r\n setBillingCode(billingCode);\r\n const sqlInfos = getSQLInfoList(billingCodeRef.current as TrackableEntity);\r\n return sqlInfos;\r\n }\r\n\r\n async function save() {\r\n if (!billingCode) {\r\n return;\r\n }\r\n\r\n if (!billingCodeRef.current?.isDirty) {\r\n cancelOperation();\r\n await reload();\r\n return;\r\n }\r\n\r\n const isDataValid = await checkDataAsync();\r\n if (!isDataValid) {\r\n return;\r\n }\r\n saveBillingCode();\r\n\r\n let sqlInfo: SQLInfo | null;\r\n const sqlInfoList: SQLInfo[] = [];\r\n sqlInfo = historyUpdate(\"T_CODEGLNO\", billingCode.id, appContext.user?.id ?? '', billingCode.inActive ? \"Inactive\" : \"Active\");\r\n if (sqlInfo) {\r\n sqlInfoList.push(sqlInfo);\r\n }\r\n\r\n if (billingCode.isOperation) { //operation일때\r\n if (!billingCode.edit && !billingCode.view) { //New일때\r\n if (billingCode.oiForView) {\r\n const sqlInfos = getSQLFromList('OI');\r\n if (!!sqlInfos) sqlInfoList.push(...sqlInfos);\r\n }\r\n if (billingCode.ooForView) {\r\n const sqlInfos = getSQLFromList('OE');\r\n if (!!sqlInfos) sqlInfoList.push(...sqlInfos);\r\n }\r\n if (billingCode.aiForView) {\r\n const sqlInfos = getSQLFromList('AI');\r\n if (!!sqlInfos) sqlInfoList.push(...sqlInfos);\r\n }\r\n if (billingCode.aoForView) {\r\n const sqlInfos = getSQLFromList('AE');\r\n if (!!sqlInfos) sqlInfoList.push(...sqlInfos);\r\n }\r\n if (billingCode.otForView) {\r\n const sqlInfos = getSQLFromList('OT');\r\n if (!!sqlInfos) sqlInfoList.push(...sqlInfos);\r\n }\r\n if (billingCode.whForView) {\r\n const sqlInfos = getSQLFromList('WH');\r\n if (!!sqlInfos) sqlInfoList.push(...sqlInfos);\r\n }\r\n }\r\n else { //Edit일때 - 추가 및 변경만 가능\r\n const newModel = _.cloneDeep(billingCode.billingCodeOthers);\r\n billingCode.salesCostList.forEach(element => {\r\n if (element.sCode === '') return;\r\n if (newModel.some(x => x.opType === element.opType)) return;\r\n else {\r\n newModel.push(new NCodeChargeOthers({ opType: element.opType }));\r\n }\r\n });\r\n newModel.forEach(element => {\r\n if (checkPropDirty(billingCode, 'code') || checkPropDirty(billingCode, 'description') || checkPropDirty(billingCode, 'localDesc') || checkPropDirty(billingCode, 'inActive') || checkPropDirty(billingCode, 'remark')) element.changedMainprop = true;\r\n\r\n element.cost1 = billingCode.salesCostList.find(x => x.opType === element.opType && x.shipmentType === 'DS')?.cCode ?? '';\r\n element.sales1 = billingCode.salesCostList.find(x => x.opType === element.opType && x.shipmentType === 'DS')?.sCode ?? '';\r\n element.cost3 = billingCode.salesCostList.find(x => x.opType === element.opType && x.shipmentType === 'IDS')?.cCode ?? '';\r\n element.sales3 = billingCode.salesCostList.find(x => x.opType === element.opType && x.shipmentType === 'IDS')?.sCode ?? '';\r\n element.cost5 = billingCode.salesCostList.find(x => x.opType === element.opType && x.shipmentType === 'TS')?.cCode ?? '';\r\n element.sales5 = billingCode.salesCostList.find(x => x.opType === element.opType && x.shipmentType === 'TS')?.sCode ?? '';\r\n });\r\n setBillingCode({ billingCodeOthers: newModel })\r\n\r\n //Eidt모드에서 추가된 경우\r\n const ctrackableAdd = billingCode.changedCollectionProps.find(x => x.collectionName === 'billingCodeOthers')?.addedItems ?? [];\r\n const addItems = ctrackableAdd?.filter(x => x.changeTrackable?.sales1 !== '');\r\n if (!!addItems && addItems?.length > 0) {\r\n const fmsGlobal = getFmsGlobal();\r\n addItems.forEach(element => {\r\n var data = element.changeTrackable as NCodeChargeOthers;\r\n sqlInfoList.push(new SQLInfo({\r\n tableName: 'T_NCodeCharge',\r\n type: SQLType.Insert,\r\n fields: [\r\n new SQLField({ fieldName: 'F_Code', propertyName: 'code', value: (billingCode.codeName + '.' + data.opType) }),\r\n new SQLField({ fieldName: \"F_CodeName\", propertyName: \"codeName\", value: billingCode.codeName }),\r\n new SQLField({ fieldName: \"f_Description\", propertyName: \"description\", value: billingCode.description }),\r\n new SQLField({ fieldName: \"F_LocalDesc\", propertyName: \"localDesc\", value: billingCode.localDesc }),\r\n new SQLField({ fieldName: \"F_Remark\", propertyName: \"remark\", value: billingCode.remark }),\r\n new SQLField({ fieldName: \"F_OI\", propertyName: \"oi\", value: data.opType === 'OI' ? '1' : '0' }),\r\n new SQLField({ fieldName: \"F_OO\", propertyName: \"oo\", value: data.opType === 'OE' ? '1' : '0' }),\r\n new SQLField({ fieldName: \"F_AI\", propertyName: \"ai\", value: data.opType === 'AI' ? '1' : '0' }),\r\n new SQLField({ fieldName: \"F_AO\", propertyName: \"ao\", value: data.opType === 'AE' ? '1' : '0' }),\r\n new SQLField({ fieldName: \"F_WH\", propertyName: \"wh\", value: data.opType === 'WH' ? '1' : '0' }),\r\n new SQLField({ fieldName: \"F_OT\", propertyName: \"ot\", value: data.opType === 'OT' ? '1' : '0' }),\r\n new SQLField({ fieldName: \"F_ChgType1\", propertyName: \"chgType1\", value: 1 }),\r\n new SQLField({ fieldName: \"F_ChgType3\", propertyName: \"chgType3\", value: 1 }),\r\n new SQLField({ fieldName: \"F_ChgType5\", propertyName: \"chgType5\", value: 1 }),\r\n new SQLField({ fieldName: \"F_Sales1\", propertyName: \"sales1\", value: data.sales1 }),\r\n new SQLField({ fieldName: \"F_Sales3\", propertyName: \"sales3\", value: data.sales3 }),\r\n new SQLField({ fieldName: \"F_Sales5\", propertyName: \"sales5\", value: data.sales5 }),\r\n new SQLField({ fieldName: \"F_Cost1\", propertyName: \"cost1\", value: data.cost1 }),\r\n new SQLField({ fieldName: \"F_Cost3\", propertyName: \"cost3\", value: data.cost3 }),\r\n new SQLField({ fieldName: \"F_Cost5\", propertyName: \"cost5\", value: data.cost5 }),\r\n new SQLField({ fieldName: \"F_ChgType2\", propertyName: \"chgType2\", value: 1 }),\r\n new SQLField({ fieldName: \"F_Sales2\", propertyName: \"sales2\", value: fmsGlobal.AgentAPGLNo }),\r\n new SQLField({ fieldName: \"F_Cost2\", propertyName: \"cost2\", value: fmsGlobal.AgentGLNo }),\r\n new SQLField({ fieldName: \"F_inactive\", propertyName: \"inActive\", value: billingCode.inActive }),\r\n new SQLField({ fieldName: \"F_InactiveDate\", propertyName: \"inactiveDate\", value: billingCode.inactiveDate }),\r\n new SQLField({ fieldName: \"InactiveBy\", propertyName: \"inactiveBy\", value: billingCode.inactiveBy }),\r\n new SQLField({ fieldName: \"F_IsUseInInvoice\", propertyName: \"isUseInInvoice\", value: billingCode.isUseInInvoice }),\r\n new SQLField({ fieldName: \"F_IsUseInBill\", propertyName: \"isUseInBill\", value: billingCode.isUseInBill }),\r\n new SQLField({ fieldName: \"F_IsUseInWithhold\", propertyName: \"isUseInWithhold\", value: billingCode.isUseInWithhold }),\r\n new SQLField({ fieldName: \"F_IsUseInCorporate\", propertyName: \"isUseInCorporate\", value: billingCode.isUseInCorporate }),\r\n ],\r\n }));\r\n });\r\n }\r\n\r\n //수정되었거나 삭제되는 경우\r\n const changedItems = billingCode.changedCollectionProps.find(x => x.collectionName === 'billingCodeOthers')?.changedItems ?? [];\r\n if (!!changedItems && changedItems?.length > 0) {\r\n changedItems.forEach(element => {\r\n var data = element.changeTrackable as NCodeChargeOthers;\r\n if (data.sales1 === '') //삭제됨\r\n sqlInfoList.push(new SQLInfo({\r\n type: SQLType.Delete,\r\n tableName: 'T_NCodeCharge',\r\n key: new SQLField({ fieldName: \"f_id\", propertyName: \"id\", value: data.id })\r\n }));\r\n else //수정됨\r\n sqlInfoList.push(new SQLInfo({\r\n tableName: 'T_NCodeCharge',\r\n type: SQLType.Update,\r\n fields: [\r\n new SQLField({ fieldName: 'F_Code', propertyName: 'code', value: (billingCode.codeName + '.' + data.opType) }),\r\n new SQLField({ fieldName: \"F_CodeName\", propertyName: \"codeName\", value: billingCode.codeName }),\r\n new SQLField({ fieldName: \"f_Description\", propertyName: \"description\", value: billingCode.description }),\r\n new SQLField({ fieldName: \"F_LocalDesc\", propertyName: \"localDesc\", value: billingCode.localDesc }),\r\n new SQLField({ fieldName: \"F_Remark\", propertyName: \"remark\", value: billingCode.remark }),\r\n new SQLField({ fieldName: \"F_Sales1\", propertyName: \"sales1\", value: data.sales1 }),\r\n new SQLField({ fieldName: \"F_Sales3\", propertyName: \"sales3\", value: data.sales3 }),\r\n new SQLField({ fieldName: \"F_Sales5\", propertyName: \"sales5\", value: data.sales5 }),\r\n new SQLField({ fieldName: \"F_Cost1\", propertyName: \"cost1\", value: data.cost1 }),\r\n new SQLField({ fieldName: \"F_Cost3\", propertyName: \"cost3\", value: data.cost3 }),\r\n new SQLField({ fieldName: \"F_Cost5\", propertyName: \"cost5\", value: data.cost5 }),\r\n new SQLField({ fieldName: \"F_inactive\", propertyName: \"inActive\", value: billingCode.inActive }),\r\n new SQLField({ fieldName: \"F_InactiveDate\", propertyName: \"inactiveDate\", value: billingCode.inactiveDate }),\r\n new SQLField({ fieldName: \"InactiveBy\", propertyName: \"inactiveBy\", value: billingCode.inactiveBy }),\r\n ],\r\n key: new SQLField({ fieldName: \"f_id\", propertyName: \"id\", value: data.id })\r\n }));\r\n });\r\n }\r\n }\r\n } else {\r\n const sqlInfos = getSQLInfoList(billingCode as TrackableEntity);\r\n sqlInfoList.push(...sqlInfos);\r\n }\r\n\r\n const apiResult = await appContext.api.saveJobDetail(JobNames.BillingCode, sqlInfoList);\r\n\r\n if (apiResult) {\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n\r\n cancelOperation();\r\n await reload(false);\r\n }\r\n }\r\n\r\n function saveBillingCode() {\r\n if (!billingCode) return;\r\n\r\n const fmsGlobal = getFmsGlobal();\r\n const mainChange: Partial = {};\r\n\r\n mainChange.sales2 = billingCode.cost5 ? fmsGlobal.AgentAPGLNo : \"\";\r\n mainChange.cost2 = billingCode.sales5 ? fmsGlobal.AgentGLNo : \"\";\r\n mainChange.chgType2 = billingCode.cost5 || billingCode.sales5 ? true : false;\r\n\r\n mainChange.localDesc = billingCode.localDesc;\r\n\r\n if (mainChange.localDesc.length > 50) {\r\n mainChange.localDesc = billingCode.localDesc.substring(0, 50);\r\n }\r\n if (!_.isEmpty(mainChange)) {\r\n setBillingCode(mainChange);\r\n }\r\n }\r\n\r\n const tableOptions: ApplicableTableSettings = {\r\n customTableId: 'billing-code-list',\r\n ref: tableRef,\r\n selectable: true,\r\n tableName: 'billing-code-list',\r\n ...billingCodeList,\r\n height: `${tableHeight}px`,\r\n data: data.map((x: any) => ({ ...x })),\r\n rowRenderers: [\r\n { accessor: 'indicator', Cell: NumberedIndicatorRenderer },\r\n { accessor: 'code', Cell: TextAlignLeftRenderer },\r\n { accessor: 'desc1', Cell: TextAlignLeftRenderer },\r\n { accessor: 'jobType', Cell: TextAlignLeftRenderer },\r\n { accessor: 'localDesc', Cell: TextAlignLeftRenderer },\r\n { accessor: 'salesGLNo', Cell: TextRenderer },\r\n { accessor: 'salesGLNoDesc', Cell: TextAlignLeftRenderer },\r\n { accessor: 'costGLNo', Cell: TextRenderer },\r\n { accessor: 'costGLNoDesc', Cell: TextAlignLeftRenderer },\r\n { accessor: 'inactive', Cell: NullableCheckboxRedIconRenderer },\r\n { accessor: 'inactiveDate', Cell: DateRenderer },\r\n { accessor: 'remark', Cell: TextAlignLeftRenderer },\r\n ],\r\n orderBy: [orderBy],\r\n onHeaderClick,\r\n };\r\n\r\n //const billingCodeCount = data ? data.length : 0;\r\n const hasSelectedRow = !isNaN(selectedRow) && !(selectedRow < 0);\r\n const canBeAdd = listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel && (checkSuntek || (!!dataRef?.current && !dataRef?.current[selectedRow]?.isDefault));\r\n\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const RenderedTable = React.useMemo(() => , [dataRef.current]);\r\n\r\n return (\r\n
    \r\n {/* \r\n

    Codes Billing Code

    \r\n
    \r\n {\r\n setOrderBy({general1: generalText1 ? orderBy?.orderBy : null, generalText1})\r\n reload();\r\n }} />\r\n
    \r\n
    */}\r\n {/*
    \r\n {\r\n await reload(generalText1 === null ? '' : generalText1);\r\n }}\r\n />\r\n
    */}\r\n\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n {/* \r\n \r\n \r\n Refresh\r\n  \r\n */}\r\n\r\n
    \r\n
    \r\n {/*
    \r\n ** Total Number of Billing Code: {billingCodeCount} **\r\n
    */}\r\n
    \r\n
    \r\n
    \r\n   \r\n
    \r\n New\r\n   \r\n View\r\n   \r\n Edit\r\n   \r\n Delete\r\n  \r\n {checkSuntek &&\r\n <>\r\n  \r\n Export\r\n  \r\n \r\n }\r\n { cancelOperation(); reload(false); }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {RenderedTable}\r\n
    \r\n
    \r\n \r\n {!!billingCode &&\r\n
    \r\n
    \r\n
    \r\n
    \r\n  \r\n {billingCode.view && listSec?.grantEdit &&\r\n setBillingCode({ view: false }, true)}>Edit\r\n }\r\n {!billingCode.view &&\r\n Save\r\n }\r\n  \r\n
    \r\n
    \r\n \r\n
      \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default BillingCode;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeANTitleListItem extends SearchModelBase {\r\n antitle: string = '';\r\n antitle1: boolean|null = null;\r\n antitle1Alt: boolean = false;\r\n antitle2: boolean|null = null;\r\n antitle2Alt: boolean = false;\r\n cid: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'A/N Title', width: 500, dataIndex: 'antitle'}),\r\n XCol.Create({ col: 1, text: 'Show Charge', width: 100, dataIndex: 'antitle1', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n XCol.Create({ col: 2, text: 'ACN', width: 50, dataIndex: 'antitle2', type: XCol.XCellType.Bool, align: XCol.XAlignType.Center, noNullOrEmptySearch: true}),\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeANTitleListItem.prototype.antitle, orderByAscending: false };\r\n\r\n public static formatData(data: CodeANTitleListItem[]) {\r\n return data.map((d: CodeANTitleListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n"," import _ from 'lodash';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { ApplicableTableSettings, codesAnTitleList } from '../../../tableSettings';\r\n\r\nimport useFastStorage from '../../../hooks/useFastStorage';\r\nimport useFunction from '../../../hooks/useFunction';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\n\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport useSystemSettings from '../../../hooks/useSystemSettings';\r\nimport { Search } from '../../../filtering';\r\nimport { JobNames } from '../../../framework.core/JobNames';\r\nimport { CodeANTitleListItem } from '../../../fms.data/models/CodeANTitleListItem';\r\nimport { SQLType } from '../../../framework.core/data/SQLInfo';\r\nimport { ApiResult, InsertResult } from '../../../framework.core/data/ApiResult';\r\nimport { Portal } from 'react-portal';\r\nimport TextBox from '../../../ui/TextBox';\r\nimport EditableTable, { CellData, EditableTableHandle, TableCellTypes } from '../../../ui/tables/editing/EditableTable';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport GreenButton from '../../../ui/GreenButton';\r\nimport { checkTabIsDirty } from '../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../util';\r\n\r\nimport BlackInverseButton from '../../../ui/BlackInverseButton';\r\nimport constants from '../../../constants';\r\nimport IFmsReferenceFilesContext from '../IfmsReferenceFilesContext';\r\nimport CloseButton from '../../../ui/CloseButton';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\n\r\nfunction AnTitleRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n changeLineItem(row.index, {antitle: e.target.value, isUpdate:true})} />\r\n );\r\n}\r\n\r\nfunction formatElement(data: any) {\r\n const result = new CodeANTitleListItem();\r\n result.antitle = data.antitle;\r\n result.antitle1 = data.antitle1;\r\n result.antitle1Alt = data.antitle1Alt;\r\n result.antitle2 = data.antitle2;\r\n result.antitle2Alt = data.antitle2Alt;\r\n result.cid = data.cid;\r\n result.isNew = false;\r\n\r\n return data;\r\n}\r\n\r\nfunction formatData(data:Array) {\r\n return data.map(d => formatElement(d));\r\n}\r\n\r\nfunction AnTitles() {\r\n useFunction({invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n //ifmsReferenceFilesCancel: () => {},\r\n }});\r\n useFunctionKeys({ onSave: handleSaveAndClose });\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const tableRef = useRef(null);\r\n const masterTableRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n const [allData, setAllData] = useState(Array());\r\n const [hasChanges, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, /*dataRef*/] = useFastStorage(`ifms-referenceFiles-antitle-list`, []);\r\n\r\n const savedDataRef = useRef>([]);\r\n const oriData = useRef([]);\r\n //const addingToTheFirstLine = useRef(false);\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeANTitle);\r\n const [focusFirstCell, setFocusFirstCell] = useState(true);\r\n \r\n const tableHeight = 520;\r\n const systemSettings = useSystemSettings();\r\n\r\n const listItemType = 'CodeANTitleListItem';\r\n\r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if (!modals)\r\n saveBtn.click();\r\n }\r\n }\r\n\r\n function cancelOperation() {\r\n setHasChanges(false);\r\n removeData();\r\n return true;\r\n }\r\n \r\n function setData(d:Array, callByFetchData: boolean = false) {\r\n setFocusFirstCell(callByFetchData);\r\n _setData(d, null, { forceClone: callByFetchData });\r\n setHasChanges(checkTabIsDirty(CodeANTitleListItem, oriData.current, d));\r\n }\r\n\r\n async function fetchData(api:any) {\r\n setLoading(true);\r\n // a.antitle.toLowerCase()));\r\n }\r\n //pt220818>\r\n\r\n setFocusFirstCell(false);\r\n setLoading(false);\r\n setHasChanges(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (data.length === 0)\r\n reload();\r\n else {\r\n oriData.current = _.cloneDeep(data);\r\n savedDataRef.current = _.cloneDeep(data);\r\n }\r\n return () => {\r\n removeData();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function reload() {\r\n fetchData(appContext.api);\r\n }\r\n\r\n function getIndexOfFirstInvalidCell(rowIndex: number):number|undefined {\r\n if (!data) {\r\n return undefined;\r\n }\r\n\r\n if (!data[rowIndex].antitle || data[rowIndex].antitle.trim().length === 0 ) {\r\n return 1;\r\n }\r\n if (allData) { //기존데이터 목록\r\n const newData = [...allData];\r\n if(newData.filter(x => x === data[rowIndex].antitle.toLowerCase()).length === 0) // 현재 목록에 없음\r\n {\r\n newData.splice(rowIndex, 1, data[rowIndex].antitle.toLowerCase());\r\n setAllData(newData);\r\n return undefined;\r\n }else{\r\n if(newData[rowIndex] === data[rowIndex].antitle.toLowerCase()) return undefined;\r\n else{\r\n showGlobalOkDialog(

    '{data[rowIndex].antitle}' is a duplicate value.

    );\r\n return 1;\r\n }\r\n }\r\n } \r\n else {\r\n const newData = [data[rowIndex].antitle.toLowerCase()];\r\n setAllData(newData);\r\n }\r\n return undefined;\r\n }\r\n\r\n function deleteRow(index: number): boolean {\r\n if (!data) {\r\n return false;\r\n }\r\n\r\n const element = data[index];\r\n\r\n if (!element.isNew) {\r\n let deleteRow = savedDataRef.current.find(x => x.antitle === element.antitle);\r\n if (deleteRow) {\r\n deleteRow.isDelete = true;\r\n }\r\n }\r\n data.splice(index, 1);\r\n setData(data);\r\n const tempData = data.map((a: CodeANTitleListItem) => a.antitle.toLowerCase());\r\n const newData = allData.splice(0, tempData.length, tempData);\r\n setAllData(newData);\r\n\r\n return true;\r\n }\r\n\r\n function applyToLineItem(rowIndex: number, change: Partial|null) {\r\n if (!change || !data) {\r\n return;\r\n }\r\n const checkData = data[rowIndex];\r\n if (!change.isNew && (change.antitle !== checkData.antitle || change.antitle1 !== checkData.antitle1 ||\r\n change.antitle2 !== checkData.antitle2)) {\r\n _.merge(data[rowIndex], { ..._.omit(change, ['isNew']), hasBeenChanged: true });\r\n setHasChanges(true);\r\n setData(data);\r\n }\r\n }\r\n\r\n\r\n // function addingLineToFirstLine(){\r\n // addingToTheFirstLine.current = true;\r\n // masterTableRef.current?.add();\r\n // }\r\n\r\n function addLineItem() {\r\n const newItem = new CodeANTitleListItem();\r\n newItem.antitle = '';\r\n newItem.antitle1 = false;\r\n newItem.antitle1Alt = false;\r\n newItem.antitle2 = false;\r\n newItem.antitle2Alt = false;\r\n newItem.cid = '';\r\n newItem.isNew = true;\r\n\r\n setHasChanges(true);\r\n\r\n return {\r\n setDataFunc: (list: any) => setData(list),\r\n curListData: data,\r\n newData: newItem\r\n };\r\n }\r\n\r\n async function duplicateCell(checkData: any) {\r\n if (!data) {\r\n return;\r\n }\r\n\r\n let duplicateFieldText = '';\r\n\r\n let isDuplicate = false;\r\n let insList = checkData.filter((x: any) => x.isNew === true);\r\n let chgList = checkData.filter((x: any) => x.hasBeenChanged === true && !x.isNew);\r\n let focusRow = -1;\r\n\r\n if (insList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < insList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (insList[i].antitle.toUpperCase() === data[j].antitle.toUpperCase()) {\r\n if (count === 0) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${insList[i].antitle}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (chgList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < chgList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (chgList[i].antitle.toUpperCase() === data[j].antitle.toUpperCase()) {\r\n if (!data[j].isNew && data[j].hasBeenChanged === true && tempRow === -1) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${chgList[i].antitle}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (!isDuplicate) {\r\n const apiResult = await appContext.api.checkDuplicatedKeys(JobNames.ANTitle, listItemType, insList, chgList);\r\n if (apiResult && apiResult.success && apiResult.message) {\r\n duplicateFieldText = `${apiResult.message}`;\r\n isDuplicate = true;\r\n } else if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog('Could not check duplication.\\r\\nPlease try later.');\r\n return true;\r\n }\r\n }\r\n else\r\n await showGlobalOkDialog(`${duplicateFieldText}Please try after correcting duplication.`);\r\n\r\n return isDuplicate;\r\n }\r\n\r\n async function save() {\r\n if (!data) {\r\n return;\r\n }\r\n\r\n let validData = data.filter((x:any) => x.antitle);\r\n\r\n let errMsg = '';\r\n const dataToSave = validData.filter((x: any) => x.isNew || x.hasBeenChanged === true); // new data is always last so index check works\r\n const dataToDelete = savedDataRef.current.filter((x) => x.isDelete);\r\n if(dataToSave.length === 0 && dataToDelete.length === 0) {\r\n if (hasChanges) reload();\r\n return;\r\n }\r\n setLoading(true);\r\n\r\n for (let i = 0; i < dataToDelete.length; ++i) {\r\n const s = dataToDelete[i];\r\n const apiResult: ApiResult = await appContext.api.saveListItem(listItemType,\r\n SQLType.Delete,\r\n _.omit(s, ['isDelete']));\r\n\r\n if (!apiResult || !apiResult.success)\r\n errMsg = apiResult.message ?? constants.SAVE_ERROR_MESSAGE;\r\n }\r\n\r\n if (dataToSave.length > 0) {\r\n const isDuplicate = await duplicateCell(dataToSave);\r\n if(isDuplicate){\r\n setLoading(false);\r\n return;\r\n }\r\n const cidData = dataToSave.map((a: CodeANTitleListItem) => a.cid?.toLowerCase()) as Array;\r\n\r\n const secondSave = dataToSave.filter((x: CodeANTitleListItem) => cidData.includes(x.antitle.toLowerCase()));\r\n const firstSave = dataToSave.filter((x: CodeANTitleListItem) => !secondSave.includes(x));\r\n\r\n if (firstSave.length > 0) {\r\n const apiResult: ApiResult = await appContext.api.saveList(listItemType, firstSave);\r\n if (!apiResult || !apiResult.success) {\r\n errMsg += (errMsg ? '\\n' : '') + apiResult?.message;\r\n }\r\n else {\r\n firstSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.antitle === x.antitle);\r\n if (index >= 0) {\r\n data[index].cid = x.antitle;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n delete data[index].isNew;\r\n }\r\n })\r\n }\r\n }\r\n if (secondSave.length > 0) {\r\n const apiResult: ApiResult = await appContext.api.saveList(listItemType, secondSave);\r\n if (!apiResult || !apiResult.success) {\r\n errMsg += (errMsg ? '\\n' : '') + apiResult?.message;\r\n }\r\n else {\r\n secondSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.antitle === x.antitle);\r\n if (index >= 0) {\r\n data[index].cid = x.antitle;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n delete data[index].isNew;\r\n }\r\n })\r\n }\r\n }\r\n }\r\n if (errMsg) {\r\n await showGlobalOkDialog(

    {errMsg}

    );\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n // setData(data);\r\n // savedDataRef.current = _.cloneDeep(data);\r\n // oriData.current = _.cloneDeep(data);\r\n \r\n // setLoading(false);\r\n // setHasChanges(false);\r\n reload();\r\n\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n }\r\n\r\n function cellValueChanged(rowIndex: number, accessor: string, value: any) {\r\n switch (accessor) {\r\n case 'antitle1':\r\n applyToLineItem(rowIndex, {antitle1: value, isUpdate:true});\r\n break;\r\n case 'antitle2':\r\n applyToLineItem(rowIndex, { antitle2: value, isUpdate:true });\r\n break;\r\n }\r\n }\r\n\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n customTableId: 'codes-antitle-list',\r\n ref: tableRef,\r\n tableName: 'anTitleList',\r\n ...codesAnTitleList,\r\n height: `${tableHeight}px`,\r\n data: data.map((x:any) => ({...x, changeLineItem: applyToLineItem})),\r\n rowRenderers: [\r\n { accessor: 'indicator' },\r\n { accessor: 'antitle', EditCell: AnTitleRenderer },\r\n { accessor: 'antitle1' },\r\n { accessor: 'antitle2' },\r\n ],\r\n getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n if (accessor === 'antitle')\r\n return { type: TableCellTypes.Text, value: rowData.antitle };\r\n else if (accessor === 'antitle1')\r\n return { type: TableCellTypes.Checkbox, value: rowData.antitle1 , onChangeFunc: (antitle1: boolean) => cellValueChanged(rowIndex, accessor, antitle1) };\r\n else if (accessor === 'antitle2')\r\n return { type: TableCellTypes.Checkbox, value: rowData.antitle2, onChangeFunc: (antitle2: boolean) => cellValueChanged(rowIndex, accessor, antitle2) };\r\n else\r\n return undefined;\r\n },\r\n isCellLock: (accessor: string, rowData: any): boolean => {\r\n if(!(listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel))\r\n return true\r\n else\r\n return false;\r\n },\r\n useEditControls: (listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel),\r\n };\r\n\r\n //const AnTitleCount = data ? data.length : 0;\r\n return (\r\n
    \r\n {/* \r\n

    Arrival Notice Title

    \r\n
    */}\r\n\r\n \r\n
    \r\n
    \r\n Save\r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n \r\n \r\n \r\n
    */}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n {// { addingLineToFirstLine() }}>  Add Line   \r\n }\r\n { reload() }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n listSec?.grantDel ?? false}\r\n />\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default AnTitles;","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeCommodityListItem extends SearchModelBase {\r\n description: string = '';\r\n id: number = 0;\r\n code: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Commodity', width: 500, dataIndex: 'code'}),\r\n XCol.Create({ col: 1, text: 'Description', width: 500, dataIndex: 'description'})\r\n ];\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeCommodityListItem.prototype.code, orderByAscending: false };\r\n\r\n public static formatData(data: CodeCommodityListItem[]) {\r\n return data.map((d: CodeCommodityListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import _ from 'lodash';\r\nimport React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { ApplicableTableSettings, codesCommodityList } from '../../../tableSettings';\r\n\r\nimport useFastStorage from '../../../hooks/useFastStorage';\r\nimport useFunction from '../../../hooks/useFunction';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\n\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport { JobNames } from '../../../framework.core/JobNames';\r\nimport { CodeCommodityListItem } from '../../../fms.data/models/CodeCommodityListItem';\r\nimport { ApiResult, InsertResult } from '../../../framework.core/data/ApiResult';\r\nimport { SQLType } from '../../../framework.core/data/SQLInfo';\r\nimport { Portal } from 'react-portal';\r\nimport TextBox from '../../../ui/TextBox';\r\nimport useSystemSettings from '../../../hooks/useSystemSettings';\r\nimport { Search } from '../../../filtering';\r\nimport EditableTable, { CellData, EditableTableHandle, TableCellTypes } from '../../../ui/tables/editing/EditableTable';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport GreenButton from '../../../ui/GreenButton';\r\nimport { checkTabIsDirty } from '../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../util';\r\n\r\nimport BlackInverseButton from '../../../ui/BlackInverseButton';\r\nimport constants from '../../../constants';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\n\r\nfunction CodeRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n changeLineItem(row.index, {code: e.target.value, isUpdate:true})} />\r\n );\r\n}\r\n\r\nfunction DescriptionRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n changeLineItem(row.index, {description: e.target.value, isUpdate:true})} />\r\n );\r\n}\r\n\r\nfunction formatElement(data:any) {\r\n const result = new CodeCommodityListItem();\r\n result.id = data.id;\r\n result.code = data.code;\r\n result.description = data.description;\r\n\r\n return result;\r\n}\r\n\r\nfunction formatData(data: Array) {\r\n return data.map(d => formatElement(d));\r\n}\r\n\r\nfunction CommodityCodes() {\r\n useFunction({invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n //ifmsReferenceFilesCancel: () => {},\r\n }});\r\n useFunctionKeys({ onSave: handleSaveAndClose });\r\n \r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const tableRef = useRef(null);\r\n const masterTableRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n const [hasChanges, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, /*dataRef*/] = useFastStorage(`ifms-referenceFiles-commoditycode-list`, []);\r\n\r\n const savedDataRef = useRef>([]);\r\n const oriData = useRef([]);\r\n //const addingToTheFirstLine = useRef(false);\r\n \r\n const tableHeight = 520;\r\n const systemSettings = useSystemSettings();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeCommodity);\r\n const [focusFirstCell, setFocusFirstCell] = useState(true);\r\n\r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if (!modals)\r\n saveBtn.click();\r\n }\r\n }\r\n\r\n function cancelOperation() {\r\n setHasChanges(false);\r\n removeData();\r\n return true;\r\n }\r\n\r\n function setData(d:Array, callByFetchData: boolean = false) {\r\n setFocusFirstCell(callByFetchData);\r\n _setData(d, null, { forceClone: callByFetchData });\r\n setHasChanges(checkTabIsDirty(CodeCommodityListItem, oriData.current, d));\r\n }\r\n\r\n async function fetchData(api:any) {\r\n setLoading(true);\r\n //\r\n\r\n savedDataRef.current = apiResult && apiResult.entities ? apiResult.entities : [];\r\n\r\n setFocusFirstCell(false);\r\n setLoading(false);\r\n setHasChanges(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (data.length === 0)\r\n reload();\r\n else {\r\n oriData.current = _.cloneDeep(data);\r\n savedDataRef.current = _.cloneDeep(data);\r\n }\r\n return () => {\r\n removeData();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n function reload() {\r\n fetchData(appContext.api);\r\n }\r\n\r\n function getIndexOfFirstInvalidCell(rowIndex: number):number|undefined {\r\n if (!data) {\r\n return undefined;\r\n }\r\n\r\n if (!data[rowIndex].description) {\r\n return 1;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n function deleteRow(index: number): boolean {\r\n if (!data) {\r\n return false;\r\n }\r\n\r\n const element = data[index];\r\n\r\n if (element.id > 0) {\r\n let deleteRow = savedDataRef.current.find(x => x.id === element.id);\r\n if (deleteRow) {\r\n deleteRow.isDelete = true;\r\n }\r\n }\r\n\r\n data.splice(index, 1);\r\n\r\n setData(data);\r\n\r\n return true;\r\n }\r\n\r\n function applyToLineItem(rowIndex: number, change: Partial|null) {\r\n if (!change || !data) {\r\n return;\r\n }\r\n const checkData = data[rowIndex];\r\n if (!change.isNew && (change.code !== checkData.code || change.description !== checkData.description)) {\r\n _.merge(data[rowIndex], { ..._.omit(change, ['id']), hasBeenChanged: true });\r\n setData(data);\r\n //setHasChanges(true);\r\n }\r\n }\r\n\r\n // function addingLineToFirstLine(){\r\n // addingToTheFirstLine.current = true;\r\n // masterTableRef.current?.add();\r\n // }\r\n\r\n function addLineItem() {\r\n const newItem = new CodeCommodityListItem();\r\n newItem.type = '';\r\n newItem.description = '';\r\n newItem.id = 0;\r\n newItem.isNew = true;\r\n\r\n return {\r\n setDataFunc: (list: any) => setData(list),\r\n curListData: data,\r\n newData: newItem\r\n };\r\n }\r\n\r\n async function save() {\r\n if (!data) {\r\n return;\r\n }\r\n\r\n let validData = data.filter((x:any) => x.description);\r\n \r\n let errMsg = '';\r\n const dataToSave = validData.filter((x:any) => x.id <= 0 || x.hasBeenChanged === true); // new data is always last so index check works\r\n const dataToDelete = savedDataRef.current.filter((x)=> x.isDelete);\r\n if(dataToSave.length === 0 && dataToDelete.length === 0) {\r\n if (hasChanges) reload();\r\n return;\r\n }\r\n setLoading(true);\r\n\r\n for(let i = 0; i < dataToDelete.length; ++i){\r\n const s = dataToDelete[i];\r\n const apiResult:ApiResult = await appContext.api.saveListItem('CodeCommodityListItem', SQLType.Delete, _.omit(s, ['isDelete']));\r\n \r\n if(!apiResult || !apiResult.success)\r\n errMsg = apiResult?.message ?? constants.SAVE_ERROR_MESSAGE;\r\n }\r\n\r\n if(dataToSave.length > 0){\r\n const apiResult = await appContext.api.saveList('CodeCommodityListItem', dataToSave);\r\n\r\n if(!apiResult || !apiResult.success){\r\n errMsg += (errMsg ? '\\n' : '' ) + apiResult?.message;\r\n }\r\n\r\n if(apiResult?.result) {\r\n apiResult?.result.forEach((item: any) => {\r\n const index = data.findIndex((d: any) => d.id === item.oldId);\r\n if(index >= 0){\r\n data[index].id = item.newId;\r\n data[index].hasBeenChanged = false;\r\n }\r\n // 정상 저장된 경우 isNew Flag 제거\r\n if(item.isNew) {\r\n delete data[index].isNew;\r\n }\r\n });\r\n }\r\n }\r\n\r\n if(errMsg) {\r\n await showGlobalOkDialog(

    {errMsg}

    );\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n // setData(data);\r\n // savedDataRef.current = _.cloneDeep(data);\r\n // oriData.current = _.cloneDeep(data);\r\n \r\n // setLoading(false);\r\n // setHasChanges(false);\r\n reload();\r\n \r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n }\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n customTableId: 'codes-commoditycode-list',\r\n ref: tableRef,\r\n tableName: 'commodityCodeList',\r\n ...codesCommodityList,\r\n height: `${tableHeight}px`,\r\n data: data.map((x:any) => ({...x, changeLineItem: applyToLineItem})),\r\n rowRenderers: [\r\n { accessor: 'indicator' },\r\n { accessor: 'code', EditCell: CodeRenderer },\r\n { accessor: 'description', EditCell: DescriptionRenderer },\r\n ],\r\n getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n if (accessor === 'code')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].code };\r\n else if (accessor === 'description')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].description };\r\n else\r\n return undefined;\r\n },\r\n isCellLock: (accessor: string, rowData: any): boolean => {\r\n if(!(listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel))\r\n return true\r\n else\r\n return false;\r\n },\r\n useEditControls: (listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel),\r\n };\r\n\r\n \r\n //const commodityCount = data ? data.length : 0;\r\n return (\r\n
    \r\n {/* \r\n

    Commodity List

    \r\n
    */}\r\n\r\n \r\n \r\n Save\r\n \r\n \r\n\r\n\r\n
    \r\n
    \r\n\r\n
    \r\n {/* { addingLineToFirstLine() }}>  Add Line   */}\r\n { reload() }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n listSec?.grantDel ?? false}\r\n />\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default CommodityCodes;","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeCurrencyListItem extends SearchModelBase {\r\n inactive: boolean = false;\r\n userName: string = '';\r\n password: number|null = null;\r\n fromDecimal: number|null = null;\r\n toDecimal: number|null = null;\r\n bankinfo: string = '';\r\n id: number = 0;\r\n localSymbol: string = '';\r\n\r\n cid: string = '';\r\n cid2: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Currency', width: 100, dataIndex: 'code'}),\r\n XCol.Create({ col: 1, text: 'Decimal Digit', width: 100, dataIndex: 'decimal', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 2, text: 'Symbol', width: 100, dataIndex: 'symbol'}),\r\n XCol.Create({ col: 3, text: 'Local Symbol', width: 100, dataIndex: 'localSymbol'}),\r\n XCol.Create({ col: 4, text: 'Inactive', width: 500, dataIndex: 'inactive', type: XCol.XCellType.Bool })\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeCurrencyListItem.prototype.code, orderByAscending: false };\r\n\r\n public static formatData(data: CodeCurrencyListItem[]) {\r\n return data.map((d: CodeCurrencyListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n decimal: {from: 'fromDecimal', to: 'toDecimal'},\r\n }\r\n}\r\n","import _ from 'lodash';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { ApplicableTableSettings, codesCurrencyList } from '../../../../tableSettings';\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\nimport useFastStorage from '../../../../hooks/useFastStorage';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport { ApiResult, InsertResult } from '../../../../framework.core/data/ApiResult';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { CodeCurrencyListItem } from '../../../../fms.data/models/CodeCurrencyListItem';\r\nimport { isFilterObjectEmpty, Search, initialSearch } from '../../../../filtering';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\nimport { appendLine, findSecurityTask } from '../../../../util';\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport constants from '../../../../constants';\r\nimport useFilterBar from '../../../../hooks/useFilterBar';\r\nimport { ListOrderBy } from '../../../common/AbstractListView';\r\nimport EditableTable, { CellData, EditableTableHandle, TableCellAligns, TableCellTypes } from '../../../../ui/tables/editing/EditableTable';\r\nimport { checkTabIsDirty, sortingListData } from '../../ReferenceFiles';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport { Portal } from 'react-portal';\r\nimport GreenButton from '../../../../ui/GreenButton';\r\nimport { SQLType } from '../../../../framework.core/data/SQLInfo';\r\nimport Number from '../../../../ui/Number';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\nimport useSystemSettings from '../../../../hooks/useSystemSettings';\r\nimport { Currency } from '../../../../ifmsTypes';\r\n\r\n// function ActionRenderer({ data, row }:any) {\r\n// if (data[row.index].editIndex !== row.index) {\r\n// return null;\r\n// }\r\n\r\n// return (\r\n//
    \r\n// data[row.index].isNew ? data[row.index].onDelete() : data[row.index].requestOperationCancel()}\r\n// >\r\n// \r\n//   \r\n// data[row.index].onSave()}\r\n// >\r\n// \r\n//   \r\n// {!data[row.index].isNew &&\r\n// <>\r\n// data[row.index].onDelete()}\r\n// >\r\n// \r\n// \r\n// \r\n// }\r\n//
    \r\n// );\r\n// }\r\n\r\n// function RowSpacer() {\r\n// return (\r\n//
     
    \r\n// );\r\n// }\r\n\r\n// jhlee 241113 : List에서 바로 입력 가능하도록 변경\r\n// function CurrencyDetail({\r\n// readonly,\r\n// currency,\r\n// onChange\r\n// }:{\r\n// readonly: boolean,\r\n// currency: NCodeCurrency,\r\n// onChange: (change: Partial) => void\r\n// }) {\r\n// const [testAmount, setTestAmount] = useState(null);\r\n// const [showGlobalOkDialog] = useGlobalOkDialog();\r\n// return (\r\n//
    \r\n//
    \r\n// \r\n\r\n// \r\n// Currency Code *}>\r\n// 0} value={currency?.code || ''} onChange={e => onChange({code: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({inactive})} />\r\n//
    \r\n// }\r\n// right={\r\n// <>Inactive\r\n// }\r\n// />\r\n// }> \r\n//
    \r\n// }\r\n// />\r\n\r\n // \r\n // \r\n // onChange({xSize: baseUnitSize ?? undefined})} />\r\n // \r\n // \r\n // }\r\n // right={\r\n //
    \r\n // \r\n // onChange({decimal: decimal ?? undefined})} />\r\n // \r\n //
    \r\n // }\r\n // />\r\n\r\n// \r\n// \r\n// onChange({symbol: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({lSymbol: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({hundred_Sep: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({suffix: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({commaWords: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({sepWords: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n//
    \r\n//
    onChange({cMode: 'N'})} disabled={readonly} />
    \r\n//
    onChange({cMode: ''})} disabled={readonly} />
    \r\n//
    \r\n//
    \r\n\r\n// \r\n// \r\n// onChange({centName: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({zeroCent: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({bUseSpace: useBlockSpace})} />\r\n// \r\n// }\r\n// right={\r\n// <>Use Block Space\r\n// }\r\n// />\r\n// \r\n\r\n// \r\n// \r\n// onChange({useMiddleZWords: useMiddleZeroWords})} />\r\n// \r\n// }\r\n// right={\r\n// <>Use Middle Zero Words\r\n// }\r\n// />\r\n// \r\n\r\n// \r\n// \r\n// onChange({noUseSuffixWhen: noSuffixWithLowestBaseUnit})} />\r\n// \r\n// }\r\n// right={\r\n// <>No Use Suffix when the lowest Base Unit was used\r\n// }\r\n// />\r\n// \r\n\r\n// \r\n\r\n//
    \r\n// \r\n\r\n// \"Currency\r\n\r\n//
    \r\n// \r\n\r\n// \r\n// \r\n// onChange({xD2: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({xD1: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({x0: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({x1: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({x2: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({x3: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({x4: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({x5: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// onChange({xUseSpace: useSpaceBaseUnit})} />\r\n// \r\n// }\r\n// right={\r\n// <>Use Space\r\n// }\r\n// />\r\n// }>\r\n//  \r\n// \r\n//
    \r\n// \r\n// \r\n// onChange({useHundred: useHundredNumber})} />\r\n//
    \r\n// }\r\n// right={\r\n// <>Use Hundred Number\r\n// }\r\n// />\r\n// \r\n\r\n// \r\n// \r\n// \r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// Test\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n\r\n//
    \r\n// \r\n\r\n// \r\n// \r\n// onChange({u0: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({u1: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({u2: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({u3: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({u4: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({u5: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({u6: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({u7: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// onChange({uUseSpace: useSpaceBlockUnit})} />\r\n// \r\n// }\r\n// right={\r\n// <>Use Space\r\n// }\r\n// />\r\n// }>\r\n//  \r\n// \r\n \r\n// \r\n\r\n// \r\n\r\n//
    \r\n// \r\n\r\n// \r\n// \r\n// onChange({n0: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({n1: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({n2: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({n3: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({n4: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({n5: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n // \r\n // \r\n // onChange({n6: e.target.value})} />\r\n // \r\n // \r\n // }\r\n // right={\r\n //
    \r\n // \r\n // onChange({n7: e.target.value})} />\r\n // \r\n //
    \r\n // }\r\n // />\r\n\r\n// \r\n// \r\n// onChange({n8: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({n9: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({n10: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({n11: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({n12: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({n13: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({n14: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({n15: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({n16: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({n17: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({n18: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({n19: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({n20: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({n30: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({n40: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({n50: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({n60: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({n70: e.target.value})} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n\r\n// \r\n// \r\n// onChange({n80: e.target.value})} />\r\n// \r\n// \r\n// }\r\n// right={\r\n//
    \r\n// \r\n// onChange({n90: e.target.value})}\r\n// onTabNext={() => {\r\n// if (currency && currency.id > 0)\r\n// document.getElementById('currency-inactive')?.focus();\r\n// else\r\n// document.getElementById('currency-code')?.focus();\r\n// return true;\r\n// }} />\r\n// \r\n//
    \r\n// }\r\n// />\r\n// \r\n\r\n\r\n// \r\n// );\r\n\r\n// function cmTest(){\r\n// let result = '';\r\n// if(currency.xSize === 0) result = \"Please enter base unit size\"\r\n// else if (!testAmount || testAmount === 0) result = \"Please enter amount\";\r\n// else result = numberToWords(testAmount);\r\n \r\n// showGlobalOkDialog(

    {result}

    );\r\n// }\r\n\r\n// function numberToWords(vAmount: number, vMaxWidth: number = 50) {\r\n\r\n// let i;\r\n// let j;\r\n// let iPos;\r\n// let t_bHundredMode;\r\n// let t_nDollarAmount;\r\n// let t_nCentAmount;\r\n// let t_nCurrentValue = 0;\r\n// let t_nCurrentSubValue;\r\n// let t_sProcessXNumbers;\r\n// let t_nMax;\r\n// let t_sXNumbers;\r\n// let t_sCurrentWords = \"\";\r\n// let t_sCurrentLine = \"\";\r\n// let result = \"\"; // t_sRet\r\n// let t_bXLast;\r\n// let t_nProcessLen;\r\n// let t_sTemp;\r\n\r\n// let t_nXSize; // Basic Number Size\r\n// let t_nCSize; // Cents Size\r\n// let t_sHundred_Sep; // Hundred Separate Symbo (-)\r\n// let t_sDollarCent_Sep; // Dollar and Cent (and)\r\n// let t_sBlock_Sep; // Block (and)\r\n// let t_sSuffix; // Last Suffix Words : '원정' 에서 '정'\r\n// let t_sCentName; // \r\n// let t_bCentsIsNumeric; // ''=Cents convert to Words, 'N'=Cents display numeric\r\n// let t_sZeroCent; // Last Suffix Words : '원정' 에서 '정'\r\n\r\n// let t_bUseSpace_X;\r\n// let t_bUseSpace_U;\r\n// let t_bUseSpace_B;\r\n// let t_bUseMiddleXWords; // // Use middle zero words\r\n// let t_bNoUseSuffixWhen; // // No use suffix when the lowest basic unit was used\r\n\r\n// let t_bIsHaveLowestUnit = false; // // lowest unit 사용 여부\r\n// let t_bIsHaveMiddleZero = false; // // Middle zero 여부\r\n\r\n// t_nXSize = currency?.xSize;\r\n\r\n// t_nCSize = currency?.decimal;\r\n// t_sCentName = currency?.centName;\r\n// t_bCentsIsNumeric = currency.cMode === 'N';\r\n// t_sZeroCent = currency?.zeroCent;\r\n// t_bHundredMode = currency?.useHundred || false;\r\n// t_sHundred_Sep = currency?.hundred_Sep;\r\n// t_sDollarCent_Sep = currency?.sepWords;\r\n// t_sBlock_Sep = currency?.commaWords;\r\n// t_sSuffix = currency?.suffix;\r\n// t_bUseSpace_X = currency?.xUseSpace || false;\r\n// t_bUseSpace_U = currency?.uUseSpace || false;\r\n// t_bUseSpace_B = currency?.bUseSpace || false;\r\n// t_bUseMiddleXWords = currency?.useMiddleZWords || false;\r\n// t_bNoUseSuffixWhen = currency?.noUseSuffixWhen || false;\r\n\r\n// if (t_sHundred_Sep.length === 0) {\r\n// t_sHundred_Sep = \" \";\r\n// }\r\n\r\n// let t_sXDName: Array = [];\r\n// let t_sXName: Array = [];\r\n// let t_sUName: Array = [];\r\n// let t_sNName: Array = [];\r\n\r\n// t_sXDName.push(\"\");\r\n// t_sXDName.push(currency?.xD2);\r\n// t_sXDName.push(currency?.xD1);\r\n\r\n// t_sXName.push(currency?.x0);\r\n// t_sXName.push(currency?.x1);\r\n// t_sXName.push(currency?.x2);\r\n// t_sXName.push(currency?.x3);\r\n// t_sXName.push(currency?.x4);\r\n// t_sXName.push(currency?.x5);\r\n\r\n// t_sUName.push(currency?.u0);\r\n// t_sUName.push(currency?.u1);\r\n// t_sUName.push(currency?.u2);\r\n// t_sUName.push(currency?.u3);\r\n// t_sUName.push(currency?.u4);\r\n// t_sUName.push(currency?.u5);\r\n// t_sUName.push(currency?.u6);\r\n// t_sUName.push(currency?.u7);\r\n\r\n// t_sNName.push(currency?.n0);\r\n// t_sNName.push(currency?.n1);\r\n// t_sNName.push(currency?.n2);\r\n// t_sNName.push(currency?.n3);\r\n// t_sNName.push(currency?.n4);\r\n// t_sNName.push(currency?.n5);\r\n// t_sNName.push(currency?.n6);\r\n// t_sNName.push(currency?.n7);\r\n// t_sNName.push(currency?.n8);\r\n// t_sNName.push(currency?.n9);\r\n// t_sNName.push(currency?.n10);\r\n// t_sNName.push(currency?.n11);\r\n// t_sNName.push(currency?.n12);\r\n// t_sNName.push(currency?.n13);\r\n// t_sNName.push(currency?.n14);\r\n// t_sNName.push(currency?.n15);\r\n// t_sNName.push(currency?.n16);\r\n// t_sNName.push(currency?.n17);\r\n// t_sNName.push(currency?.n18);\r\n// t_sNName.push(currency?.n19);\r\n// t_sNName.push(currency?.n20);\r\n// t_sNName.push(currency?.n30);\r\n// t_sNName.push(currency?.n40);\r\n// t_sNName.push(currency?.n50);\r\n// t_sNName.push(currency?.n60);\r\n// t_sNName.push(currency?.n70);\r\n// t_sNName.push(currency?.n80);\r\n// t_sNName.push(currency?.n90);\r\n\r\n// t_nDollarAmount = Math.trunc(vAmount);\r\n// t_nCentAmount = Math.trunc(round(vAmount - t_nDollarAmount, 2) * Math.pow(10, t_nCSize))\r\n// t_sProcessXNumbers = t_nDollarAmount.toString();\r\n// t_nMax = Math.trunc((t_sProcessXNumbers.length - 1) / t_nXSize);\r\n// t_nProcessLen = t_sProcessXNumbers.length % t_nXSize;\r\n\r\n// if (t_nProcessLen === 0)\r\n// t_nProcessLen = t_nXSize;\r\n\r\n// for (i = t_nMax; i >= 0; i += -1) {\r\n\r\n// t_sXNumbers = t_sProcessXNumbers.substring(0, t_nProcessLen);\r\n// t_sProcessXNumbers = t_sProcessXNumbers.substring(t_nProcessLen + 1 - 1);\r\n// t_nProcessLen = t_nXSize;\r\n// iPos = 0;\r\n// t_bXLast = false;\r\n// t_sCurrentLine = \"\";\r\n\r\n// for (j = t_sXNumbers.length; j >= 1; j += -1) {\r\n\r\n// iPos = iPos + 1;\r\n\r\n// t_bXLast = (t_bHundredMode && j === 2) || (j === 1);\r\n\r\n// if (t_bXLast) {\r\n// j = 1;\r\n// t_nCurrentValue = parseInt(t_sXNumbers.substring(iPos - 1));\r\n\r\n// } else {\r\n// t_nCurrentValue = parseInt(t_sXNumbers.substring(iPos - 1, 1));\r\n// }\r\n\r\n// // Select Case t_nCurrentValue\r\n// if (t_nCurrentValue === 0) {\r\n// t_sCurrentWords = \"\";\r\n// t_bIsHaveMiddleZero = true;\r\n// }\r\n// else if (t_nCurrentValue >= 1 && t_nCurrentValue <= 20) {\r\n// if (t_bUseMiddleXWords && t_bIsHaveMiddleZero) {\r\n// t_sCurrentWords = t_sNName[0];\r\n// t_bIsHaveMiddleZero = false;\r\n// }\r\n// else\r\n// t_sCurrentWords = \"\";\r\n\r\n// t_sCurrentWords = t_sCurrentWords + t_sNName[t_nCurrentValue];\r\n// }\r\n// else if (t_nCurrentValue >= 21 && t_nCurrentValue <= 99) {\r\n// if (t_bUseMiddleXWords && t_bIsHaveMiddleZero) {\r\n// t_sCurrentWords = t_sNName[0];\r\n// t_bIsHaveMiddleZero = false;\r\n// }\r\n// else\r\n// t_sCurrentWords = \"\";\r\n\r\n\r\n// t_nCurrentSubValue = parseInt(t_sXNumbers.substring(t_sXNumbers.length - 1, t_sXNumbers.length));\r\n// t_sCurrentWords = t_sCurrentWords + t_sNName[Math.floor((t_nCurrentValue / 10) + 18)] + t_sHundred_Sep + t_sNName[t_nCurrentSubValue];\r\n// }\r\n\r\n// if (t_sXName.length >= j && !_.isEmpty(t_sXName[j - 1]) && !_.isEmpty(t_sCurrentWords))\r\n// t_sCurrentWords = t_sCurrentWords + (t_bUseSpace_X ? \" \" : \"\") + t_sXName[j - 1]; // Two Hundred\r\n \r\n// t_sCurrentLine = t_sCurrentLine + (!(_.isEmpty(t_sCurrentLine) && !_.isEmpty(t_sCurrentWords ) && t_bUseSpace_X) ? \" \" : \"\") + t_sCurrentWords;\r\n\r\n// }\r\n\r\n// if (t_nMax === 0 && t_sCurrentLine === null)\r\n// t_sCurrentLine = t_sNName[0]; // Zero (Dollar)\r\n\r\n// if (!_.isEmpty(t_sCurrentLine)) {\r\n// t_sCurrentLine = t_sCurrentLine + ((!_.isEmpty(t_sUName[i]) && t_bUseSpace_U) ? \" \" : \"\") + t_sUName[i]; // Millon / Thousand / Dollar\r\n\r\n// if (!_.isEmpty(t_sBlock_Sep) && i !== t_nMax)\r\n// t_sCurrentLine = t_sBlock_Sep + (t_bUseSpace_B ? \" \" : \"\") + t_sCurrentLine;\r\n\r\n// t_sTemp = (t_bUseSpace_B && !_.isEmpty(result)) ? \" \" : \"\";\r\n// if (isOverLineMaxChars(result + t_sTemp + t_sCurrentLine, vMaxWidth))\r\n// result = result + \"\\r\\n\" + t_sCurrentLine;\r\n// else\r\n// result = result + t_sTemp + t_sCurrentLine;\r\n// }\r\n\r\n// }\r\n\r\n// t_sCurrentLine = \"\";\r\n\r\n// if (t_nCSize > 0) {\r\n\r\n// if (t_bCentsIsNumeric) {\r\n// if (t_nCentAmount === 0) {\r\n// if (!_.isEmpty(t_sCentName)) {\r\n\r\n// if (!_.isEmpty(t_sZeroCent))\r\n// t_sCurrentLine = t_sZeroCent;\r\n// else\r\n// t_sCurrentLine = \"\".padStart(t_nCSize, '0');\r\n// }\r\n// }\r\n// else\r\n// t_sCurrentLine = t_nCentAmount.toString();\r\n// if (!_.isEmpty(t_sCentName))\r\n// t_sCurrentLine = t_sCurrentLine + t_sCentName;\r\n// }\r\n// else {\r\n// t_sXNumbers = t_nCentAmount.toString();\r\n// iPos = 0;\r\n// t_bXLast = false;\r\n\r\n// for (j = t_sXNumbers.length; j >= 1; j += -1) {\r\n// iPos = iPos + 1;\r\n\r\n// t_bXLast = (t_bHundredMode && j === 2) || (j === 1);\r\n\r\n// if (t_bXLast) {\r\n// j = 1;\r\n// t_nCurrentValue = parseInt(t_sXNumbers.substring(iPos - 1));\r\n// if (t_nCurrentValue !== 0)\r\n// t_bIsHaveLowestUnit = true; // // Lowest Unit 사용여부\r\n// }\r\n// else\r\n// t_nCurrentValue = parseInt(t_sXNumbers.substring(iPos - 1, 1));\r\n\r\n// // Select Case t_nCurrentValue\r\n// if (t_nCurrentValue === 0)\r\n// t_sCurrentWords = \"\";\r\n// else if (t_nCurrentValue >= 1 && t_nCurrentValue <= 20)\r\n// t_sCurrentWords = t_sNName[t_nCurrentValue];\r\n// else if (t_nCurrentValue >= 21 && t_nCurrentValue <= 99) {\r\n// t_nCurrentSubValue = parseInt(t_sXNumbers.substring(t_sXNumbers.length - 1, t_sXNumbers.length));\r\n// t_sCurrentWords = t_sNName[Math.floor((t_nCurrentValue / 10) + 18)] + t_sHundred_Sep + t_sNName[t_nCurrentSubValue];\r\n// }\r\n\r\n\r\n// if (!_.isEmpty(t_sXDName[j]) && !_.isEmpty(t_sCurrentWords))\r\n// t_sCurrentWords = t_sCurrentWords + (t_bUseSpace_X ? \" \" : \"\") + t_sXDName[j]; // Two Hundred\r\n\r\n// t_sCurrentLine = t_sCurrentLine + ((!_.isEmpty(t_sCurrentLine) && !_.isEmpty(t_sCurrentWords) && t_bUseSpace_X) ? \" \" : \"\") + t_sCurrentWords;\r\n\r\n// }\r\n\r\n// if (result === null && t_sCurrentLine === null)\r\n// t_sCurrentLine = t_sNName[0]; // Zero (Cent)\r\n\r\n// if (!_.isEmpty(t_sCentName))\r\n// t_sCurrentLine = t_sCurrentLine + t_sCentName; // Cent\r\n// }\r\n\r\n// if (!_.isEmpty(t_sDollarCent_Sep) && !_.isEmpty(t_sCurrentLine))\r\n// t_sCurrentLine = t_sDollarCent_Sep + \" \" + t_sCurrentLine;\r\n\r\n// t_sTemp = (t_bUseSpace_B && !_.isEmpty(result)) ? \" \" : \"\";\r\n\r\n// if (isOverLineMaxChars(result + t_sTemp + t_sCurrentLine, vMaxWidth))\r\n// result = result + \"\\r\\n\" + t_sCurrentLine;\r\n// else\r\n// result = result + t_sTemp + t_sCurrentLine;\r\n\r\n// }\r\n\r\n\r\n// if (result.length > 0 && t_sSuffix.length > 0) {\r\n// if (!(t_bNoUseSuffixWhen && t_bIsHaveLowestUnit))\r\n// result = result + t_sSuffix;\r\n// }\r\n\r\n// return result;\r\n\r\n// }\r\n\r\n// function isOverLineMaxChars(vSource:string, vMaxLen:number){\r\n\r\n// let tCurLen;\r\n\r\n// let iPos = vSource.lastIndexOf('\\n');\r\n// if (iPos > 0)\r\n// tCurLen = vSource.length - iPos;\r\n// else\r\n// tCurLen = vSource.length;\r\n\r\n// return (tCurLen > vMaxLen);\r\n\r\n// }\r\n\r\n// }\r\n\r\nclass EditableCodeCurrencyInfoListItem extends CodeCurrencyListItem {\r\n isNew: boolean = false;\r\n isDelete: boolean = false;\r\n isUpdate: boolean = false;\r\n}\r\n\r\nfunction formatElement(data: any, index: number) {\r\n //return {...data, indicator: index + 1};\r\n\r\n const result = new EditableCodeCurrencyInfoListItem();\r\n result.indicator = index + 1;\r\n result.code = data.code;\r\n result.decimal = data.decimal;\r\n result.symbol = data.symbol;\r\n result.localSymbol = data.localSymbol;\r\n result.inactive = data.inactive;\r\n\r\n result.cid = data.cid;\r\n result.cid2 = data.cid2;\r\n result.isNew = false;\r\n result.isDelete = false;\r\n\r\n return result;\r\n}\r\n\r\nfunction formatData(data: Array) {\r\n return data.map((d, i) => formatElement(d, i));\r\n}\r\n\r\nfunction CodeRenderer({ data, row }: any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, { code: e.target.value, isUpdate: true })\r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nfunction DecimalRenderer({ data, row }: any) {\r\nconst changeLineItem = data[0].changeLineItem;\r\nconst l = data[row.index];\r\nreturn (\r\n
    \r\n {\r\n changeLineItem(row.index, { decimal, isUpdate: true })\r\n }} />\r\n
    \r\n);\r\n}\r\n\r\nfunction SymbolRenderer({ data, row }: any) {\r\nconst changeLineItem = data[0].changeLineItem;\r\nconst l = data[row.index];\r\nreturn (\r\n
    \r\n {\r\n changeLineItem(row.index, { symbol: e.target.value, isUpdate: true })\r\n }}\r\n />\r\n
    \r\n);\r\n}\r\n\r\nfunction LocalSymbolRenderer({ data, row }: any) {\r\nconst changeLineItem = data[0].changeLineItem;\r\nconst l = data[row.index];\r\nreturn (\r\n
    \r\n {\r\n changeLineItem(row.index, { localSymbol: e.target.value, isUpdate: true })\r\n }}\r\n />\r\n
    \r\n);\r\n}\r\n\r\nfunction CurrencyCodes({\r\n componentIndex\r\n}: {\r\n componentIndex: number\r\n}) {\r\n useFunction({invokers: {\r\n ifmsSettingsSave: save,\r\n ifmsSettingsCancel: cancelOperation,\r\n }});\r\n useFunctionKeys({ onEsc: cancelOperation, onSave: handleSaveAndClose });\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n // const {selectTableRow, tableNavigationCleanup } = useTableNavigation('codes-currency-list', onRowSelect, onRowDoubleSelect, ['code'], false, false, false);\r\n\r\n const tableRef = useRef(null);\r\n const masterTableRef = useRef(null);\r\n const savedDataRef = useRef>([]);\r\n const oriData = useRef([]);\r\n \r\n const [loading, setLoading] = useState(false);\r\n const [hasChanges, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, dataRef] = useFastStorage(`ifms-referenceFiles-currency-list`, []);\r\n \r\n //\r\n //const { setCleanState, dirtyCleanup} = useDirtyCheck(`ifms-referenceFiles-currency-editable`, ['edit', 'view']);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeCurrency);\r\n //const [selectedRow, setSelectedRow] = useState(-1);\r\n\r\n const [orderBy, setOrderBy] = useFastStorage(`ifms-referenceFiles-currency-code-orderby`, {\r\n orderBy: 'code',\r\n orderByAscending: true,\r\n });\r\n\r\n //const hasSelectedRow = !isNaN(selectedRow) && !(selectedRow < 0);\r\n const canBeAdd = listSec?.grantAdd;\r\n //const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n //const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n\r\n const tableHeight = 520;\r\n const listItemType = 'CodeCurrencyListItem';\r\n\r\n // function setCurrency(c:Partial, skipDirty:boolean = false) {\r\n // if (!skipDirty) {\r\n // setHasChanges(true);\r\n // }\r\n // _setCurrency(c);\r\n // }\r\n\r\n const [focusFirstCell, setFocusFirstCell] = useState(true);\r\n const { FilterButton, search } = useFilterBar(\r\n codesCurrencyList,\r\n undefined,\r\n getDefaultOrderBy, \r\n String(componentIndex)\r\n );\r\n\r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if (!modals)\r\n saveBtn.click();\r\n }\r\n }\r\n\r\n function getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'code',\r\n orderByAscending: true,\r\n };\r\n }\r\n\r\n function setData(d:Array, callByFetchData: boolean = false) {\r\n setFocusFirstCell(callByFetchData);\r\n _setData(d, null, { forceClone: callByFetchData });\r\n setHasChanges(checkTabIsDirty(CodeCurrencyListItem, oriData.current, d));\r\n }\r\n\r\n async function fetchData(api:any, search: Search) {\r\n setLoading(true);\r\n //\r\n setOrderBy(getDefaultOrderBy());\r\n\r\n setFocusFirstCell(false);\r\n setHasChanges(false);\r\n setLoading(false);\r\n }\r\n\r\n async function reload(clearAll: boolean = true) {\r\n const searchValue = clearAll ? initialSearch : search;\r\n await fetchData(appContext.api, searchValue);\r\n }\r\n\r\n function addLineItem() {\r\n const newRow = new EditableCodeCurrencyInfoListItem();\r\n newRow.isNew = true;\r\n\r\n return {\r\n setDataFunc: (list: any) => setData(list),\r\n curListData: data,\r\n newData: newRow\r\n };\r\n }\r\n\r\n function applyToLineItem(rowIndex: number, change: Partial | null) {\r\n if (!change || !data) {\r\n return;\r\n }\r\n const newData = [...data];\r\n const checkData = data[rowIndex];\r\n if (!change.isNew && (change.code !== checkData.code || change.decimal !== checkData.decimal || change.symbol !== checkData.symbol || change.localSymbol !== checkData.localSymbol || change.inactive !== checkData.inactive)) {\r\n _.merge(newData[rowIndex], { ...change, hasBeenChanged: true });\r\n setData(newData);\r\n //setHasChanges(true);\r\n }\r\n }\r\n\r\n function getIndexOfFirstInvalidCell(rowIndex: number): number | undefined {\r\n if (rowIndex < 0 || rowIndex > data.length - 1) return undefined;\r\n\r\n if (!data[rowIndex].code) return 1;\r\n if (!data[rowIndex].decimal) return 2;\r\n if (!data[rowIndex].symbol) return 3;\r\n if (!data[rowIndex].localSymbol) return 4;\r\n if (!data[rowIndex].inactive) return 5;\r\n \r\n return undefined;\r\n }\r\n\r\n async function duplicateCell(checkData: any) {\r\n let duplicateFieldText = '';\r\n\r\n let isDuplicate = false;\r\n let insList = checkData.filter((x: any) => x.isNew === true);\r\n let chgList = checkData.filter((x: any) => x.hasBeenChanged === true && !x.isNew);\r\n let focusRow = -1;\r\n\r\n if (insList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < insList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n\r\n for (let j = 0; j < data.length; j++) {\r\n if (insList[i].code.toUpperCase() === data[j].code.toUpperCase() && (insList[i].symbol ?? '').toUpperCase() === (data[j].symbol ?? '').toUpperCase()) {\r\n if (count === 0) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${insList[i].code}, ${insList[i].symbol}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (chgList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < chgList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n\r\n for (let j = 0; j < data.length; j++) {\r\n if ((chgList[i].code ?? '').toUpperCase() === data[j].code.toUpperCase() && (chgList[i].symbol ?? '').toUpperCase() === (data[j].symbol ?? '').toUpperCase()) {\r\n if (data[j].hasBeenChanged === true && !data[j].isNew && tempRow === -1) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${chgList[i].code}, ${chgList[i].symbol}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (!isDuplicate) {\r\n const apiResult = await appContext.api.checkDuplicatedKeys(JobNames.Currency, listItemType, insList, chgList);\r\n if (apiResult && apiResult.success && apiResult.message) {\r\n duplicateFieldText = `${apiResult.message}`;\r\n isDuplicate = true;\r\n } else if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog('Could not check duplication.\\r\\nPlease try later.');\r\n return true;\r\n }\r\n }\r\n else\r\n await showGlobalOkDialog(`${duplicateFieldText}Please try after correcting duplication.`);\r\n\r\n return isDuplicate;\r\n }\r\n\r\n function deleteEntity(index: number): boolean {\r\n if (!data){\r\n return false;\r\n }\r\n\r\n const element = data[index];\r\n if (!element.isNew) {\r\n let deleteRow = savedDataRef.current.find(x => x.code === element.code && x.symbol === element.symbol);\r\n if (deleteRow) {\r\n deleteRow.isDelete = true;\r\n }\r\n }\r\n data.splice(index, 1);\r\n setData(data);\r\n\r\n return true;\r\n }\r\n\r\n // function selectCurrencyForNew() {\r\n // const newCodeModel = new NCodeCurrency(); \r\n // setCurrency(newCodeModel, false);\r\n // setCleanState(newCodeModel);\r\n // }\r\n\r\n // async function selectCurrencyForEdit(){\r\n \r\n // await setCurrencyCodeDetail(false);\r\n // }\r\n\r\n // async function selectCurrencyForView(){\r\n \r\n // await setCurrencyCodeDetail(true);\r\n // }\r\n\r\n // async function selectCurrencyForDelete(){\r\n // const doConfirm = await showGlobalYesNoDialog(\r\n //
    \r\n //

    Confirm to Delete?

    \r\n //
    \r\n // );\r\n // if(doConfirm){\r\n // const apiResult = await appContext.api.deleteJobDetail(JobNames.Currency, { id:dataRef.current[selectedRow].id , pimsLinkId: 0 });\r\n // if (apiResult && apiResult.success) {\r\n // reload();\r\n // }else\r\n // showGlobalOkDialog(

    {\"Cannot delete\"}

    );\r\n // }else\r\n // return;\r\n // }\r\n\r\n\r\n function cancelOperation() {\r\n setHasChanges(false);\r\n removeData();\r\n // clearTableSelection();\r\n //removeCurrencyFromStorage();\r\n return true;\r\n }\r\n\r\n async function validCurrencyData(data: any) {\r\n let errorMsg1 = '';\r\n let errorMsg2 = '';\r\n \r\n data.forEach((item: any) => {\r\n if (!item.code) {\r\n errorMsg1 = appendLine(errorMsg1, \" * Must enter Currency Code\");\r\n }\r\n \r\n //const decimalValue = parseInt(String(item.decimal), 10);\r\n if (item.decimal < 0 || item.decimal > 4) {\r\n errorMsg2 = appendLine(errorMsg2, \" * Must enter only numbers between 0 and 4 - Decimal Digits\");\r\n }});\r\n\r\n if (errorMsg1) {\r\n await showGlobalOkDialog(

    {errorMsg1}

    );\r\n return false;\r\n } \r\n \r\n if (errorMsg2) {\r\n await showGlobalOkDialog(

    {errorMsg2}

    );\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n async function save() {\r\n //if (!currency) return;\r\n if (!data) return;\r\n\r\n const isValid = await validCurrencyData(data);\r\n if (!isValid) return;\r\n \r\n let validData = dataRef.current.filter((x: any) => x.code);\r\n let errMsg = '';\r\n const dataToSave = validData.filter((x: any) => x.isNew || x.hasBeenChanged === true);\r\n const dataToDelete = savedDataRef.current.filter((x) => x.isDelete);\r\n if(dataToSave.length === 0 && dataToDelete.length === 0) {\r\n if (hasChanges) reload(false);\r\n return;\r\n }\r\n setLoading(true);\r\n\r\n for (let i = 0; i < dataToDelete.length; ++i) {\r\n const s = dataToDelete[i];\r\n const apiResult:ApiResult = await appContext.api.saveListItem(listItemType, SQLType.Delete, _.omit(s, ['isDelete']));\r\n if (!apiResult || !apiResult.success) {\r\n errMsg = apiResult?.message ?? constants.SAVE_ERROR_MESSAGE;\r\n }\r\n }\r\n\r\n if (dataToSave.length > 0) {\r\n const isDuplicate = await duplicateCell(dataToSave);\r\n if (isDuplicate) {\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n const apiResult:ApiResult = await appContext.api.saveList(listItemType, dataToSave);\r\n if (!apiResult || !apiResult.success) {\r\n errMsg += (errMsg ? '\\n' : '' ) + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n } else {\r\n dataToSave.forEach((x: any) => {\r\n const index = data.findIndex((d: any) => d.code === x.code && d.symbol === x.symbol);\r\n if (index >= 0) {\r\n data[index].cid = x.code;\r\n data[index].cid2 = x.symbol;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if (x.isNew) {\r\n delete data[index].isNew;\r\n }\r\n })\r\n }\r\n }\r\n\r\n if (isValid) {\r\n // \r\n let currencies: Currency[] = [];\r\n \r\n data.forEach((item: any) => {\r\n currencies.push({\r\n id: item.id,\r\n currency: item.code,\r\n decimal: item.decimal,\r\n localSymbol: item.localSymbol,\r\n symbol: item.symbol,\r\n inactive: item.inactive\r\n })\r\n });\r\n // \r\n\r\n appContext.setSystemSettings({...appContext.systemSettings, currencies });\r\n\r\n reload(false);\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n }\r\n\r\n // View가 있던 기존 로직\r\n // let errorMsg1 = '';\r\n // let errorMsg2 = '';\r\n\r\n // if (currency.code === \"\") {\r\n // errorMsg2 = appendLine(errorMsg2, \" * Must enter Currency Code\");\r\n // }\r\n // if (currency.decimal < 0 || currency.decimal > 4) {\r\n // errorMsg2 = appendLine(errorMsg2, \" * Must enter only numbers between 0 and 4 - Decimal Digits\");\r\n // }\r\n // if (await appContext.api.checkupDuplicateFieldValueIsDuplicate(\"T_Ncodecurrency\", \"F_CODE\", currency?.code, \"F_ID\", currency?.id)) {\r\n // errorMsg1 = appendLine(errorMsg1, \" * Duplicate Currency Code\");\r\n // }\r\n\r\n // if (errorMsg1 || errorMsg2) {\r\n // if (errorMsg2) {\r\n // // Critical\r\n // await showGlobalOkDialog(

    Please check following information. (Specify the missing entries.)
    \r\n // {appendLine(errorMsg2, errorMsg1)}\r\n //

    )\r\n // return false;\r\n // } else {\r\n // // Warning\r\n // const confirm = await showGlobalYesNoDialog(

    Please check following information. (Do you want to save?)
    \r\n // {errorMsg1}\r\n //

    )\r\n // if (!confirm) return false;\r\n // }\r\n // }\r\n\r\n // const tEntity = new NCodeCurrency(currency);\r\n // tEntity.trackable = true;\r\n // setCurrency(tEntity, false);\r\n\r\n // if (!(currency as TrackableEntity).isDirty) {\r\n // cancelOperation();\r\n // reload();\r\n // return;\r\n // }\r\n // const sqlInfoList = getSQLInfoList(currency as TrackableEntity);\r\n // const apiResult: ApiResult = await appContext.api.saveJobDetail(JobNames.Currency,\r\n // sqlInfoList);\r\n\r\n // if(!apiResult || !apiResult.success) {\r\n // await showGlobalOkDialog(

    {apiResult?.message ?? constants.SAVE_ERROR_MESSAGE}

    );\r\n // return;\r\n // }\r\n // else {\r\n // await showGlobalOkDialog(

    The data has been saved

    );\r\n\r\n // if(apiResult.result && apiResult.result.insertList){\r\n // const insresult = apiResult.result.insertList.find(x => x.model === 'NCodeCurrency');\r\n // if (insresult) {\r\n // const newItem: any = {\r\n // id: insresult.newId,\r\n // code: currency.code,\r\n // symbol: currency.symbol,\r\n // decimal: currency.decimal,\r\n // localSymbol: currency.lSymbol,\r\n // inactive: currency.inactive\r\n // };\r\n // const newList = _.cloneDeep(data)\r\n // newList.splice(0, 0, newItem);\r\n // setData(formatData(newList));\r\n // }\r\n // } else {\r\n // const editItem = data.find((x: any) => x.id === currency.id);\r\n // editItem.code = currency.code;\r\n // editItem.symbol = currency.symbol;\r\n // editItem.decimal = currency.decimal;\r\n // editItem.localSymbol = currency.lSymbol;\r\n // editItem.inactive = currency.inactive;\r\n\r\n // const insIndex = data.findIndex((x:any) => x.id === currency.id);\r\n // const newList = _.cloneDeep(data);\r\n // newList.splice(insIndex, 1, editItem);\r\n // setData(formatData(newList));\r\n // }\r\n // }\r\n\r\n //cancelOperation();\r\n //dirtyCleanup();\r\n\r\n //reload\r\n //appContext.refreshSystemSettings();\r\n }\r\n\r\n function onHeaderClick(header: any) {\r\n if (header && header.id !== 'indicator') {\r\n if (header.id === orderBy.orderBy) {\r\n setOrderBy({ orderByAscending: !orderBy.orderByAscending });\r\n } else {\r\n setOrderBy({ orderBy: header.id, orderByAscending: true });\r\n }\r\n }\r\n\r\n removeData();\r\n sortingListData(CodeCurrencyListItem, data, setData, orderBy);\r\n }\r\n\r\n function cellValueChanged(rowIndex: number, accessor: string, value: any) {\r\n switch (accessor) {\r\n case 'inactive':\r\n applyToLineItem(rowIndex, { inactive: value });\r\n break;\r\n }\r\n }\r\n\r\n const currencyTableOptions:ApplicableTableSettings = {\r\n customTableId: 'codes-currency-list',\r\n ref: tableRef,\r\n selectable: false,\r\n tableName: 'currencyList',\r\n ...codesCurrencyList,\r\n height: `${tableHeight}px`,\r\n data: data.map((x: any, i: number) => ({ ...x, indicator: (i + 1).toString(), changeLineItem: applyToLineItem })),\r\n rowRenderers: [\r\n { accessor: 'indicator', nonSelectable: true },\r\n { accessor: 'code', EditCell: CodeRenderer },\r\n { accessor: 'decimal', EditCell: DecimalRenderer },\r\n { accessor: 'symbol', EditCell: SymbolRenderer },\r\n { accessor: 'localSymbol', EditCell: LocalSymbolRenderer },\r\n { accessor: 'inactive' },\r\n ],\r\n getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n if (accessor === 'code')\r\n return { type: TableCellTypes.Text, align:TableCellAligns.Center, value: rowData.code };\r\n else if (accessor === 'decimal')\r\n return { type: TableCellTypes.Number, align:TableCellAligns.Center, value: rowData.decimal, decimal: 0 };\r\n else if (accessor === 'symbol')\r\n return { type: TableCellTypes.Text, align:TableCellAligns.Center, value: rowData.symbol };\r\n else if (accessor === 'localSymbol')\r\n return { type: TableCellTypes.Text, align:TableCellAligns.Center, value: rowData.localSymbol };\r\n else if (accessor === 'inactive')\r\n return { type: TableCellTypes.Checkbox, value: rowData.inactive, onChangeFunc: (inactive: boolean) => cellValueChanged(rowIndex, accessor, inactive) };\r\n else\r\n return undefined;\r\n },\r\n isCellLock: (accessor: string, rowData: any): boolean => {\r\n if(!(listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel))\r\n return true\r\n else\r\n return false;\r\n },\r\n orderBy: [orderBy],\r\n onHeaderClick,\r\n useEditControls: (listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel),\r\n };\r\n \r\n useEffect(() => {\r\n if (isFilterObjectEmpty(search) && search.version === 1) reload(false);\r\n\r\n return () => {\r\n removeData();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n if (loading || (isFilterObjectEmpty(search) && search.version === 1)) {\r\n return;\r\n }\r\n fetchData(appContext.api, search);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [search]\r\n );\r\n \r\n useEffect(() => {\r\n if (dataRef.current?.length > 0 && !loading) {\r\n oriData.current = _.cloneDeep(data);\r\n savedDataRef.current = _.cloneDeep(data);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [loading]\r\n );\r\n\r\n return (\r\n
    \r\n {/* \r\n

    Currency Code

    \r\n
    */}\r\n {/*
    \r\n\r\n
    \r\n Double Click Currency to Edit\r\n
    \r\n \r\n
    */}\r\n\r\n \r\n
    \r\n
    \r\n Save\r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n { reload(false); }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    */}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {/*   New  \r\n   Edit  \r\n   View  \r\n   Delete  */}\r\n\r\n
    \r\n   \r\n
    \r\n { reload(false); }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n {/* */}\r\n {/* 0 ? (currency.view ? 'Currency View' : 'Currency Edit') : 'Currency New'} onCancel={cancelOperation}>\r\n {!!currency &&\r\n
    \r\n
    \r\n
    \r\n
    \r\n {currency.view && listSec?.grantEdit &&\r\n setCurrency({ view: false }, true)}> Edit\r\n }\r\n {!currency.view &&\r\n Save\r\n }\r\n  \r\n
      \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n
    */}\r\n\r\n listSec?.grantDel ?? false}\r\n />\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default CurrencyCodes;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeExchangeRateListItem extends SearchModelBase {\r\n exchageDate: string | null = null;\r\n fromExchageDate: string | null = null;\r\n toExchageDate: string | null = null;\r\n currency: string = '';\r\n rate: number|null = null;\r\n fromRate: number|null = null;\r\n toRate: number|null = null;\r\n createDate: string | null = null;\r\n fromCreateDate: string | null = null;\r\n toCreateDate: string | null = null;\r\n createBy: string = '';\r\n updateDate: string | null = null;\r\n fromUpdateDate: string | null = null;\r\n toUpdateDate: string | null = null;\r\n updateBy: string = '';\r\n id: number = 0;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'DATE', width: 100, dataIndex: 'exchageDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 1, text: 'CUR', width: 50, dataIndex: 'currency'}),\r\n XCol.Create({ col: 2, text: 'RATE', width: 80, dataIndex: 'rate', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.0000'}),\r\n XCol.Create({ col: 3, text: 'Create Date', width: 120, dataIndex: 'createDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 4, text: 'Create By', width: 80, dataIndex: 'createBy'}),\r\n XCol.Create({ col: 5, text: 'Update Date', width: 120, dataIndex: 'updateDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center}),\r\n XCol.Create({ col: 6, text: 'Update By', width: 80, dataIndex: 'updateBy'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeExchangeRateListItem.prototype.exchageDate, orderByAscending: false };\r\n\r\n public static formatData(data: CodeExchangeRateListItem[]) {\r\n return data.map((d: CodeExchangeRateListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n exchageDate: {from: 'fromExchageDate', to: 'toExchageDate'},\r\n rate: {from: 'fromRate', to: 'toRate'},\r\n createDate: {from: 'fromCreateDate', to: 'toCreateDate'},\r\n updateDate: {from: 'fromUpdateDate', to: 'toUpdateDate'},\r\n }\r\n}\r\n","import _ from 'lodash';\r\nimport {useContext, useEffect, useRef, useState} from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\n\r\nimport IfmsDate from '../../../ui/Date';\r\n\r\nimport {ApplicableTableSettings, codesExchangeRateList} from '../../../tableSettings';\r\n\r\nimport useFastStorage, { useTypedFastStorage } from '../../../hooks/useFastStorage';\r\nimport useFunction from '../../../hooks/useFunction';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\n\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport Float from '../../../ui/Float';\r\nimport useSystemSettings from '../../../hooks/useSystemSettings';\r\nimport {now, nowDate} from '../../../dateUtils';\r\nimport { findSecurityTask, isEveryPropertyEmpty } from '../../../util';\r\nimport { JobNames } from '../../../framework.core/JobNames';\r\nimport { CodeCurrencyListItem } from '../../../fms.data/models/CodeCurrencyListItem';\r\nimport { Search, initialSearch, isFilterObjectEmpty } from '../../../filtering';\r\nimport { CodeExchangeRateListItem } from '../../../fms.data/models/CodeExchangeRateListItem';\r\nimport { ApiResult, InsertResult } from '../../../framework.core/data/ApiResult';\r\nimport { SQLType } from '../../../framework.core/data/SQLInfo';\r\nimport { Portal } from 'react-portal';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport EditableTable, { CellData, EditableTableHandle, TableCellAligns, TableCellTypes, TableDateType } from '../../../ui/tables/editing/EditableTable';\r\nimport GreenButton from '../../../ui/GreenButton';\r\nimport { checkTabIsDirty } from '../ReferenceFiles';\r\nimport useFilterBar from '../../../hooks/useFilterBar';\r\nimport { ListOrderBy } from \"../../common/AbstractListView\";\r\nimport CurrencyDropDown from '../../../uiControls/CurrencyDropDown';\r\n\r\nimport BlackInverseButton from '../../../ui/BlackInverseButton';\r\nimport constants from '../../../constants';\r\nimport IFmsReferenceFilesContext from '../IfmsReferenceFilesContext';\r\nimport CloseButton from '../../../ui/CloseButton';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\n\r\n// function ActionRenderer({ data, row }:any) {\r\n// return (\r\n//
    \r\n// data[row.index].isNew ? data[row.index].onDelete() : data[row.index].requestOperationCancel()}\r\n// >\r\n// \r\n//   \r\n// data[row.index].onSave()}\r\n// >\r\n// \r\n//   \r\n// {!data[row.index].isNew && data[row.index].listSec?.grantDel &&\r\n// <>\r\n// data[row.index].onDelete()}\r\n// >\r\n// \r\n// \r\n// \r\n// }\r\n//
    \r\n// );\r\n// }\r\n\r\n\r\n// class EditableCodeExchangeRateListItem extends CodeExchangeRateListItem {\r\n// isNew: boolean = false;\r\n// isDelete: boolean = false;\r\n// }\r\n\r\nfunction EditableDateRenderer({data, row, cell}:any) {\r\n // useEffect(() => {\r\n // const focusElement = document.getElementById('ifms-exrate-date') as HTMLInputElement;\r\n // if (focusElement) {\r\n // focusElement.focus();\r\n // focusElement.select();\r\n // }\r\n // },\r\n // // eslint-disable-next-line react-hooks/exhaustive-deps\r\n // []\r\n // );\r\n\r\n const changeLineItem = data[0].changeLineItem;\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, {exchageDate: date, isUpdate: true});\r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nfunction CurRenderer({data, row, cell}:any) {\r\n \r\n const changeLineItem = data[0].changeLineItem;\r\n //const currencies = data[row.index].currencies as Array;\r\n return (\r\n
    \r\n {changeLineItem(row.index, {currency: primaryCurrency, isUpdate: true});}} />\r\n {/* {\r\n changeLineItem(row.index, {currency: e.target.value, isUpdate: true});\r\n }}\r\n items={currencies.map(x => ({\r\n label: x,\r\n value: x,\r\n }))}\r\n\r\n /> */}\r\n {/* ) => {\r\n inlineElement.cur = e.target.value;\r\n data[row.index].setHasChanges(true);\r\n }} /> */}\r\n
    \r\n );\r\n}\r\n\r\nfunction RateRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, {rate: rate, isUpdate: true});\r\n }}\r\n />\r\n
    \r\n );\r\n}\r\n\r\nfunction formatElement(data:any) {\r\n return data;\r\n}\r\n\r\nfunction formatData(data: Array) {\r\n return data.map(d => formatElement(d));\r\n}\r\n\r\nfunction ExchangeRateComponent({\r\n componentIndex\r\n}: {\r\n componentIndex: number\r\n}) {\r\n useFunction({invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n //ifmsReferenceFilesCancel: () => {}\r\n }});\r\n useFunctionKeys({ onSave: handleSaveAndClose });\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const systemSettings = useSystemSettings();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const tableRef = useRef(null);\r\n const masterTableRef = useRef(null);\r\n\r\n const [loading, setLoading] = useState(false);\r\n const [currencies, setCurrencies] = useState>([]);\r\n const [, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n\r\n const [data, _setData, removeData, dataRef] = useFastStorage(`ifms-referenceFiles-exchange-rate-list`, []);\r\n //const addingToTheFirstLine = useRef(false);\r\n const savedDataRef = useRef>([]);\r\n const oriData = useRef([]);\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeExchangeRate);\r\n\r\n const tableHeight = 520;\r\n const listItemType = 'CodeExchangeRateListItem';\r\n\r\n const [focusFirstCell, setFocusFirstCell] = useState(true);\r\n //const { selectTableRow } = useTableNavigation('exchange-rate-list', undefined, undefined, [], false, true, true);\r\n const { FilterButton, search } = useFilterBar(\r\n codesExchangeRateList,\r\n undefined,\r\n getDefaultOrderBy,\r\n String(componentIndex)\r\n );\r\n\r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if (!modals)\r\n saveBtn.click();\r\n }\r\n }\r\n\r\n function getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'currency',\r\n orderByAscending: true,\r\n };\r\n }\r\n\r\n function setData(d: any, callByFetchData: boolean = false) {\r\n setFocusFirstCell(callByFetchData);\r\n _setData(d, null, { forceClone: callByFetchData });\r\n setHasChanges(checkTabIsDirty(CodeExchangeRateListItem, oriData.current, d));\r\n }\r\n\r\n async function fetchData(api: any, search: Search) {\r\n setLoading(true);\r\n\r\n const apiResult = await api.getListItems(JobNames.ExchangeRate,\r\n listItemType,\r\n CodeExchangeRateListItem.calculateSearchParameters(search, CodeExchangeRateListItem.MapSearchFields),\r\n 1, search.pageSize);\r\n\r\n oriData.current = formatData(apiResult && apiResult.entities ? apiResult.entities : []);\r\n setData(formatData(apiResult && apiResult.entities ? apiResult.entities : []), true);\r\n savedDataRef.current = apiResult && apiResult.entities ? apiResult.entities : [];\r\n\r\n setFocusFirstCell(false);\r\n setLoading(false);\r\n setHasChanges(false);\r\n }\r\n\r\n async function loadCurrencies(api:any) {\r\n const apiResult= await api.getListItems(JobNames.Currency, \r\n 'CodeCurrencyListItem',\r\n CodeCurrencyListItem.calculateSearchParameters({ pageSize: 0} as Search, CodeCurrencyListItem.MapSearchFields), 1, 0); \r\n if (apiResult && apiResult.success && apiResult.entities) {\r\n setCurrencies(['', ...apiResult.entities.map((x:any) => x.code)]);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (isFilterObjectEmpty(search) && search.version === 1) reload(false);\r\n\r\n return () => {\r\n removeData();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n if (loading || (isFilterObjectEmpty(search) && search.version === 1)) {\r\n return;\r\n }\r\n\r\n fetchData(appContext.api, search);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [search]\r\n );\r\n\r\n useEffect(() => {\r\n if (dataRef.current?.length > 0 && !loading) {\r\n //selectTableRow(0);\r\n oriData.current = _.cloneDeep(data);\r\n savedDataRef.current = _.cloneDeep(data);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [loading]\r\n );\r\n\r\n async function reload(clearAll:boolean = true) {\r\n const searchValue = clearAll ? initialSearch : search;\r\n await loadCurrencies(appContext.api);\r\n await fetchData(appContext.api, searchValue);\r\n }\r\n\r\n function getIndexOfFirstInvalidCell(rowIndex: number):number|undefined {\r\n if(!data){\r\n return undefined;\r\n }\r\n if(!data[rowIndex].exchageDate){\r\n showGlobalOkDialog(

    The Data is invalid

    ); \r\n return 1;\r\n }\r\n if(!data[rowIndex].currency){\r\n showGlobalOkDialog(

    Select Currency

    );\r\n return 2;\r\n }\r\n if(data[rowIndex].rate !== null){\r\n if((data[rowIndex].rate ?? 0) <= 0 ){\r\n showGlobalOkDialog(

    The Rate must be greater than zero

    );\r\n return 3;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n // function addingLineToFirstLine(){\r\n // addingToTheFirstLine.current = true;\r\n // masterTableRef.current?.add();\r\n // }\r\n\r\n function addLineItem() {\r\n const currentDate = now();\r\n const newItem = new CodeExchangeRateListItem();\r\n newItem.createBy = systemSettings?.userId ?? '';\r\n newItem.createDate = currentDate;\r\n newItem.currency = currencies[0];\r\n newItem.id = 0;\r\n newItem.updateBy = systemSettings?.userId ?? '';\r\n newItem.updateDate = currentDate;\r\n newItem.exchageDate = nowDate();\r\n newItem.rate = 0;\r\n newItem.isNew = true;\r\n\r\n setHasChanges(true);\r\n\r\n return {\r\n setDataFunc: (list: any) => setData(list),\r\n curListData: data,\r\n newData: newItem\r\n };\r\n }\r\n\r\n function applyToLineItem(rowIndex: number, change: Partial|null) {\r\n if (!change || !data) {\r\n return;\r\n }\r\n const newData = [...data];\r\n const checkData = data[rowIndex];\r\n if (!change.isNew && (change.exchageDate !== checkData.exchageDate || change.currency !== checkData.currency ||\r\n change.rate !== checkData.rate)) {\r\n _.merge(newData[rowIndex], { ..._.omit(change, ['id']), hasBeenChanged: true });\r\n setData(newData);\r\n setHasChanges(true);\r\n }\r\n }\r\n\r\n function deleteEntity(index: number): boolean {\r\n if (!data) {\r\n return false;\r\n }\r\n\r\n const element = data[index];\r\n if (element.id > 0) {\r\n let deleteRow = savedDataRef.current.find(x => x.id === element.id);\r\n if (deleteRow) {\r\n deleteRow.isDelete = true;\r\n setHasChanges(true);\r\n }\r\n }\r\n data.splice(index, 1);\r\n setData(data);\r\n\r\n return true;\r\n }\r\n\r\n async function cancelOperation(){\r\n setHasChanges(false);\r\n removeData();\r\n return true;\r\n }\r\n\r\n async function save() {\r\n if(!data) return;\r\n\r\n let errMsg = '';\r\n const dataToSave = data.filter((x:any) => x.id <= 0 || x.hasBeenChanged === true);\r\n const dataToDelete = savedDataRef.current.filter((x) => x.isDelete);\r\n if(dataToSave.length === 0 && dataToDelete.length === 0) return;\r\n\r\n setLoading(true);\r\n\r\n for(let i = 0; i < dataToDelete.length; ++i){\r\n const s = dataToDelete[i];\r\n const apiResult:ApiResult = await appContext.api.saveListItem(listItemType, SQLType.Delete, _.omit(s, ['isDelete']));\r\n if(!apiResult || !apiResult.success)\r\n errMsg = apiResult?.message ?? constants.SAVE_ERROR_MESSAGE;\r\n }\r\n\r\n if(dataToSave.length > 0){\r\n const apiResult = await appContext.api.saveList(listItemType, dataToSave);\r\n\r\n if(!apiResult || !apiResult.success){\r\n errMsg += (errMsg ? '\\n' : '' ) + apiResult?.message;\r\n }\r\n\r\n if(apiResult?.result) {\r\n apiResult?.result.forEach((item: any) => {\r\n const index = data.findIndex((d: any) => d.id === item.oldId);\r\n if(index >= 0){\r\n data[index].id = item.newId;\r\n data[index].hasBeenChanged = false;\r\n }\r\n // 정상 저장된 경우 isNew Flag 제거\r\n if(item.isNew) {\r\n delete data[index].isNew;\r\n }\r\n });\r\n }\r\n }\r\n\r\n if(errMsg) {\r\n await showGlobalOkDialog(

    {errMsg}

    );\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n setData(data);\r\n savedDataRef.current = _.cloneDeep(data);\r\n oriData.current = _.cloneDeep(data);\r\n\r\n setLoading(false);\r\n setHasChanges(false);\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n }\r\n\r\n const additionalEmptyValuesAndProperties = {\r\n 'exchageDate': nowDate(),\r\n 'currency': currencies[0]\r\n };\r\n\r\n const OtherCompareProperties = [\r\n 'exchageDate',\r\n 'currency',\r\n 'rate',\r\n ];\r\n\r\n const tableOptions: ApplicableTableSettings = {\r\n customTableId: 'codes-exchange-rate-list',\r\n ref: tableRef,\r\n selectable: true,\r\n tableName: 'codesExchangeRateList',\r\n ...codesExchangeRateList,\r\n height: `${tableHeight}px`,\r\n //data: data.map((x:any, i:number) => ({...x, indicator: (i + 1).toString(), editIndex: ei, onDelete: deleteEntity, onSave: save, onCancel: cancelOperation, setHasChanges, currencies, requestOperationCancel, listSec })),\r\n data: (data ?? []).map((x: any, i: number) => ({ ...x, indicator: (i + 1).toString(), changeLineItem: applyToLineItem, currencies })),\r\n rowRenderers: [\r\n { accessor: 'indicator' },\r\n { accessor: 'exchageDate', EditCell: EditableDateRenderer },\r\n { accessor: 'currency', EditCell: CurRenderer },\r\n { accessor: 'rate', EditCell: RateRenderer },\r\n { accessor: 'createDate' },\r\n { accessor: 'createBy' },\r\n { accessor: 'updateDate' },\r\n { accessor: 'updateBy' },\r\n //{ accessor: 'action', Cell: ActionRenderer },\r\n ],\r\n getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n if (accessor === 'exchageDate')\r\n return { type: TableCellTypes.Date, dateType:TableDateType.Date, value: rowData.exchageDate };\r\n else if (accessor === 'currency')\r\n return { type: TableCellTypes.Text, value: rowData.currency ?? '' , align: TableCellAligns.Center };\r\n else if (accessor === 'rate')\r\n return { type: TableCellTypes.Number, decimal:4, value: rowData.rate};\r\n else if (accessor === 'createDate')\r\n return { type: TableCellTypes.Date, dateType:TableDateType.Date, value: rowData.createDate};\r\n else if (accessor === 'createBy')\r\n return { type: TableCellTypes.Text, value: rowData.createBy};\r\n else if (accessor === 'updateDate')\r\n return { type: TableCellTypes.Date, dateType:TableDateType.Date, value: rowData.updateDate};\r\n else if (accessor === 'updateBy')\r\n return { type: TableCellTypes.Text, value: rowData.updateBy};\r\n else\r\n return undefined;\r\n },\r\n isCellLock: (accessor: string, rowData: any): boolean => {\r\n if(!(listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel))\r\n return true\r\n else if (accessor === 'createDate'||accessor === 'createBy'||accessor === 'updateDate'||accessor === 'updateBy')\r\n return true;\r\n else\r\n return false;\r\n },\r\n\r\n useEditControls: (listSec && (listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel)) ?? true,\r\n };\r\n\r\n //const canSelectForNew = ei === -1;\r\n const canBeAdd = (listSec && listSec?.grantAdd) ?? true;\r\n\r\n return (\r\n
    \r\n {/* \r\n

    Exchange Rate

    \r\n
    */}\r\n\r\n \r\n
    \r\n
    \r\n Save\r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n \r\n \r\n \r\n
    */}\r\n
    \r\n
    \r\n\r\n {/*
    */}\r\n {/*
    \r\n\r\n \r\n Double Click Exchange Rate to Edit\r\n
    \r\n /div> */}\r\n\r\n {/*
    \r\n {setOrderBy({general1: generalText1 ? orderBy?.orderBy : null, generalText1})}} />\r\n
    */}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n   \r\n
    \r\n {/* { addingLineToFirstLine() }}>  Add Line   */}\r\n { reload(false); }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n {/*
    */}\r\n {/* */}\r\n
    \r\n {\r\n return !isEveryPropertyEmpty(_.pick(data[rowIndex], OtherCompareProperties), additionalEmptyValuesAndProperties)\r\n }}\r\n />\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default ExchangeRateComponent;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeCountryListItem extends SearchModelBase {\r\n isoCode: string = '';\r\n countryName: string = '';\r\n usCode: string = '';\r\n cid: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'ISO Code', width: 70, dataIndex: 'isoCode'}),\r\n XCol.Create({ col: 1, text: 'Country', width: 500, dataIndex: 'countryName', defaultColumnFocus : true}),\r\n XCol.Create({ col: 2, text: 'US Code', width: 60, dataIndex: 'usCode'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeCountryListItem.prototype.isoCode, orderByAscending: true };\r\n\r\n public static formatData(data: CodeCountryListItem[]) {\r\n return data.map((d: CodeCountryListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import _ from 'lodash';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nimport { ApplicableTableSettings, codesRegionCountryList } from '../../../../tableSettings';\r\n\r\nimport useFastStorage from '../../../../hooks/useFastStorage';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport { Search, initialSearch, isFilterObjectEmpty } from '../../../../filtering';\r\nimport { Portal } from 'react-portal';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { CodeCountryListItem } from '../../../../fms.data/models/CodeCountryListItem';\r\nimport { ApiResult, InsertResult } from '../../../../framework.core/data/ApiResult';\r\nimport { SQLType } from '../../../../framework.core/data/SQLInfo';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport GreenButton from '../../../../ui/GreenButton';\r\nimport EditableTable, { CellData, EditableTableHandle, TableCellAligns, TableCellTypes } from '../../../../ui/tables/editing/EditableTable';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport { checkTabIsDirty, sortingListData } from '../../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../../util';\r\nimport useFilterBar from '../../../../hooks/useFilterBar';\r\nimport { ListOrderBy } from \"../../../common/AbstractListView\";\r\n\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport constants from '../../../../constants';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\n\r\nclass EditableCodeCountryInfoListItem extends CodeCountryListItem {\r\n isNew: boolean = false;\r\n isDelete: boolean = false;\r\n isUpdate: boolean = false;\r\n}\r\n\r\n// function ActionRenderer({ data, row }: any) {\r\n// return (\r\n//
    \r\n// data[row.index].isNew ? data[row.index].onDelete() : data[row.index].requestOperationCancel()}\r\n// >\r\n// \r\n//   \r\n// data[row.index].onSave()}\r\n// >\r\n// \r\n//   \r\n// {!data[row.index].isNew && data[row.index].listSec?.grantDel &&\r\n// <>\r\n// data[row.index].onDelete()}\r\n// >\r\n// \r\n// \r\n// \r\n// }\r\n//
    \r\n// );\r\n// }\r\n\r\nfunction IsoCodeRenderer({data, row, cell}: any) {\r\n // useEffect(() => {\r\n // const focusElement = document.getElementById('ifms-isocode') as HTMLInputElement;\r\n // if (focusElement) {\r\n // focusElement.focus();\r\n // focusElement.select();\r\n // }\r\n // },\r\n // // eslint-disable-next-line react-hooks/exhaustive-deps\r\n // []\r\n // );\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index,{isoCode: e.target.value, isUpdate:true });\r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nfunction CountryNameRenderer({data, row, cell}: any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index,{countryName: e.target.value, isUpdate:true});\r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nfunction UsCodeRenderer({data, row, cell}: any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index,{usCode: e.target.value, isUpdate:true});\r\n }}\r\n />\r\n
    \r\n );\r\n}\r\n\r\nfunction formatElement(data: any) {\r\n const result = new EditableCodeCountryInfoListItem();\r\n result.isoCode = data.isoCode;\r\n result.countryName = data.countryName;\r\n result.usCode = data.usCode;\r\n result.cid = data.cid;\r\n result.isNew = false;\r\n result.isDelete = false;\r\n\r\n return result;\r\n}\r\n\r\nfunction formatData(data: Array) {\r\n return data.map(d => formatElement(d));\r\n}\r\n\r\nfunction CountryComponent({\r\n componentIndex\r\n}: {\r\n componentIndex: number\r\n}) {\r\n useFunction({invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n }});\r\n useFunctionKeys({ onSave: handleSaveAndClose });\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const savedDataRef = useRef>([]);\r\n const oriData = useRef([]);\r\n const tableRef = useRef(null);\r\n const masterTableRef = useRef(null);\r\n\r\n const [loading, setLoading] = useState(false);\r\n const [hasChanges, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, dataRef] = useFastStorage(`ifms-referenceFiles-region-country-list`, []);\r\n //const [ei, setEi, , ediRef] = useFastStorage(`ifms-referenceFiles-region-country-editindex`, -1);\r\n const [orderBy, setOrderBy] = useFastStorage(`ifms-referenceFiles-region-country-orderby`, {\r\n orderBy: 'isoCode',\r\n orderByAscending: true,\r\n // general1: 'ISOCode',\r\n // pageSize: systemSettings.defaultPageSize,\r\n });\r\n //const addingToTheFirstLine = useRef(false);\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeCountry);\r\n\r\n const tableHeight = 520;\r\n const listItemType = 'CodeCountryListItem';\r\n\r\n const [focusFirstCell, setFocusFirstCell] = useState(true);\r\n const { FilterButton, search } = useFilterBar(\r\n codesRegionCountryList,\r\n undefined,\r\n getDefaultOrderBy, \r\n String(componentIndex)\r\n );\r\n\r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if (!modals)\r\n saveBtn.click();\r\n }\r\n }\r\n\r\n function getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'isoCode',\r\n orderByAscending: true,\r\n };\r\n }\r\n\r\n function setData(d: any, callByFetchData: boolean = false) {\r\n setFocusFirstCell(callByFetchData);\r\n _setData(d, null, { forceClone: callByFetchData });\r\n setHasChanges(checkTabIsDirty(CodeCountryListItem, oriData.current, d));\r\n }\r\n\r\n async function fetchData(api:any, search:Search) {\r\n setLoading(true);\r\n const apiResult = await api.getListItems(JobNames.Country,\r\n listItemType,\r\n CodeCountryListItem.calculateSearchParameters(search),\r\n 1,\r\n search.pageSize);\r\n\r\n setData(formatData(apiResult && apiResult.entities ? apiResult.entities : []), true);\r\n setOrderBy(getDefaultOrderBy());\r\n \r\n setFocusFirstCell(false);\r\n setLoading(false);\r\n setHasChanges(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (isFilterObjectEmpty(search) && search.version === 1) reload(false);\r\n \r\n return () => {\r\n removeData();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n if (loading || (isFilterObjectEmpty(search) && search.version === 1)) {\r\n return;\r\n }\r\n fetchData(appContext.api, search);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [search]\r\n );\r\n\r\n useEffect(() => {\r\n if (dataRef.current?.length > 0 && !loading) {\r\n oriData.current = _.cloneDeep(data);\r\n savedDataRef.current = _.cloneDeep(data);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [loading]\r\n );\r\n\r\n async function reload(clearAll:boolean = true) {\r\n const searchValue = clearAll ? initialSearch : search;\r\n await fetchData(appContext.api, searchValue);\r\n }\r\n\r\n // async function requestOperationCancel() {\r\n // const doCancel = await showGlobalYesNoDialog(

    Are you sure you want to cancel Edit operation

    );\r\n // if (doCancel) {\r\n // cancelOperation(false)\r\n // } else {\r\n // setTimeout(() => {\r\n // selectTableRow(ediRef.current);\r\n // }, 80);\r\n // }\r\n // }\r\n\r\n // async function onRowIndexChanged(rowIndex: number) {\r\n // if (rowIndex < 0 && ediRef.current >= 0) {\r\n // setTimeout(() => {\r\n // selectTableRow(ediRef.current);\r\n // }, 80)\r\n // return;\r\n // }\r\n\r\n // if (ediRef.current >= 0 && ediRef.current !== rowIndex) {\r\n // await requestOperationCancel();\r\n // }\r\n // }\r\n\r\n // function onRowSelect(rowIndex: number) {\r\n // if (rowIndex >= 0 && rowIndex < dataRef.current.length && _.isEmpty(inlineElement) && (listSec?.grantEdit || listSec?.grantDel)) {\r\n // setHasChanges(true);\r\n // inlineElement = {...dataRef.current[rowIndex], isNew: false};\r\n // setEi(rowIndex);\r\n // }\r\n // }\r\n\r\n // function selectForNew() {\r\n // inlineElement = {\r\n // isoCode: '', countryName: '', usCode: '', isNew: true,\r\n // };\r\n // data.unshift(inlineElement);\r\n // setData(data);\r\n // setEi(0);\r\n // setHasChanges(true);\r\n // }\r\n\r\n async function cancelOperation(){\r\n setHasChanges(false);\r\n removeData();\r\n return true;\r\n }\r\n\r\n // function addingLineToFirstLine() {\r\n // addingToTheFirstLine.current = true;\r\n // masterTableRef.current?.add();\r\n // }\r\n\r\n function addLineItem() {\r\n const newRow = new EditableCodeCountryInfoListItem();\r\n newRow.isNew = true;\r\n\r\n return {\r\n setDataFunc: (list: any) => setData(list),\r\n curListData: data,\r\n newData: newRow\r\n };\r\n }\r\n\r\n function applyToLineItem(rowIndex: number, change: Partial | null) {\r\n if (!change || !data) {\r\n return;\r\n }\r\n const checkData = data[rowIndex];\r\n\r\n if (!change.isNew && (change.isoCode !== checkData.isoCode || change.countryName !== checkData.countryName || change.usCode !== checkData.usCode)) {\r\n _.merge(data[rowIndex], { ...change, hasBeenChanged: true });\r\n setData(data);\r\n //setHasChanges(true);\r\n }\r\n return true;\r\n }\r\n\r\n function getIndexOfFirstInvalidCell(rowIndex: number){\r\n if(!data[rowIndex].isoCode){\r\n return 1;\r\n }\r\n if(!data[rowIndex].countryName){\r\n return 2;\r\n }\r\n if(!data[rowIndex].usCode){\r\n return 3;\r\n }\r\n return undefined;\r\n }\r\n\r\n\r\n function deleteEntity(index: number): boolean {\r\n if (!data) {\r\n return false;\r\n }\r\n\r\n const element = data[index];\r\n if (!element.isNew) {\r\n let deleteRow = savedDataRef.current.find(x => x.countryName === element.countryName);\r\n if (deleteRow) {\r\n deleteRow.isDelete = true;\r\n //setHasChanges(true);\r\n }\r\n }\r\n data.splice(index, 1);\r\n setData(data);\r\n return true;\r\n }\r\n\r\n async function duplicateCell(checkData: any) {\r\n let duplicateFieldText = '';\r\n\r\n let isDuplicate = false;\r\n let insList = checkData.filter((x: any) => x.isNew === true);\r\n let chgList = checkData.filter((x: any) => x.hasBeenChanged === true && !x.isNew);\r\n let focusRow = -1;\r\n\r\n if (insList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < insList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (insList[i].countryName.toUpperCase() === data[j].countryName.toUpperCase()) {\r\n if (count === 0) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${insList[i].countryName}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (chgList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < chgList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (chgList[i].countryName.toUpperCase() === data[j].countryName.toUpperCase()) {\r\n if (data[j].hasBeenChanged === true && !data[j].isNew && tempRow === -1) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${chgList[i].countryName}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (!isDuplicate) {\r\n const apiResult = await appContext.api.checkDuplicatedKeys(JobNames.Country, listItemType, insList, chgList);\r\n if (apiResult && apiResult.success && apiResult.message) {\r\n duplicateFieldText = `${apiResult.message}`;\r\n isDuplicate = true;\r\n } else if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog('Could not check duplication.\\r\\nPlease try later.');\r\n return true;\r\n }\r\n }\r\n else\r\n await showGlobalOkDialog(`${duplicateFieldText}Please try after correcting duplication.`);\r\n\r\n return isDuplicate;\r\n }\r\n\r\n async function save() {\r\n // if (!inlineElement.isNew && !hasChanges) {\r\n // cancelOperation();\r\n // return;\r\n // }\r\n\r\n // = await appContext.api.saveListItem(listItemType,\r\n // inlineElement.isNew ? SQLType.Insert : SQLType.Update,\r\n // _.omit(inlineElement, ['isNew']));\r\n // if(!apiResult.success) {\r\n // await showGlobalOkDialog(

    {apiResult.message}

    );\r\n // return;\r\n // }\r\n\r\n // // isoCode is pkey\r\n // data[ei] = formatElement(inlineElement);\r\n // //pt220819>\r\n\r\n //cancelOperation(true);\r\n if (!data) {\r\n return;\r\n }\r\n\r\n let validData = dataRef.current.filter((x:any) => x.isoCode && x.countryName);\r\n\r\n let errMsg = '';\r\n const dataToSave = validData.filter((x:any, i:number) => x.isNew || x.hasBeenChanged === true);\r\n const dataToDelete = savedDataRef.current.filter((x) => x.isDelete);\r\n if(dataToSave.length === 0 && dataToDelete.length === 0) {\r\n if (hasChanges) reload(false);\r\n return;\r\n }\r\n setLoading(true);\r\n \r\n for(let i = 0; i < dataToDelete.length; ++i){\r\n const s = dataToDelete[i];\r\n const apiResult:ApiResult = await appContext.api.saveListItem(listItemType, SQLType.Delete, _.omit(s, ['isDelete']));\r\n if(!apiResult || !apiResult.success)\r\n errMsg = apiResult?.message ?? constants.SAVE_ERROR_MESSAGE;\r\n }\r\n \r\n if(dataToSave.length > 0){\r\n const isDuplicate = await duplicateCell(dataToSave);\r\n if(isDuplicate){\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n const apiResult:ApiResult = await appContext.api.saveList(listItemType,\r\n dataToSave);\r\n\r\n\r\n if(!apiResult || !apiResult.success){\r\n errMsg += (errMsg ? '\\n' : '' ) + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n }\r\n \r\n if(errMsg) {\r\n await showGlobalOkDialog(

    {errMsg}

    );\r\n setLoading(false);\r\n return;\r\n }\r\n \r\n \r\n dataToSave.forEach((x:any) => {\r\n const index = data.findIndex((d: any) => d.countryName === x.countryName);\r\n if(index >= 0){\r\n data[index].cid = x.countryName;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if(x.isNew){\r\n delete data[index].isNew;\r\n }\r\n })\r\n }\r\n \r\n // setData(data);\r\n // savedDataRef.current = _.cloneDeep(data);\r\n // oriData.current = _.cloneDeep(data);\r\n \r\n // setLoading(false);\r\n // setHasChanges(false);\r\n reload(false);\r\n\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n }\r\n\r\n function onHeaderClick(header: any) {\r\n if (header && header.id !== 'indicator') {\r\n if (header.id === orderBy.orderBy) {\r\n setOrderBy({ orderByAscending: !orderBy.orderByAscending });\r\n } else {\r\n setOrderBy({ orderBy: header.id, orderByAscending: true });\r\n }\r\n }\r\n\r\n removeData();\r\n sortingListData(CodeCountryListItem, data, setData, orderBy);\r\n }\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n customTableId: 'codes-region-country-list',\r\n ref: tableRef,\r\n selectable: true,\r\n tableName: 'regionCountryList',\r\n ...codesRegionCountryList,\r\n height: `${tableHeight}px`,\r\n // data: data.map((x:any, i:number) => ({...x, indicator: (i + 1).toString(), editIndex: ei, onDelete: deleteEntity, onSave: save, onCancel: cancelOperation, setHasChanges, requestOperationCancel, listSec})),\r\n data: data.map((x:any, i: number)=>({...x, indicator: (i + 1).toString(), changeLineItem : applyToLineItem })),\r\n rowRenderers: [\r\n { accessor: 'indicator' },\r\n { accessor: 'isoCode', EditCell: IsoCodeRenderer },\r\n { accessor: 'countryName', EditCell: CountryNameRenderer },\r\n { accessor: 'usCode', EditCell: UsCodeRenderer },\r\n // { accessor: 'action', Cell: ActionRenderer },\r\n ],\r\n getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n if (accessor === 'isoCode')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].isoCode };\r\n else if (accessor === 'countryName')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].countryName };\r\n else if (accessor === 'usCode')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].usCode, align: TableCellAligns.Center};\r\n else\r\n return undefined;\r\n },\r\n isCellLock: (accessor: string, rowData: any): boolean => {\r\n if(!(listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel))\r\n return true\r\n else\r\n return false;\r\n },\r\n orderBy: [orderBy],\r\n onHeaderClick,\r\n useEditControls: (listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel),\r\n };\r\n\r\n //const canSelectForNew = ei === -1;\r\n const canBeAdd = listSec?.grantAdd;\r\n\r\n return (\r\n
    \r\n {/* \r\n

    Region  Country

    \r\n
    \r\n setOrderBy({general1: generalText1 ? orderBy?.orderBy : null, generalText1})} />\r\n
    \r\n
    */}\r\n\r\n \r\n
    \r\n
    \r\n Save\r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n { reload(false); }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    */}\r\n
    \r\n
    \r\n\r\n {/*
    */}\r\n {/*
    \r\n\r\n
    \r\n Double Click Country to Edit\r\n
    \r\n
    */}\r\n\r\n\r\n {/*
    \r\n {\r\n await reload(generalText1 === null ? '' : generalText1);\r\n }}\r\n />\r\n
    */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n   \r\n
    \r\n {/* { addingLineToFirstLine() }}>   Add Line   */}\r\n { reload(false); }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {/* */}\r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default CountryComponent;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeStateListItem extends SearchModelBase {\r\n code: string = '';\r\n stateName: string = '';\r\n country: string = '';\r\n cid: string = '';\r\n cid2: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Code', width: 50, dataIndex: 'code'}),\r\n XCol.Create({ col: 1, text: 'State Name', width: 300, dataIndex: 'stateName'}),\r\n XCol.Create({ col: 2, text: 'Country', width: 100, dataIndex: 'country'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeStateListItem.prototype.code, orderByAscending: false };\r\n\r\n public static formatData(data: CodeStateListItem[]) {\r\n return data.map((d: CodeStateListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import _ from 'lodash';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faPlus, faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { ApplicableTableSettings, codesRegionStateList } from '../../../../tableSettings';\r\n\r\nimport {\r\n TextAlignLeftRenderer,\r\n TextRenderer,\r\n} from '../../../../uiControls/SmartTableRenderers';\r\n\r\nimport useFastStorage from '../../../../hooks/useFastStorage';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\nimport useGlobalYesNoDialog from '../../../../hooks/useGlobalYesNoDialog';\r\n\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport SecondaryButton from '../../../../ui/SecondaryButton';\r\nimport { Search, initialSearch, isFilterObjectEmpty } from '../../../../filtering';\r\nimport { Portal } from 'react-portal';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { CodeStateListItem } from '../../../../fms.data/models/CodeStateListItem';\r\nimport { ApiResult, InsertResult } from '../../../../framework.core/data/ApiResult';\r\nimport { SQLType } from '../../../../framework.core/data/SQLInfo';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport GreenButton from '../../../../ui/GreenButton';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport EditableTable, { CellData, EditableTableHandle, TableCellAligns, TableCellTypes } from '../../../../ui/tables/editing/EditableTable';\r\nimport { checkTabIsDirty, sortingListData } from '../../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../../util';\r\nimport useFilterBar from '../../../../hooks/useFilterBar';\r\nimport { ListOrderBy } from \"../../../common/AbstractListView\";\r\n\r\nimport postal from 'postal';\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport constants from '../../../../constants';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\n// function ActionRenderer({ data, row }: any) {\r\n// return (\r\n//
    \r\n// data[row.index].isNew ? data[row.index].onDelete() : data[row.index].requestOperationCancel()}\r\n// >\r\n// \r\n//   \r\n// data[row.index].onSave()}\r\n// >\r\n// \r\n//   \r\n// {!data[row.index].isNew && data[row.index].listSec?.grantDel &&\r\n// <>\r\n// data[row.index].onDelete()}\r\n// >\r\n// \r\n// \r\n// \r\n// }\r\n//
    \r\n// );\r\n// }\r\n\r\nfunction CodeRenderer({data, row, cell}: any) {\r\n // useEffect(() => {\r\n // const focusElement = document.getElementById('ifms-code') as HTMLInputElement;\r\n // if (focusElement) {\r\n // focusElement.focus();\r\n // focusElement.select();\r\n // }\r\n // },\r\n // // eslint-disable-next-line react-hooks/exhaustive-deps\r\n // []\r\n // );\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, {code: e.target.value, isUpdate: true})\r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nfunction StateRenderer({data, row, cell}: any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, {stateName: e.target.value, isUpdate: true})\r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nfunction CountryRenderer({data, row, cell}: any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, {country: e.target.value, isUpdate: true})\r\n }}\r\n // onTabNext={() => {\r\n // const focusElement = document.getElementById('ifms-code') as HTMLInputElement;\r\n // if (focusElement) {\r\n // focusElement.focus();\r\n // focusElement.select();\r\n // return true;\r\n // }\r\n // return false;\r\n // }}\r\n />\r\n
    \r\n );\r\n}\r\n\r\nclass EditableCodeStateInfoListItem extends CodeStateListItem {\r\n isNew: boolean = false;\r\n isDelete: boolean = false;\r\n isUpdate: boolean = false;\r\n}\r\n\r\nfunction formatElement(data: any) {\r\n const result = new EditableCodeStateInfoListItem();\r\n result.code = data.code;\r\n result.stateName = data.stateName;\r\n result.country = data.country;\r\n result.cid2 = data.cid2;\r\n result.cid = data.cid;\r\n result.isNew = false;\r\n result.isDelete = false;\r\n\r\n return result;\r\n}\r\n\r\nfunction formatData(data: Array) {\r\n return data.map(d => formatElement(d));\r\n}\r\n\r\nfunction StateComponent({\r\n componentIndex\r\n}: {\r\n componentIndex: number\r\n}) {\r\n useFunction({invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n }});\r\n useFunctionKeys({ onSave: handleSaveAndClose });\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n// const { selectTableRow, clearTableSelection, tableNavigationCleanup } = useTableNavigation('codes-region-state-list', onRowIndexChanged, onRowSelect, [], false, true, true);\r\n\r\n const tableRef = useRef(null);\r\n const masterTableRef = useRef(null);\r\n const savedDataRef = useRef>([]);\r\n const oriData = useRef([]);\r\n const [loading, setLoading] = useState(false);\r\n const [hasChanges, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, dataRef] = useFastStorage(`ifms-referenceFiles-region-state-list`, []);\r\n //const [ei, setEi, , ediRef] = useFastStorage(`ifms-referenceFiles-region-state-editindex`, -1);\r\n const [orderBy, setOrderBy] = useFastStorage(`ifms-referenceFiles-region-state-orderby`, {\r\n orderBy: 'code',\r\n orderByAscending: true,\r\n //general1: 'Code',\r\n //generalText1: '', //\r\n //pageSize: systemSettings.defaultPageSize,\r\n });\r\n //const addingToTheFirstLine = useRef(false);\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeState);\r\n\r\n const tableHeight = 520;\r\n const listItemType = 'CodeStateListItem';\r\n\r\n const [focusFirstCell, setFocusFirstCell] = useState(true);\r\n const { FilterButton, search } = useFilterBar(\r\n codesRegionStateList,\r\n undefined,\r\n getDefaultOrderBy, \r\n String(componentIndex)\r\n );\r\n\r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if (!modals)\r\n saveBtn.click();\r\n }\r\n }\r\n\r\n function getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'code',\r\n orderByAscending: true,\r\n };\r\n }\r\n\r\n function setData(d: any, callByFetchData: boolean = false) {\r\n setFocusFirstCell(callByFetchData);\r\n _setData(d, null, { forceClone: callByFetchData });\r\n setHasChanges(checkTabIsDirty(CodeStateListItem, oriData.current, d));\r\n }\r\n\r\n async function fetchData(api:any, search:Search) {\r\n setLoading(true);\r\n\r\n const apiResult = await api.getListItems(JobNames.State,\r\n listItemType,\r\n CodeStateListItem.calculateSearchParameters(search),\r\n 1, search.pageSize);\r\n\r\n setData(formatData(apiResult && apiResult.entities ? apiResult.entities : []), true);\r\n setOrderBy(getDefaultOrderBy());\r\n \r\n setFocusFirstCell(false);\r\n setLoading(false);\r\n setHasChanges(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (isFilterObjectEmpty(search) && search.version === 1) reload(false);\r\n\r\n return () => {\r\n removeData();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n if (loading || (isFilterObjectEmpty(search) && search.version === 1)) {\r\n return;\r\n }\r\n fetchData(appContext.api, search);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [search]\r\n );\r\n\r\n useEffect(() => {\r\n if (dataRef.current?.length > 0 && !loading) {\r\n oriData.current = _.cloneDeep(data);\r\n savedDataRef.current = _.cloneDeep(data);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [loading]\r\n );\r\n\r\n async function reload(clearAll:boolean = true) {\r\n const searchValue = clearAll ? initialSearch : search;\r\n await fetchData(appContext.api, searchValue);\r\n }\r\n\r\n // async function requestOperationCancel() {\r\n // const doCancel = await showGlobalYesNoDialog(

    Are you sure you want to cancel Edit operation

    );\r\n // if (doCancel) {\r\n // cancelOperation(false)\r\n // } else {\r\n // setTimeout(() => {\r\n // selectTableRow(ediRef.current);\r\n // }, 80);\r\n // }\r\n // }\r\n\r\n // async function onRowIndexChanged(rowIndex: number) {\r\n // if (rowIndex < 0 && ediRef.current >= 0) {\r\n // setTimeout(() => {\r\n // selectTableRow(ediRef.current);\r\n // }, 80)\r\n // return;\r\n // }\r\n\r\n // if (ediRef.current >= 0 && ediRef.current !== rowIndex) {\r\n // await requestOperationCancel();\r\n // }\r\n // }\r\n\r\n // function onRowSelect(rowIndex: number) {\r\n // if (rowIndex >= 0 && rowIndex < dataRef.current.length && _.isEmpty(inlineElement) && (listSec?.grantEdit || listSec?.grantDel)) {\r\n // setHasChanges(true);\r\n // inlineElement = {...dataRef.current[rowIndex], isNew: false};\r\n // setEi(rowIndex);\r\n // }\r\n // }\r\n\r\n // function selectForNew() {\r\n // inlineElement = {\r\n // code: '', stateName: '', country: '', isNew: true,\r\n // };\r\n // data.unshift(inlineElement);\r\n // setData(data);\r\n // setEi(0);\r\n // setHasChanges(true);\r\n // }\r\n\r\n // function addingLineToFirstLine(){\r\n // addingToTheFirstLine.current = true;\r\n // masterTableRef.current?.add();\r\n // }\r\n\r\n function addLineItem() {\r\n const newRow = new EditableCodeStateInfoListItem();\r\n newRow.isNew = true;\r\n\r\n return {\r\n setDataFunc: (list: any) => setData(list),\r\n curListData: data,\r\n newData: newRow\r\n };\r\n }\r\n\r\n function applyToLineItem(rowIndex: number, change: Partial|null) {\r\n if (!change || !data) {\r\n return;\r\n }\r\n const newData = [...data];\r\n const checkData = data[rowIndex];\r\n if (!change.isNew && (change.code !== checkData.code || change.stateName !== checkData.stateName || change.country !== checkData.country)) {\r\n _.merge(newData[rowIndex], { ...change, hasBeenChanged: true });\r\n setData(newData);\r\n //setHasChanges(true);\r\n }\r\n }\r\n\r\n async function cancelOperation(){\r\n setHasChanges(false);\r\n removeData();\r\n return true;\r\n }\r\n\r\n function getIndexOfFirstInvalidCell(rowIndex: number){\r\n if(!data[rowIndex].code){\r\n return 1;\r\n }\r\n if(!data[rowIndex].stateName){\r\n return 2;\r\n }\r\n if(!data[rowIndex].country){\r\n return 3;\r\n }\r\n return undefined;\r\n }\r\n\r\n async function duplicateCell(checkData: any) {\r\n let duplicateFieldText = '';\r\n\r\n let isDuplicate = false;\r\n let insList = checkData.filter((x: any) => x.isNew === true);\r\n let chgList = checkData.filter((x: any) => x.hasBeenChanged === true && !x.isNew);\r\n let focusRow = -1;\r\n\r\n if (insList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < insList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (insList[i].code.toUpperCase() === data[j].code.toUpperCase() && insList[i].country.toUpperCase() === data[j].country.toUpperCase()) {\r\n if (count === 0) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${insList[i].code}, ${insList[i].country}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (chgList.length > 0 && data.length > 0) {\r\n for (let i = 0; i < chgList.length; i++) {\r\n let count = 0;\r\n let tempRow = -1;\r\n for (let j = 0; j < data.length; j++) {\r\n if (chgList[i].code.toUpperCase() === data[j].code.toUpperCase() && chgList[i].country.toUpperCase() === data[j].country.toUpperCase()) {\r\n if (data[j].hasBeenChanged === true && !data[j].isNew && tempRow === -1) { tempRow = j; }\r\n count++;\r\n if (count > 1) {\r\n if (focusRow === -1) focusRow = tempRow;\r\n break;\r\n }\r\n }\r\n }\r\n if (count > 1) {\r\n duplicateFieldText += `'${chgList[i].code}, ${chgList[i].country}' is a duplicate value.\\r\\n`;\r\n isDuplicate = true;\r\n }\r\n }\r\n }\r\n\r\n if (!isDuplicate) {\r\n const apiResult = await appContext.api.checkDuplicatedKeys(JobNames.State, listItemType, insList, chgList);\r\n if (apiResult && apiResult.success && apiResult.message) {\r\n duplicateFieldText = `${apiResult.message}`;\r\n isDuplicate = true;\r\n } else if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog('Could not check duplication.\\r\\nPlease try later.');\r\n return true;\r\n }\r\n }\r\n else\r\n await showGlobalOkDialog(`${duplicateFieldText}Please try after correcting duplication.`);\r\n\r\n return isDuplicate;\r\n }\r\n\r\n function deleteEntity(index: number): boolean {\r\n if (!data) {\r\n return false;\r\n }\r\n\r\n const element = data[index];\r\n if (!element.isNew) {\r\n let deleteRow = savedDataRef.current.find(x => x.code === element.code && x.country === element.country)\r\n if (deleteRow) {\r\n deleteRow.isDelete = true;\r\n //setHasChanges(true);\r\n }\r\n }\r\n data.splice(index, 1);\r\n setData(data);\r\n return true;\r\n }\r\n\r\n async function save() {\r\n // if (!inlineElement.isNew && !hasChanges) {\r\n // cancelOperation();\r\n // return;\r\n // }\r\n\r\n // // = await appContext.api.saveListItem(listItemType,\r\n // inlineElement.isNew ? SQLType.Insert : SQLType.Update,\r\n // _.omit(inlineElement, ['isNew']));\r\n // if(!apiResult.success) {\r\n // await showGlobalOkDialog(

    {apiResult.message}

    );\r\n // return;\r\n // }\r\n\r\n // // code + country is pkey\r\n // data[ei] = formatElement(inlineElement);\r\n\r\n // //pt220819>\r\n // cancelOperation(true);\r\n if (!data) {\r\n return;\r\n }\r\n\r\n let validData = dataRef.current.filter((x:any) => x.code && x.stateName && x.country);\r\n\r\n let errMsg = '';\r\n const dataToSave = validData.filter((x:any, i:number) => x.isNew || x.hasBeenChanged === true);\r\n const dataToDelete = savedDataRef.current.filter((x) => x.isDelete);\r\n if(dataToSave.length === 0 && dataToDelete.length === 0) {\r\n if (hasChanges) reload(false);\r\n return;\r\n }\r\n setLoading(true);\r\n \r\n for(let i = 0; i < dataToDelete.length; ++i){\r\n const s = dataToDelete[i];\r\n const apiResult:ApiResult = await appContext.api.saveListItem(listItemType, SQLType.Delete, _.omit(s, ['isDelete']));\r\n if(!apiResult || !apiResult.success)\r\n errMsg = apiResult?.message ?? constants.SAVE_ERROR_MESSAGE;\r\n }\r\n\r\n if(dataToSave.length > 0){\r\n const isDuplicate = await duplicateCell(dataToSave);\r\n if(isDuplicate){\r\n setLoading(false);\r\n return;\r\n }\r\n\r\n const apiResult:ApiResult = await appContext.api.saveList(listItemType, dataToSave);\r\n if(!apiResult || !apiResult.success)\r\n errMsg += (errMsg ? '\\n' : '' ) + (apiResult?.message ?? constants.SAVE_ERROR_MESSAGE);\r\n\r\n else{\r\n dataToSave.forEach((x:any) => {\r\n const index = data.findIndex((d: any) => d.code === x.code && d.country === x.country);\r\n if(index >= 0){\r\n data[index].cid = x.code;\r\n data[index].cid2 = x.country;\r\n data[index].hasBeenChanged = false;\r\n }\r\n if(x.isNew){\r\n delete data[index].isNew;\r\n }\r\n })\r\n }\r\n \r\n }\r\n\r\n if(errMsg) {\r\n await showGlobalOkDialog(

    {errMsg}

    );\r\n setLoading(false);\r\n return;\r\n } \r\n\r\n // setData(data);\r\n // savedDataRef.current = _.cloneDeep(data);\r\n // oriData.current = _.cloneDeep(data);\r\n \r\n // setLoading(false);\r\n // setHasChanges(false);\r\n reload(false);\r\n\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n}\r\n\r\n function onHeaderClick(header: any) {\r\n if (header && header.id !== 'indicator') {\r\n if (header.id === orderBy.orderBy) {\r\n setOrderBy({ orderByAscending: !orderBy.orderByAscending });\r\n } else {\r\n setOrderBy({ orderBy: header.id, orderByAscending: true });\r\n }\r\n }\r\n\r\n removeData();\r\n sortingListData(CodeStateListItem, data, setData, orderBy);\r\n }\r\n\r\n const tableOptions: ApplicableTableSettings = {\r\n customTableId: 'codes-region-state-list',\r\n ref: tableRef,\r\n selectable: false,\r\n tableName: 'regionStateList',\r\n ...codesRegionStateList,\r\n height: `${tableHeight}px`,\r\n //data: data.map((x:any, i:number) => ({...x, indicator: (i + 1).toString(), editIndex: ei, onDelete: deleteEntity, onSave: save, onCancel: cancelOperation, setHasChanges, requestOperationCancel, listSec})),\r\n data: data.map((x: any, i: number) => ({ ...x, indicator: (i + 1).toString(), changeLineItem: applyToLineItem })),\r\n rowRenderers: [\r\n { accessor: 'indicator' },\r\n { accessor: 'code', EditCell: CodeRenderer },\r\n { accessor: 'stateName', EditCell: StateRenderer },\r\n { accessor: 'country', EditCell: CountryRenderer },\r\n // { accessor: 'action', Cell: ActionRenderer },\r\n ],\r\n getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n if (accessor === 'code')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].code };\r\n else if (accessor === 'stateName')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].stateName };\r\n else if (accessor === 'country')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].country, align: TableCellAligns.Center};\r\n else\r\n return undefined;\r\n },\r\n isCellLock: (accessor: string, rowData: any): boolean => {\r\n if(!(listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel))\r\n return true\r\n else\r\n return false;\r\n },\r\n orderBy: [orderBy],\r\n onHeaderClick,\r\n useEditControls: (listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel),\r\n };\r\n\r\n //const canSelectForNew = ei === -1;\r\n const canBeAdd = listSec?.grantAdd;\r\n\r\n return (\r\n
    \r\n {/* \r\n

    Region  State

    \r\n
    \r\n setOrderBy({general1: generalText1 ? orderBy?.orderBy : null, generalText1})} />\r\n
    \r\n
    */}\r\n \r\n \r\n
    \r\n
    \r\n Save\r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n { reload(false); }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    */}\r\n
    \r\n
    \r\n\r\n {/*
    \r\n {\r\n await reload(generalText1 === null ? '' : generalText1);\r\n }}\r\n />\r\n
    */}\r\n\r\n {/*
    \r\n\r\n
    \r\n Double Click State to Edit\r\n
    \r\n
    */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n   \r\n
    \r\n {/* { addingLineToFirstLine() }}>   Add Line   */}\r\n { reload(false); }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n {/* */}\r\n listSec?.grantDel??false}\r\n />\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default StateComponent;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeUNLocationListItem extends SearchModelBase {\r\n id: number = 0;\r\n unCode: string = '';\r\n unPortName: string = '';\r\n unCountry: string = '';\r\n usCode: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'UNCode', width: 100, dataIndex: 'unCode'}),\r\n XCol.Create({ col: 1, text: 'Port Name', width: 300, dataIndex: 'unPortName'}),\r\n XCol.Create({ col: 2, text: 'Country', width: 80, dataIndex: 'unCountry'}),\r\n XCol.Create({ col: 3, text: 'USCode', width: 100, dataIndex: 'usCode'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeUNLocationListItem.prototype.unCode, orderByAscending: true };\r\n\r\n public static formatData(data: CodeUNLocationListItem[]) {\r\n return data.map((d: CodeUNLocationListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\n\r\nexport class CodeOceanUnPort extends TrackableEntity {\r\n id: number = 0;\r\n unCode: string = '';\r\n unCodeSub: string = '';\r\n unPortName: string = '';\r\n unCountry: string = '';\r\n unCountryName: string = '';\r\n unCityName: string = '';\r\n subDiv: string = '';\r\n usCode: string = '';\r\n\r\n // for only front-end\r\n edit: boolean = false;\r\n view: boolean = false;\r\n isNew: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('id', 'unCodeSub');\r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n return CodeOceanUnPort.dicFieldMappings;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'unCode': new DBMappingInfo({ field: 'F_UnCode', table: 'T_CODEOCEANUNPORT' }),\r\n 'unPortName': new DBMappingInfo({ field: 'F_UNPortName', table: 'T_CODEOCEANUNPORT' }),\r\n 'unCountry': new DBMappingInfo({ field: 'F_UNCOUNTRY', table: 'T_CODEOCEANUNPORT' }),\r\n 'usCode': new DBMappingInfo({ field: 'F_USCODE', table: 'T_CODEOCEANUNPORT' }),\r\n 'subDiv': new DBMappingInfo({ field: 'F_SUBDIV', table: 'T_CODEOCEANUNPORT' }),\r\n 'unCityName': new DBMappingInfo({ field: 'F_UNCityName', table: 'T_CODEOCEANUNPORT' }),\r\n 'id': new DBMappingInfo({ field: 'F_Id', table: 'T_CODEOCEANUNPORT' }),\r\n\r\n };\r\n}\r\n","\r\nimport _ from 'lodash';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport useTableNavigation from '../../../../ui/tables/useTableNavigation';\r\n\r\nimport { ApplicableTableSettings, codesRegionUnLocationCodeList } from '../../../../tableSettings';\r\n\r\nimport {\r\n TextAlignLeftRenderer,\r\n TextRenderer,\r\n} from '../../../../uiControls/SmartTableRenderers';\r\n\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\n\r\nimport useFastStorage, { useTypedFastStorage } from '../../../../hooks/useFastStorage';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport useGlobalYesNoDialog from '../../../../hooks/useGlobalYesNoDialog';\r\n\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport SecondaryButton from '../../../../ui/SecondaryButton';\r\nimport { Search, initialSearch, isFilterObjectEmpty } from '../../../../filtering';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { CodeUNLocationListItem } from '../../../../fms.data/models/CodeUNLocationListItem';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport IfmsModal from '../../../../ui/IfmsModal';\r\nimport InlineInputControlRow from '../../../../ui/layout/InlineInputControlRow';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport useDirtyCheck from '../../../../hooks/useDirtyCheck2';\r\nimport { ApiResult } from '../../../../framework.core/data/ApiResult';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\nimport LeftRightSplit from '../../../../ui/LeftRightSplit';\r\nimport IsoCountryDropDown from '../../../../uiControls/IsoCountryDropDown';\r\nimport { CodeOceanUnPort } from '../../../../fms.core/CodeOceanUnPort';\r\nimport { checkPropDirty, getSQLInfoList } from '../../../../fms.core/data/TrackingModule';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\nimport { sortingListData } from '../../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../../util';\r\nimport useFilterBar from '../../../../hooks/useFilterBar';\r\nimport { ListOrderBy } from \"../../../common/AbstractListView\";\r\nimport postal from 'postal';\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport constants from '../../../../constants';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport { Portal } from 'react-portal';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\n\r\n\r\nfunction UnLocDetails({\r\n readonly,\r\n unLoc,\r\n onChange\r\n}:{\r\n readonly: boolean,\r\n unLoc:CodeOceanUnPort,\r\n onChange: (change: Partial) => void\r\n}) {\r\n return (\r\n
    \r\n
    \r\n \r\n onChange({unCountry: country?.value??'', unCountryName: country?.text??'', unCode: country?.value + unLoc.unCodeSub.toUpperCase() })}\r\n />\r\n }\r\n right={\r\n
    \r\n \r\n onChange({unCodeSub: e.target.value, unCode: unLoc.unCountry + e.target.value.toUpperCase()})} />\r\n \r\n  (Fixed Len: 5)\r\n
    \r\n }\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n onChange({unPortName: e.target.value})} />\r\n \r\n \r\n onChange({unCountry: e.target.value})} />\r\n }\r\n right={\r\n onChange({unCountryName: e.target.value})} />\r\n }\r\n />\r\n \r\n\r\n \r\n \r\n onChange({usCode: e.target.value})} />\r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\n\r\n// function ActionRenderer({ data, row }: any) {\r\n// return (\r\n//
    \r\n// { data[row.index].listSec?.grantDel && \r\n// data[row.index].onDelete()}\r\n// >\r\n// \r\n// \r\n// }\r\n//   \r\n \r\n// data[row.index].onSave()}\r\n// >\r\n// \r\n// \r\n//
    \r\n// );\r\n// }\r\n\r\nfunction UnCodeRenderer({data, row, cell}: any) {\r\n return ;\r\n}\r\n\r\nfunction UnPortNameRenderer({data, row, cell}: any) {\r\n return ;\r\n}\r\n\r\nfunction UnCountryRenderer({data, row, cell}: any) {\r\n return ;\r\n}\r\n\r\nfunction UsCodeRenderer({data, row, cell}: any) {\r\n return ;\r\n}\r\n\r\nfunction formatElement(data: any) {\r\n return data;\r\n}\r\n\r\nfunction formatData(data: Array) {\r\n return data.map(d => formatElement(d));\r\n}\r\n\r\nfunction UnLocationCode({\r\n componentIndex\r\n}: {\r\n componentIndex: number\r\n}) {\r\n useFunction({invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n }});\r\n useFunctionKeys({onEsc: cancelOperation});\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const { selectTableRow, tableNavigationCleanup } = useTableNavigation('codes-region-unloc-list', onRowSelect, selectUnLocForView, ['unCode'], false, false, false);\r\n\r\n const tableRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n const [, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, dataRef] = useFastStorage(`ifms-referenceFiles-region-unloc-list`, []);\r\n const [selectedRow, setSelectedRow] = useState(-1);\r\n\r\n const [unLocationCode, _setUnLocationCode, removeUnLocationCodeFromStorage, unLocationCodeRef] = useTypedFastStorage(`ifms-referenceFiles-unloc-editable`, null);\r\n const [orderBy, setOrderBy] = useFastStorage(`ifms-referenceFiles-region-unloc-orderby`, {\r\n orderBy: 'unCode',\r\n orderByAscending: true,\r\n //general1: 'UNCode',\r\n //generalText1: '', //\r\n //pageSize: systemSettings.defaultPageSize,\r\n });\r\n\r\n const { setCleanState, dirtyCleanup } = useDirtyCheck(`ifms-referenceFiles-region-unloc-type-editable`, ['edit', 'view']);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeUNLocation);\r\n\r\n const tableHeight = 520;\r\n const listItemType = 'CodeUNLocationListItem';\r\n \r\n const { FilterButton, search } = useFilterBar(\r\n codesRegionUnLocationCodeList,\r\n undefined,\r\n getDefaultOrderBy,\r\n String(componentIndex)\r\n );\r\n\r\n function getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'unCode',\r\n orderByAscending: true,\r\n };\r\n }\r\n\r\n function setUnLocationCode(b: any, skipDirty: boolean = false) {\r\n if (!skipDirty) {\r\n setHasChanges(true);\r\n }\r\n _setUnLocationCode(b);\r\n }\r\n\r\n function setData(d:Array) {\r\n removeData();\r\n _setData(d);\r\n }\r\n\r\n async function fetchData(api:any, search:Search) {\r\n setLoading(true);\r\n\r\n const apiResult = await api.getListItems(JobNames.UNLocation,\r\n listItemType,\r\n CodeUNLocationListItem.calculateSearchParameters(search),\r\n 1, search.pageSize);\r\n\r\n const fetchedTableData = formatData(apiResult && apiResult.entities ? apiResult.entities : []);\r\n sortingListData(CodeUNLocationListItem, fetchedTableData , setData, orderBy);\r\n setLoading(false);\r\n setHasChanges(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (isFilterObjectEmpty(search) && search.version === 1) reload(false);\r\n \r\n return () => {\r\n removeData();\r\n tableNavigationCleanup();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n if (loading || (isFilterObjectEmpty(search) && search.version === 1)) {\r\n return;\r\n }\r\n fetchData(appContext.api, search);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [search]\r\n );\r\n\r\n useEffect(() => {\r\n if (dataRef.current?.length > 0 && !loading) {\r\n selectTableRow(0, true);\r\n onRowSelect(0);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [loading]\r\n );\r\n\r\n async function reload(clearAll:boolean = true) {\r\n const searchValue = clearAll ? initialSearch : search;\r\n await fetchData(appContext.api, searchValue);\r\n }\r\n\r\n function onRowSelect(rowIndex: number) {\r\n setSelectedRow(!isNaN(rowIndex) ? rowIndex : -1 );\r\n }\r\n\r\n async function setUnLocDetail(isView: boolean, row: number = -1) {\r\n const tempRow = row > -1 ? row : selectedRow; // row double click시 row 값에 rowindex가 들어옴. 이를 우선시 해서 사용함. \r\n\r\n if (tempRow >= 0 && tempRow < dataRef.current.length && _.isEmpty(unLocationCode)) {\r\n const apiResult: ApiResult = await appContext.api.getJobDetail(JobNames.UNLocation,\r\n { id: dataRef.current[tempRow].id});\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

    );\r\n return null;\r\n } else {\r\n const detailData = { ...apiResult.result, edit: true, view: isView, editIndex: selectedRow};\r\n setCleanState(detailData);\r\n const tEntity = new CodeOceanUnPort(detailData);\r\n tEntity.trackable = true;\r\n setUnLocationCode(tEntity, true);\r\n }\r\n }\r\n }\r\n\r\n function selectForNew() {\r\n const newModel = new CodeOceanUnPort();\r\n newModel.edit = false;\r\n newModel.view = false;\r\n newModel.isNew = true;\r\n setUnLocationCode(newModel, false);\r\n setCleanState(newModel);\r\n\r\n if(unLocationCodeRef.current) {\r\n unLocationCodeRef.current.trackable = true;\r\n setUnLocationCode( {\r\n edit : false,\r\n view: false,\r\n });\r\n }\r\n }\r\n\r\n async function selectUnLocForView(row:number) {\r\n await setUnLocDetail(true, row);\r\n }\r\n \r\n async function selectUnLocForEdit() {\r\n await setUnLocDetail(false);\r\n }\r\n\r\n async function selectUnLocForDelete(){\r\n const doConfirm = await showGlobalYesNoDialog(\r\n
    \r\n

    Confirm to Delete?

    \r\n
    \r\n , false, 0, true, 'warning');\r\n if (doConfirm) {\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.UNLocation, { id:dataRef.current[selectedRow].id , pimsLinkId: 0 });\r\n if (apiResult && apiResult.success) {\r\n await reload(false);\r\n } \r\n else\r\n showGlobalOkDialog(

    {\"Cannot delete\"}

    );\r\n } \r\n else\r\n return;\r\n }\r\n\r\n function cancelOperation() {\r\n const filterNode = document.getElementById('ifms-list-screen-filter');\r\n const channel = postal.channel('ifms-filter');\r\n\r\n if (!filterNode) {\r\n setHasChanges(false);\r\n removeUnLocationCodeFromStorage();\r\n } else {\r\n channel.publish('ifms-filter.dismiss');\r\n }\r\n return true;\r\n }\r\n\r\n async function checkDataAsync(): Promise{\r\n if(!unLocationCode || !unLocationCodeRef.current){\r\n return true;\r\n }\r\n\r\n const unl = unLocationCodeRef.current;\r\n if(!unLocationCodeRef?.current.unCode || unLocationCodeRef.current.unCode.length !== 5){\r\n await showGlobalOkDialog(

    Please fill out the [UnCode] (Fixed Length: 5)

    );\r\n return false;\r\n } else if(unLocationCodeRef.current.unCode.length === 5 && checkPropDirty(unl, 'unCode')){\r\n if(await appContext.api.selectUnPort(unLocationCodeRef.current.unCode, unLocationCodeRef.current.id)){\r\n await showGlobalOkDialog(

    Duplicate Number in [UNCode]

    );\r\n return false;\r\n }\r\n return true;\r\n }\r\n return true;\r\n }\r\n\r\n async function deleteEntity() {\r\n if(!unLocationCode){\r\n return;\r\n }\r\n if(unLocationCode.isNew){\r\n cancelOperation();\r\n return;\r\n }\r\n\r\n const doDelete = await showGlobalYesNoDialog(

    Are you sure you want to delete?

    , false, 0, true, 'warning');\r\n if(!doDelete){\r\n return;\r\n }\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.UNLocation, { id: unLocationCode.id});\r\n if(!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.SAVE_ERROR_MESSAGE}

    );\r\n return;\r\n }\r\n cancelOperation();\r\n await reload(false);\r\n }\r\n\r\n async function save() {\r\n if(!unLocationCode){\r\n return;\r\n }\r\n if(!unLocationCodeRef.current?.isDirty){\r\n if(!unLocationCode.edit){\r\n const isDataValid = await checkDataAsync();\r\n if(!isDataValid){\r\n return;\r\n }\r\n }\r\n cancelOperation();\r\n reload(false);\r\n return;\r\n }else{\r\n const isDataValid = await checkDataAsync();\r\n if(!isDataValid){\r\n return;\r\n }\r\n cancelOperation();\r\n }\r\n const sqlInfoList = getSQLInfoList(unLocationCode);\r\n const apiResult = await appContext.api.saveJobDetail(JobNames.UNLocation, sqlInfoList);\r\n\r\n if (apiResult && apiResult.success) {\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n\r\n if (apiResult.result) {\r\n const insresult = apiResult.result.insertList[0].newId;\r\n if (insresult) {\r\n const newItem: any = {\r\n id: insresult,\r\n unCode: unLocationCode.unCode,\r\n unCodeSub: unLocationCode.unCodeSub,\r\n unPortName: unLocationCode.unPortName,\r\n unCountry: unLocationCode.unCountry,\r\n unCountryName: unLocationCode.unCountryName,\r\n unCityName: unLocationCode.unCityName,\r\n subDiv: unLocationCode.subDiv,\r\n usCode: unLocationCode.usCode,\r\n };\r\n const newList = _.cloneDeep(data)\r\n newList.splice(0, 0, newItem);\r\n setData(formatData(newList));\r\n\r\n selectTableRow(0);\r\n }\r\n }\r\n else {\r\n const editItem = data.find((x: any) => x.id === unLocationCode.id);\r\n editItem.unCode = unLocationCode.unCode;\r\n editItem.unCodeSub = unLocationCode.unCodeSub;\r\n editItem.unPortName = unLocationCode.unPortName;\r\n editItem.unCountry = unLocationCode.unCountry;\r\n editItem.unCountryName = unLocationCode.unCountryName;\r\n editItem.unCityName = unLocationCode.unCityName;\r\n editItem.subDiv = unLocationCode.subDiv; \r\n editItem.usCode = unLocationCode.usCode;\r\n\r\n const insIndex = data.findIndex((x:any) => x.id === unLocationCode.id);\r\n const newList = _.cloneDeep(data);\r\n newList.splice(insIndex, 1, editItem);\r\n setData(formatData(newList));\r\n\r\n selectTableRow(insIndex);\r\n }\r\n\r\n cancelOperation();\r\n dirtyCleanup(); \r\n }\r\n }\r\n\r\n function onHeaderClick(header: any) {\r\n if (header && header.id !== 'indicator') {\r\n if (header.id === orderBy.orderBy) {\r\n setOrderBy({ orderByAscending: !orderBy.orderByAscending });\r\n } else {\r\n setOrderBy({ orderBy: header.id, orderByAscending: true });\r\n }\r\n }\r\n sortingListData(CodeUNLocationListItem, data, setData, orderBy);\r\n }\r\n \r\n const tableOptions:ApplicableTableSettings = {\r\n customTableId: 'codes-region-unloc-list',\r\n ref: tableRef,\r\n selectable: true,\r\n tableName: 'regionUnLocationList',\r\n ...codesRegionUnLocationCodeList,\r\n height: `${tableHeight}px`,\r\n data: data.map((x:any, i:number) => ({...x, indicator: (i + 1).toString()})),\r\n rowRenderers: [\r\n { accessor: 'indicator', Cell: TextRenderer },\r\n { accessor: 'unCode', Cell: UnCodeRenderer },\r\n { accessor: 'unPortName', Cell: UnPortNameRenderer },\r\n { accessor: 'unCountry', Cell: UnCountryRenderer },\r\n { accessor: 'usCode', Cell: UsCodeRenderer },\r\n //{ accessor: 'action', Cell: ActionRenderer },\r\n ],\r\n orderBy: [orderBy],\r\n onHeaderClick\r\n };\r\n\r\n const hasSelectedRow = !isNaN(selectedRow) && !(selectedRow < 0);\r\n const canBeAdd = listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n\r\n return (\r\n
    \r\n {/* \r\n

    Region  UN Location

    \r\n
    \r\n setOrderBy({general1: generalText1 ? orderBy?.orderBy : null, generalText1})} />\r\n
    \r\n
    */}\r\n\r\n {/*
    \r\n
    \r\n\r\n
    \r\n Double Click UN Location to Edit\r\n
    \r\n
    */}\r\n\r\n {/*
    \r\n {\r\n await reload(generalText1 === null ? '' : generalText1);\r\n }}\r\n />\r\n
    */}\r\n\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n {/*
    \r\n {cancelOperation(); reload(); }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    */}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n   \r\n
    \r\n New  \r\n View  \r\n Edit  \r\n Delete \r\n { cancelOperation(); reload(false); }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n {/*
    */}\r\n\r\n
    \r\n \r\n
    \r\n \r\n {!!unLocationCode &&\r\n
    \r\n \r\n
    \r\n {canBeEdit && !unLocationCode.view &&\r\n \r\n SAVE\r\n \r\n }\r\n {canBeEdit && unLocationCode.view &&\r\n setUnLocationCode({ edit: true, view: false })}\r\n >\r\n Edit\r\n \r\n }\r\n\r\n {!unLocationCode.isNew && !unLocationCode.view && listSec?.grantDel &&\r\n \r\n DELETE\r\n \r\n }\r\n \r\n CANCEL\r\n \r\n
    \r\n
    \r\n }\r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default UnLocationCode;\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeEDI315ListItem extends SearchModelBase {\r\n id: number = 0;\r\n description: string = '';\r\n status: string = '';\r\n equipment: string = '';\r\n check: boolean = false;\r\n ediOrder: number|null = 0;\r\n toEdiOrder: number|null = null;\r\n fromEdiOrder: number|null = null;\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Event Description', width: 300, dataIndex: 'description'}),\r\n XCol.Create({ col: 1, text: 'Status', width: 60, dataIndex: 'status'}),\r\n XCol.Create({ col: 2, text: 'Equipment', width: 70, dataIndex: 'equipment'}),\r\n XCol.Create({ col: 3, text: 'Order', width: 100, dataIndex: 'ediOrder', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeEDI315ListItem.prototype.ediOrder, orderByAscending: false };\r\n\r\n public static formatData(data: CodeEDI315ListItem[]) {\r\n return data.map((d: CodeEDI315ListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n ediOrder: {from: 'fromEdiOrder', to: 'toEdiOrder'},\r\n }\r\n}\r\n","import _ from 'lodash';\r\nimport {useContext, useEffect, useRef, useState} from 'react';\r\nimport {faSync} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\nimport {ApplicableTableSettings, codesEdi315List} from '../../../tableSettings';\r\n\r\nimport useFastStorage from '../../../hooks/useFastStorage';\r\nimport useFunction from '../../../hooks/useFunction';\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport useSystemSettings from '../../../hooks/useSystemSettings';\r\nimport { Search } from '../../../filtering';\r\nimport { JobNames } from '../../../framework.core/JobNames';\r\nimport { CodeEDI315ListItem } from '../../../fms.data/models/CodeEDI315ListItem';\r\nimport { SQLType } from '../../../framework.core/data/SQLInfo';\r\nimport { Portal } from 'react-portal';\r\nimport EditableTable, { CellData, EditableTableHandle, TableCellAligns, TableCellTypes } from '../../../ui/tables/editing/EditableTable';\r\nimport { FmsSecTask } from '../../../fms.core/constants';\r\nimport GreenButton from '../../../ui/GreenButton';\r\nimport ClearableSearch from '../../../uiControls/ClearableSearch';\r\nimport TextBox from '../../../ui/TextBox';\r\nimport { checkTabIsDirty } from '../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../util';\r\nimport Float from '../../../ui/Float';\r\n \r\nimport BlackInverseButton from '../../../ui/BlackInverseButton';\r\nimport constants from '../../../constants';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport IFmsReferenceFilesContext from '../IfmsReferenceFilesContext';\r\nimport CloseButton from '../../../ui/CloseButton';\r\nimport useFunctionKeys from '../../../hooks/useFunctionKeys';\r\n\r\ninterface IEdi315 {\r\n description?: string,\r\n status?: string,\r\n equipment?: string,\r\n ediOrder?:number,\r\n isNew?: boolean,\r\n}\r\n\r\nfunction EventDescriptionRenderer({data, row, cell}:any) {\r\n // useEffect(() => {\r\n // const focusElement = document.getElementById('ifms-eventdescription') as HTMLInputElement;\r\n // if (focusElement) {\r\n // focusElement.focus();\r\n // focusElement.select();\r\n // }\r\n // },\r\n // // eslint-disable-next-line react-hooks/exhaustive-deps\r\n // []\r\n // );\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index,{description: e.target.value, isUpdate:true})\r\n }} />\r\n
    \r\n );\r\n}\r\n\r\n\r\nfunction StatusRenderer({data, row, cell}:any) {\r\n\r\n const l = data[row.index];\r\n const changeLineItem = data[0].changeLineItem;\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index,{status: e.target.value, isUpdate:true})\r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nfunction EquipRenderer({data, row, cell}:any) {\r\n const l = data[row.index];\r\n const changeLineItem = data[0].changeLineItem;\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index,{equipment: e.target.value, isUpdate:true})\r\n }} />\r\n
    \r\n );\r\n}\r\n\r\nfunction OrderRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n return (\r\n
    \r\n {\r\n changeLineItem(row.index, {ediOrder: ediOrder, isUpdate: true});\r\n }}\r\n />\r\n {/* {\r\n const i = parseInt(e.target.value);\r\n changeLineItem(row.index, {ediOrder : (isNaN(i) ? undefined : i), isUpdate:true })\r\n }}\r\n autoComplete=\"off\"\r\n list=\"autocompleteOff\"\r\n data-tooltip=\"-from-value\"\r\n \r\n data-tooltip-onlywhencutoff\r\n /> */}\r\n
    \r\n );\r\n}\r\n\r\n\r\nfunction formatElement(data:any) {\r\n return data;\r\n}\r\n\r\nfunction formatData(data: Array) {\r\n return data.map(d => formatElement(d));\r\n}\r\n\r\nfunction Edi315Component() {\r\n useFunction({invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n }});\r\n useFunctionKeys({ onSave: handleSaveAndClose });\r\n \r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const systemSettings = useSystemSettings();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n \r\n const tableRef = useRef(null);\r\n const masterTableRef = useRef(null);\r\n const savedDataRef = useRef>([]);\r\n const oriData = useRef([]);\r\n //const addingToTheFirstLine = useRef(false);\r\n\r\n const [loading, setLoading] = useState(false);\r\n const [hasChanges, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, ] = useFastStorage(`ifms-referenceFiles-edi315-list`, []);\r\n //const [ei, setEi, , ] = useFastStorage(`ifms-referenceFiles-edi315-editindex`, -1);\r\n const [orderBy, setOrderBy] = useFastStorage(`ifms-referenceFiles-edi315-orderby`, {\r\n orderBy: 'description',\r\n orderByAscending: true,\r\n general1: 'Description',\r\n //generalText1: '', //\r\n pageSize: systemSettings.defaultPageSize,\r\n });\r\n\r\n const tableHeight = 520;\r\n const listItemType = 'CodeEDI315ListItem';\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeEDI315Code);\r\n const [focusFirstCell, setFocusFirstCell] = useState(true);\r\n\r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if (!modals)\r\n saveBtn.click();\r\n }\r\n }\r\n\r\n function setData(d:Array, callByFetchData: boolean = false) {\r\n setFocusFirstCell(callByFetchData);\r\n _setData(d, null, { forceClone: callByFetchData });\r\n setHasChanges(checkTabIsDirty(CodeEDI315ListItem, oriData.current, d));\r\n }\r\n\r\n async function fetchData(api:any, search: Search) {\r\n setLoading(true);\r\n\r\n const apiResult = await api.getListItems(JobNames.EDI310Code,\r\n listItemType,\r\n CodeEDI315ListItem.calculateSearchParameters(search,CodeEDI315ListItem.MapSearchFields),\r\n 1, search.pageSize);\r\n oriData.current = formatData(apiResult && apiResult.entities ? apiResult.entities : []);\r\n setData(formatData(apiResult && apiResult.entities ? apiResult.entities : []), true);\r\n savedDataRef.current = apiResult && apiResult.entities ? apiResult.entities : [];\r\n\r\n setFocusFirstCell(false);\r\n setLoading(false);\r\n setHasChanges(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (data.length === 0)\r\n reload();\r\n else {\r\n oriData.current = _.cloneDeep(data);\r\n savedDataRef.current = _.cloneDeep(data);\r\n }\r\n return () => {\r\n removeData();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n // useEffect(() => {\r\n // inlineElement = {};\r\n // setEi(-1);\r\n // reload();\r\n // return () => {\r\n // tableNavigationCleanup();\r\n // };\r\n // },\r\n // // eslint-disable-next-line react-hooks/exhaustive-deps\r\n // []\r\n // );\r\n\r\n\r\n async function reload(generalText:string = '') {\r\n setOrderBy({\r\n orderBy: 'description',\r\n orderByAscending: true,\r\n pageSize: systemSettings.defaultPageSize,\r\n generalText1: generalText,\r\n })\r\n\r\n await fetchData(appContext.api, orderBy);\r\n }\r\n \r\n function applyToLineItem(rowIndex:number, change:any) {\r\n if (!change) {\r\n return;\r\n }\r\n const newData = [...data]; \r\n const checkData = data[rowIndex];\r\n if (!change.isNew && (change.description !== checkData.description || change.status !== checkData.status ||\r\n change.equipment !== checkData.equipment || change.ediOrder !== checkData.ediOrder)) {\r\n _.merge(newData[rowIndex], {...change, hasBeenChanged: true});\r\n //setHasChanges(true);\r\n setData(newData);\r\n }\r\n }\r\n // function addingLineToFirstLine(){\r\n // addingToTheFirstLine.current = true;\r\n // masterTableRef.current?.add();\r\n // }\r\n\r\n function addLineItem() {\r\n return {\r\n setDataFunc: (list: any) => setData(list),\r\n curListData: data,\r\n newData: { id: 0, description: '', status: '', equipment: '', ediOrder: null, isNew: true }\r\n };\r\n }\r\n \r\n function cancelOperation() {\r\n setHasChanges(false);\r\n removeData();\r\n return true;\r\n }\r\n\r\n function deleteEntity(index: number): boolean {\r\n if(!data){\r\n return false;\r\n }\r\n\r\n const element = data[index];\r\n if(element.id > 0 ){\r\n let deleteRow = savedDataRef.current.find(x=>x.id === element.id)\r\n if(deleteRow){\r\n deleteRow.isDelete = true;\r\n //setHasChanges(true);\r\n }\r\n }\r\n data.splice(index, 1);\r\n setData(data);\r\n return true;\r\n }\r\n\r\n async function save() {\r\n // if (!inlineElement.isNew && !hasChanges) {\r\n // cancelOperation();\r\n // return false;\r\n // }\r\n\r\n // x.description);\r\n validData.forEach((x: any) => {\r\n if (x.ediOrder === null)\r\n x.ediOrder = undefined;\r\n })\r\n\r\n let errMsg = '';\r\n const newData = validData.filter((x:any) => x.id <= 0 || x.hasBeenChanged === true);\r\n const deleteData = savedDataRef.current.filter((x)=>x.isDelete);\r\n if(newData.length === 0 && deleteData.length === 0) {\r\n if (hasChanges) reload(orderBy?.generalText1 || '');\r\n return;\r\n }\r\n setLoading(true);\r\n \r\n for(let i = 0; i < deleteData.length; ++i){\r\n const s = deleteData[i];\r\n const apiResult = await appContext.api.saveListItem(listItemType,SQLType.Delete, _.omit(s,['isDelete']));\r\n if(!apiResult || !apiResult.success){\r\n errMsg = apiResult?.message ?? constants.SAVE_ERROR_MESSAGE;\r\n }\r\n }\r\n if(newData.length > 0){\r\n const apiResult = await appContext.api.saveList(listItemType, newData);\r\n\r\n if(!apiResult || !apiResult.success){\r\n errMsg += (errMsg ? '\\n' : '' ) + apiResult?.message;\r\n }\r\n\r\n if(apiResult?.result) {\r\n apiResult?.result.forEach((item: any) => {\r\n const index = data.findIndex((d: any) => d.id === item.oldId);\r\n if(index >= 0){\r\n data[index].id = item.newId;\r\n data[index].hasBeenChanged = false;\r\n }\r\n });\r\n }\r\n }\r\n\r\n //pt220819>\r\n //cancelOperation(true);\r\n if(errMsg) {\r\n await showGlobalOkDialog(

    {errMsg}

    );\r\n setLoading(false);\r\n return;\r\n }\r\n // setData(data);\r\n // savedDataRef.current = _.cloneDeep(data);\r\n // oriData.current = _.cloneDeep(data);\r\n \r\n // setLoading(false);\r\n // setHasChanges(false);\r\n //cancelOperation();\r\n reload(orderBy?.generalText1 || '');\r\n \r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n }\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n customTableId: 'codes-edi315-list',\r\n ref: tableRef,\r\n selectable: true,\r\n tableName: 'edi315TypeList',\r\n ...codesEdi315List,\r\n height: `${tableHeight}px`,\r\n //data: data.map((x:any, i:number) => ({...x, indicator: (i + 1).toString(), editIndex: ei, onDelete: deleteEntity, onSave: save, onCancel: cancelOperation, setHasChanges, requestOperationCancel})),\r\n data: data.map((x:any, i: number) => ({...x, indicator:(i+1).toString(), changeLineItem : applyToLineItem})),\r\n rowRenderers: [\r\n { accessor: 'indicator' },\r\n { accessor: 'description', EditCell: EventDescriptionRenderer },\r\n { accessor: 'status', EditCell: StatusRenderer },\r\n { accessor: 'equipment', EditCell: EquipRenderer },\r\n { accessor: 'ediOrder', EditCell: OrderRenderer },\r\n //{ accessor: 'action', Cell: ActionRenderer },\r\n ],\r\n getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n if (accessor === 'description')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].description };\r\n else if (accessor === 'status')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].status, align: TableCellAligns.Center };\r\n else if (accessor === 'equipment')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].equipment, align: TableCellAligns.Center};\r\n else if (accessor === 'ediOrder')\r\n return { type: TableCellTypes.Number, decimal:0, value: data[rowIndex].ediOrder, align: TableCellAligns.Center};\r\n else\r\n return undefined;\r\n },\r\n isCellLock: (accessor: string, rowData: any): boolean => {\r\n if(!(listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel))\r\n return true\r\n else\r\n return false;\r\n },\r\n useEditControls: (listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel),\r\n };\r\n\r\n //const canSelectForNew = ei === -1;\r\n\r\n return (\r\n
    \r\n {/* \r\n

    EDI315

    \r\n
    */}\r\n\r\n \r\n
    \r\n
    \r\n Save\r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n { reload(orderBy?.generalText1 || '') }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    */}\r\n
    \r\n
    \r\n\r\n\r\n\r\n
    \r\n
    \r\n {/* setOrderBy({general1: generalText1 ? orderBy?.orderBy : null, generalText1})} /> */}\r\n {await reload(generalText1 === null ? '' : generalText1); }} />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n {// { addingLineToFirstLine() }}>  Add Line   \r\n }\r\n { reload(orderBy?.generalText1 || '') }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {/* */}\r\n {return undefined}}\r\n canDeleteRow={rowNumber => listSec?.grantDel??false}\r\n />\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default Edi315Component;","import _ from 'lodash';\r\nimport {useContext, useEffect, useRef, useState} from 'react';\r\nimport {faPlus, faSync} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\nimport {ApplicableTableSettings, codesMemoTitleList} from '../../../../tableSettings';\r\n\r\nimport useFastStorage from '../../../../hooks/useFastStorage';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\n\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport useSystemSettings from '../../../../hooks/useSystemSettings';\r\nimport { Search } from '../../../../filtering';\r\nimport { CodeMemoTitleListItem } from '../../../../fms.data/models/CodeMemoTitleListItem';\r\nimport { SQLType } from '../../../../framework.core/data/SQLInfo';\r\nimport { Portal } from 'react-portal';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport EditableTable, { CellData, EditableTableHandle, TableCellTypes } from '../../../../ui/tables/editing/EditableTable';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport GreenButton from '../../../../ui/GreenButton';\r\nimport { checkTabIsDirty } from '../../ReferenceFiles';\r\nimport { findSecurityTask } from '../../../../util';\r\n\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\n\r\nfunction DescriptionRenderer({data, row, cell}:any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const l = data[row.index];\r\n return (\r\n changeLineItem(row.index, {description: e.target.value, isUpdate: true})} />\r\n );\r\n}\r\n\r\nfunction formatElement(data:any) {\r\n const result = new CodeMemoTitleListItem();\r\n result.id = data.id;\r\n result.code = data.code;\r\n result.description = data.description;\r\n result.inactive = false;\r\n\r\n return result;\r\n}\r\n\r\nfunction formatData(data: Array) {\r\n return data.map(d => formatElement(d));\r\n}\r\n\r\nfunction MemoTitleComponent() {\r\n useFunction({invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n //ifmsReferenceFilesCancel: () => {},\r\n }});\r\n useFunctionKeys({onSave: handleSaveAndClose});\r\n \r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const tableRef = useRef(null);\r\n const masterTableRef = useRef(null);\r\n \r\n const [loading, setLoading] = useState(false);\r\n const [hasChanges, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, /*dataRef*/] = useFastStorage(`ifms-referenceFiles-memotitle-list`, []);\r\n\r\n const savedDataRef = useRef>([]);\r\n const oriData = useRef([]);\r\n //const addingToTheFirstLine = useRef(false);\r\n\r\n const tableHeight = 520;\r\n const listItemType = 'CodeMemoTitleListItem';\r\n const systemSettings = useSystemSettings();\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeMemoTitle);\r\n const [focusFirstCell, setFocusFirstCell] = useState(true);\r\n \r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelector('[class^=\"ReactModal__Content\"]');\r\n if (!modals)\r\n saveBtn.click();\r\n }\r\n }\r\n\r\n async function cancelOperation(){\r\n setHasChanges(false);\r\n removeData();\r\n return true;\r\n }\r\n\r\n function setData(d:Array, callByFetchData: boolean = false) {\r\n setFocusFirstCell(callByFetchData);\r\n _setData(d, null, { forceClone: callByFetchData });\r\n setHasChanges(checkTabIsDirty(CodeMemoTitleListItem, oriData.current, d));\r\n }\r\n\r\n async function fetchData(api:any) {\r\n setLoading(true);\r\n //\r\n\r\n savedDataRef.current = apiResult && apiResult.entities ? apiResult.entities : [];\r\n\r\n setFocusFirstCell(false);\r\n setLoading(false);\r\n //setHasChanges(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (data.length === 0)\r\n reload();\r\n else {\r\n oriData.current = _.cloneDeep(data);\r\n savedDataRef.current = _.cloneDeep(data);\r\n }\r\n return () => {\r\n removeData();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n \r\n function reload() {\r\n fetchData(appContext.api);\r\n }\r\n\r\n function getIndexOfFirstInvalidCell(rowIndex: number):number|undefined {\r\n if (!data) {\r\n return undefined;\r\n }\r\n\r\n if (!data[rowIndex].description || data[rowIndex].description.trim().length === 0 ) {\r\n return 1;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n function deleteRow(index: number): boolean {\r\n if (!data) {\r\n return false;\r\n }\r\n\r\n const element = data[index];\r\n\r\n //const wasNew = element.id <= 0;\r\n\r\n if (element.id > 0) {\r\n // setLoading(true);\r\n // const apiResult:ApiResult = await appContext.api.saveListItem(listItemType, SQLType.Delete, _.omit(data[index], ['isNew']));\r\n\r\n // setLoading(false);\r\n // window.console.log(apiResult);\r\n\r\n let deleteRow = savedDataRef.current.find(x => x.id === element.id);\r\n if (deleteRow) {\r\n deleteRow.isDelete = true;\r\n //setHasChanges(true);\r\n }\r\n }\r\n\r\n data.splice(index, 1);\r\n\r\n setData(data);\r\n\r\n // if (!wasNew) {\r\n // await showGlobalOkDialog(

    The data has been deleted

    );\r\n // }\r\n\r\n return true;\r\n }\r\n\r\n function applyToLineItem(rowIndex: number, change: Partial|null) {\r\n if (!change || !data) {\r\n return;\r\n }\r\n const checkData = data[rowIndex];\r\n if (!change.isNew && (change.code !== checkData.code || change.description !== checkData.description)) {\r\n _.merge(data[rowIndex], { ..._.omit(change, ['id']), hasBeenChanged: true });\r\n setData(data);\r\n //setHasChanges(true);\r\n }\r\n }\r\n\r\n // function addingLineToFirstLine(){\r\n // addingToTheFirstLine.current = true;\r\n // masterTableRef.current?.add();\r\n // }\r\n\r\n function addLineItem() {\r\n const newItem = new CodeMemoTitleListItem();\r\n newItem.code = '';\r\n newItem.description = '';\r\n newItem.id = 0;\r\n newItem.inactive = false;\r\n newItem.isNew = true;\r\n\r\n return {\r\n setDataFunc: (list: any) => setData(list),\r\n curListData: data,\r\n newData: newItem\r\n };\r\n }\r\n\r\n async function save() {\r\n if (!data) {\r\n return;\r\n }\r\n\r\n let validData = data.filter((x:any) => x.description);\r\n \r\n //let errMsg = '';\r\n const dataToSave = validData.filter((x:any) => x.id <= 0 || x.hasBeenChanged === true); // new data is always last so index check works\r\n const dataToDelete = savedDataRef.current.filter((x) => x.isDelete);\r\n if(dataToSave.length === 0 && dataToDelete.length === 0) {\r\n if (hasChanges) reload();\r\n return;\r\n }\r\n setLoading(true);\r\n\r\n for(let i = 0; i < dataToDelete.length; ++i){\r\n const s = dataToDelete[i];\r\n //const apiResult:ApiResult = \r\n await appContext.api.saveListItem(listItemType, SQLType.Delete, _.omit(s, ['isDelete']));\r\n \r\n // if(!apiResult.success)\r\n // errMsg = apiResult.message;\r\n }\r\n\r\n if(dataToSave.length > 0){\r\n const apiResult = await appContext.api.saveList(listItemType, dataToSave);\r\n\r\n // if(!apiResult.success){\r\n // errMsg += (errMsg ? '\\n' : '' ) + apiResult.message;\r\n // }\r\n\r\n if(apiResult && apiResult.result) {\r\n apiResult.result.forEach((item: any) => {\r\n const index = data.findIndex((d: any) => d.id === item.oldId);\r\n if(index >= 0){\r\n data[index].id = item.newId;\r\n data[index].hasBeenChanged = false;\r\n }\r\n });\r\n }\r\n }\r\n\r\n // setData(data);\r\n // savedDataRef.current = _.cloneDeep(data);\r\n\r\n // setLoading(false);\r\n\r\n // setHasChanges(false);\r\n reload();\r\n \r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n }\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n customTableId: 'codes-memotitle-list',\r\n ref: tableRef,\r\n tableName: 'memoTitleList',\r\n ...codesMemoTitleList,\r\n height: `${tableHeight}px`,\r\n data: data.map((x:any) => ({...x, changeLineItem: applyToLineItem})),\r\n rowRenderers: [\r\n { accessor: 'indicator' },\r\n { accessor: 'description', EditCell: DescriptionRenderer },\r\n ],\r\n getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n if (accessor === 'description')\r\n return { type: TableCellTypes.Text, value: data[rowIndex].description };\r\n else\r\n return undefined;\r\n },\r\n isCellLock: (accessor: string, rowData: any): boolean => {\r\n if(!(listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel))\r\n return true\r\n else\r\n return false;\r\n },\r\n useEditControls: (listSec?.grantAdd || listSec?.grantEdit || listSec?.grantDel),\r\n };\r\n\r\n //const memoCount = data ? data.length : 0;\r\n return (\r\n
    \r\n {/* \r\n

    Memo Title

    \r\n
    */}\r\n\r\n \r\n
    \r\n
    \r\n Save\r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n \r\n \r\n \r\n
    */}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n {// { addingLineToFirstLine() }}>  Add Line   \r\n }\r\n { reload() }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n listSec?.grantDel ?? false}\r\n />\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default MemoTitleComponent;","import React from 'react';\r\n\r\nimport Airline from './air/Airline';\r\nimport Airport from './air/Airport';\r\n\r\nimport OriginalBlType from './ocean/OriginalBlType';\r\nimport ContainerType from './ocean/ContainerType';\r\nimport MoveType from './ocean/MoveType';\r\nimport ScheduleDkPort from './ocean/ScheduleDkPort';\r\nimport VesselName from './ocean/VesselName';\r\n\r\nimport OtherShipmentType from './OtherShipmentType';\r\n\r\nimport ExportInfo from './aes/ExportInfo';\r\nimport LicenseInfo from './aes/LicenseInfo';\r\nimport Scheduleb from './aes/Scheduleb';\r\nimport Carrier from './aes/Carrier';\r\nimport BuyingRate from './aes/BuyingRate';\r\n\r\nimport AccountCode from './codes/AccountCode';\r\nimport AccountSubCode from './codes/AccountSubCode';\r\nimport BillingCode from './codes/BillingCode';\r\n\r\nimport AnTitle from './AnTitle';\r\n\r\nimport CommodityCode from './CommodityCode';\r\n\r\nimport CurrencyCode from './currency/CurrencyCode';\r\nimport ExchangeRate from './ExchangeRate';\r\n// import ExchangeRate from './currency/ExchangeRate';\r\n\r\nimport Country from './region/Country';\r\nimport State from './region/State';\r\nimport UnLocationCode from './region/UnLocationCode';\r\n\r\nimport Edi315 from './Edi315';\r\n\r\nimport MemoTitle from './memoInfo/MemoTitle';\r\n\r\n// import MemoReminderTask from './memoInfo/ReminderTask';\r\n// import AttachedFile from './memoInfo/AttachedFile';\r\n\r\n// import EmailLog from './logFile/EmailLog';\r\n// import PrintLog from './logFile/PrintLog';\r\n// import FaxLog from './logFile/FaxLog';\r\n\r\n\r\nfunction CodesFactory({ componentIndex, carrierBuyRate, setCarrierBuyRate, setHideTab}) {\r\n \r\n if (componentIndex === 0) {\r\n return ;\r\n }\r\n else if (componentIndex === 1) {\r\n return ;\r\n }\r\n else if (componentIndex === 2) {\r\n return ;\r\n }\r\n else if (componentIndex === 3) {\r\n return ;\r\n }\r\n else if (componentIndex === 4) {\r\n return ;\r\n }\r\n else if (componentIndex === 5) {\r\n return ;\r\n }\r\n else if (componentIndex === 6) {\r\n return ;\r\n }\r\n else if (componentIndex === 7) {\r\n return ;\r\n }\r\n else if (componentIndex === 8) {\r\n return ;\r\n }\r\n else if (componentIndex === 9) {\r\n return ;\r\n }\r\n else if (componentIndex === 10) {\r\n return ;\r\n }\r\n else if (componentIndex === 11) {\r\n return ;\r\n }\r\n else if(componentIndex === 12){\r\n return ;\r\n }\r\n else if (componentIndex === 13) {\r\n return ;\r\n }\r\n else if (componentIndex === 14) {\r\n return ;\r\n }\r\n else if (componentIndex === 15) {\r\n return ;\r\n }\r\n else if (componentIndex === 16) {\r\n return ;\r\n }\r\n else if (componentIndex === 17) {\r\n return ;\r\n }\r\n // else if (componentIndex === 18) {\r\n // return ;\r\n // }\r\n // else if (componentIndex === 19) {\r\n // return ;\r\n // }\r\n // else if (componentIndex === 13) {\r\n // return ;\r\n // }\r\n else if (componentIndex === 19) {\r\n return ;\r\n }\r\n else if (componentIndex === 20) {\r\n return ;\r\n }\r\n else if (componentIndex === 21) {\r\n return ;\r\n }\r\n // else if (componentIndex === 23) {\r\n // return ;\r\n // }\r\n // else if (componentIndex === 24) {\r\n // return ;\r\n // }\r\n // else if (componentIndex === 25) {\r\n // return ;\r\n // }\r\n else if (componentIndex === 22) {\r\n return ;\r\n }\r\n //move from settings\r\n else if (componentIndex === 26) {\r\n return ;\r\n }\r\n else if (componentIndex === 27) {\r\n return ;\r\n }\r\n else if (componentIndex === 28) {\r\n return ;\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default CodesFactory;\r\n","import React from 'react';\r\n\r\nfunction InvalidOperation() {\r\n return (\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default InvalidOperation;\r\n","import React from 'react';\r\n\r\nfunction NotFound() {\r\n return (\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default NotFound;\r\n","// import React from 'react';\r\nimport { Route, Switch } from 'react-router-dom';\r\nimport _ from 'lodash';\r\nimport { IfmsRoute } from './types';\r\n\r\nimport InvalidOperation from '../InvalidOperation';\r\nimport NotFound from '../NotFound';\r\n\r\nimport commonRoutes from '../components/common/routes';\r\nimport memoListRoutes from '../components/memoList/routes';\r\nimport referenceFilesRoutes from '../components/referenceFiles/routes';\r\nimport utilitiesRoutes from '../components/Help/routes';\r\nimport setupRoutes from '../components/setup/routes';\r\nimport accountingRoutes from '../components/accounting/routes';\r\nimport airExportRoutes from '../components/airExport/routes';\r\nimport airImportRoutes from '../components/airImport/routes';\r\nimport oceanExportRoutes from '../components/oceanExport/routes';\r\nimport oceanImportRoutes from '../components/oceanImport/routes';\r\nimport otherShipmentRoutes from '../components/otherShipment/routes';\r\nimport warehousingRoutes from '../components/warehousing/routes';\r\nimport homeRoutes from '../components/home/routes';\r\nimport opReportRoutes from '../components/opReport/routes';\r\n\r\nexport const IfmsAppRoutes = [\r\n ...commonRoutes,\r\n ...memoListRoutes,\r\n ...referenceFilesRoutes,\r\n ...utilitiesRoutes,\r\n ...setupRoutes,\r\n ...accountingRoutes,\r\n ...airExportRoutes,\r\n ...airImportRoutes,\r\n ...oceanExportRoutes,\r\n ...oceanImportRoutes,\r\n ...otherShipmentRoutes,\r\n ...warehousingRoutes,\r\n ...opReportRoutes,\r\n\r\n ...homeRoutes,\r\n];\r\n\r\nconst routeExpander = (routes:Array) => routes.map( r => );\r\n\r\nconst routes = (\r\n \r\n {routeExpander(IfmsAppRoutes)}\r\n \r\n \r\n \r\n);\r\n\r\nexport default routes;","import React from 'react';\r\nimport { IfmsRoute }from '../../../config/types';\r\n\r\nconst MemoList = React.lazy(() => import('../MemoList'));\r\n\r\nconst routes:Array = [\r\n {path: '/memoList/:viewIndex', component: MemoList},\r\n];\r\n\r\nexport default routes;","import React from 'react';\r\nimport { IfmsRoute }from '../../../config/types';\r\n\r\nconst ReferenceFiles= React.lazy(() => import('../ReferenceFiles'));\r\n\r\n\r\nconst routes:Array = [\r\n {path: '/referenceFiles', component: ReferenceFiles},\r\n];\r\n\r\nexport default routes;","import React from 'react';\r\nimport { IfmsRoute }from '../../../config/types';\r\n\r\nconst IfmsHelp = React.lazy(() => import('../ifmsHelp/IfmsHelp'));\r\n\r\nconst routes:Array = [\r\n {path: '/utilities', component: IfmsHelp},\r\n];\r\n\r\nexport default routes;","import React from 'react';\r\nimport { IfmsRoute }from '../../../config/types';\r\n\r\nconst IfmsSetup = React.lazy(() => import('../ifmsSetup/IfmsSetup'));\r\n\r\nconst routes:Array = [\r\n {path: '/settings', component: IfmsSetup},\r\n];\r\n\r\nexport default routes;","import React from 'react';\r\nimport { IfmsRoute }from '../../../config/types';\r\n\r\nconst Home = React.lazy(() => import('../Home'));\r\n\r\nconst routes:Array = [\r\n {path: '/home/home', component: Home},\r\n];\r\n\r\nexport default routes;\r\n","// import React from 'react';\r\n// import { IfmsRoute }from '../../../config/types';\r\n\r\n// const opReportSet = React.lazy(() => import('../opReport/opReportSet'));\r\n\r\n// const routes:Array = [\r\n// {path: '/opReport', component: opReportSet},\r\n// ];\r\n\r\n// export default routes;\r\nimport React from 'react';\r\nimport { IfmsRoute }from '../../../config/types';\r\n\r\nconst DutyPendingsView = React.lazy(() => import('../../common/reports/DutyPendingsView')); \r\nconst VolumeReportView = React.lazy(() => import('../../common/reports/VolumeReportView')); \r\nconst VendorCostView = React.lazy(() => import('../../common/reports/VendorCostView')); \r\nconst ExpenseView = React.lazy(() => import('../../common/reports/ExpenseView')); \r\nconst OperationPerformanceView = React.lazy(() => import('../../common/reports/OperationPerformanceView')); \r\nconst CustomerActivityView = React.lazy(() => import('../../common/reports/CustomerActivityView')); \r\nconst BranchPerformanceView = React.lazy(() => import('../../common/reports/BranchPerformanceView')); \r\nconst ProfitAndVolumeSummaryView = React.lazy(() => import('../../common/reports/ProfitAndVolumeSummaryView')); \r\n\r\nconst routes:Array = [\r\n\r\n { path: '/opReport/dutyPendings', component: DutyPendingsView },\r\n { path: '/opReport/estProfit', component: ProfitAndVolumeSummaryView },\r\n { path: '/opReport/grossProfit', component: ProfitAndVolumeSummaryView },\r\n { path: '/opReport/cost', component: VendorCostView },\r\n { path: '/opReport/expense', component: ExpenseView },\r\n { path: '/opReport/volume', component: VolumeReportView },\r\n { path: '/opReport/salesPerformance', component: ProfitAndVolumeSummaryView },\r\n { path: '/opReport/customerActivity', component: CustomerActivityView },\r\n { path: '/opReport/opPerformance', component: OperationPerformanceView },\r\n { path: '/opReport/branchPerformance', component: BranchPerformanceView },\r\n];\r\n\r\nexport default routes;\r\n","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\nimport { FileLockProp, InvoiceBillCrdb, RelatedCrdbDefinition } from '../ifmsTypes';\r\nimport {AiHbl} from './AiHbl';\r\nimport { CrDbHd } from './CrDbHd';\r\nimport { appendLine } from '../util';\r\nimport { MblStatusViewModel } from './MblStatusViewModel';\r\n\r\nexport interface AiMblNewEvent {\r\n check: boolean,\r\n date: string|null,\r\n location: string,\r\n}\r\n\r\nexport class AiMbl extends TrackableEntity {\r\n id: number = 0;\r\n refNo: string = '';\r\n agentRefNo: string = '';\r\n mawbNo: string = '';\r\n sMawbNo: string = '';\r\n manifestNo: string = '';\r\n fltNo: string = '';\r\n vesselFlag: string = '';\r\n country: string = '';\r\n agent: number = 0;\r\n carrier: number = 0;\r\n fLocation: number = 0;\r\n fLocationName: string = '';\r\n departureCode: string = '';\r\n lCode: string = '';\r\n loadingPort: string = '';\r\n dCode: string = '';\r\n departureName: string = '';\r\n discharge: string = '';\r\n etd: string | null = null;\r\n etdTime: string | null = null;\r\n eta: string | null = null;\r\n etaTime: string | null = null;\r\n storageDate: string | null = null;\r\n goDate: string | null = null;\r\n postDate: string | null = null;\r\n pkgs: number = 0;\r\n grossWeight: number = 0;\r\n lGrossWeight: number = 0;\r\n chgWeight: number = 0;\r\n lChgWeight: number = 0;\r\n ppcc: string = '';\r\n fileClosed: number = 0;\r\n isFileClosed: boolean = false;\r\n agentCreditHold: boolean = false;\r\n closedBy: string = '';\r\n actClosed: boolean = false;\r\n actClosedBy: string = '';\r\n actCloseDate: string | null = null;\r\n branch: string = '';\r\n cur1: string = '';\r\n cur2: string = '';\r\n exRate1: number = 0;\r\n exRate2: number = 0;\r\n completeBill: boolean = false;\r\n completeInvo: boolean = false;\r\n completeCrdb: boolean = false;\r\n firstCode: string = '';\r\n firstPort: string = '';\r\n firstPortETA: string | null = null;\r\n firstPortETATime: string | null = null;\r\n lastPort: string = '';\r\n toAgent: string = '';\r\n manifestfrom: string = '';\r\n directBL: boolean = false;\r\n profitShare: number = 0;\r\n line: string = '';\r\n confirmDate: string | null = null;\r\n shipmentType: string = '';\r\n agent2: number = 0;\r\n agent3: number = 0;\r\n msManId: string = '';\r\n operator: string = '';\r\n u1Id: string = '';\r\n u2Id: string = '';\r\n u1Date: string | null = null;\r\n u2Date: string | null = null;\r\n dutyCustomer: number = 0;\r\n dutyCustomerName: string = '';\r\n dutyAgent: number = 0;\r\n dutyAgentName: string = '';\r\n mblCustomer: number = 0;\r\n mblCustomerName: string = '';\r\n carrierName: string = '';\r\n agentName: string = '';\r\n agentName2: string = '';\r\n agentName3: string = '';\r\n blVendor: string = '';\r\n blVendorId: number = 0;\r\n dCodeName: string = '';\r\n fCodeName: string = '';\r\n pimsLinkId: number = 0;\r\n pimsLinkDate: string | null = null;\r\n pimsLinkUserId: string = '';\r\n agentPimsId: number = 0;\r\n aaid: number = 0;\r\n cfsLocation: string = '';\r\n cfsAddress: string = '';\r\n cfsContact: string = '';\r\n amsLinkUserId: string = '';\r\n amsLinkId: number = 0;\r\n amsLinkDate: string | null = null;\r\n hblCount: number = 0;\r\n confirmedBy: string = '';\r\n closeDate: string | null = null;\r\n pUnit: string = '';\r\n anSend: string | null = null;\r\n anSendBy: string = '';\r\n atmeSend: string | null = null;\r\n atmeSendBy: string = '';\r\n isCustomsRls: boolean = false;\r\n customsRls: string | null = null;\r\n customsRlsBy: string = '';\r\n isCustomsHold: boolean = false;\r\n customsHold: string | null = null;\r\n customsHoldBy: string = '';\r\n isCargoRls: boolean = false;\r\n cargoRls: string | null = null;\r\n cargoRlsBy: string = '';\r\n mblCustomer2: number = 0;\r\n mblCustomer2Name: string = '';\r\n commodity: string = '';\r\n pickupDate: string | null = null;\r\n pickupLoc: string = '';\r\n atd: string | null = null;\r\n atdLoc: string = '';\r\n customsRlsLoc: string = '';\r\n ata: string | null = null;\r\n ataLoc: string = '';\r\n delivery: string | null = null;\r\n delvLoc: string = '';\r\n deliveryBy: string = '';\r\n avail: string | null = null;\r\n availLoc: string = '';\r\n\r\n milestone: MblStatusViewModel|null = null;\r\n //airLineStatusSelectedIndex: number = 0;\r\n\r\n //Direct B/L\r\n shipper: number = 0;\r\n consignee: number = 0;\r\n notify: number = 0;\r\n broker: number = 0;\r\n sName : string = '';\r\n cName: string = '';\r\n nName: string= '';\r\n bName: string = '';\r\n shipperName: string = '';\r\n consigneeName: string = '';\r\n notifyName: string = '';\r\n brokerName: string = '';\r\n bTel: string = '';\r\n bFax: string = '';\r\n bContact: string= '';\r\n bEmail: string = '';\r\n finalDest2: string='';\r\n fEta2: string | null = null;\r\n amsblNo: string = '';\r\n opeartor: string = '';\r\n custRefNo: string='';\r\n itNo: string='';\r\n itDate: string|null = null;\r\n itPlace: string='';\r\n mark: string ='';\r\n description: string = '';\r\n multinameId: number = 0;\r\n projectNo: string = '';\r\n remark: string = '';\r\n iMemo: string = '';\r\n\r\n\r\n // HBL Total\r\n hPkgs: number = 0;\r\n hGross: number = 0;\r\n hlGross: number = 0;\r\n hChg: number = 0;\r\n hlChg: number = 0;\r\n statusInvo: string = '';\r\n statusBill: string = '';\r\n statusCrDb: string = '';\r\n \r\n hblList: AiHbl[] = [];\r\n\r\n //|null = null;\r\n relatedCrdbDefinitions: Array|null = null;\r\n //save-sqlInfo>\r\n\r\n // new milestone timestamps - helpers for editing milestone (Dario)\r\n newEvents: Array = [\r\n { check: false, date: null, location: '' },\r\n { check: false, date: null, location: '' },\r\n { check: false, date: null, location: '' },\r\n { check: false, date: null, location: '' },\r\n { check: false, date: null, location: '' },\r\n { check: false, date: null, location: '' },\r\n ];\r\n\r\n // events that have been interacted with\r\n toggledEvents: Array = [];\r\n\r\n // UI Only\r\n carrierChanged: boolean = false;\r\n lockAgent1: boolean = false;\r\n\r\n static fileLockEnableProps: FileLockProp[] = [\r\n { key: 'agentRefNo', name: 'Agent Ref. #' },\r\n { key: 'fLocation', name: 'Freight Location' },\r\n ];\r\n\r\n get canChangeBranch():boolean {\r\n if (this.id <= 0) {\r\n return true;\r\n }\r\n\r\n const allowedStatuses = ['', 'E', 'D'];\r\n return allowedStatuses.includes(this.statusBill) &&\r\n allowedStatuses.includes(this.statusInvo) &&\r\n allowedStatuses.includes(this.statusCrDb) &&\r\n this.hblList.every(h => allowedStatuses.includes(h.statusBill) && allowedStatuses.includes(h.statusInvo) && allowedStatuses.includes(h.statusCrDb))\r\n };\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('id', 'dutyCustomerName', 'dutyAgentName', 'hblCount',\r\n 'newEvents', 'toggledEvents',\r\n //\r\n 'closeDate', 'invoiceBill', 'readonlyCrdbLineItems', 'milestone', 'canChangeBranch', \r\n 'hblList', 'carrierChanged', 'actClosed', 'actClosedBy', 'actCloseDate', 'confirmDate', 'confirmedBy');\r\n this.getdateProps.push('u1Date', 'u2Date'); \r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n\r\n isFileLockFor(propName: string) {\r\n return this.fileClosed > 0 && !AiMbl.fileLockEnableProps.some(x => x.key === propName);\r\n }\r\n\r\n static getFileLockMessage(): string {\r\n const messageBase = appendLine(\"OP Close\", \"The following fields are editable only:\\n\")\r\n return appendLine(messageBase, AiMbl.fileLockEnableProps\r\n .map(x => x.name)\r\n .reduce((acc: string, x) => appendLine(acc, `${x}`), \"\"));\r\n }\r\n \r\n getDbMappings(arg?:any):IDictionary {\r\n return AiMbl.dicFieldMappings;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_ID', table: 'T_AIMMAIN' }),\r\n 'refNo': new DBMappingInfo({ field: 'F_RefNo', table: 'T_AIMMAIN' }),\r\n 'agentRefNo': new DBMappingInfo({ field: 'F_AgentRefNo', table: 'T_AIMMAIN' }),\r\n 'mawbNo': new DBMappingInfo({ field: 'F_MawbNo', table: 'T_AIMMAIN' }),\r\n 'sMawbNo': new DBMappingInfo({ field: 'F_SMawbNo', table: 'T_AIMMAIN' }),\r\n 'manifestNo': new DBMappingInfo({ field: 'F_ManifestNo', table: 'T_AIMMAIN' }),\r\n 'fltNo': new DBMappingInfo({ field: 'F_FLTNo', table: 'T_AIMMAIN' }),\r\n 'vesselFlag': new DBMappingInfo({ field: 'F_VesselFlag', table: 'T_AIMMAIN' }),\r\n 'country': new DBMappingInfo({ field: 'F_Country', table: 'T_AIMMAIN' }),\r\n 'agent': new DBMappingInfo({ field: 'F_Agent', table: 'T_AIMMAIN' }),\r\n 'fLocation': new DBMappingInfo({ field: 'F_FLocation', table: 'T_AIMMAIN' }),\r\n 'departureCode': new DBMappingInfo({ field: 'F_LCode', table: 'T_AIMMAIN' }),\r\n 'dCode': new DBMappingInfo({ field: 'F_DCode', table: 'T_AIMMAIN' }),\r\n 'departureName': new DBMappingInfo({ field: 'F_LoadingPort', table: 'T_AIMMAIN' }),\r\n 'discharge': new DBMappingInfo({ field: 'F_Discharge', table: 'T_AIMMAIN' }),\r\n 'etd': new DBMappingInfo({ field: 'F_ETD', table: 'T_AIMMAIN' }),\r\n 'eta': new DBMappingInfo({ field: 'F_ETA', table: 'T_AIMMAIN' }),\r\n 'storageDate': new DBMappingInfo({ field: 'F_StorageDate', table: 'T_AIMMAIN' }),\r\n 'goDate': new DBMappingInfo({ field: 'F_GODate', table: 'T_AIMMAIN' }),\r\n 'postDate': new DBMappingInfo({ field: 'F_PostDate', table: 'T_AIMMAIN' }),\r\n 'pkgs': new DBMappingInfo({ field: 'F_Pkgs', table: 'T_AIMMAIN' }),\r\n 'grossWeight': new DBMappingInfo({ field: 'F_GrossWeight', table: 'T_AIMMAIN' }),\r\n 'lGrossWeight': new DBMappingInfo({ field: 'F_LGrossWeight', table: 'T_AIMMAIN' }),\r\n 'chgWeight': new DBMappingInfo({ field: 'F_ChgWeight', table: 'T_AIMMAIN' }),\r\n 'lChgWeight': new DBMappingInfo({ field: 'F_LChgWeight', table: 'T_AIMMAIN' }),\r\n 'ppcc': new DBMappingInfo({ field: 'F_PPCC', table: 'T_AIMMAIN' }),\r\n 'fileClosed': new DBMappingInfo({ field: 'F_FileClosed', table: 'T_AIMMAIN' }),\r\n 'closedBy': new DBMappingInfo({ field: 'F_ClosedBy', table: 'T_AIMMAIN' }),\r\n 'branch': new DBMappingInfo({ field: 'F_BRANCH', table: 'T_AIMMAIN' }),\r\n 'cur1': new DBMappingInfo({ field: 'F_CUR1', table: 'T_AIMMAIN' }),\r\n 'cur2': new DBMappingInfo({ field: 'F_CUR2', table: 'T_AIMMAIN' }),\r\n 'exRate1': new DBMappingInfo({ field: 'F_EXRATE1', table: 'T_AIMMAIN' }),\r\n 'exRate2': new DBMappingInfo({ field: 'F_EXRATE2', table: 'T_AIMMAIN' }),\r\n 'completeBill': new DBMappingInfo({ field: 'F_CompleteBill', table: 'T_AIMMAIN' }),\r\n 'completeInvo': new DBMappingInfo({ field: 'F_CompleteInvo', table: 'T_AIMMAIN' }),\r\n 'completeCrdb': new DBMappingInfo({ field: 'F_CompleteCrDb', table: 'T_AIMMAIN' }),\r\n 'firstCode': new DBMappingInfo({ field: 'F_FirstCode', table: 'T_AIMMAIN' }),\r\n 'firstPort': new DBMappingInfo({ field: 'F_FirstPort', table: 'T_AIMMAIN' }),\r\n 'firstPortETA': new DBMappingInfo({ field: 'F_FirstPortETA', table: 'T_AIMMAIN' }),\r\n 'lastPort': new DBMappingInfo({ field: 'F_LastPort', table: 'T_AIMMAIN' }),\r\n 'manifestfrom': new DBMappingInfo({ field: 'F_Manifestfrom', table: 'T_AIMMAIN' }),\r\n 'toAgent': new DBMappingInfo({ field: 'F_TOAgent', table: 'T_AIMMAIN' }),\r\n 'directBL': new DBMappingInfo({ field: 'F_directbl', table: 'T_AIMMAIN' }),\r\n 'profitShare': new DBMappingInfo({ field: 'F_ProfitShare', table: 'T_AIMMAIN' }),\r\n 'line': new DBMappingInfo({ field: 'F_Line', table: 'T_AIMMAIN' }),\r\n 'shipmentType': new DBMappingInfo({ field: 'F_ShipmentType', table: 'T_AIMMAIN' }),\r\n 'agent2': new DBMappingInfo({ field: 'F_Agent2', table: 'T_AIMMAIN' }),\r\n 'agent3': new DBMappingInfo({ field: 'F_Agent3', table: 'T_AIMMAIN' }),\r\n 'msManId': new DBMappingInfo({ field: 'F_MSManID', table: 'T_AIMMAIN' }),\r\n 'dutyCustomer': new DBMappingInfo({ field: 'F_DutyCustomer', table: 'T_AIMMAIN' }),\r\n 'dutyAgent': new DBMappingInfo({ field: 'F_DutyAgent', table: 'T_AIMMAIN' }),\r\n 'mblCustomer': new DBMappingInfo({ field: 'F_MBLCustomer', table: 'T_AIMMAIN' }),\r\n 'blVendorId': new DBMappingInfo({ field: 'F_Carrier', table: 'T_AIMMAIN' }),\r\n 'u1Id': new DBMappingInfo({ field: 'F_U1ID', table: 'T_AIMMAIN' }),\r\n 'u1Date': new DBMappingInfo({ field: 'F_U1Date', table: 'T_AIMMAIN' }),\r\n 'u2Id': new DBMappingInfo({ field: 'F_U2ID', table: 'T_AIMMAIN' }),\r\n 'u2Date': new DBMappingInfo({ field: 'F_U2Date', table: 'T_AIMMAIN' }),\r\n 'pUnit': new DBMappingInfo({ field: 'PUnit', table: 'T_AIMMAIN' }),\r\n 'anSend': new DBMappingInfo({ field: 'AnSend', table: 'T_AIMMAIN' }),\r\n 'anSendBy': new DBMappingInfo({ field: 'AnSendBy', table: 'T_AIMMAIN' }),\r\n 'atmeSend': new DBMappingInfo({ field: 'AtmeSend', table: 'T_AIMMAIN' }),\r\n 'atmeSendBy': new DBMappingInfo({ field: 'AtmeSendBy', table: 'T_AIMMAIN' }),\r\n 'isCustomsRls': new DBMappingInfo({ field: 'IsCustomsRls', table: 'T_AIMMAIN' }),\r\n 'customsRls': new DBMappingInfo({ field: 'f_CustomRls', table: 'T_AIMMAIN' }),\r\n 'customsRlsBy': new DBMappingInfo({ field: 'CustomsRlsBy', table: 'T_AIMMAIN' }),\r\n 'isCustomsHold': new DBMappingInfo({ field: 'IsCustomsHold', table: 'T_AIMMAIN' }),\r\n 'customsHold': new DBMappingInfo({ field: 'CustomsHold', table: 'T_AIMMAIN' }),\r\n 'customsHoldBy': new DBMappingInfo({ field: 'CustomsHoldBy', table: 'T_AIMMAIN' }),\r\n 'isCargoRls': new DBMappingInfo({ field: 'IsCargoRls', table: 'T_AIMMAIN' }),\r\n 'cargoRls': new DBMappingInfo({ field: 'CargoRls', table: 'T_AIMMAIN' }),\r\n 'cargoRlsBy': new DBMappingInfo({ field: 'CargoRlsBy', table: 'T_AIMMAIN' }),\r\n 'mblCustomer2': new DBMappingInfo({ field: 'MblCustomer2', table: 'T_AIMMAIN' }),\r\n 'commodity': new DBMappingInfo({ field: 'Commodity', table: 'T_AIMMAIN' }),\r\n 'projectNo': new DBMappingInfo({ field: 'ProjectNo', table: 'T_AIMMAIN' }),\r\n 'remark': new DBMappingInfo({ field: 'Remark', table: 'T_AIMMAIN' }),\r\n 'iMemo': new DBMappingInfo({ field: 'F_IMemo', table: 'T_AIMMAIN' }),\r\n //airline status\r\n 'pickupDate': new DBMappingInfo({ field: 'f_pickupdate', table: 'T_AIMMAIN' }),\r\n 'pickupLoc': new DBMappingInfo({ field: 'f_pickuploc', table: 'T_AIMMAIN' }),\r\n 'atd': new DBMappingInfo({ field: 'f_atd', table: 'T_AIMMAIN' }),\r\n 'atdLoc': new DBMappingInfo({ field: 'f_atdloc', table: 'T_AIMMAIN' }),\r\n 'customsRlsLoc': new DBMappingInfo({ field: 'f_custmrlsloc', table: 'T_AIMMAIN' }),\r\n 'ata': new DBMappingInfo({ field: 'f_ata', table: 'T_AIMMAIN' }),\r\n 'ataLoc': new DBMappingInfo({ field: 'f_ataloc', table: 'T_AIMMAIN' }),\r\n 'avail': new DBMappingInfo({ field: 'f_avail', table: 'T_AIMMAIN' }),\r\n 'availLoc': new DBMappingInfo({ field: 'f_availloc', table: 'T_AIMMAIN' }),\r\n 'delivery': new DBMappingInfo({ field: 'f_delivery', table: 'T_AIMMAIN' }),\r\n 'delvLoc': new DBMappingInfo({ field: 'f_delvloc', table: 'T_AIMMAIN' }),\r\n //'deliveryBy': new DBMappingInfo({ field: 'DeliveryBy', table: 'T_AIMMAIN' }),\r\n //Direct B/L\r\n 'shipper': new DBMappingInfo({field:'f_mshipper', table: 'T_AIMMAIN'}),\r\n 'consignee': new DBMappingInfo({field:'f_mconsignee', table: 'T_AIMMAIN'}),\r\n 'notify': new DBMappingInfo({field:'f_mnotify', table: 'T_AIMMAIN'}),\r\n 'broker': new DBMappingInfo({field:'f_mbroker', table: 'T_AIMMAIN'}),\r\n 'sName': new DBMappingInfo({field:'f_msname', table: 'T_AIMMAIN'}),\r\n 'cName': new DBMappingInfo({field:'f_mcname', table: 'T_AIMMAIN'}),\r\n 'nName': new DBMappingInfo({field:'f_mnname', table: 'T_AIMMAIN'}),\r\n 'bName': new DBMappingInfo({field:'f_mbname', table: 'T_AIMMAIN'}),\r\n 'bTel': new DBMappingInfo({field:'f_mbtel', table: 'T_AIMMAIN'}),\r\n 'bFax': new DBMappingInfo({field:'f_mbfax', table: 'T_AIMMAIN'}),\r\n 'bContact': new DBMappingInfo({field:'f_mbcontact', table: 'T_AIMMAIN'}),\r\n 'bEmail': new DBMappingInfo({field:'f_mbemail', table: 'T_AIMMAIN'}),\r\n 'finalDest2': new DBMappingInfo({field:'f_mfinaldest', table: 'T_AIMMAIN'}),\r\n 'fEta2': new DBMappingInfo({field:'f_mfeta', table: 'T_AIMMAIN'}),\r\n 'amsblNo': new DBMappingInfo({field:'f_mamsblno', table: 'T_AIMMAIN'}),\r\n 'operator': new DBMappingInfo({field:'f_operator', table: 'T_AIMMAIN'}),\r\n 'custRefNo': new DBMappingInfo({field:'f_mcustrefno', table: 'T_AIMMAIN'}),\r\n 'itNo': new DBMappingInfo({field:'f_mitno', table: 'T_AIMMAIN'}),\r\n 'itDate': new DBMappingInfo({field:'f_mitdate', table: 'T_AIMMAIN'}),\r\n 'itPlace': new DBMappingInfo({field:'f_mitplace', table: 'T_AIMMAIN'}),\r\n 'mark': new DBMappingInfo({field:'f_mmark', table: 'T_AIMMAIN'}),\r\n 'description': new DBMappingInfo({field:'f_mdescription', table: 'T_AIMMAIN'}),\r\n 'multinameId': new DBMappingInfo({field:'f_mmultinameid', table: 'T_AIMMAIN'}),\r\n };\r\n\r\n hasNewEvents(): boolean {\r\n return this.toggledEvents.length > 0;\r\n }\r\n}\r\n","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\nimport {AemDimension} from './AemDimension';\r\nimport {AemExtra2} from './AemExtra2';\r\nimport {HblInven} from './HblInven';\r\nimport {AeAcct, AeAcctRecord} from './AeAcctRecord';\r\nimport { FileLockProp, InvoiceBillCrdb, RelatedCrdbDefinition } from '../ifmsTypes';\r\nimport {AeHbl} from './AeHbl';\r\nimport _ from 'lodash';\r\nimport { CrDbHd } from './CrDbHd';\r\nimport { appendLine } from '../util';\r\nimport { MblStatusViewModel } from './MblStatusViewModel';\r\n\r\nexport interface AeMblNewEvent {\r\n check: boolean,\r\n date: string|null,\r\n location: string,\r\n}\r\n\r\nexport class AeMbl extends TrackableEntity {\r\n modelName:string = \"aembl\"; //for ifmsButton > getChangedListData\r\n\r\n refNo: string = '';\r\n mawbNo: string = '';\r\n fltNo: string = '';\r\n by1: string = '';\r\n by2: string = '';\r\n iataCode: string = '';\r\n accountNo: string = '';\r\n commodity: string = '';\r\n carVal: string = '';\r\n cusVal: string = '';\r\n carrierSpotNo: string = '';\r\n bCurr: string = '';\r\n iataCurr: string = '';\r\n shipper: number = 0;\r\n agent: number = 0;\r\n carrier: number = 0;\r\n lCode: string = '';\r\n agentCreditHold: boolean = false;\r\n dCode: string = '';\r\n to1: string = '';\r\n to2: string = '';\r\n loadingPort: string = '';\r\n discharge: string = '';\r\n etd: string | null = null;\r\n etdDate: string | null = null;\r\n etdTime: string | null = null;\r\n eta: string | null = null;\r\n etaDate: string | null = null;\r\n etaTime: string | null = null;\r\n blDate: string | null = null;\r\n postDate: string | null = null;\r\n blType: string = '';\r\n blTypeCheck: boolean = false;\r\n ppCc: string = '';\r\n bKl: string = '';\r\n iataKl: string = '';\r\n kl: string = '';\r\n pkgs: number = 0;\r\n grossWeight: number = 0;\r\n lGrossWeight: number = 0;\r\n chgWeight: number = 0;\r\n lChgWeight: number = 0;\r\n iAmount: number = 0;\r\n bRate: number = 0;\r\n bAmount: number = 0;\r\n iataRate: number = 0;\r\n iataAmount: number = 0;\r\n fileClosed: number = 0;\r\n isFileClosed: boolean = false;\r\n closeDate: string | null = null;\r\n closedBy: string = '';\r\n actClosed: boolean = false;\r\n actClosedBy: string = '';\r\n actCloseDate: string | null = null;\r\n handInfo: string = '';\r\n accountInfo: string = '';\r\n mark: string = '';\r\n description: string = '';\r\n otherInfo: string = '';\r\n pWtChg: number = 0;\r\n cWtChg: number = 0;\r\n pValChg: number = 0;\r\n cValChg: number = 0;\r\n pTaxChg: number = 0;\r\n cTaxChg: number = 0;\r\n pAgtChg: number = 0;\r\n cAgtChg: number = 0;\r\n pCarChg: number = 0;\r\n cCarChg: number = 0;\r\n pTotal: number = 0;\r\n cTotal: number = 0;\r\n issuingCarrier: number = 0;\r\n branch: string = '';\r\n rateClass: string = '';\r\n cutOff: string | null = null;\r\n cutOffDate: string | null = null;\r\n cutOffTime: string | null = null;\r\n cur1: string = '';\r\n cur2: string = '';\r\n exRate1: number = 0;\r\n exRate2: number = 0;\r\n completeBill: boolean = false;\r\n completeInvo: boolean = false;\r\n completeCrDb: boolean = false;\r\n profitShare: number = 0;\r\n line: string = '';\r\n confirmDate: string | null = null;\r\n shipmentType: string = '';\r\n agent2: number = 0;\r\n agent3: number = 0;\r\n mSmanId: string = '';\r\n payableTo: number = 0;\r\n dutyCustomer: number = 0;\r\n dutyCustomerName: string = '';\r\n dutyAgent: number = 0;\r\n dutyAgentName: string = '';\r\n mblCustomer: number = 0;\r\n showCharge: boolean = false;\r\n pUnit: string = '';\r\n firstTo: string = '';\r\n sAddr: string = '';\r\n cAddr: string = '';\r\n nAddr: string = '';\r\n sci: string = '';\r\n notify: number = 0;\r\n chkEdit: boolean = false;\r\n consignee: number = 0;\r\n etd1: string | null = null;\r\n etd2: string | null = null;\r\n agentName: string = '';\r\n issuingCarrierName: string = '';\r\n payableToName: string = '';\r\n dimension: AemDimension | null = null;\r\n shipperName: string = '';\r\n consigneeName: string = '';\r\n notifyPartyName: string = '';\r\n mblCustomerName: string = '';\r\n carrierName: string = '';\r\n agent2Name: string = '';\r\n agent3Name: string = '';\r\n operator: string = '';\r\n descList: AemExtra2[] = [];\r\n invList: HblInven[] = [];\r\n acctList: AeAcct[] = [];\r\n id: number = 0;\r\n u1Id: string = '';\r\n u1Date: string | null = null;\r\n u2Id: string = '';\r\n u2Date: string | null = null;\r\n pimsLinkId: number = 0;\r\n pimsLinkDate: string | null = null;\r\n pimsLinkUserId: string = '';\r\n agentPimsId: number = 0;\r\n aaid: number = 0;\r\n abbr: string = '';\r\n hblCount: number = 0;\r\n confirmedBy: string = '';\r\n agentRefNo: string = '';\r\n volCm: boolean = false;\r\n mblCustomer2: number = 0;\r\n mblCustomer2Name: string = '';\r\n firstToName: string = '';\r\n statusInvo: string = '';\r\n statusBill: string = '';\r\n statusCrDb: string = '';\r\n isDomestic: boolean = false;\r\n projectNo: string = '';\r\n labelRemark: string = '';\r\n //airline status\r\n pickupDate: string | null = null;\r\n pickupLoc: string = '';\r\n atd: string | null = null;\r\n atdLoc: string = '';\r\n customsRls: string | null = null;\r\n customsRlsLoc: string = '';\r\n ata: string | null = null;\r\n ataLoc: string = '';\r\n delivery: string | null = null;\r\n delvLoc: string = '';\r\n deliveryBy: string = '';\r\n avail: string | null = null;\r\n availLoc: string = '';\r\n // not save\r\n AEFscRate: number = 0;\r\n AESscRate: number = 0;\r\n AEFscMin: number = 0;\r\n AESscMin: number = 0;\r\n byFSCGrossWT: boolean = false;\r\n bySSCGrossWT: boolean = false;\r\n AEFscAmount: number = 0;\r\n AESscAmount: number = 0;\r\n showCharged: string = '';\r\n showCharged0: boolean = false;\r\n showCharged1: boolean = false;\r\n showOther: string = '';\r\n showOther0: boolean = false;\r\n showOther1: boolean = false;\r\n showOtherAmt: string = '';\r\n showOtherAmt0: boolean = false;\r\n showOtherAmt1: boolean = false;\r\n showToBy: string = '';\r\n showToBy0: boolean = false;\r\n showToBy1: boolean = false;\r\n \r\n // Allow Partial for change tracking\r\n aeAcctData: Partial | null = null;\r\n \r\n hblList: AeHbl[] = [];\r\n \r\n milestone: MblStatusViewModel|null = null;\r\n\r\n //|null = null;\r\n relatedCrdbDefinitions: Array|null = null;\r\n //save-sqlInfo>\r\n\r\n // new milestone timestamps - helpers for editing milestone (Dario)\r\n newEvents: Array = [\r\n { check: false, date: null, location: '' },\r\n { check: false, date: null, location: '' },\r\n { check: false, date: null, location: '' },\r\n { check: false, date: null, location: '' },\r\n { check: false, date: null, location: '' },\r\n { check: false, date: null, location: '' },\r\n ];\r\n\r\n // events that have been interacted with\r\n toggledEvents: Array = [];\r\n\r\n static fileLockEnableProps: FileLockProp[] = [\r\n { key: 'agent', name: 'MBL Agent 1' },\r\n ];\r\n\r\n get canChangeBranch():boolean {\r\n if (this.id <= 0) {\r\n return true;\r\n }\r\n\r\n const allowedStatuses = ['', 'E', 'D'];\r\n return allowedStatuses.includes(this.statusBill) &&\r\n allowedStatuses.includes(this.statusInvo) &&\r\n allowedStatuses.includes(this.statusCrDb) &&\r\n this.hblList.every(h => allowedStatuses.includes(h.statusBill) && allowedStatuses.includes(h.statusInvo) && allowedStatuses.includes(h.statusCrDb))\r\n };\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('dutyCustomerName', 'dutyAgentName', 'dimension', 'agent2Name', 'agent3Name', //'descList', \r\n 'id', 'hblCount', 'mblCustomer2Name', 'fistToPortName', 'toggledEvents', 'newEvents', 'invoiceBill', 'hblList', \r\n 'canChangeBranch', 'actClosed', 'actClosedBy', 'actCloseDate', 'milestone','AEFscRate','AESscRate','AEFscMin','AESscMin',\r\n 'AEFscAmount','AESscAmount','byFSCGrossWT','bySSCGrossWT', 'confirmedBy', 'confirmDate'\r\n );\r\n this.getdateProps.push('u1Date', 'u2Date'); \r\n if(this.id === 0) this.id = this.GetNextId();\r\n\r\n if(this.descList.length >0){\r\n this.descList = this.descList.map(d => new AemExtra2(d));\r\n } else {\r\n this.descList = [];\r\n }\r\n if(this.invList.length >0){\r\n this.invList = this.invList.map(d => new HblInven(d));\r\n } else {\r\n this.invList = [];\r\n }\r\n\r\n this.aeAcctData = new AeAcctRecord(init?.aeAcctData??{});\r\n }\r\n\r\n isFileLockFor(propName: string) {\r\n return this.fileClosed > 0 && !AeMbl.fileLockEnableProps.some(x => x.key === propName);\r\n }\r\n\r\n static getFileLockMessage(): string {\r\n const messageBase = appendLine(\"OP Close\", \"The following fields are editable only:\\n\")\r\n return appendLine(messageBase, AeMbl.fileLockEnableProps\r\n .map(x => x.name)\r\n .reduce((acc: string, x) => appendLine(acc, `${x}`), \"\"));\r\n }\r\n \r\n getDbMappings(arg?:any):IDictionary {\r\n const dicFieldMappings:IDictionary = {};\r\n _.keys(AeMbl.dicFieldMappings).forEach(m=>{\r\n dicFieldMappings[m] = AeMbl.dicFieldMappings[m];\r\n });\r\n\r\n _.keys(AemExtra2.dicFieldMapping).forEach(m=> {\r\n dicFieldMappings[`descList.${m}`] = AemExtra2.dicFieldMapping[m];\r\n });\r\n\r\n _.keys(HblInven.dicFieldMappings).forEach(m=> {\r\n dicFieldMappings[`invList.${m}`] = HblInven.dicFieldMappings[m];\r\n });\r\n\r\n _.keys(AeAcctRecord.dicFieldMappings).forEach(m=> {\r\n dicFieldMappings[`aeAcctData.${m}`] = AeAcctRecord.dicFieldMappings[m];\r\n });\r\n return dicFieldMappings;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_ID', table: 'T_AOMMAIN' }),\r\n 'refNo': new DBMappingInfo({ field: 'F_REFNO', table: 'T_AOMMAIN' }),\r\n 'mawbNo': new DBMappingInfo({ field: 'F_MAWBNO', table: 'T_AOMMAIN' }),\r\n 'fltNo': new DBMappingInfo({ field: 'F_FLTNO', table: 'T_AOMMAIN' }),\r\n 'by1': new DBMappingInfo({ field: 'F_BY1', table: 'T_AOMMAIN' }),\r\n 'by2': new DBMappingInfo({ field: 'F_BY2', table: 'T_AOMMAIN' }),\r\n 'iataCode': new DBMappingInfo({ field: 'F_IATACODE', table: 'T_AOMMAIN' }),\r\n 'accountNo': new DBMappingInfo({ field: 'F_ACCOUNTNO', table: 'T_AOMMAIN' }),\r\n 'commodity': new DBMappingInfo({ field: 'F_COMMODITY', table: 'T_AOMMAIN' }),\r\n 'carVal': new DBMappingInfo({ field: 'F_CARVAL', table: 'T_AOMMAIN' }),\r\n 'cusVal': new DBMappingInfo({ field: 'F_CUSVAL', table: 'T_AOMMAIN' }),\r\n 'carrierSpotNo': new DBMappingInfo({ field: 'F_CARRIERSPOTNO', table: 'T_AOMMAIN' }),\r\n 'bCurr': new DBMappingInfo({ field: 'F_BCURR', table: 'T_AOMMAIN' }),\r\n 'iataCurr': new DBMappingInfo({ field: 'F_IATACURR', table: 'T_AOMMAIN' }),\r\n 'shipper': new DBMappingInfo({ field: 'F_SHIPPER', table: 'T_AOMMAIN' }),\r\n 'agent': new DBMappingInfo({ field: 'F_AGENT', table: 'T_AOMMAIN' }),\r\n 'carrier': new DBMappingInfo({ field: 'F_CARRIER', table: 'T_AOMMAIN' }),\r\n 'lCode': new DBMappingInfo({ field: 'F_LCODE', table: 'T_AOMMAIN' }),\r\n 'dCode': new DBMappingInfo({ field: 'F_DCODE', table: 'T_AOMMAIN' }),\r\n 'to1': new DBMappingInfo({ field: 'F_TO1', table: 'T_AOMMAIN' }),\r\n 'to2': new DBMappingInfo({ field: 'F_TO2', table: 'T_AOMMAIN' }),\r\n 'loadingPort': new DBMappingInfo({ field: 'F_LOADINGPORT', table: 'T_AOMMAIN' }),\r\n 'discharge': new DBMappingInfo({ field: 'F_DISCHARGE', table: 'T_AOMMAIN' }),\r\n 'etd': new DBMappingInfo({ field: 'F_ETD', table: 'T_AOMMAIN' }),\r\n 'eta': new DBMappingInfo({ field: 'F_ETA', table: 'T_AOMMAIN' }),\r\n 'blDate': new DBMappingInfo({ field: 'F_BLDATE', table: 'T_AOMMAIN' }),\r\n 'postDate': new DBMappingInfo({ field: 'F_POSTDATE', table: 'T_AOMMAIN' }),\r\n 'blType': new DBMappingInfo({ field: 'F_BLTYPE', table: 'T_AOMMAIN' }),\r\n 'ppCc': new DBMappingInfo({ field: 'F_PPCC', table: 'T_AOMMAIN' }),\r\n 'bKl': new DBMappingInfo({ field: 'F_BKL', table: 'T_AOMMAIN' }),\r\n 'iataKl': new DBMappingInfo({ field: 'F_IATAKL', table: 'T_AOMMAIN' }),\r\n 'kl': new DBMappingInfo({ field: 'F_KL', table: 'T_AOMMAIN' }),\r\n 'pkgs': new DBMappingInfo({ field: 'F_PKGS', table: 'T_AOMMAIN' }),\r\n 'grossWeight': new DBMappingInfo({ field: 'F_GROSSWEIGHT', table: 'T_AOMMAIN' }),\r\n 'lGrossWeight': new DBMappingInfo({ field: 'F_LGROSSWEIGHT', table: 'T_AOMMAIN' }),\r\n 'chgWeight': new DBMappingInfo({ field: 'F_CHGWEIGHT', table: 'T_AOMMAIN' }),\r\n 'lChgWeight': new DBMappingInfo({ field: 'F_LCHGWEIGHT', table: 'T_AOMMAIN' }),\r\n 'iAmount': new DBMappingInfo({ field: 'F_IAMOUNT', table: 'T_AOMMAIN' }),\r\n 'bRate': new DBMappingInfo({ field: 'F_BRATE', table: 'T_AOMMAIN' }),\r\n 'bAmount': new DBMappingInfo({ field: 'F_BAMOUNT', table: 'T_AOMMAIN' }),\r\n 'iataRate': new DBMappingInfo({ field: 'F_IATARATE', table: 'T_AOMMAIN' }),\r\n 'iataAmount': new DBMappingInfo({ field: 'F_IATAAMOUNT', table: 'T_AOMMAIN' }),\r\n 'fileClosed': new DBMappingInfo({ field: 'F_FILECLOSED', table: 'T_AOMMAIN' }),\r\n 'closedBy': new DBMappingInfo({ field: 'F_CLOSEDBY', table: 'T_AOMMAIN' }),\r\n 'handInfo': new DBMappingInfo({ field: 'F_HANDINFO', table: 'T_AOMMAIN' }),\r\n 'accountInfo': new DBMappingInfo({ field: 'F_ACCOUNTINFO', table: 'T_AOMMAIN' }),\r\n 'mark': new DBMappingInfo({ field: 'F_MARK', table: 'T_AOMMAIN' }),\r\n 'description': new DBMappingInfo({ field: 'F_DESCRIPTION', table: 'T_AOMMAIN' }),\r\n 'otherInfo': new DBMappingInfo({ field: 'F_OTHERINFO', table: 'T_AOMMAIN' }),\r\n 'pWtChg': new DBMappingInfo({ field: 'F_PWTCHG', table: 'T_AOMMAIN' }),\r\n 'cWtChg': new DBMappingInfo({ field: 'F_CWTCHG', table: 'T_AOMMAIN' }),\r\n 'pValChg': new DBMappingInfo({ field: 'F_PVALCHG', table: 'T_AOMMAIN' }),\r\n 'cValChg': new DBMappingInfo({ field: 'F_CVALCHG', table: 'T_AOMMAIN' }),\r\n 'pTaxChg': new DBMappingInfo({ field: 'F_PTAXCHG', table: 'T_AOMMAIN' }),\r\n 'cTaxChg': new DBMappingInfo({ field: 'F_CTAXCHG', table: 'T_AOMMAIN' }),\r\n 'pAgtChg': new DBMappingInfo({ field: 'F_PAGTCHG', table: 'T_AOMMAIN' }),\r\n 'cAgtChg': new DBMappingInfo({ field: 'F_CAGTCHG', table: 'T_AOMMAIN' }),\r\n 'pCarChg': new DBMappingInfo({ field: 'F_PCARCHG', table: 'T_AOMMAIN' }),\r\n 'cCarChg': new DBMappingInfo({ field: 'F_CCARCHG', table: 'T_AOMMAIN' }),\r\n 'pTotal': new DBMappingInfo({ field: 'F_PTOTAL', table: 'T_AOMMAIN' }),\r\n 'cTotal': new DBMappingInfo({ field: 'F_CTOTAL', table: 'T_AOMMAIN' }),\r\n 'issuingCarrier': new DBMappingInfo({ field: 'F_ISSUINGCARRIER', table: 'T_AOMMAIN' }),\r\n 'branch': new DBMappingInfo({ field: 'F_BRANCH', table: 'T_AOMMAIN' }),\r\n 'rateClass': new DBMappingInfo({ field: 'F_RATECLASS', table: 'T_AOMMAIN' }),\r\n 'cutOff': new DBMappingInfo({ field: 'F_CUTOFF', table: 'T_AOMMAIN' }),\r\n 'cur1': new DBMappingInfo({ field: 'F_CUR1', table: 'T_AOMMAIN' }),\r\n 'cur2': new DBMappingInfo({ field: 'F_CUR2', table: 'T_AOMMAIN' }),\r\n 'exRate1': new DBMappingInfo({ field: 'F_EXRATE1', table: 'T_AOMMAIN' }),\r\n 'exRate2': new DBMappingInfo({ field: 'F_EXRATE2', table: 'T_AOMMAIN' }),\r\n 'completeBill': new DBMappingInfo({ field: 'F_COMPLETEBILL', table: 'T_AOMMAIN' }),\r\n 'completeInvo': new DBMappingInfo({ field: 'F_COMPLETEINVO', table: 'T_AOMMAIN' }),\r\n 'completeCrDb': new DBMappingInfo({ field: 'F_COMPLETECRDB', table: 'T_AOMMAIN' }),\r\n 'profitShare': new DBMappingInfo({ field: 'F_PROFITSHARE', table: 'T_AOMMAIN' }),\r\n 'line': new DBMappingInfo({ field: 'F_LINE', table: 'T_AOMMAIN' }),\r\n 'shipmentType': new DBMappingInfo({ field: 'F_SHIPMENTTYPE', table: 'T_AOMMAIN' }),\r\n 'agent2': new DBMappingInfo({ field: 'F_AGENT2', table: 'T_AOMMAIN' }),\r\n 'agent3': new DBMappingInfo({ field: 'F_AGENT3', table: 'T_AOMMAIN' }),\r\n 'mSmanId': new DBMappingInfo({ field: 'F_MSMANID', table: 'T_AOMMAIN' }),\r\n 'operator': new DBMappingInfo({ field: 'F_Operator', table: 'T_AOMMAIN' }),\r\n 'payableTo': new DBMappingInfo({ field: 'F_PAYABLETO', table: 'T_AOMMAIN' }),\r\n 'dutyCustomer': new DBMappingInfo({ field: 'F_DUTYCUSTOMER', table: 'T_AOMMAIN' }),\r\n 'dutyAgent': new DBMappingInfo({ field: 'F_DUTYAGENT', table: 'T_AOMMAIN' }),\r\n 'mblCustomer': new DBMappingInfo({ field: 'F_MBLCUSTOMER', table: 'T_AOMMAIN' }),\r\n 'u1Id': new DBMappingInfo({ field: 'F_U1ID', table: 'T_AOMMAIN' }),\r\n 'u1Date': new DBMappingInfo({ field: 'F_U1Date', table: 'T_AOMMAIN' }),\r\n 'u2Id': new DBMappingInfo({ field: 'F_U2ID', table: 'T_AOMMAIN' }),\r\n 'u2Date': new DBMappingInfo({ field: 'F_U2Date', table: 'T_AOMMAIN' }),\r\n 'agentRefNo': new DBMappingInfo({ field: 'AgentRefNo', table: 'T_AOMMAIN' }),\r\n 'volCm': new DBMappingInfo({ field: 'VolCm', table: 'T_AOMMAIN' }),\r\n 'mblCustomer2': new DBMappingInfo({ field: 'MblCustomer2', table: 'T_AOMMAIN' }),\r\n 'projectNo': new DBMappingInfo({ field: 'ProjectNo', table: 'T_AOMMAIN' }),\r\n 'labelRemark': new DBMappingInfo({ field: 'F_LabelRemark', table: 'T_AOMMAIN' }),\r\n 'showCharged': new DBMappingInfo({ field: 'F_SHOWCHARGE', table: 'T_AOMMAIN' }),\r\n 'showOther': new DBMappingInfo({ field: 'F_SHOWOTHER', table: 'T_AOMMAIN' }),\r\n 'showOtherAmt': new DBMappingInfo({ field: 'F_SHOWOTHERAMT', table: 'T_AOMMAIN' }),\r\n 'showToBy': new DBMappingInfo({ field: 'F_SHOWTOBY', table: 'T_AOMMAIN' }),\r\n \r\n //airline status\r\n 'pickupDate': new DBMappingInfo({ field: 'f_pickupdate', table: 'T_AOMMAIN' }),\r\n 'pickupLoc': new DBMappingInfo({ field: 'f_pickuploc', table: 'T_AOMMAIN' }),\r\n 'atd': new DBMappingInfo({ field: 'f_atd', table: 'T_AOMMAIN' }),\r\n 'atdLoc': new DBMappingInfo({ field: 'f_atdloc', table: 'T_AOMMAIN' }),\r\n 'customsRls': new DBMappingInfo({ field: 'f_CustomRls', table: 'T_AOMMAIN' }),\r\n 'customsRlsLoc': new DBMappingInfo({ field: 'f_custmrlsloc', table: 'T_AOMMAIN' }),\r\n 'ata': new DBMappingInfo({ field: 'f_ata', table: 'T_AOMMAIN' }),\r\n 'ataLoc': new DBMappingInfo({ field: 'f_ataloc', table: 'T_AOMMAIN' }),\r\n 'avail': new DBMappingInfo({ field: 'f_avail', table: 'T_AOMMAIN' }),\r\n 'availLoc': new DBMappingInfo({ field: 'f_availloc', table: 'T_AOMMAIN' }),\r\n 'delivery': new DBMappingInfo({ field: 'f_delivery', table: 'T_AOMMAIN' }),\r\n 'delvLoc': new DBMappingInfo({ field: 'f_delvloc', table: 'T_AOMMAIN' }),\r\n\r\n 'showCharge': new DBMappingInfo({ field: 'F_C1', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 2 }),\r\n 'pUnit': new DBMappingInfo({ field: 'F_C2', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 2 }),\r\n 'firstTo': new DBMappingInfo({ field: 'F_C3', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 2 }),\r\n 'sAddr': new DBMappingInfo({ field: 'F_C4', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 2 }),\r\n 'cAddr': new DBMappingInfo({ field: 'F_C5', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 2 }),\r\n 'nAddr': new DBMappingInfo({ field: 'F_C6', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 2 }),\r\n 'sci': new DBMappingInfo({ field: 'F_C7', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 2 }),\r\n 'notify': new DBMappingInfo({ field: 'F_N1', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 2 }),\r\n 'chkEdit': new DBMappingInfo({ field: 'F_N2', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 2 }),\r\n 'consignee': new DBMappingInfo({ field: 'F_N3', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 2 }),\r\n 'etd1': new DBMappingInfo({ field: 'F_D1', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 2 }),\r\n 'etd2': new DBMappingInfo({ field: 'F_D2', table: 'T_AOTHERINFO', tbName: 'T_AOMMAIN', tbId: '@TBID', type: 2 }),\r\n 'isDomestic': new DBMappingInfo({field: 'F_N6', table:'T_AOTHERINFO', tbName:'T_AOMMAIN', tbId: '@TBID', type: 2}),\r\n\r\n };\r\n\r\n hasNewEvents(): boolean {\r\n return this.toggledEvents.length > 0;\r\n }\r\n\r\n setChildTrackable(value: boolean): void {\r\n if(this.invList.length > 0) {\r\n this.invList.forEach(c => c.trackable = value);\r\n }\r\n if(this.descList.length > 0) {\r\n this.descList.forEach(c => c.trackable = value);\r\n }\r\n\r\n if(this.aeAcctData) this.aeAcctData.trackable = value;\r\n }\r\n}\r\n","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\nimport {OmContainer} from './OmContainer';\r\nimport { MblStatusViewModel } from './MblStatusViewModel';\r\nimport { FileLockProp, InvoiceBillCrdb, RelatedCrdbDefinition } from '../ifmsTypes';\r\nimport {OiHbl} from './OiHbl';\r\nimport { appendLine } from '../util';\r\nimport { CrDbHd } from './CrDbHd';\r\nimport _ from 'lodash';\r\n\r\nexport class OiMbl extends TrackableEntity {\r\n id: number = 0;\r\n directBl: boolean = false;\r\n modelName:string = \"oimbl\"; //for ifmsButton > getChangedListData\r\n\r\n shipmentType: string = '';\r\n refNo: string = '';\r\n branch: string = '';\r\n lotNo: string = '';\r\n svccNo: string = '';\r\n agentRefNo: string = '';\r\n agent: number = 0;\r\n agentName: string = '';\r\n agent2: number = 0;\r\n agent2Name: string = '';\r\n agent3: number = 0;\r\n agent3Name: string = '';\r\n mblCustomer: number = 0;\r\n mblCustomerName: string = '';\r\n carrier: number = 0;\r\n carrierName: string = '';\r\n mblNo: string = '';\r\n sMblNo: string = '';\r\n mCommodity: string = '';\r\n steamShip: number = 0;\r\n steamShipName: string = '';\r\n vessel: string = '';\r\n voyage: string = '';\r\n vesselFlag: string = '';\r\n country: string = '';\r\n feederVessel: string = '';\r\n cyLocation: number = 0;\r\n cyLocationName: string = '';\r\n cfsLocation: number = 0;\r\n cfsLocationName: string = '';\r\n emptyRtn: number = 0;\r\n emptyRtnName: string = '';\r\n oimContainerList: OmContainer[] = [];\r\n unlCode: string = '';\r\n uslCode: string = '';\r\n eta: string | null = null;\r\n loadingPort: string = '';\r\n undCode: string = '';\r\n usdCode: string = '';\r\n etd: string | null = null;\r\n discharge: string = '';\r\n unfCode: string = '';\r\n usfCode: string = '';\r\n fEta: string | null = null;\r\n finalDest: string = '';\r\n finalDestName: string = '';\r\n itNo: string = '';\r\n itDate: string | null = null;\r\n itPlace: string = '';\r\n ppcc: string = '';\r\n lclfcl: string = '';\r\n moveType: string = '';\r\n msManId: string = '';\r\n ebl: boolean = false;\r\n expRls: boolean = false;\r\n rlsDate: string | null = null;\r\n line: string = '';\r\n fileClosed: number = 0;\r\n isClosed: boolean = false;\r\n closedBy: string = '';\r\n closeDate: string | null = null;\r\n actClosed: boolean = false;\r\n actClosedBy: string = '';\r\n actCloseDate: string | null = null;\r\n manifestFrom: string = '';\r\n toAgent: string = '';\r\n cargoNo: string = '';\r\n dutyCustomer: number = 0;\r\n dutyCustomerName: string = '';\r\n dutyAgent: number = 0;\r\n dutyAgentName: string = '';\r\n profitShare: number = 0;\r\n cur1: string = '';\r\n cur2: string = '';\r\n exRate1: number = 0;\r\n exRate2: number = 0;\r\n oFrtCfrm: boolean = false;\r\n oFrtHold: boolean = false;\r\n completeInvo: boolean = false;\r\n completeBill: boolean = false;\r\n completeCrDb: boolean = false;\r\n confirmDate: string | null = null;\r\n confirmedBy: string = '';\r\n confirmActionDate: string | null = null;\r\n agentCreditHold: boolean = false;\r\n hblCount: number = 0;\r\n postDate: string | null = null;\r\n statusInvo: string = '';\r\n statusBill: string = '';\r\n statusCrDb: string = '';\r\n u1Id: string = '';\r\n u1Date: string | null = null;\r\n u2Id: string = '';\r\n u2Date: string | null = null;\r\n pimsLinkUserId: string = '';\r\n pimsLinkId: number = 0;\r\n pimsLinkDate: string | null = null;\r\n amsLinkUserId: string = '';\r\n amsLinkId: number = 0;\r\n amsLinkDate: string | null = null;\r\n itCarrier: number = 0;\r\n itClass: string = '';\r\n showAgent: string = '';\r\n devanRemark: string = '';\r\n oblDate: string | null = null;\r\n pnlDate: string | null = null;\r\n operator: string = '';\r\n agentPimsId: number = 0;\r\n aaid: number = 0;\r\n cyAddress: string = '';\r\n cfsAddress: string = '';\r\n cyContact: string = '';\r\n cfsContact: string = '';\r\n\r\n //Direct B/L\r\n shipper: number = 0;\r\n consignee: number = 0;\r\n notify: number = 0;\r\n broker: number = 0;\r\n sName : string = '';\r\n cName: string = '';\r\n nName: string= '';\r\n bName: string = '';\r\n shipperName: string = '';\r\n consigneeName: string = '';\r\n notifyName: string = '';\r\n brokerName: string = '';\r\n bTel: string = '';\r\n bFax: string = '';\r\n bContact: string= '';\r\n bEmail: string = '';\r\n finalDest2: string='';\r\n fEta2: string | null = null;\r\n amsblNo: string = '';\r\n opeartor: string = '';\r\n custRefNo: string='';\r\n mark: string ='';\r\n description: string = '';\r\n markPkg: string = '';\r\n markGross: string ='';\r\n markMeasure: string = '';\r\n multinameId: number = 0;\r\n\r\n\r\n // cloud\r\n mblCustomer2: number = 0;\r\n mblCustomer2Name: string = '';\r\n rlsDateBy: string = '';\r\n rcvCrDbBy: string = '';\r\n oblDateBy: string = '';\r\n projectNo: string = '';\r\n hblList: OiHbl[] = [];\r\n arrivedCFSDate: string | null = null;\r\n devanDate: string | null = null;\r\n // frontend only\r\n\r\n // ISalesCostParent.invoiceBill\r\n invoiceBill:InvoiceBillCrdb|null = null;\r\n // ISalesCostParent.invoiceBill\r\n readonlyCrdbLineItems?: Array|null = null; // no track\r\n relatedCrdbDefinitions: Array|null = null;\r\n\r\n milestone: MblStatusViewModel|null = null;\r\n milestoneContainerSelectedIndex: number = 0;\r\n\r\n trStatus: string = '';\r\n\r\n get canChangeBranch():boolean {\r\n if (this.id <= 0) {\r\n return true;\r\n }\r\n\r\n const allowedStatuses = ['', 'E', 'D'];\r\n return allowedStatuses.includes(this.statusBill) &&\r\n allowedStatuses.includes(this.statusInvo) &&\r\n allowedStatuses.includes(this.statusCrDb) &&\r\n this.hblList.every(h => allowedStatuses.includes(h.statusBill) && allowedStatuses.includes(h.statusInvo) && allowedStatuses.includes(h.statusCrDb))\r\n };\r\n\r\n static fileLockEnableProps: FileLockProp[] = [\r\n { key: 'cyLocation', name: 'CY Location' },\r\n { key: 'itNo', name: 'I.T #' },\r\n { key: 'itPlace', name: 'I.T Place' },\r\n { key: 'oimContainerList.lastFreeDay', name: 'Container Info Last Free Day' },\r\n { key: 'oimContainerList.goDate', name: 'Container Info Last G.O Date' },\r\n { key: 'oimContainerList.pickupNo', name: 'Container Info Pickup #' },\r\n { key: 'oimContainerList.pickupLoc', name: 'Container Info Pickup Location' },\r\n ];\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init); \r\n this.noTrackProps.push('id', 'agent2Name', 'agent3Name', 'isClosed', 'dutyCustomerName', 'dutyAgentName', 'agentCreditHold', 'hblCount',\r\n 'closedDate', 'invoiceBill', 'readonlyCrdbLineItems', 'isLockCur1', 'isLockCur2', 'isLockCur3', 'isLockCur4', \r\n //'milestone', \r\n 'canChangeBranch', 'hblList', 'actClosed', 'actClosedBy', 'actCloseDate', 'confirmDate', 'confirmedBy', 'trStatus');\r\n this.getdateProps.push('u1Date', 'u2Date'); \r\n if(this.id === 0) this.id = this.GetNextId();\r\n \r\n if(this.oimContainerList.length > 0) {\r\n this.oimContainerList = this.oimContainerList.map(d => new OmContainer(d));\r\n } else {\r\n this.oimContainerList = [];\r\n }\r\n }\r\n\r\n isFileLockFor(propName: string) {\r\n return this.isClosed && !OiMbl.fileLockEnableProps.some(x => x.key === propName);\r\n }\r\n\r\n static getFileLockMessage(): string {\r\n const messageBase = appendLine(\"OP Close\", \"The following fields are editable only:\\n\")\r\n return appendLine(messageBase, OiMbl.fileLockEnableProps\r\n .map(x => x.name)\r\n .reduce((acc: string, x) => appendLine(acc, `${x}`), \"\"));\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n const dicFieldMap:IDictionary = {};\r\n _.keys(OiMbl.dicFieldMappings).forEach(m=>{\r\n dicFieldMap[m] = OiMbl.dicFieldMappings[m];\r\n });\r\n\r\n _.keys(OmContainer.dicFieldMappings4Import).forEach(m=>{\r\n dicFieldMap[`oimContainerList.${m}`] = OmContainer.dicFieldMappings4Import[m];\r\n });\r\n return dicFieldMap;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_ID', table: 'T_OIMMAIN' }),\r\n 'directBl': new DBMappingInfo({ field: 'F_DirectBL', table: 'T_OIMMAIN' }),\r\n 'shipmentType': new DBMappingInfo({ field: 'F_ShipmentType', table: 'T_OIMMAIN' }),\r\n 'refNo': new DBMappingInfo({ field: 'F_RefNo', table: 'T_OIMMAIN' }),\r\n 'branch': new DBMappingInfo({ field: 'F_Branch', table: 'T_OIMMAIN' }),\r\n 'lotNo': new DBMappingInfo({ field: 'F_LotNo', table: 'T_OIMMAIN' }),\r\n 'svccNo': new DBMappingInfo({ field: 'F_SvccNo', table: 'T_OIMMAIN' }),\r\n 'agentRefNo': new DBMappingInfo({ field: 'F_AgentRefNo', table: 'T_OIMMAIN' }),\r\n 'agent': new DBMappingInfo({ field: 'F_Agent', table: 'T_OIMMAIN' }),\r\n 'agent2': new DBMappingInfo({ field: 'F_Agent2', table: 'T_OIMMAIN' }),\r\n 'agent3': new DBMappingInfo({ field: 'F_Agent3', table: 'T_OIMMAIN' }),\r\n 'mblCustomer': new DBMappingInfo({ field: 'F_MBLCustomer', table: 'T_OIMMAIN' }),\r\n 'carrier': new DBMappingInfo({ field: 'F_Carrier', table: 'T_OIMMAIN' }),\r\n 'mblNo': new DBMappingInfo({ field: 'F_MblNo', table: 'T_OIMMAIN' }),\r\n 'sMblNo': new DBMappingInfo({ field: 'F_SMblNo', table: 'T_OIMMAIN' }),\r\n 'mCommodity': new DBMappingInfo({ field: 'F_MCommodity', table: 'T_OIMMAIN' }),\r\n 'steamShip': new DBMappingInfo({ field: 'F_SteamShip', table: 'T_OIMMAIN' }),\r\n 'vessel': new DBMappingInfo({ field: 'F_Vessel', table: 'T_OIMMAIN' }),\r\n 'voyage': new DBMappingInfo({ field: 'F_Voyage', table: 'T_OIMMAIN' }),\r\n 'vesselFlag': new DBMappingInfo({ field: 'F_VesselFlag', table: 'T_OIMMAIN' }),\r\n 'country': new DBMappingInfo({ field: 'F_Country', table: 'T_OIMMAIN' }),\r\n 'feederVessel': new DBMappingInfo({ field: 'F_FeederVessel', table: 'T_OIMMAIN' }),\r\n 'cyLocation': new DBMappingInfo({ field: 'F_CYLocation', table: 'T_OIMMAIN' }),\r\n 'cfsLocation': new DBMappingInfo({ field: 'F_CFSLocation', table: 'T_OIMMAIN' }),\r\n 'emptyRtn': new DBMappingInfo({ field: 'F_EmptyRtn', table: 'T_OIMMAIN' }),\r\n 'unlCode': new DBMappingInfo({ field: 'F_UNLCode', table: 'T_OIMMAIN' }),\r\n 'uslCode': new DBMappingInfo({ field: 'F_USLCode', table: 'T_OIMMAIN' }),\r\n 'eta': new DBMappingInfo({ field: 'F_ETA', table: 'T_OIMMAIN' }),\r\n 'loadingPort': new DBMappingInfo({ field: 'F_LoadingPort', table: 'T_OIMMAIN' }),\r\n 'undCode': new DBMappingInfo({ field: 'F_UNDCode', table: 'T_OIMMAIN' }),\r\n 'usdCode': new DBMappingInfo({ field: 'F_USDCode', table: 'T_OIMMAIN' }),\r\n 'etd': new DBMappingInfo({ field: 'F_ETD', table: 'T_OIMMAIN' }),\r\n 'discharge': new DBMappingInfo({ field: 'F_Discharge', table: 'T_OIMMAIN' }),\r\n 'unfCode': new DBMappingInfo({ field: 'F_UNFCode', table: 'T_OIMMAIN' }),\r\n 'usfCode': new DBMappingInfo({ field: 'F_USFCode', table: 'T_OIMMAIN' }),\r\n 'fEta': new DBMappingInfo({ field: 'F_FETA', table: 'T_OIMMAIN' }),\r\n 'finalDest': new DBMappingInfo({ field: 'F_FinalDest', table: 'T_OIMMAIN' }),\r\n 'itNo': new DBMappingInfo({ field: 'F_ITNo', table: 'T_OIMMAIN' }),\r\n 'itDate': new DBMappingInfo({ field: 'F_ITDate', table: 'T_OIMMAIN' }),\r\n 'itPlace': new DBMappingInfo({ field: 'F_ITPlace', table: 'T_OIMMAIN' }),\r\n 'ppcc': new DBMappingInfo({ field: 'F_PPCC', table: 'T_OIMMAIN' }),\r\n 'lclfcl': new DBMappingInfo({ field: 'F_LCLFCL', table: 'T_OIMMAIN' }),\r\n 'moveType': new DBMappingInfo({ field: 'F_MoveType', table: 'T_OIMMAIN' }),\r\n 'msManId': new DBMappingInfo({ field: 'F_MSManId', table: 'T_OIMMAIN' }),\r\n 'ebl': new DBMappingInfo({ field: 'F_EBL', table: 'T_OIMMAIN' }),\r\n 'expRls': new DBMappingInfo({ field: 'F_ExpRls', table: 'T_OIMMAIN' }),\r\n 'rlsDate': new DBMappingInfo({ field: 'F_RlsDate', table: 'T_OIMMAIN' }),\r\n 'line': new DBMappingInfo({ field: 'F_Line', table: 'T_OIMMAIN' }),\r\n 'closedBy': new DBMappingInfo({ field: 'F_ClosedBy', table: 'T_OIMMAIN' }),\r\n 'manifestFrom': new DBMappingInfo({ field: 'F_ManifestFrom', table: 'T_OIMMAIN' }),\r\n 'toAgent': new DBMappingInfo({ field: 'F_ToAgent', table: 'T_OIMMAIN' }),\r\n 'cargoNo': new DBMappingInfo({ field: 'F_CargoNo', table: 'T_OIMMAIN' }),\r\n 'postDate': new DBMappingInfo({ field: 'F_PostDate', table: 'T_OIMMAIN' }),\r\n 'dutyCustomer': new DBMappingInfo({ field: 'F_DutyCustomer', table: 'T_OIMMAIN' }),\r\n 'dutyAgent': new DBMappingInfo({ field: 'F_DutyAgent', table: 'T_OIMMAIN' }),\r\n 'cur1': new DBMappingInfo({ field: 'F_Cur1', table: 'T_OIMMAIN' }),\r\n 'cur2': new DBMappingInfo({ field: 'F_Cur2', table: 'T_OIMMAIN' }),\r\n 'exRate1': new DBMappingInfo({ field: 'F_EXRATE1', table: 'T_OIMMAIN' }),\r\n 'exRate2': new DBMappingInfo({ field: 'F_EXRATE2', table: 'T_OIMMAIN' }),\r\n 'profitShare': new DBMappingInfo({ field: 'F_ProfitShare', table: 'T_OIMMAIN' }),\r\n 'oFrtCfrm': new DBMappingInfo({ field: 'F_OfrtCfrm', table: 'T_OIMMAIN' }),\r\n 'oFrtHold': new DBMappingInfo({ field: 'F_OfrtHold', table: 'T_OIMMAIN' }),\r\n 'u1Id': new DBMappingInfo({ field: 'F_U1ID', table: 'T_OIMMAIN' }),\r\n 'u1Date': new DBMappingInfo({ field: 'F_U1Date', table: 'T_OIMMAIN' }),\r\n 'u2Id': new DBMappingInfo({ field: 'F_U2ID', table: 'T_OIMMAIN' }),\r\n 'u2Date': new DBMappingInfo({ field: 'F_U2Date', table: 'T_OIMMAIN' }),\r\n 'mblCustomer2': new DBMappingInfo({ field: 'mblcustomer2', table: 'T_OIMMAIN' }),\r\n 'rlsDateBy': new DBMappingInfo({ field: 'rlsby', table: 'T_OIMMAIN' }),\r\n 'rcvCrDbBy': new DBMappingInfo({ field: 'RcvCrDbBy', table: 'T_OIMMAIN' }),\r\n 'oblDate': new DBMappingInfo({ field: 'F_OblDate', table: 'T_OIMMAIN' }),\r\n 'oblDateBy': new DBMappingInfo({ field: 'OblDateBy', table: 'T_OIMMAIN' }),\r\n 'pnlDate': new DBMappingInfo({ field: 'F_PnlDate', table: 'T_OIMMAIN' }),\r\n 'projectNo': new DBMappingInfo({ field: 'ProjectNo', table: 'T_OIMMAIN' }),\r\n 'arrivedCFSDate': new DBMappingInfo({ field: 'F_ArrivedCFSDate', table: 'T_OIMMAIN' }),\r\n 'devanDate': new DBMappingInfo({ field: 'F_DevanDate', table: 'T_OIMMAIN' }),\r\n //Direct B/L\r\n 'shipper': new DBMappingInfo({field:'f_mshipper', table: 'T_OIMMAIN'}),\r\n 'consignee': new DBMappingInfo({field:'f_mconsignee', table: 'T_OIMMAIN'}),\r\n 'notify': new DBMappingInfo({field:'f_mnotify', table: 'T_OIMMAIN'}),\r\n 'broker': new DBMappingInfo({field:'f_mbroker', table: 'T_OIMMAIN'}),\r\n 'sName': new DBMappingInfo({field:'f_msname', table: 'T_OIMMAIN'}),\r\n 'cName': new DBMappingInfo({field:'f_mcname', table: 'T_OIMMAIN'}),\r\n 'nName': new DBMappingInfo({field:'f_mnname', table: 'T_OIMMAIN'}),\r\n 'bName': new DBMappingInfo({field:'f_mbname', table: 'T_OIMMAIN'}),\r\n 'bTel': new DBMappingInfo({field:'f_mbtel', table: 'T_OIMMAIN'}),\r\n 'bFax': new DBMappingInfo({field:'f_mbfax', table: 'T_OIMMAIN'}),\r\n 'bContact': new DBMappingInfo({field:'f_mbcontact', table: 'T_OIMMAIN'}),\r\n 'bEmail': new DBMappingInfo({field:'f_mbemail', table: 'T_OIMMAIN'}),\r\n 'finalDest2': new DBMappingInfo({field:'f_mfinaldest', table: 'T_OIMMAIN'}),\r\n 'fEta2': new DBMappingInfo({field:'f_mfeta', table: 'T_OIMMAIN'}),\r\n 'amsblNo': new DBMappingInfo({field:'f_mamsblno', table: 'T_OIMMAIN'}),\r\n 'opeartor': new DBMappingInfo({field:'f_operator', table: 'T_OIMMAIN'}),\r\n 'custRefNo': new DBMappingInfo({field:'f_mcustrefno', table: 'T_OIMMAIN'}),\r\n 'mark': new DBMappingInfo({field:'f_mmark', table: 'T_OIMMAIN'}),\r\n 'description': new DBMappingInfo({field:'f_mdescription', table: 'T_OIMMAIN'}),\r\n 'markPkg': new DBMappingInfo({field:'f_mmarkpkg', table: 'T_OIMMAIN'}),\r\n 'markGross': new DBMappingInfo({field:'f_mmarkgross', table: 'T_OIMMAIN'}),\r\n 'markMeasure': new DBMappingInfo({field:'f_mmarkmeasure', table: 'T_OIMMAIN'}),\r\n 'multinameId': new DBMappingInfo({field:'f_mmultinameid', table: 'T_OIMMAIN'}),\r\n };\r\n\r\n setChildTrackable(value: boolean): void {\r\n if(this.oimContainerList.length > 0) {\r\n this.oimContainerList.forEach(c => c.trackable = value);\r\n }\r\n }\r\n}\r\n\r\n","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\nimport {OmContainer} from './OmContainer';\r\nimport {MblStatusViewModel} from \"./MblStatusViewModel\";\r\nimport {FileLockProp, InvoiceBillCrdb, RelatedCrdbDefinition} from \"../ifmsTypes\";\r\nimport {OeHbl} from './OeHbl';\r\nimport { CrDbHd } from './CrDbHd';\r\nimport _ from 'lodash';\r\nimport { appendLine } from '../util';\r\n\r\nexport class OeMbl extends TrackableEntity {\r\n modelName:string = \"oembl\"; //for ifmsButton > getChangedListData\r\n\r\n directBl: boolean = false;\r\n shipmentType: string = '';\r\n refNo: string = '';\r\n branch: string = '';\r\n lotNo: string = '';\r\n bookingNo: string = '';\r\n svccNo: string = '';\r\n agent: number = 0;\r\n agentName: string = '';\r\n agentCHold: boolean = false;\r\n agent2: number = 0;\r\n agent2Name: string = '';\r\n agent3: number = 0;\r\n agent3Name: string = '';\r\n mblCustomer: number = 0;\r\n mblCustomerName: string = '';\r\n carrier: number = 0;\r\n carrierName: string = '';\r\n mblNo: string = '';\r\n sMblNo: string = '';\r\n steamShip: number = 0;\r\n steamShipName: string = '';\r\n vessel: string = '';\r\n voyage: string = '';\r\n rstation: number = 0;\r\n rstationName: string = '';\r\n plofRec: string = '';\r\n plofDel: string = '';\r\n finalDestination: string = '';\r\n unlCode: string = '';\r\n uslCode: string = '';\r\n etd: string | null = null;\r\n loadingPort: string = '';\r\n undCode: string = '';\r\n usdCode: string = '';\r\n eta: string | null = null;\r\n discharge: string = '';\r\n ppcc: string = '';\r\n lclfcl: string = '';\r\n brokerage: number = 0;\r\n blType: string = '';\r\n profitShare: number = 0;\r\n moveType: string = '';\r\n cutoffDate: string | null = null;\r\n codeDesc: string = '';\r\n coLoad: string = '';\r\n showAgent: boolean = false;\r\n msManID: string = '';\r\n fileClosed: number = 0;\r\n isFileClosed: boolean = false;\r\n closedBy: string = '';\r\n closeDate: string | null = null;\r\n actClosed: boolean = false;\r\n actClosedBy: string = '';\r\n actCloseDate: string | null = null;\r\n postDate: string | null = null;\r\n line: string = '';\r\n shipper: number = 0;\r\n shipperName: string = '';\r\n consignee: number = 0;\r\n consigneeName: string = '';\r\n notify: number = 0;\r\n notifyName: string = '';\r\n forwardAgent: number = 0;\r\n forwardAgentName: string = '';\r\n mxtnNo: string = '';\r\n domesticInfo: string = '';\r\n hblNoCnt: number = 0;\r\n mark: string = '';\r\n markPkg: string = '';\r\n description: string = '';\r\n markOnboard: string = '';\r\n markGross: string = '';\r\n markMeasure: string = '';\r\n sName: string = '';\r\n cName: string = '';\r\n nName: string = '';\r\n fName: string = '';\r\n id: number = 0;\r\n u1Id: string = '';\r\n u1Date: string | null = null;\r\n u2Id: string = '';\r\n u2Date: string = '';\r\n operator: string = '';\r\n pimsLinkUserId: string = '';\r\n pimsLinkId: number = 0;\r\n pimsLinkDate: string | null = null;\r\n cur1: string = '';\r\n cur2: string = '';\r\n exrate1: number = 0;\r\n exrate2: number = 0;\r\n completeBill: string = '';\r\n completeInvo: string = '';\r\n completeCrDb: string = '';\r\n sentAgentEdi: string = '';\r\n confirmDate: string | null = null;\r\n confirmedBy: string = '';\r\n statusInfo: string = '';\r\n statusCrDb: string = '';\r\n confirmActionDate: string | null = null;\r\n dutyCustomer: number = 0;\r\n dutyCustomerName: string = '';\r\n dutyAgent: number = 0;\r\n dutyAgentName: string = '';\r\n scac: string = '';\r\n agentPimsId: number = 0;\r\n aaid: number = 0;\r\n rrid: number = 0;\r\n container: OmContainer[] = [];\r\n mblCustomer2: number = 0;\r\n mblCustomer2Name: string = '';\r\n commodity: string = '';\r\n agentRefNo: string = '';\r\n truckCom: number = 0;\r\n truckComName: string = '';\r\n cBookDate: string | null = null;\r\n sedCutoff: string | null = null;\r\n emptyPuLocId: number = 0;\r\n emptyPuLoc: string = '';\r\n statusInvo: string = '';\r\n statusBill: string = '';\r\n hblList: OeHbl[] = [];\r\n\r\n invoiceBill: InvoiceBillCrdb|null = null;\r\n readonlyCrdbLineItems?: Array|null = null;\r\n relatedCrdbDefinitions: Array|null = null;\r\n\r\n milestone: MblStatusViewModel|null = null;\r\n milestoneContainerSelectedIndex: number = 0;\r\n\r\n sendDocPkg: boolean = false;\r\n projectNo: string = '';\r\n\r\n get canChangeBranch():boolean {\r\n if (this.id <= 0) {\r\n return true;\r\n }\r\n\r\n const allowedStatuses = ['', 'E', 'D'];\r\n return allowedStatuses.includes(this.statusBill) &&\r\n allowedStatuses.includes(this.statusInvo) &&\r\n allowedStatuses.includes(this.statusCrDb) &&\r\n this.hblList.every(h => allowedStatuses.includes(h.statusBill) && allowedStatuses.includes(h.statusInvo) && allowedStatuses.includes(h.statusCrDb))\r\n };\r\n\r\n // UI only\r\n bookingId: number = 0;\r\n\r\n static fileLockEnableProps: FileLockProp[] = [\r\n { key: 'vessel', name: '' },\r\n { key: 'voyage', name: '' },\r\n { key: 'mark', name: '' },\r\n { key: 'markPkg', name: '' },\r\n { key: 'markGross', name: '' },\r\n { key: 'markMeasure', name: '' },\r\n { key: 'description', name: '' },\r\n { key: 'markOnBoard', name: '' },\r\n ];\r\n\r\n static fileLockMessage: string =\r\n `Vessel Name & Voyage\r\nContainer Information\r\nB/L Body\r\n`;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('sendDocPkg, agentCHold', 'agent2Name', 'agent3Name', 'shipperName', 'consigneeName', 'notifyName', 'forwardAgentName', 'hblNoCnt', 'id', 'invoiceBill', 'hblList', 'bookingId', 'canChangeBranch', 'actClosed', 'actClosedBy', 'actCloseDate', 'confirmDate', 'confirmedBy');\r\n this.getdateProps.push('u1Date', 'u2Date'); \r\n if(this.id === 0) this.id = this.GetNextId();\r\n\r\n if(this.container.length > 0) {\r\n this.container = this.container.map(d => new OmContainer(d));\r\n } else {\r\n this.container = [];\r\n }\r\n }\r\n\r\n isFileLockFor(propName: string) {\r\n return this.fileClosed > 0 && !OeMbl.fileLockEnableProps.some(x => x.key === propName);\r\n }\r\n \r\n static getFileLockMessage(): string {\r\n const messageBase = appendLine(\"OP Close\", \"The following fields are editable only:\\n\")\r\n // return appendLine(messageBase, OeMbl.fileLockEnableProps\r\n // .map(x => x.name)\r\n // .reduce((acc: string, x) => appendLine(acc, `\\t${x}`), \"\"));\r\n return appendLine(messageBase, OeMbl.fileLockMessage);\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n const dicFieldMap:IDictionary = {};\r\n _.keys(OeMbl.dicFieldMappings).forEach(m=>{\r\n dicFieldMap[m] = OeMbl.dicFieldMappings[m];\r\n });\r\n\r\n _.keys(OmContainer.dicFieldMappings).forEach(m=>{\r\n dicFieldMap[`container.${m}`] = OmContainer.dicFieldMappings[m];\r\n });\r\n return dicFieldMap;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'directBl': new DBMappingInfo({ field: 'F_DIRECTBL', table: 'T_OOMMAIN' }),\r\n 'shipmentType': new DBMappingInfo({ field: 'F_SHIPMENTTYPE', table: 'T_OOMMAIN' }),\r\n 'refNo': new DBMappingInfo({ field: 'F_REFNO', table: 'T_OOMMAIN' }),\r\n 'branch': new DBMappingInfo({ field: 'F_BRANCH', table: 'T_OOMMAIN' }),\r\n 'lotNo': new DBMappingInfo({ field: 'F_LOTNO', table: 'T_OOMMAIN' }),\r\n 'bookingNo': new DBMappingInfo({ field: 'F_BOOKINGNO', table: 'T_OOMMAIN' }),\r\n 'svccNo': new DBMappingInfo({ field: 'F_SVCCNO', table: 'T_OOMMAIN' }),\r\n 'agent': new DBMappingInfo({ field: 'F_AGENT', table: 'T_OOMMAIN' }),\r\n 'agent2': new DBMappingInfo({ field: 'F_AGENT2', table: 'T_OOMMAIN' }),\r\n 'agent3': new DBMappingInfo({ field: 'F_AGENT3', table: 'T_OOMMAIN' }),\r\n 'mblCustomer': new DBMappingInfo({ field: 'F_MBLCUSTOMER', table: 'T_OOMMAIN' }),\r\n 'carrier': new DBMappingInfo({ field: 'F_CARRIER', table: 'T_OOMMAIN' }),\r\n 'mblNo': new DBMappingInfo({ field: 'F_MBLNO', table: 'T_OOMMAIN' }),\r\n 'sMblNo': new DBMappingInfo({ field: 'F_SMBLNO', table: 'T_OOMMAIN' }),\r\n 'steamShip': new DBMappingInfo({ field: 'F_STEAMSHIP', table: 'T_OOMMAIN' }),\r\n 'vessel': new DBMappingInfo({ field: 'F_VESSEL', table: 'T_OOMMAIN' }),\r\n 'voyage': new DBMappingInfo({ field: 'F_VOYAGE', table: 'T_OOMMAIN' }),\r\n 'rstation': new DBMappingInfo({ field: 'F_RSTATION', table: 'T_OOMMAIN' }),\r\n 'plofRec': new DBMappingInfo({ field: 'F_PLOFREC', table: 'T_OOMMAIN' }),\r\n 'plofDel': new DBMappingInfo({ field: 'F_PLOFDEL', table: 'T_OOMMAIN' }),\r\n 'finalDestination': new DBMappingInfo({ field: 'F_FINALDESTINATION', table: 'T_OOMMAIN' }),\r\n 'unlCode': new DBMappingInfo({ field: 'F_UNLCODE', table: 'T_OOMMAIN' }),\r\n 'uslCode': new DBMappingInfo({ field: 'F_USLCODE', table: 'T_OOMMAIN' }),\r\n 'etd': new DBMappingInfo({ field: 'F_ETD', table: 'T_OOMMAIN' }),\r\n 'loadingPort': new DBMappingInfo({ field: 'F_LOADINGPORT', table: 'T_OOMMAIN' }),\r\n 'undCode': new DBMappingInfo({ field: 'F_UNDCODE', table: 'T_OOMMAIN' }),\r\n 'usdCode': new DBMappingInfo({ field: 'F_USDCODE', table: 'T_OOMMAIN' }),\r\n 'eta': new DBMappingInfo({ field: 'F_ETA', table: 'T_OOMMAIN' }),\r\n 'discharge': new DBMappingInfo({ field: 'F_DISCHARGE', table: 'T_OOMMAIN' }),\r\n 'ppcc': new DBMappingInfo({ field: 'F_PPCC', table: 'T_OOMMAIN' }),\r\n 'lclfcl': new DBMappingInfo({ field: 'F_LCLFCL', table: 'T_OOMMAIN' }),\r\n 'brokerage': new DBMappingInfo({ field: 'F_BROKERAGE', table: 'T_OOMMAIN' }),\r\n 'blType': new DBMappingInfo({ field: 'F_BLTYPE', table: 'T_OOMMAIN' }),\r\n 'profitShare': new DBMappingInfo({ field: 'F_PROFITSHARE', table: 'T_OOMMAIN' }),\r\n 'moveType': new DBMappingInfo({ field: 'F_MOVETYPE', table: 'T_OOMMAIN' }),\r\n 'cutoffDate': new DBMappingInfo({ field: 'F_CUTOFFDATE', table: 'T_OOMMAIN' }),\r\n 'coLoad': new DBMappingInfo({ field: 'F_COLOAD', table: 'T_OOMMAIN' }),\r\n 'showAgent': new DBMappingInfo({ field: 'F_SHOWAGENT', table: 'T_OOMMAIN' }),\r\n 'msManID': new DBMappingInfo({ field: 'F_MSMANID', table: 'T_OOMMAIN' }),\r\n 'operator': new DBMappingInfo({ field: 'F_Operator', table: 'T_OOMMAIN' }),\r\n 'fileClosed': new DBMappingInfo({ field: 'F_FILECLOSED', table: 'T_OOMMAIN' }),\r\n 'closedBy': new DBMappingInfo({ field: 'F_CLOSEDBY', table: 'T_OOMMAIN' }),\r\n 'postDate': new DBMappingInfo({ field: 'F_POSTDATE', table: 'T_OOMMAIN' }),\r\n 'shipper': new DBMappingInfo({ field: 'F_SHIPPER', table: 'T_OOMMAIN' }),\r\n 'consignee': new DBMappingInfo({ field: 'F_CONSIGNEE', table: 'T_OOMMAIN' }),\r\n 'notify': new DBMappingInfo({ field: 'F_NOTIFY', table: 'T_OOMMAIN' }),\r\n 'forwardAgent': new DBMappingInfo({ field: 'F_FORWARDAGENT', table: 'T_OOMMAIN' }),\r\n 'mxtnNo': new DBMappingInfo({ field: 'F_MXTNNO', table: 'T_OOMMAIN' }),\r\n 'domesticInfo': new DBMappingInfo({ field: 'F_DOMESTICINFO', table: 'T_OOMMAIN' }),\r\n 'mark': new DBMappingInfo({ field: 'F_MARK', table: 'T_OOMMAIN' }),\r\n 'markPkg': new DBMappingInfo({ field: 'F_MARKPKG', table: 'T_OOMMAIN' }),\r\n 'description': new DBMappingInfo({ field: 'F_DESCRIPTION', table: 'T_OOMMAIN' }),\r\n 'markOnboard': new DBMappingInfo({ field: 'F_MARKONBOARD', table: 'T_OOMMAIN' }),\r\n 'markGross': new DBMappingInfo({ field: 'F_MARKGROSS', table: 'T_OOMMAIN' }),\r\n 'markMeasure': new DBMappingInfo({ field: 'F_MARKMEASURE', table: 'T_OOMMAIN' }),\r\n 'sName': new DBMappingInfo({ field: 'F_SNAME', table: 'T_OOMMAIN' }),\r\n 'cName': new DBMappingInfo({ field: 'F_CNAME', table: 'T_OOMMAIN' }),\r\n 'nName': new DBMappingInfo({ field: 'F_NNAME', table: 'T_OOMMAIN' }),\r\n 'fName': new DBMappingInfo({ field: 'F_FNAME', table: 'T_OOMMAIN' }),\r\n 'cur1': new DBMappingInfo({ field: 'F_CUR1', table: 'T_OOMMAIN' }),\r\n 'cur2': new DBMappingInfo({ field: 'F_CUR2', table: 'T_OOMMAIN' }),\r\n 'exrate1': new DBMappingInfo({ field: 'F_EXRATE1', table: 'T_OOMMAIN' }),\r\n 'exrate2': new DBMappingInfo({ field: 'F_EXRATE2', table: 'T_OOMMAIN' }),\r\n 'completeBill': new DBMappingInfo({ field: 'F_COMPLETEBILL', table: 'T_OOMMAIN' }),\r\n 'completeInvo': new DBMappingInfo({ field: 'F_COMPLETEINVO', table: 'T_OOMMAIN' }),\r\n 'completeCrDb': new DBMappingInfo({ field: 'F_COMPLETECRDB', table: 'T_OOMMAIN' }),\r\n 'dutyCustomer': new DBMappingInfo({ field: 'F_DUTYCUSTOMER', table: 'T_OOMMAIN' }),\r\n 'dutyAgent': new DBMappingInfo({ field: 'F_DUTYAGENT', table: 'T_OOMMAIN' }),\r\n 'sentAgentEdi': new DBMappingInfo({ field: 'F_SentAgentEDI', table: 'T_OOMMAIN' }),\r\n 'line': new DBMappingInfo({ field: 'F_Line', table: 'T_OOMMAIN' }),\r\n 'id': new DBMappingInfo({ field: 'F_ID', table: 'T_OOMMAIN' }),\r\n 'u1Id': new DBMappingInfo({ field: 'F_U1ID', table: 'T_OOMMAIN' }),\r\n 'u1Date': new DBMappingInfo({ field: 'F_U1Date', table: 'T_OOMMAIN' }),\r\n 'u2Id': new DBMappingInfo({ field: 'F_U2ID', table: 'T_OOMMAIN' }),\r\n 'u2Date': new DBMappingInfo({ field: 'F_U2Date', table: 'T_OOMMAIN' }),\r\n 'mblCustomer2': new DBMappingInfo({ field: 'MBLCustomer2', table: 'T_OOMMAIN' }),\r\n 'commodity': new DBMappingInfo({ field: 'Commodity', table: 'T_OOMMAIN' }),\r\n 'agentRefNo': new DBMappingInfo({ field: 'AgentRefNo', table: 'T_OOMMAIN' }),\r\n 'truckCom': new DBMappingInfo({ field: 'TruckCom', table: 'T_OOMMAIN' }),\r\n 'cBookDate': new DBMappingInfo({ field: 'CBookDate', table: 'T_OOMMAIN' }),\r\n 'sedCutoff': new DBMappingInfo({ field: 'SedCutoff', table: 'T_OOMMAIN' }),\r\n 'emptyPuLoc': new DBMappingInfo({ field: 'EmptyPuLoc', table: 'T_OOMMAIN' }),\r\n 'emptyPuLocId': new DBMappingInfo({ field: 'EmptyPuLocId', table: 'T_OOMMAIN' }),\r\n 'projectNo': new DBMappingInfo({field:'ProjectNo', table:'T_OOMMAIN'}),\r\n\r\n };\r\n\r\n setChildTrackable(value: boolean): void {\r\n if(this.container.length > 0) {\r\n this.container.forEach(c => c.trackable = value);\r\n }\r\n }\r\n}\r\n","import { TrackableEntity } from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\nimport { GenContainer } from './GenContainer';\r\nimport { FileLockProp, InvoiceBillCrdb } from '../ifmsTypes';\r\nimport _ from 'lodash';\r\nimport { HblInven } from './HblInven';\r\nimport { MblStatusViewModel } from './MblStatusViewModel';\r\n\r\nexport class GenMain extends TrackableEntity {\r\n modelName: string = \"genmain\"; //for ifmsButton > getChangedListData\r\n\r\n id: number = 0;\r\n shipmentType: string = '';\r\n refNo: string = '';\r\n branch: string = '';\r\n category: string = '';\r\n mblNo: string = '';\r\n hblNo: string = '';\r\n vesselVoy: string = '';\r\n agentId: number = 0;\r\n agentName: string = '';\r\n customerId: number = 0;\r\n customerName: string = '';\r\n customerRefNo: string = '';\r\n shipper: string = '';\r\n consignee: string = '';\r\n commodity: string = '';\r\n location: string = '';\r\n containerInfo: string = '';\r\n genContainerList: GenContainer[] = [];\r\n unlCode: string = '';\r\n uslCode: string = '';\r\n etd: string | null = null;\r\n loadingPort: string = '';\r\n undCode: string = '';\r\n usdCode: string = '';\r\n eta: string | null = null;\r\n discharge: string = '';\r\n unfCode: string = '';\r\n usfCode: string = '';\r\n fEta: string | null = null;\r\n finalDest: string = '';\r\n pkgs: number = 0;\r\n unit: string = '';\r\n kgs: number = 0;\r\n lbs: number = 0;\r\n cbm: number = 0;\r\n cft: number = 0;\r\n salespersonId: string = '';\r\n fileClosed: number = 0;\r\n closed: boolean = false;\r\n closedBy: string = '';\r\n createDate: string | null = null;\r\n actClosed: boolean = false;\r\n actClosedBy: string = '';\r\n actCloseDate: string | null = null;\r\n internalMemo: string = '';\r\n remark: string = '';\r\n closeDate: string | null = null;\r\n dutyCustomerId: number = 0;\r\n dutyCustomerName: string = '';\r\n dutyAgentId: number = 0;\r\n dutyAgentName: string = '';\r\n profitShare: number = 0;\r\n cur1: string = '';\r\n cur2: string = '';\r\n exRate1: number = 0;\r\n exRate2: number = 0;\r\n completeBill: boolean = false;\r\n completeInvo: boolean = false;\r\n completeCrDb: boolean = false;\r\n confirmDate: string | null = null;\r\n confirmedBy: string = '';\r\n confirmActionDate: string | null = null;\r\n statusInvo: string = '';\r\n statusBill: string = '';\r\n statusCrDb: string = '';\r\n u1Id: string = '';\r\n u1Date: string | null = null;\r\n u2Id: string = '';\r\n u2Date: string | null = null;\r\n oldVer_Shipper: string = '';\r\n oldVer_Consignee: string = '';\r\n oldVer_Location: string = '';\r\n oldVer_ContainerInfo: string = '';\r\n isClosed: boolean = false;\r\n multiNameID: number = 0;\r\n multiName: string = '';\r\n\r\n operator: string = '';\r\n\r\n invenList: HblInven[] = [];\r\n volCM: boolean = false;\r\n // ISalesCostParent.invoiceBill\r\n invoiceBill: InvoiceBillCrdb | null = null;\r\n // ISalesCostParent.invoiceBill\r\n\r\n milestone: MblStatusViewModel | null = null;\r\n milestoneContainerSelectedIndex: number = 0;\r\n\r\n trStatus: string = '';\r\n\r\n get canChangeBranch(): boolean {\r\n if (this.id <= 0) {\r\n return true;\r\n }\r\n\r\n const allowedStatuses = ['', 'E', 'D'];\r\n return allowedStatuses.includes(this.statusBill) &&\r\n allowedStatuses.includes(this.statusInvo) &&\r\n allowedStatuses.includes(this.statusCrDb)\r\n };\r\n\r\n isFileLockFor(propName: string) {\r\n return this.isClosed && !GenMain.fileLockEnableProps.some(x => x.key === propName);\r\n }\r\n\r\n static getFileLockMessage(): string {\r\n //const messageBase = 'File Locked';\r\n // return appendLine(messageBase, GenMain.fileLockEnableProps\r\n // .map(x => x.name)\r\n // .reduce((acc: string, x) => appendLine(acc, `\\t${x}`), \"\"));\r\n return 'OP Close';\r\n }\r\n\r\n static fileLockEnableProps: FileLockProp[] = [\r\n { key: '', name: '' },\r\n ];\r\n\r\n constructor(init?: Partial) {\r\n super();\r\n this.key = 'id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('id', 'closeDate', 'oldVer_AOtherInfoId', 'oldVer_Shipper', 'oldVer_Consignee', 'oldVer_Location', 'oldVer_ContainerInfo',\r\n 'invoiceBill', 'canChangeBranch', 'actClosed', 'actClosedBy', 'actCloseDate', 'isClosed', 'volCM', 'multiName', 'confirmDate', 'confirmedBy', 'trStatus');\r\n this.getdateProps.push('u1Date', 'u2Date');\r\n if (this.id === 0) this.id = this.GetNextId();\r\n\r\n if (this.genContainerList.length > 0) {\r\n this.genContainerList = this.genContainerList.map(d => new GenContainer(d));\r\n } else {\r\n this.genContainerList = [];\r\n }\r\n\r\n if (this.invenList.length > 0) {\r\n this.invenList = this.invenList.map(d => new HblInven(d));\r\n } else {\r\n this.invenList = [];\r\n }\r\n }\r\n\r\n getDbMappings(arg?: any): IDictionary {\r\n const dicFieldMap: IDictionary = {};\r\n _.keys(GenMain.dicFieldMappings).forEach(m => {\r\n dicFieldMap[m] = GenMain.dicFieldMappings[m];\r\n });\r\n\r\n _.keys(GenContainer.dicFieldMappings).forEach(m => {\r\n dicFieldMap[`genContainerList.${m}`] = GenContainer.dicFieldMappings[m];\r\n });\r\n\r\n _.keys(HblInven.dicFieldMappings).forEach(m => {\r\n dicFieldMap[`invenList.${m}`] = HblInven.dicFieldMappings[m];\r\n });\r\n return dicFieldMap;\r\n }\r\n\r\n setChildTrackable(value: boolean): void {\r\n if (this.invenList.length > 0) {\r\n this.invenList.forEach(c => c.trackable = value);\r\n }\r\n }\r\n static dicFieldMappings: IDictionary = {\r\n 'shipmentType': new DBMappingInfo({ field: 'F_ShipmentType', table: 'T_GENMAIN' }),\r\n 'refNo': new DBMappingInfo({ field: 'F_RefNo', table: 'T_GENMAIN' }),\r\n 'branch': new DBMappingInfo({ field: 'F_Branch', table: 'T_GENMAIN' }),\r\n 'category': new DBMappingInfo({ field: 'F_Type', table: 'T_GENMAIN' }),\r\n 'mblNo': new DBMappingInfo({ field: 'F_MblNo', table: 'T_GENMAIN' }),\r\n 'hblNo': new DBMappingInfo({ field: 'F_HblNo', table: 'T_GENMAIN' }),\r\n 'vesselVoy': new DBMappingInfo({ field: 'F_Vessel', table: 'T_GENMAIN' }),\r\n 'agentId': new DBMappingInfo({ field: 'F_Agent', table: 'T_GENMAIN' }),\r\n 'customerId': new DBMappingInfo({ field: 'F_Customer', table: 'T_GENMAIN' }),\r\n 'customerRefNo': new DBMappingInfo({ field: 'F_CustRefNo', table: 'T_GENMAIN' }),\r\n 'shipper': new DBMappingInfo({ field: 'F_Shipper', table: 'T_GENMAIN' }),\r\n 'consignee': new DBMappingInfo({ field: 'F_Consignee', table: 'T_GENMAIN' }),\r\n 'commodity': new DBMappingInfo({ field: 'F_Commodity', table: 'T_GENMAIN' }),\r\n 'location': new DBMappingInfo({ field: 'F_Location', table: 'T_GENMAIN' }),\r\n 'containerInfo': new DBMappingInfo({ field: 'F_ContainerInfo', table: 'T_GENMAIN' }),\r\n 'unlCode': new DBMappingInfo({ field: 'F_UNLCode', table: 'T_GENMAIN' }),\r\n 'uslCode': new DBMappingInfo({ field: 'F_USLCode', table: 'T_GENMAIN' }),\r\n 'etd': new DBMappingInfo({ field: 'F_Etd', table: 'T_GENMAIN' }),\r\n 'loadingPort': new DBMappingInfo({ field: 'F_LoadingPort', table: 'T_GENMAIN' }),\r\n 'undCode': new DBMappingInfo({ field: 'F_UNDCode', table: 'T_GENMAIN' }),\r\n 'usdCode': new DBMappingInfo({ field: 'F_USDCode', table: 'T_GENMAIN' }),\r\n 'eta': new DBMappingInfo({ field: 'F_Eta', table: 'T_GENMAIN' }),\r\n 'discharge': new DBMappingInfo({ field: 'F_Discharge', table: 'T_GENMAIN' }),\r\n 'unfCode': new DBMappingInfo({ field: 'F_UNFCode', table: 'T_GENMAIN' }),\r\n 'usfCode': new DBMappingInfo({ field: 'F_USFCode', table: 'T_GENMAIN' }),\r\n 'fEta': new DBMappingInfo({ field: 'F_FEta', table: 'T_GENMAIN' }),\r\n 'finalDest': new DBMappingInfo({ field: 'F_FinalDest', table: 'T_GENMAIN' }),\r\n 'pkgs': new DBMappingInfo({ field: 'F_Pkgs', table: 'T_GENMAIN' }),\r\n 'unit': new DBMappingInfo({ field: 'F_PUnit', table: 'T_GENMAIN' }),\r\n 'kgs': new DBMappingInfo({ field: 'F_Kgs', table: 'T_GENMAIN' }),\r\n 'lbs': new DBMappingInfo({ field: 'F_Lbs', table: 'T_GENMAIN' }),\r\n 'cbm': new DBMappingInfo({ field: 'F_Cbm', table: 'T_GENMAIN' }),\r\n 'salespersonId': new DBMappingInfo({ field: 'F_SManId', table: 'T_GENMAIN' }),\r\n 'createDate': new DBMappingInfo({ field: 'F_PostDate', table: 'T_GENMAIN' }),\r\n 'internalMemo': new DBMappingInfo({ field: 'F_IMemo', table: 'T_GENMAIN' }),\r\n 'remark': new DBMappingInfo({ field: 'F_PMemo', table: 'T_GENMAIN' }),\r\n 'cur1': new DBMappingInfo({ field: 'F_Cur1', table: 'T_GENMAIN' }),\r\n 'cur2': new DBMappingInfo({ field: 'F_Cur2', table: 'T_GENMAIN' }),\r\n 'exRate1': new DBMappingInfo({ field: 'F_EXRATE1', table: 'T_GENMAIN' }),\r\n 'exRate2': new DBMappingInfo({ field: 'F_EXRATE2', table: 'T_GENMAIN' }),\r\n 'multiNameID': new DBMappingInfo({ field: 'F_MultiNameID', table: 'T_GENMAIN' }),\r\n 'profitShare': new DBMappingInfo({ field: 'F_ProfitShare', table: 'T_GENMAIN' }),\r\n 'dutyCustomerId': new DBMappingInfo({ field: 'F_DutyCustomer', table: 'T_GENMAIN' }),\r\n 'dutyAgentId': new DBMappingInfo({ field: 'F_DutyAgent', table: 'T_GENMAIN' }),\r\n 'u1Id': new DBMappingInfo({ field: 'F_U1Id', table: 'T_GENMAIN' }),\r\n 'u1Date': new DBMappingInfo({ field: 'F_U1Date', table: 'T_GENMAIN' }),\r\n 'u2Id': new DBMappingInfo({ field: 'F_U2Id', table: 'T_GENMAIN' }),\r\n 'u2Date': new DBMappingInfo({ field: 'F_U2Date', table: 'T_GENMAIN' }),\r\n 'id': new DBMappingInfo({ field: 'F_Id', table: 'T_GENMAIN' }),\r\n 'operator': new DBMappingInfo({ field: 'F_Operator', table: 'T_GENMAIN' }),\r\n };\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport LabeledControl from './LabeledControl';\r\nimport Select, { SelectItem } from './Select';\r\n\r\n\r\nfunction LabeledSelect({\r\n label,\r\n alignRight = false,\r\n bold = false,\r\n underline = false,\r\n labelSize = '30%',\r\n red = false,\r\n selectId = undefined,\r\n value,\r\n onChange = () => {},\r\n disabled = false,\r\n items = [],\r\n selectWidth = undefined,\r\n}: {\r\n label: string,\r\n labelSize?: string,\r\n red?: boolean,\r\n bold?: boolean,\r\n underline?: boolean,\r\n alignRight?: boolean,\r\n alignCenter?: boolean,\r\n selectId?: string|undefined,\r\n value: string|number,\r\n onChange: (e:React.ChangeEvent) => void,\r\n disabled?: boolean,\r\n items?: Array,\r\n selectWidth?: string|undefined,\r\n hideCaretWhenDisabled?: boolean,\r\n}) {\r\n return }\r\n />;\r\n}\r\n\r\nLabeledSelect.defaultProps = {\r\n onChange: () => {},\r\n value: '',\r\n alignRight: false,\r\n bold: false,\r\n underline: false,\r\n disabled: false,\r\n dark: false,\r\n labelSize: '30%',\r\n items: [],\r\n red: false,\r\n};\r\n\r\nLabeledSelect.propTypes = {\r\n onChange: PropTypes.func.isRequired,\r\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n alignRight: PropTypes.bool.isRequired,\r\n bold: PropTypes.bool.isRequired,\r\n underline: PropTypes.bool.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n labelSize: PropTypes.string.isRequired,\r\n items: PropTypes.arrayOf(PropTypes.shape({\r\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n label: PropTypes.string,\r\n })).isRequired,\r\n red: PropTypes.bool.isRequired,\r\n selectWidth: PropTypes.string,\r\n selectId: PropTypes.string,\r\n};\r\n\r\n\r\nexport default React.memo(LabeledSelect);\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport LabeledControl from './LabeledControl';\r\nimport TextBox from './TextBox';\r\n\r\nfunction LabeledTextBox({\r\n label,\r\n value,\r\n onChange,\r\n alignRight = false,\r\n alignRightText = false,\r\n bold = false,\r\n underline = false,\r\n disabled = false,\r\n labelSize = '30%',\r\n dark = false,\r\n placeholder = undefined,\r\n redTextBox = false,\r\n password = false,\r\n maxLength = undefined,\r\n}:{\r\n label: string,\r\n labelSize?: string,\r\n value:string|null,\r\n placeholder?:string|undefined,\r\n onChange?: ((e:React.ChangeEvent) => void)|undefined,\r\n onPaste?: ((e:React.ClipboardEvent) =>void)|undefined,\r\n disabled?: boolean,\r\n red?: boolean,\r\n alignRight?: boolean,\r\n alignCenter?: boolean,\r\n onEnter?: (() => void)|undefined,\r\n password?: boolean,\r\n onTabNext?: (() => boolean)|undefined,\r\n onTabPrevious?: (() => boolean)|undefined,\r\n maxLength?: number|undefined,\r\n textId?: string|undefined,\r\n noborder?: boolean,\r\n underline?: boolean,\r\n redTextBox?: boolean,\r\n dark?: boolean,\r\n bold?: boolean,\r\n alignRightText?: boolean,\r\n}) {\r\n return }\r\n />;\r\n}\r\n\r\nLabeledTextBox.defaultProps = {\r\n onChange: () => {},\r\n value: '',\r\n alignRight: false,\r\n bold: false,\r\n underline: false,\r\n disabled: false,\r\n labelSize: '30%',\r\n dark: false,\r\n redTextBox: false,\r\n alignRightText: false,\r\n password: false,\r\n};\r\n\r\nLabeledTextBox.propTypes = {\r\n onChange: PropTypes.func.isRequired,\r\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n alignRight: PropTypes.bool.isRequired,\r\n bold: PropTypes.bool.isRequired,\r\n underline: PropTypes.bool.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n labelSize: PropTypes.string.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n placeholder: PropTypes.string,\r\n redTextBox: PropTypes.bool.isRequired,\r\n alignRightText: PropTypes.bool.isRequired,\r\n password: PropTypes.bool.isRequired,\r\n maxLength: PropTypes.number,\r\n onBlur: PropTypes.func,\r\n};\r\n\r\n\r\nexport default React.memo(LabeledTextBox);\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport CompanyLookupField, { CompanyLookupProps } from './CompanyLookupField';\r\n\r\nconst CyLocationLookupField = (props:Omit) => \r\n\r\nCyLocationLookupField.defaultProps = {\r\n onSelect: () => {},\r\n onTextChange: () => {},\r\n disabled: false,\r\n};\r\n\r\nCyLocationLookupField.propTypes = {\r\n initialValue: PropTypes.string,\r\n onSelect: PropTypes.func.isRequired,\r\n onTextChange: PropTypes.func.isRequired,\r\n placeholder: PropTypes.string,\r\n disabled: PropTypes.bool.isRequired,\r\n lookupId: PropTypes.string,\r\n onTabNext: PropTypes.func,\r\n onTabPrevious: PropTypes.func,\r\n};\r\n\r\n\r\nexport default React.memo(CyLocationLookupField);\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"defs\", null);\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 1,\n y: 1,\n fill: \"none\",\n stroke: \"#ff3300\",\n strokeWidth: 2,\n strokeMiterlimit: 10,\n width: 14.749,\n height: 14.563\n});\n\nfunction SvgConfigure04(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n x: \"0px\",\n y: \"0px\",\n width: \"20px\",\n height: \"20px\",\n viewBox: \"-1.626 -1.75 20 20\",\n enableBackground: \"new -1.626 -1.75 20 20\",\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, /*#__PURE__*/React.createElement(\"text\", {\n transform: \"matrix(1 0 0 1 3.499 12.8125)\",\n fontFamily: \"'H2gtrE'\",\n fontSize: 12,\n style: {\n fill: \"#ff3300\"\n }\n }, \"C\"));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgConfigure04);\nexport default __webpack_public_path__ + \"static/media/configure-04.aa17f76d.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"defs\", null);\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 1,\n y: 1,\n fill: \"none\",\n stroke: \"#47C83E\",\n strokeWidth: 2,\n strokeMiterlimit: 10,\n width: 14.749,\n height: 14.563\n});\n\nfunction SvgConfigure04Green(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n x: \"0px\",\n y: \"0px\",\n width: \"20px\",\n height: \"20px\",\n viewBox: \"-1.626 -1.75 20 20\",\n enableBackground: \"new -1.626 -1.75 20 20\",\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2, _ref3, /*#__PURE__*/React.createElement(\"text\", {\n transform: \"matrix(1 0 0 1 3.499 12.8125)\",\n fontFamily: \"'H2gtrE'\",\n fontSize: 12,\n style: {\n fill: \"#47C83E\"\n }\n }, \"C\"));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgConfigure04Green);\nexport default __webpack_public_path__ + \"static/media/configure-04-green.95af2149.svg\";\nexport { ForwardRef as ReactComponent };","import PropTypes from 'prop-types';\r\nimport React/*, { useState }*/ from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nimport { /*faSearch, faCog,*/ faSync } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport BlackInverseButton from \"../../ui/BlackInverseButton\";\r\nimport {ReactComponent as ConfigureIcon} from \"../../img/configure-04.svg\";\r\nimport {ReactComponent as ConfigureIconGreen} from \"../../img/configure-04-green.svg\";\r\n\r\nconst Screen = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: flex-start;\r\n align-items: center;\r\n background-color: white;\r\n height: 64px;\r\n padding-left: 15px;\r\n padding-right: 20px;\r\n\r\n .ifms-list-screen-right {\r\n align-self: center;\r\n margin-left:auto;\r\n }\r\n\r\n h2 {\r\n color: #000000;\r\n font-family: Inter;\r\n font-style: normal;\r\n font-weight: bold;\r\n font-size: 18px;\r\n margin: 0;\r\n padding: 0;\r\n margin-block-end: 0;\r\n width: 150px;\r\n }\r\n\r\n .search-content {\r\n position: relative;\r\n margin-left: 12px;\r\n margin-right: 12px;\r\n\r\n .search-filter {\r\n top: 0;\r\n left: 0;\r\n display: block;\r\n width: 220px;\r\n height: 32px;\r\n\r\n background: #FFFFFF;\r\n border: 1px solid #D3D5DB;\r\n box-sizing: border-box;\r\n border-radius: 3px;\r\n padding-left: 25px;\r\n\r\n }\r\n\r\n .search-filter:focus {\r\n outline: none;\r\n }\r\n\r\n .input-wrapper {\r\n position: relative;\r\n }\r\n\r\n .input-icon {\r\n position: absolute;\r\n left: 5px;\r\n font-size: 14px;\r\n top: 8px;\r\n color: #a1a1a1;\r\n cursor: pointer;\r\n }\r\n }\r\n`;\r\n\r\nconst ScreenTitleBar: React.FC = ({ useDarkMode, title, initializeColumnsDialog, rightBeforeConfigureButton, rightAfterConfigureButton, beforeRefreshButton, beforePager,commandsAfterMemoLogBtn, refresh, children, resizeTitleLabel }) => {\r\n const isAdditionalCommandsEmpty = typeof rightAfterConfigureButton === 'object' && React.Children.count(rightAfterConfigureButton.props.children) === 0;\r\n\r\n const ifmsListScreenRightStyle: React.CSSProperties = {\r\n alignSelf: 'center',\r\n marginLeft: 'auto',\r\n paddingRight: isAdditionalCommandsEmpty ? '81px' : '0',\r\n };\r\n\r\n function doRefresh() {\r\n if (refresh) {\r\n refresh();\r\n }\r\n }\r\n return (\r\n \r\n
    \r\n {!resizeTitleLabel && \r\n
    \r\n {title}\r\n
    \r\n }\r\n {resizeTitleLabel && \r\n
    \r\n {title}\r\n
    \r\n }\r\n
    \r\n {/*
    {title}
    */}\r\n \r\n {!!children &&\r\n <>\r\n {children}\r\n \r\n }\r\n\r\n\r\n {!!beforePager &&\r\n <>\r\n {beforePager}\r\n \r\n }\r\n\r\n {!!commandsAfterMemoLogBtn &&\r\n <>\r\n {commandsAfterMemoLogBtn}\r\n \r\n }\r\n\r\n
    \r\n\r\n
    \r\n \r\n {!useDarkMode ? : }\r\n   \r\n\r\n {!!rightBeforeConfigureButton &&\r\n <>{rightBeforeConfigureButton}\r\n }\r\n {!!initializeColumnsDialog &&\r\n \r\n {!useDarkMode ? : }\r\n \r\n }\r\n
    \r\n {!!rightAfterConfigureButton &&\r\n <>{rightAfterConfigureButton}\r\n }\r\n
    \r\n );\r\n};\r\n\r\nScreenTitleBar.defaultProps = {\r\n};\r\n\r\nScreenTitleBar.propTypes = {\r\n initializeColumnsDialog: PropTypes.func,\r\n title: PropTypes.string,\r\n rightBeforeConfigureButton: PropTypes.node,\r\n rightAfterConfigureButton: PropTypes.node,\r\n resiezeTitlelabel: PropTypes.bool,\r\n};\r\n\r\n\r\nexport default React.memo(ScreenTitleBar);","import { useContext, useEffect, useRef } from 'react';\r\nimport ApplicationContext from '../ApplicationContext';\r\n\r\nlet countCheck = 0;\r\n\r\nexport default function useListHeightMonitor(name:string) {\r\n const appContext = useContext(ApplicationContext);\r\n \r\n useEffect(() => {\r\n initialize();\r\n\r\n return uninitialize;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n \r\n useEffect(() => {\r\n adjustTableHeight();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [appContext.appInfoAreaDrawerHeight, appContext.appInfoAreaContent]);\r\n\r\n const observer = useRef(null);\r\n const infoAreaVisibleRef = useRef(false);\r\n const scrollPos = useRef(0);\r\n\r\n function initialize() {\r\n initializeEventListeners();\r\n initializeObserver();\r\n }\r\n\r\n function uninitialize() {\r\n uninitializeObserver();\r\n uninitializeEventListeners();\r\n }\r\n\r\n function initializeEventListeners() {\r\n window.addEventListener('resize', onScreenResize);\r\n }\r\n\r\n function uninitializeEventListeners() {\r\n window.removeEventListener('resize', onScreenResize);\r\n }\r\n\r\n function initializeObserver() {\r\n if (observer && observer.current) {\r\n return;\r\n }\r\n\r\n const appContentNode = document.getElementById('ifms-app-content');\r\n if (!appContentNode) {\r\n return;\r\n }\r\n\r\n const observerConfig = {\r\n attributes: true,\r\n childList: true,\r\n subtree: true,\r\n attributeFilter: [],\r\n };\r\n\r\n observer.current = new MutationObserver(observe);\r\n observer.current.observe(appContentNode, observerConfig);\r\n }\r\n\r\n function uninitializeObserver() {\r\n if (observer && observer.current) {\r\n observer.current.disconnect();\r\n }\r\n }\r\n\r\n function onScreenResize() {\r\n adjustTableHeight();\r\n }\r\n\r\n function observe() {\r\n // HACK - to avoid infinite loop in typescript. Research and find proper solution\r\n\r\n if (countCheck >= 100) {\r\n countCheck = 0;\r\n return;\r\n }\r\n \r\n ++countCheck;\r\n adjustTableHeight();\r\n }\r\n\r\n function adjustTableHeight() {\r\n const infoArea = document.getElementById('ifms-info-area-drawer');\r\n\r\n if (!infoAreaVisibleRef.current && infoArea && infoArea.dataset.open === 'true') {\r\n setTimeout(() => {\r\n captureTableScrollPosition();\r\n doAdjustTableHeight();\r\n scrollSelectedTableRowIntoView();\r\n }, 200); // To handle animations propely\r\n } else {\r\n const infoAreaWasOpened = !!infoAreaVisibleRef.current && infoArea && infoArea.dataset.open === 'false';\r\n doAdjustTableHeight();\r\n\r\n if (infoAreaWasOpened) {\r\n restoreTableScrollPosition();\r\n }\r\n }\r\n }\r\n\r\n function restoreTableScrollPosition() {\r\n const table = document.getElementById(name);\r\n if (!table) {\r\n return;\r\n }\r\n\r\n table.scrollTo({\r\n top: scrollPos.current,\r\n behavior: 'smooth'\r\n });\r\n }\r\n\r\n function captureTableScrollPosition() {\r\n const table = document.getElementById(name);\r\n if (!table) {\r\n return;\r\n }\r\n\r\n scrollPos.current = table.scrollTop;\r\n }\r\n\r\n function scrollSelectedTableRowIntoView() {\r\n const table = document.getElementById(name);\r\n if (!table) {\r\n return;\r\n }\r\n\r\n const selectedRows = table.getElementsByClassName('data-row-selected');\r\n if (!selectedRows || selectedRows.length <= 0) {\r\n return;\r\n }\r\n\r\n const selectedRow = selectedRows[0];\r\n\r\n selectedRow.scrollIntoView({behavior: 'smooth', block: 'end'});\r\n }\r\n\r\n function doAdjustTableHeight() {\r\n const table = document.getElementById(name);\r\n if (!table) {\r\n return;\r\n }\r\n\r\n const tableScrollbarHeight = table.getBoundingClientRect().height - table.clientHeight;\r\n\r\n let titleBarHeight = 0;\r\n let infoAreaHeight = 0;\r\n\r\n const titleBars = document.getElementsByClassName(!appContext.useDarkMode ? 'ifms-screen-title-bar' : 'ifms-screen-title-bar-darkmode');\r\n if (titleBars && titleBars.length > 0) {\r\n var tbRect = titleBars[0].getBoundingClientRect();\r\n titleBarHeight = tbRect.bottom;\r\n }\r\n\r\n const infoArea = document.getElementById('ifms-info-area-drawer');\r\n if (infoArea && infoArea.dataset.open === 'true') {\r\n infoAreaHeight = infoArea.clientHeight - tableScrollbarHeight; // In case info area is open don't make list appear above info area\r\n infoAreaVisibleRef.current = true;\r\n } else {\r\n infoAreaVisibleRef.current = false;\r\n }\r\n\r\n const vh = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\r\n\r\n table.style.height = infoAreaVisibleRef.current ? `${vh - titleBarHeight - infoAreaHeight - 19}px` : `${vh - titleBarHeight - infoAreaHeight}px`;\r\n }\r\n\r\n return {\r\n };\r\n}\r\n ","export default __webpack_public_path__ + \"static/media/excel_black.488ba07d.svg\";","export default __webpack_public_path__ + \"static/media/excel_green.c0dcb7a7.svg\";","import _ from 'lodash';\r\nimport postal from 'postal';\r\nimport React, {useContext, useEffect, useRef, useState} from 'react';\r\nimport {useHistory, useLocation, useParams} from 'react-router';\r\nimport ListJobNames, {ListJob} from './listJobNames';\r\nimport constants from '../../constants';\r\nimport useJobMenu from '../../hooks/useJobMenu';\r\nimport ScreenTitleBar from '../../uiControls/screens/ScreenTitleBar';\r\nimport CloseButton from '../../ui/CloseButton';\r\nimport useFilterBar from '../../hooks/useFilterBar';\r\nimport useFunctionKeys from '../../hooks/useFunctionKeys';\r\nimport useListData from '../../hooks/useListData';\r\nimport useGetEditedId from '../../hooks/useGetEditedId';\r\nimport {ApplicableTableSettings, createColumnFocusListHierarchy, TableColumn} from '../../tableSettings';\r\nimport SmartTable, {SmartTableHandle} from '../../uiControls/SmartTable';\r\nimport useGlobalOkDialog from '../../hooks/useGlobalOkDialog';\r\nimport ApplicationContext from '../../ApplicationContext';\r\n\r\nimport JobListViewContext, {IJobListViewContext} from './JobListViewContext';\r\nimport useSystemSettings from '../../hooks/useSystemSettings';\r\nimport useSuntekSettings from '../../hooks/useSuntekSettings';\r\nimport useDeepCompareEffect from '../../hooks/useDeepCompareEffect';\r\nimport ToggleButton from '../../ui/ToggleButton';\r\nimport { isFilterObjectEmpty } from '../../filtering';\r\nimport { useTypedFastStorage } from '../../hooks/useFastStorage';\r\nimport BlackInverseButton from '../../ui/BlackInverseButton';\r\n\r\nimport excelIcon from '../../img/excel_black.svg';\r\nimport excelIconGreen from '../../img/excel_green.svg';\r\nimport { exportDomTableIntoExcel } from '../../excel';\r\nimport { ListOrderBy, ViewUrl } from './AbstractListView';\r\nimport { XCellType } from '../../framework.core/XExportColumn';\r\n\r\nimport { compareIso } from '../../dateUtils';\r\nimport PrimaryButton from '../../ui/PrimaryButton';\r\nimport useStorage from '../../hooks/useStorage';\r\nimport config from '../../config';\r\nimport { useAppDispatch } from '../../app/hooks';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons';\r\nimport { useContextMenu } from '../../hooks/useContextMenu';\r\nimport { ScrollMemory } from '../../ui/tables/useTableNavigation';\r\nimport { getDecimal } from '../../util';\r\nimport { JobNames } from '../../framework.core/JobNames';\r\n\r\nconst AllowedOpTypes = _.keys(constants.operations);\r\n\r\ntype JobListViewParams = {\r\n jobName: string;\r\n opType: string|undefined;\r\n parentOp: string|undefined;\r\n};\r\n\r\n/**\r\n * Gets operation name from property name (if exists.) For example oceanImport is mapped to 'Ocean Import'\r\n *\r\n * @param {(string|undefined)} opType\r\n * @return {*} {(string|null)}\r\n */\r\nfunction getOperationNameFromOpType(opType:string|undefined):string|null {\r\n if (!opType) {\r\n return null;\r\n }\r\n\r\n if (!AllowedOpTypes.some(k => k === opType)) {\r\n throw new Error(`Invalid opType. Must be either undefined or one of: [${AllowedOpTypes.join(', ')}]`)\r\n }\r\n\r\n return constants.operations[opType];\r\n}\r\n\r\n/**\r\n * Gets job object from name extracted from route\r\n *\r\n * @param {string} name\r\n * @return {*} {Job}\r\n */\r\nexport function getJobFromName(name:string):ListJob {\r\n const result = ListJobNames[name]\r\n if (!result) {\r\n throw new Error('Invalid route');\r\n }\r\n return result;\r\n}\r\n\r\ninterface ListSortResult {\r\n sorted: boolean,\r\n data: Array,\r\n}\r\n\r\nfunction getColumnDataType(c: TableColumn): XCellType {\r\n return c.filterTypeV2 ?? XCellType.String;\r\n}\r\n\r\nfunction sortListData(data: Array, orderBy: ListOrderBy|null, columnSettings: Array): ListSortResult {\r\n if (!orderBy) {\r\n return {sorted: false, data: []};\r\n }\r\n\r\n const sortCol = columnSettings.find(x => x.accessor === orderBy.orderBy);\r\n if (!sortCol) {\r\n return {sorted: false, data: []};\r\n }\r\n\r\n const dataType = getColumnDataType(sortCol);\r\n\r\n const comparer = (a: any, b:any): number => {\r\n const left = orderBy.orderByAscending ? a[sortCol.accessor] : b[sortCol.accessor];\r\n const right = orderBy.orderByAscending ? b[sortCol.accessor] : a[sortCol.accessor];\r\n\r\n if (dataType === XCellType.Double) {\r\n return (left ?? 0) - (right ?? 0);\r\n }\r\n if (dataType === XCellType.Bool || dataType === XCellType.StrBool) {\r\n if (left === right) {\r\n return 0;\r\n }\r\n return left && !right ? 1 : -1;\r\n }\r\n if (dataType === XCellType.Date || dataType === XCellType.DateTime) {\r\n if (!left) {\r\n return !right ? 0 : -1;\r\n }\r\n if (!right) {\r\n return 1;\r\n }\r\n\r\n return compareIso(left as string, right as string);\r\n }\r\n\r\n const leftString:string = left as string ?? '';\r\n const rightString:string = right as string ?? '';\r\n\r\n return leftString.localeCompare(rightString);\r\n }\r\n\r\n const result = [...data];\r\n result.sort(comparer);\r\n\r\n return {sorted: true, data: result};\r\n}\r\n\r\n/**\r\n * Generic Job List View Component. Internally it constructs concrete class with needed implementations to display on the screen.\r\n * Implementation is constructed based on route params.\r\n *\r\n * @return {*} \r\n */\r\nfunction JobListViewImpl({jobName, opType, parentOp}: JobListViewParams) {\r\n // const listScreenSettings = useAppSelector(state => state.listScreenSettings);\r\n const dispatch = useAppDispatch();\r\n\r\n const operationName = getOperationNameFromOpType(opType);\r\n\r\n const job = getJobFromName(jobName);\r\n const listView = job.generateListView();\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const getSavedEntity = useGetEditedId();\r\n\r\n const appContext = useContext(ApplicationContext);\r\n const systemSettings = useSystemSettings();\r\n const suntekSettings = useSuntekSettings();\r\n\r\n const title = listView.getListViewTitle(opType);\r\n\r\n listView.setSystemSettings(systemSettings);\r\n listView.setSuntekSettings(suntekSettings);\r\n\r\n const listDomId = `tbl-list-${jobName}-${opType ?? 'common'}${listView.getTableDomIdSuffix()}`;\r\n const listDomWrapperId = `tbl-list-wrapper-${jobName}-${opType ?? 'common'}${listView.getTableDomIdSuffix()}`;\r\n\r\n const history = useHistory();\r\n\r\n const { FilterButton, search, clearFilters, clearFiltersFromStorage, /*setOrderBy,*/ setFilterForScreenExternally, setFilterForSearchModel, openedByF6, f6Origin, f6Query, setListFilterType } = useFilterBar(\r\n listView.getTableSettings(opType, systemSettings, suntekSettings),\r\n listView.getCustomFilterRenderers(opType, systemSettings, suntekSettings),\r\n listView.getDefaultOrderBy(),\r\n '',\r\n operationName === 'My Event',\r\n );\r\n useFunctionKeys({onEsc: scheduleEscProcess});\r\n \r\n const parentOpName = getOperationNameFromOpType(parentOp);\r\n const noOperationSuffixMenu = (!!parentOpName && parentOpName !== 'Other Shipment') || opType === 'accounting' || (opType==='otherShipment' && !parentOpName);\r\n const { canGoBack, goBack, \r\n hasOpenedScreenStartingWithUrl, hasOpenedScreenStartingWithUrlWithoutMe, \r\n hasOpenedScreenInAnyOperationStartingWithUrl, hasOpenedScreenInAnyOperationStartingWithUrlWithoutMe, \r\n getOpenedScreenInAnyOperationStartingWithUrl, \r\n moveToOpenedScreenInAnyOperationStartingWithUrl }\r\n = useJobMenu(title, operationName, null, false, cleanup, null, { inputId: '', isLoading: false }, noOperationSuffixMenu, parentOpName);\r\n\r\n const [externalReloadRequest, setExternalReloadRequest] = useState('');\r\n const [initialized, setInitialized] = useState(false);\r\n const headerClickRef = useRef(true);\r\n\r\n const {onCellRightClick, RightClickContextMenu} = useContextMenu(listView);\r\n const {\r\n data,\r\n dataRef,\r\n setData,\r\n setSelectedId,\r\n getSelectedIndex,\r\n clearListData,\r\n selectTableRow,\r\n triggerTableSearch,\r\n currentCount,\r\n }\r\n = useListData(listDomId, onRowDoubleClick, createColumnFocusListHierarchy(listView.getTableSettings(opType, systemSettings, suntekSettings)), onCellRightClick, initialized, () => { headerClickRef.current = true });\r\n\r\n const tableRef = useRef(null);\r\n const [tick, setTick] = useState(0);\r\n\r\n const currentUrl = `${history.location.pathname}${history.location.search}`;\r\n //const infoAreaModelKey = `info-area-${currentUrl}`;\r\n const hideLogHistoryModelKey = `hide-log-${currentUrl}`;\r\n\r\n // let initializeInfoAreaValue = 'none';\r\n // if (appContext.appInfoAreaContent !== 'none') {\r\n // if (appContext.appInfoAreaContent === 'memo' && !listView.hasMemo()) {\r\n // initializeInfoAreaValue = 'none';\r\n // } else {\r\n // initializeInfoAreaValue = appContext.appInfoAreaContent;\r\n // }\r\n // }\r\n\r\n //const [infoAreaContent, _setInfoAreaContent, deleteInfoAreaContent, infoAreaContentRef] = useTypedFastStorage(infoAreaModelKey, initializeInfoAreaValue);\r\n const [listOrderBy, setListOrderBy, deleteListOrderBy] = useTypedFastStorage(`ifms-list-data-${listDomId}-order-by`, listView.getDefaultOrderBy());\r\n const [hideLogHistory, , deleteHideLogHistory] = useStorage(hideLogHistoryModelKey, false);\r\n\r\n const [escScheduled, setEscScheduled] = useState(false);\r\n const [rowExtrasId, setRowExtrasId] = useState(null);\r\n const clickedCellRef = useRef(null); \r\n const [trackingRequestEmailList, setTrackingRequestEmailList] = useState(undefined);\r\n const [recogModalData, setRecogModalData] = useState<{ isSet: boolean, isOpen: boolean }>({ isSet: false, isOpen: false });\r\n\r\n const selectedIndex = getSelectedIndex();\r\n const hasSelectedRow = selectedIndex >= 0;\r\n const selectedElement = hasSelectedRow ? data[selectedIndex] : null;\r\n const [viewPopupRow, setViewPopupRow] = useState(undefined);\r\n const isMouseOverRef = useRef(false);\r\n\r\n let reloadSubscription:ISubscriptionDefinition|null = null;\r\n\r\n const jobListViewContext:IJobListViewContext = {\r\n selectedElement,\r\n hasOpenedScreenStartingWithUrl,\r\n hasOpenedScreenStartingWithUrlWithoutMe,\r\n hasOpenedScreenInAnyOperationStartingWithUrl,\r\n hasOpenedScreenInAnyOperationStartingWithUrlWithoutMe,\r\n getOpenedScreenInAnyOperationStartingWithUrl,\r\n moveToOpenedScreenInAnyOperationStartingWithUrl,\r\n reloadData: reloadData,\r\n triggerTableSearch,\r\n setFilterForScreenExternally,\r\n setFilterForSearchModel,\r\n // infoAreaContent: listScreenSettings.showMemo ? 'memo' : 'none',\r\n //infoAreaContent: infoAreaContent ?? 'none',\r\n infoAreaContent: (listView.hasMemo() ? (appContext.appInfoAreaContent ?? 'none') : 'none'),\r\n setInfoAreaContent,\r\n updateDataRow,\r\n openedByF6,\r\n f6Origin,\r\n f6Query,\r\n rowExtrasId,\r\n setRowExtrasId,\r\n setClickedCell: (data) => { clickedCellRef.current = data },\r\n setData,\r\n data,\r\n viewPopupRow,\r\n dismissPopupRow: () => setViewPopupRow(undefined),\r\n showPopupRow,\r\n opType,\r\n search,\r\n setListFilterType,\r\n trackingRequestEmailList,\r\n setTrackingRequestEmailList,\r\n recogModalData,\r\n setRecogModalData,\r\n };\r\n\r\n useEffect(() => {\r\n subscribeChannels();\r\n if (!data || data.length === 0) loadDataWithCurrentFilterSettings();\r\n else headerClickRef.current = false;\r\n\r\n return () => {\r\n unsubscribeChannels();\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n \r\n useEffect(() => {\r\n if (!escScheduled) {\r\n return;\r\n }\r\n closeScreen();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [escScheduled]\r\n );\r\n\r\n useDeepCompareEffect(() => {\r\n setTick(tick + 1);\r\n refreshUpdatedEntity();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [data])\r\n\r\n useEffect(() => {\r\n const isEmptyFilter = isFilterObjectEmpty(search);\r\n if (!search || !initialized || (!search.isSearchByReport && isEmptyFilter && search.version === 1 && search.listType === undefined)) {\r\n return;\r\n }\r\n if (isEmptyFilter) {\r\n setSelectedId(null);\r\n }\r\n else {\r\n if (ScrollMemory[listDomId])\r\n ScrollMemory[listDomId].forceSetDisplayRows = false;\r\n }\r\n reloadData();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [search]\r\n );\r\n\r\n useEffect(() => {\r\n if (initialized && data.length > 0 && selectedIndex !== -1) {\r\n setTimeout(() => {\r\n selectTableRow(selectedIndex, headerClickRef.current); \r\n }, 10);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [selectedIndex, initialized, tick]\r\n );\r\n\r\n useEffect(() => {\r\n if (externalReloadRequest === '') {\r\n return;\r\n }\r\n\r\n loadDataWithCurrentFilterSettings();\r\n\r\n setExternalReloadRequest('');\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [externalReloadRequest]);\r\n\r\n function reloadData(){\r\n headerClickRef.current = false;\r\n loadDataWithCurrentFilterSettings();\r\n }\r\n\r\n function subscribeChannels() {\r\n reloadSubscription = postal.subscribe({\r\n channel: 'ifms-job-list',\r\n topic: 'ifms-job-list.reload',\r\n callback: () => {\r\n setExternalReloadRequest('process');\r\n },\r\n });\r\n }\r\n\r\n function unsubscribeChannels() {\r\n if (reloadSubscription) {\r\n postal.unsubscribe(reloadSubscription);\r\n }\r\n }\r\n\r\n /**\r\n * Sets info area content type. Info area is rendering is defined in concrete implementation of listView instance if it is need.\r\n * Job list view just keeps track of currently active info area section.\r\n *\r\n * @param {string} c\r\n */\r\n function setInfoAreaContent(c:string) {\r\n const modals = document.querySelectorAll('[class^=\"ReactModal__Content\"]');\r\n if (modals.length > 0) {\r\n return false;\r\n }\r\n // Currently no op - info area is no longer 'per list screen\r\n\r\n appContext.setAppInfoAreaContent(c);\r\n if (c === 'memo' && !listView.hasMemo()) return;\r\n // if (infoAreaContentRef.current === c) {\r\n // _setInfoAreaContent('none');\r\n // // infoAreaContentRef.current = 'none';\r\n // } else {\r\n // _setInfoAreaContent(c);\r\n // // infoAreaContentRef.current = c;\r\n // }\r\n }\r\n\r\n /**\r\n * Loads saved entity from edit/new screen and refresh in list (in case of edit),\r\n * or add to top (in case of new)\r\n *\r\n */\r\n async function refreshUpdatedEntity() {\r\n const editedEntity = getSavedEntity();\r\n if (editedEntity.isDelete) {\r\n // if (dataRef.current) {\r\n // const newData = dataRef.current.filter(x => x.id !== parseInt(editedEntity.editedId ?? ''));\r\n // setData(newData, newData.length);\r\n // }\r\n loadDataWithCurrentFilterSettings();\r\n return;\r\n }\r\n\r\n if (!editedEntity || !editedEntity.editedId) {\r\n return;\r\n }\r\n\r\n if (editedEntity.refreshAll) {\r\n loadDataWithCurrentFilterSettings();\r\n \r\n setSelectedId(editedEntity.editedId);\r\n return;\r\n }\r\n \r\n // let newlyUpdatedElementIndex: number = 0;\r\n // const job = getJobFromName(jobName);\r\n\r\n if (!editedEntity.isNew) {\r\n // const dataFetchResult = await listView.fetchAndFormatData(appContext.api, { ...initialSearch, ...{ general1: 'id', generalText1: editedEntity.editedId ?? '', startWithEntry:true } }, opType);\r\n\r\n // if (!dataFetchResult || !dataFetchResult.data || dataFetchResult.data.length <= 0) {\r\n // return;\r\n // }\r\n\r\n // newlyUpdatedElementIndex = dataFetchResult.data[0].id;\r\n // const oriDataIndex = data.findIndex(x => x.id === newlyUpdatedElementIndex);\r\n \r\n // data[oriDataIndex] = dataFetchResult.data[0];\r\n\r\n // setData(data, data.length);\r\n }\r\n else {\r\n // const queryOpType = editedEntity.queryOpType;\r\n \r\n // const listView = job.generateListView();\r\n // const tempList = await listView.fetchAndFormatData(appContext.api, initialSearch, _.isEmpty(queryOpType) ? undefined : queryOpType);\r\n\r\n // const tempData = data;\r\n\r\n // //if (tempData.length === appContext.defaultPageSize) tempData.splice(tempData.length - 1); //delete last data\r\n\r\n // const insertItem = tempList.data.filter(cur => !tempData.some(x => x.id === cur.id));\r\n\r\n // if (insertItem.length === 0)\r\n // tempData.unshift(tempList.data[0]); //add data at first index\r\n // else\r\n // tempData.unshift(insertItem[0]);\r\n\r\n // setData(tempData, tempData.length);\r\n \r\n setSelectedId(data[0]?.id);\r\n }\r\n }\r\n\r\n function updateDataRow(row: any, insertIfNotExist: boolean = false) {\r\n if (!row || !row.id) {\r\n return;\r\n }\r\n headerClickRef.current = true;\r\n\r\n const newData = [...dataRef.current!];\r\n const editIndex = newData.findIndex(x => x.id === row.id);\r\n if (editIndex >= 0) {\r\n newData[editIndex] = row;\r\n setData(newData, currentCount);\r\n } else {\r\n if (insertIfNotExist) {\r\n setData([row, ...dataRef.current!], currentCount + 1);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Loads list data from current list settings. Also makes sure all columns for which filtering is applied for are visible.\r\n *\r\n * @return {*} \r\n */\r\n async function loadDataWithCurrentFilterSettings() {\r\n if (!search) {\r\n return;\r\n }\r\n\r\n // const searchColumns = [search.general1, search.general2, search.date, search.location1, search.location2, search.number].filter(x => !!x);\r\n // if (tableRef && tableRef.current && searchColumns.length > 0) {\r\n // tableRef.current.makeSureColumnsAreVisible(searchColumns);\r\n // }\r\n\r\n await fetchData(appContext.api, search);\r\n }\r\n\r\n /**\r\n * Calls list view implementation to get the actual data based on given search object\r\n *\r\n * @param {*} api\r\n * @param {*} search\r\n */\r\n async function fetchData(api:any, search:any) {\r\n setListOrderBy(listView.getDefaultOrderBy());\r\n const dataFetchResult = await listView.fetchAndFormatData(api, search, opType, appContext.user, jobListViewContext);\r\n setData(dataFetchResult.data, dataFetchResult.totalCount);\r\n\r\n if (!f6Query && !isFilterObjectEmpty(search) && dataFetchResult.data.length <= 0) {\r\n await showGlobalOkDialog(

    No data found

    );\r\n clearFilters();\r\n setSelectedId(null);\r\n }\r\n }\r\n\r\n /**\r\n * Callback function for filter clear inside filter window or by clicking on the same menu item again.\r\n * Reset order by by default\r\n *\r\n */\r\n function onFilterClear() {\r\n setListOrderBy(listView.getDefaultOrderBy());\r\n }\r\n\r\n /**\r\n * Cleanup routing before Job item is being disposed\r\n *\r\n */\r\n function cleanup() {\r\n //deleteInfoAreaContent();\r\n deleteHideLogHistory();\r\n clearListData();\r\n clearFiltersFromStorage();\r\n deleteListOrderBy();\r\n }\r\n\r\n /**\r\n * Schedule Esc key event handler in scope with current state\r\n *\r\n */\r\n function scheduleEscProcess() {\r\n // In case any modal window is opened, don't close the job\r\n const modals = document.querySelectorAll('[class^=\"ReactModal__Content\"]');\r\n if (modals.length > 0) {\r\n return false;\r\n }\r\n\r\n setEscScheduled(true);\r\n return true;\r\n }\r\n /**\r\n * Request screen to be closed\r\n *\r\n * @return {*} \r\n */\r\n async function closeScreen() {\r\n const close = await canGoBack();\r\n\r\n setEscScheduled(false);\r\n if (!close) {\r\n return false;\r\n }\r\n \r\n // appContext.setJournalType(0);\r\n \r\n goBack(); \r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Show column settings dialog\r\n *\r\n */\r\n function initializeColumnsDialog() {\r\n if (tableRef && tableRef.current) {\r\n tableRef.current.showColumnSettings();\r\n }\r\n }\r\n\r\n /**\r\n * Helper function to extract current order by settings from search object\r\n *\r\n * @return {*} \r\n */\r\n function getOrderBy() {\r\n // if (!search) {\r\n // return listView.getDefaultOrderBy();\r\n // }\r\n\r\n // return {\r\n // orderBy: search.orderBy,\r\n // orderByAscending: search.orderByAscending,\r\n // }\r\n return listOrderBy;\r\n }\r\n\r\n /**\r\n * Request data refresh\r\n *\r\n */\r\n function refresh() {\r\n reloadData();\r\n }\r\n\r\n\r\n function showPopupRow() {\r\n if (!listView.hasViewPopup()) {\r\n return;\r\n }\r\n\r\n const rowIndex = getSelectedIndex();\r\n\r\n if (dataRef && dataRef.current && rowIndex >=0 && rowIndex < dataRef.current.length) {\r\n setViewPopupRow(dataRef.current[rowIndex]);\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param {number} rowIndex\r\n */\r\n async function onRowDoubleClick(rowIndex:number) {\r\n // This is globally attached event handler. If Search window is opened - dismiss this call\r\n const searchWindow = document.getElementById('ifms-list-screen-filter');\r\n if (searchWindow) {\r\n return;\r\n }\r\n\r\n\r\n if (dataRef && dataRef.current && rowIndex >= 0 && rowIndex < dataRef.current.length) {\r\n if (listView.hasViewPopup()) {\r\n setViewPopupRow(dataRef.current[rowIndex]);\r\n return;\r\n }\r\n\r\n let viewParams = listView.getViewUrlFor(dataRef.current[rowIndex]) as ViewUrl;\r\n if (_.isEmpty(viewParams.url))\r\n viewParams = { url: listView.getViewUrlFor(dataRef.current[rowIndex]) as string, needAfterScreenUrl: false, checkAllOperation: false };\r\n \r\n if (!viewParams.url) {\r\n let openParams = listView.getOpenUrlFor(dataRef.current[rowIndex]);\r\n if (!openParams || _.isEmpty(openParams)) {\r\n return;\r\n } else {\r\n let left = (document.body.offsetWidth / 2) - (980 / 2);\r\n left += window.screenLeft;\r\n \r\n window.open(`${config.serverUrl}report/logViewer?jwt=${appContext.api.getAuthKey()}` + openParams,\r\n '_blank',\r\n `width=980, height=${window.screen.availHeight},left=${left}, top=0, scrollbars=yes`\r\n );\r\n }\r\n return;\r\n }\r\n\r\n moveToOpenedScreenInAnyOperationStartingWithUrl(viewParams.url, [viewParams.url, viewParams.url.replace('/view', '/edit')], viewParams.needAfterScreenUrl);\r\n }\r\n }\r\n\r\n /**\r\n * Callback function when table header is being clicked. Change ordering accordingly.\r\n *\r\n * @param {*} c\r\n * @return {*} \r\n */\r\n function onHeaderClick(c:any) {\r\n if (!c || !c.id || c.id === 'indicator' || !c.sortable) {\r\n return;\r\n }\r\n\r\n const orderBy = getOrderBy();\r\n\r\n let newOrder = {orderBy: c.id, orderByAscending: true};\r\n\r\n if (!orderBy || orderBy.orderBy !== c.id) {\r\n setListOrderBy(newOrder);\r\n } else {\r\n newOrder = {orderBy: orderBy.orderBy, orderByAscending: !orderBy.orderByAscending};\r\n setListOrderBy(newOrder);\r\n }\r\n\r\n const sortResult = sortListData(dataRef.current ?? [], newOrder, listView.getTableSettings(opType, systemSettings, suntekSettings).columns);\r\n headerClickRef.current = true;\r\n\r\n if (sortResult.sorted) {\r\n setData(sortResult.data, sortResult.data.length);\r\n }\r\n }\r\n\r\n function exportIntoExcel() {\r\n const table = document.getElementById(listDomId);\r\n const rowCount = table?.querySelectorAll('div[role=\"row\"]').length;\r\n if (rowCount === 1) showGlobalOkDialog(

    No data to Export

    );\r\n else {\r\n let jobname = job.jobName;\r\n if (listDomId.includes('invoice-warehousing')) jobname = JobNames.WHInvoice;\r\n else if (listDomId.includes('bill-warehousing')) jobname = JobNames.WHBill;\r\n else if (listDomId.includes('crdb-warehousing')) jobname = JobNames.WHCrDb;\r\n exportDomTableIntoExcel(listDomId, `${operationName}-${title}`, systemSettings?.userId ?? '', jobname, job.generateListView(), appContext)\r\n }\r\n }\r\n\r\n function jobListViewBeforePager() {\r\n // if (appContext.appInfoAreaContent !== infoAreaContent)\r\n // setInfoAreaContent(appContext.appInfoAreaContent);\r\n return (\r\n
    \r\n {/* {additionalCommands &&\r\n <>\r\n {additionalCommands}  \r\n \r\n } */}\r\n {listView.hasMemo() &&\r\n
    \r\n {\r\n //setHideLogHistory(true);\r\n setInfoAreaContent(appContext.appInfoAreaContent === 'memo' ? 'none' : 'memo');\r\n }}\r\n onMouseOver={()=> isMouseOverRef.current = true}\r\n onMouseEnter={() => isMouseOverRef.current = true}\r\n onMouseLeave={() => isMouseOverRef.current = false}\r\n data-tooltip={constants.Document_Server}\r\n >\r\n
    \r\n   {constants.Doc_Server}  \r\n \r\n
    \r\n \r\n {/* \r\n {\r\n if (infoAreaContent === 'none') {\r\n setHideLogHistory(false);\r\n setInfoAreaContent('memo');\r\n }\r\n else\r\n setHideLogHistory(!hideLogHistory);\r\n }}\r\n >\r\n \r\n */}\r\n
    \r\n }\r\n
    \r\n );\r\n }\r\n\r\n function jobListViewBeforeConfigureButton() {\r\n return (\r\n <>\r\n {listView.renderBeforeConfigureButton()}\r\n \r\n \"Export\r\n   \r\n \r\n );\r\n }\r\n\r\n const orderBy = getOrderBy();\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n customTableId: listDomId,\r\n ref: tableRef,\r\n selectable: false,\r\n tableName: listDomId,\r\n ...listView.getTableSettings(opType, systemSettings, suntekSettings),\r\n height: '2000px',\r\n data: data.map((x:any) => ({...x})),\r\n rowRenderers: listView.getRowRenderers(opType, systemSettings, suntekSettings, data.length, appContext.useDarkMode),\r\n orderBy: [orderBy],\r\n headersColor: 'gray',\r\n isListView: true,\r\n onHeaderClick,\r\n useHighlightCellOnMouseover:false,\r\n rowProps: (row: any) => {\r\n if (row.index % 2 !== 0) {\r\n let backgroundColor = '';\r\n switch(appContext.backgroundColor) {\r\n case 'W': backgroundColor = '#E4E6EB'; break;\r\n case 'A': backgroundColor = '#E5FFE5'; break;\r\n case 'I': backgroundColor = '#FFFFE3'; break;\r\n }\r\n\r\n if (backgroundColor) {\r\n return {\r\n style: { backgroundColor }\r\n };\r\n }\r\n }\r\n return undefined;\r\n },\r\n useSetClickedCellWhenClick:operationName === 'Ocean Import' || operationName === 'Other Shipment',\r\n onInitialized: () => { setInitialized(true); }\r\n };\r\n\r\n // const topRightMenu = listView.renderInsideTopRightOpMenu(jobListViewContext);\r\n\r\n // const RenderedTable = ;\r\n\r\n // Use memo to optimize to not rerender table when nothing related to it changes\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n \r\n const RenderedTable = React.useMemo(() => ,\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [dataRef.current, search, initialized, tick]);\r\n //const RenderedTable = React.useMemo(() => , [dataRef.current]);\r\n // const RenderedTable = React.useMemo(() => , [search, dataRef.current]);\r\n\r\n const additionalCommands = listView.renderAdditionalCommands();\r\n const serachMargin = listView.transactionImpactBtn(appContext.user?.id??'') === null ? '0 10px 0 0' : '0 10px';\r\n\r\n return (\r\n \r\n
    \r\n \r\n {listView.commandsAfterMemoLogBtn()}\r\n
    \r\n {listView.transactionImpactBtn(appContext.user?.id ?? '')}\r\n
    \r\n \r\n
    \r\n \r\n }\r\n initializeColumnsDialog={initializeColumnsDialog}\r\n rightBeforeConfigureButton={jobListViewBeforeConfigureButton()}\r\n rightAfterConfigureButton={\r\n
    \r\n {additionalCommands &&\r\n <>\r\n {additionalCommands}\r\n \r\n }\r\n
    \r\n }\r\n >\r\n {listView.renderCommands(appContext)}\r\n \r\n\r\n {RenderedTable}\r\n\r\n {listView.renderExtras(hideLogHistory)}\r\n {listView.renderRowExtras(rowExtrasId, jobListViewContext, clickedCellRef.current, appContext)}\r\n
    \r\n\r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n}\r\n\r\nconst JobListView = () => {\r\n const location = useLocation();\r\n let parentOp = '';\r\n\r\n if(location.search && location.search.indexOf('parentOp') > -1) {\r\n parentOp = location.search.replace('?parentOp=', '');\r\n }\r\n\r\n const { jobName, opType } = useParams();\r\n\r\n /**\r\n * Implementation note:\r\n * key is important in this case in order to force full List view rerender for different parameters.\r\n */\r\n return (\r\n \r\n );\r\n};\r\nexport default JobListView;\r\n","import { useAppDispatch, useAppSelector } from '../app/hooks';\r\nimport { removeFromStorage } from '../features/storageSlice';\r\n\r\nimport { FilterStorageVersion } from '../filtering';\r\n\r\nexport interface StorageEditedObj {\r\n editedId: string|undefined,\r\n isNew: boolean,\r\n isDelete: boolean,\r\n refreshAll: boolean,\r\n queryOpType: string|undefined,\r\n}\r\n\r\n\r\n/**\r\n * Get edited id of saved entity for the list screen\r\n *\r\n */\r\nexport default function useGetEditedId() {\r\n const storage = useAppSelector(x => x.storage);\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n function getSavedEntity():StorageEditedObj {\r\n let editedId: string|undefined = undefined;\r\n let isNew: boolean = false;\r\n let isDelete: boolean = false;\r\n let refreshAll: boolean = false;\r\n let queryOpType: string|undefined = undefined;\r\n\r\n const storageKey = `editedId-${FilterStorageVersion}-${window.location.pathname}${window.location.search}`;\r\n\r\n if (storage[storageKey]) {\r\n const editedObj = storage[storageKey] as StorageEditedObj;\r\n editedId = editedObj?.editedId ?? undefined;\r\n isNew = editedObj?.isNew ?? false;\r\n isDelete = editedObj?.isDelete ?? false;\r\n refreshAll = editedObj?.refreshAll ?? false;\r\n queryOpType = editedObj?.queryOpType ?? undefined;\r\n\r\n dispatch(removeFromStorage(storageKey));\r\n }\r\n\r\n return {\r\n editedId,\r\n isNew,\r\n isDelete,\r\n refreshAll,\r\n queryOpType\r\n };\r\n }\r\n\r\n return getSavedEntity;\r\n}\r\n","import { useCallback, useEffect, useRef, useState } from 'react';\r\nimport { Portal } from 'react-portal';\r\nimport { RightClickContext } from '../components/common/JobListViewContext';\r\nimport AbstractListView from '../components/common/AbstractListView';\r\n\r\nexport const useContextMenu = (listView: AbstractListView) => {\r\n const [rightClickContext, setRightClickContext] = useState(undefined);\r\n const menuPositionRef = useRef({ top: 0, left: 0 });\r\n \r\n const isRightContextVisibleRef = useRef(false);\r\n const contextContainerRef = useRef(null);\r\n const listViewRef = useRef(listView);\r\n\r\n useEffect(() => {\r\n listViewRef.current = listView;\r\n }, [listView]);\r\n\r\n const handleClickOutsideContextMenu = useCallback((e: Event) => {\r\n if (isRightContextVisibleRef.current && contextContainerRef.current) {\r\n const target = e.target as HTMLElement;\r\n const shouldClose = !contextContainerRef.current.contains(target);\r\n\r\n if (shouldClose) {\r\n setRightClickContext(undefined);\r\n isRightContextVisibleRef.current = false;\r\n }\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n document.addEventListener('click', handleClickOutsideContextMenu, true);\r\n document.addEventListener('scroll', handleClickOutsideContextMenu, true);\r\n\r\n return () => {\r\n document.removeEventListener('click', handleClickOutsideContextMenu, true);\r\n document.removeEventListener('scroll', handleClickOutsideContextMenu, true);\r\n };\r\n }, [handleClickOutsideContextMenu]);\r\n\r\n const calculateMenuPosition = (node: Element, menuWidth = 150, menuHeight = 0) => {\r\n const rect = node.getBoundingClientRect();\r\n const windowWidth = window.innerWidth;\r\n const windowHeight = window.innerHeight;\r\n\r\n let left = rect.right;\r\n let top = rect.bottom;\r\n\r\n if (left + menuWidth > windowWidth) {\r\n left = rect.left - menuWidth;\r\n if (left < 0) left = 0;\r\n }\r\n\r\n if (top + menuHeight > windowHeight) {\r\n top = rect.top - menuHeight;\r\n if (top < 0) top = 0;\r\n }\r\n\r\n return { top, left };\r\n };\r\n\r\n const onCellRightClick = useCallback((row: number, column: number, node: Element, e: MouseEvent) => {\r\n if (listViewRef.current.hasRightClickContext()) {\r\n e.preventDefault();\r\n isRightContextVisibleRef.current = true;\r\n\r\n const position = calculateMenuPosition(node);\r\n menuPositionRef.current = position;\r\n\r\n setRightClickContext((prev) => {\r\n if (prev?.row === row && prev?.column === column) {\r\n return prev;\r\n }\r\n return { row, column, node, status: false };\r\n });\r\n }\r\n }, []);\r\n\r\n const RightClickContextMenu = useCallback(() => {\r\n if (!rightClickContext) return null;\r\n const portalRoot = document?.getElementById('ifms-app-bottom');\r\n if (!portalRoot) return null;\r\n\r\n return (\r\n \r\n e.stopPropagation()}\r\n ref={contextContainerRef}\r\n style={{\r\n position: 'fixed',\r\n top: `${menuPositionRef.current.top}px`,\r\n left: `${menuPositionRef.current.left}px`,\r\n minWidth: '150px',\r\n backgroundColor: 'white',\r\n border: '1px solid #616161',\r\n fontSize: '11px',\r\n zIndex: 1000,\r\n boxShadow: '0 2px 5px rgba(0,0,0,0.2)'\r\n }}\r\n >\r\n {listView.renderRightClickContext(rightClickContext, () => setRightClickContext(undefined))}\r\n
    \r\n \r\n );\r\n }, [rightClickContext]);\r\n\r\n // ref가 연결된 후 메뉴 위치를 조정하는 effect\r\n useEffect(() => {\r\n if (rightClickContext && contextContainerRef.current) {\r\n const { top, left } = calculateMenuPosition(\r\n rightClickContext.node,\r\n contextContainerRef.current.offsetWidth,\r\n contextContainerRef.current.offsetHeight\r\n );\r\n contextContainerRef.current.style.top = `${top}px`;\r\n contextContainerRef.current.style.left = `${left}px`;\r\n }\r\n }, [rightClickContext]);\r\n\r\n return {\r\n onCellRightClick,\r\n RightClickContextMenu,\r\n };\r\n};","import { useEffect } from 'react';\r\nimport useStorage from './useStorage';\r\nimport { useTypedFastStorage } from './useFastStorage';\r\nimport postal from 'postal';\r\n\r\nimport useTableNavigation from '../ui/tables/useTableNavigation';\r\nimport useListHeightMonitor from './useListHeightMonitor';\r\n\r\nexport default function useListData(name: string, onDoubleClick: any, tableColumnDefaultFocusHierarchy: Array, onCellRightClick: ((row: number, column: number, node: Element, e:MouseEvent) => void) | undefined = undefined, initialized: boolean, setListDataWhenCellClick:any) {\r\n const channel = postal.channel('ifms-filter');\r\n useListHeightMonitor(name);\r\n\r\n let currentCount = 0;\r\n\r\n const dataKeySufix = `${window.location.pathname}${window.location.search}`;\r\n\r\n const [data, _setData, removeDataFromStorage, dataRef] = useTypedFastStorage>(`ifms-list-data-${dataKeySufix}`, []);\r\n const [selectedId, _setSelectedId, removeSelectedIdFromStorage, selectedIdRef] = useStorage(name, null);\r\n const { selectTableRow, tableNavigationCleanup, triggerTableSearch } = useTableNavigation(name, onRowSelected, onDoubleClick, tableColumnDefaultFocusHierarchy || [], false, false, false, onDoubleClick, onCellRightClick, initialized);\r\n\r\n useEffect(() => {\r\n if (data && data.length > 0 && !selectedId) {\r\n applyIdSelectionAlgorithm(data);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n function applyIdSelectionAlgorithm(data:any) {\r\n if (data && data.length > 0) {\r\n\r\n if (!selectedIdRef.current || !data.some((d:any) => d.id === selectedIdRef.current)) {\r\n setSelectedId(data[0].id);\r\n } \r\n } else {\r\n setSelectedId(null);\r\n }\r\n }\r\n\r\n function onRowSelected(index:number) {\r\n if(setListDataWhenCellClick) setListDataWhenCellClick();\r\n\r\n if (dataRef.current && index >= 0 && index < dataRef.current.length) {\r\n setSelectedId((dataRef.current[index] as any).id);\r\n }\r\n }\r\n\r\n function setData(d:any, count:number) {\r\n // Make sure it is not data merge but complete replace\r\n //removeDataFromStorage();\r\n _setData(d);\r\n applyIdSelectionAlgorithm(d);\r\n currentCount = count;\r\n channel.publish('ifms-filter.countsetter', count);\r\n }\r\n\r\n function setSelectedId(id:any) {\r\n selectedIdRef.current = id;\r\n _setSelectedId(id);\r\n }\r\n\r\n function getSelectedIndex() {\r\n if (!selectedIdRef || !selectedIdRef.current || !dataRef || !dataRef.current) {\r\n return -1;\r\n }\r\n\r\n return dataRef.current.findIndex((x:any) => x.id + '' === selectedIdRef.current + '');\r\n }\r\n\r\n\r\n function clearListData() {\r\n removeDataFromStorage();\r\n tableNavigationCleanup();\r\n removeSelectedIdFromStorage();\r\n }\r\n\r\n return {\r\n data: data ?? [],\r\n dataRef,\r\n setData,\r\n setSelectedId,\r\n getSelectedIndex,\r\n clearListData,\r\n selectTableRow,\r\n triggerTableSearch,\r\n currentCount,\r\n };\r\n}\r\n ","export default __webpack_public_path__ + \"static/media/toggleOn_blue.84a524b7.svg\";","export default __webpack_public_path__ + \"static/media/toggleOffDisabled.a455065f.svg\";","import './toggleButton.css';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\n//import toggleOn from '../img/toggleOn.svg';\r\n//import toggleOn_Skyblue from '../img/toggleOn_skyblue.svg';\r\nimport toggleOn_blue from '../img/toggleOn_blue.svg';\r\n//import toggleOff from '../img/toggleOff.svg';\r\nimport toggleOffDisabled from '../img/toggleOffDisabled.svg';\r\n// import toggleOffDisabledhover from '../img/toggleOffDisabledhover.svg';\r\n// import toggleOn_bluehover from '../img/toggleOn_bluehover.svg';\r\n\r\n\r\nfunction ToggleButton({\r\n value,\r\n onChange = () => {},\r\n disabled,\r\n isHovered,\r\n ...other\r\n}: {\r\n value: boolean,\r\n onChange?: (x: boolean) => void,\r\n disabled?: boolean,\r\n isHovered?: boolean,\r\n [x: string]: any\r\n}) {\r\n\r\n\r\n function getIconSrc() {\r\n if (disabled) return toggleOffDisabled;\r\n\r\n // Issue - #1704 : 기존 색상과 동일하게 처리(Doc. Server에 마우스 오버시 버튼의 색이 빨간색으로 변하는 부분을 #0079A4 색으로 변경)\r\n // if (isHovered){\r\n // if(value)\r\n // return toggleOn_bluehover\r\n // else\r\n // return toggleOffDisabledhover\r\n // }\r\n \r\n return value ? toggleOn_blue : toggleOffDisabled;\r\n }\r\n function toggle() {\r\n if (disabled) return;\r\n else onChange(!value);\r\n }\r\n return (\r\n \"\"\r\n );\r\n\r\n // if (disabled)\r\n // return \"\"\r\n // else\r\n // //return \"\"\r\n // return \"\"\r\n\r\n\r\n}\r\n\r\nToggleButton.defaultProps = {\r\n onChange: () => {\r\n },\r\n value: false,\r\n disabled: false,\r\n isHovered: false,\r\n};\r\n\r\nToggleButton.propTypes = {\r\n onChange: PropTypes.func.isRequired,\r\n value: PropTypes.bool.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n isHovered: PropTypes.bool.isRequired,\r\n};\r\n\r\n\r\nexport default React.memo(ToggleButton);\r\n","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\n\r\nexport class HblPoNo extends TrackableEntity {\r\n id: number = 0;\r\n hblId: number = 0;\r\n poNo: string = '';\r\n skuNo: string = '';\r\n htsCode: string = '';\r\n description: string = '';\r\n styleNo: string = '';\r\n itemNo: string = '';\r\n shipQty: number = 0;\r\n kgs: number = 0;\r\n lbs: number = 0;\r\n cbm: number = 0;\r\n cKgs: number = 0;\r\n cft: number = 0;\r\n cLbs: number = 0;\r\n shipUnit: string = '';\r\n coo: string = '';\r\n uPrice: number = 0;\r\n pimsLinkUserId: string = '';\r\n pimsLinkId: number = 0;\r\n pimsLinkDate: string | null = null;\r\n pimsPoHdLinkId: number = 0;\r\n pimsPoDetLinkId: number = 0;\r\n cntrLinkId: number = 0;\r\n cntrId: number = 0;\r\n containerNo: string = '';\r\n orderQty: number = 0;\r\n orderUnit: string = '';\r\n state: string = '';\r\n oihblId: number = 0;\r\n aihblid: number = 0;\r\n\r\n // UI\r\n select: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('id', 'cntrId', 'containerNo', 'orderQty', 'orderUnit', 'state', 'oihblId', 'aihblid');\r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n let dicFieldMappings = HblPoNo.dicFieldMappings;\r\n\r\n switch (arg) {\r\n case 'aiHPoList':\r\n dicFieldMappings = HblPoNo.dicFieldMappings2;\r\n break;\r\n case 'ponoList':\r\n dicFieldMappings = HblPoNo.dicFieldMappings3;\r\n break;\r\n }\r\n \r\n return dicFieldMappings;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_Id', table: 'T_OOHPONO' }),\r\n 'poNo': new DBMappingInfo({ field: 'F_PONO', table: 'T_OOHPONO' }),\r\n 'skuNo': new DBMappingInfo({ field: 'F_SKUNO', table: 'T_OOHPONO' }),\r\n 'htsCode': new DBMappingInfo({ field: 'F_HTSCODE', table: 'T_OOHPONO' }),\r\n 'coo': new DBMappingInfo({ field: 'F_COO', table: 'T_OOHPONO' }),\r\n 'description': new DBMappingInfo({ field: 'F_DESCRIPTION', table: 'T_OOHPONO' }),\r\n 'shipQty': new DBMappingInfo({ field: 'F_SHIPQTY', table: 'T_OOHPONO' }),\r\n 'shipUnit': new DBMappingInfo({ field: 'F_SHIPUNIT', table: 'T_OOHPONO' }),\r\n 'uPrice': new DBMappingInfo({ field: 'F_UPRICE', table: 'T_OOHPONO' }),\r\n 'kgs': new DBMappingInfo({ field: 'F_KGS', table: 'T_OOHPONO' }),\r\n 'cbm': new DBMappingInfo({ field: 'F_CBM', table: 'T_OOHPONO' }),\r\n 'cntrLinkId': new DBMappingInfo({ field: 'F_CNTRLINKID', table: 'T_OOHPONO' }),\r\n 'pimsPoHdLinkId': new DBMappingInfo({ field: 'F_PIMSPOHDLINKID', table: 'T_OOHPONO' }),\r\n 'pimsPoDetLinkId': new DBMappingInfo({ field: 'F_PIMSPODETLINKID', table: 'T_OOHPONO' }),\r\n 'hblId': new DBMappingInfo({ field: 'F_OOHBLID', table: 'T_OOHPONO' }),\r\n 'lbs': new DBMappingInfo({ field: 'F_LBS', table: 'T_OOHPONO' }),\r\n 'cft': new DBMappingInfo({ field: 'F_CFT', table: 'T_OOHPONO' }),\r\n };\r\n\r\n static dicFieldMappings2:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_ID', table: 'T_AIHPONO' }),\r\n 'hblId': new DBMappingInfo({ field: 'F_AIHBLID', table: 'T_AIHPONO' }),\r\n 'poNo': new DBMappingInfo({ field: 'F_PONO', table: 'T_AIHPONO' }),\r\n 'skuNo': new DBMappingInfo({ field: 'F_SKUNO', table: 'T_AIHPONO' }),\r\n 'htsCode': new DBMappingInfo({ field: 'F_HTSCODE', table: 'T_AIHPONO' }),\r\n 'coo': new DBMappingInfo({ field: 'F_COO', table: 'T_AIHPONO' }),\r\n 'description': new DBMappingInfo({ field: 'F_description', table: 'T_AIHPONO' }),\r\n 'shipQty': new DBMappingInfo({ field: 'F_ShipQty', table: 'T_AIHPONO' }),\r\n 'shipUnit': new DBMappingInfo({ field: 'F_ShipUnit', table: 'T_AIHPONO' }),\r\n 'uPrice': new DBMappingInfo({ field: 'F_UPRICE', table: 'T_AIHPONO' }),\r\n 'kgs': new DBMappingInfo({ field: 'F_kgs', table: 'T_AIHPONO' }),\r\n 'cKgs': new DBMappingInfo({ field: 'F_CKGS', table: 'T_AIHPONO' }),\r\n 'lbs': new DBMappingInfo({ field: 'F_LBS', table: 'T_AIHPONO' }),\r\n 'cLbs': new DBMappingInfo({ field: 'F_CLBS', table: 'T_AIHPONO' }),\r\n 'pimsPoHdLinkId': new DBMappingInfo({ field: 'F_PimsPOHDLinkID', table: 'T_AIHPONO' }),\r\n 'pimsPoDetLinkId': new DBMappingInfo({ field: 'F_PimsPODETLinkID', table: 'T_AIHPONO' }),\r\n\r\n };\r\n\r\n static dicFieldMappings3:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_ID', table: 'T_AOHPONO' }),\r\n 'hblId': new DBMappingInfo({ field: 'F_AOHBLID', table: 'T_AOHPONO' }),\r\n 'poNo': new DBMappingInfo({ field: 'F_PONO', table: 'T_AOHPONO' }),\r\n 'skuNo': new DBMappingInfo({ field: 'F_SKUNO', table: 'T_AOHPONO' }),\r\n 'htsCode': new DBMappingInfo({ field: 'F_HTSCODE', table: 'T_AOHPONO' }),\r\n 'coo': new DBMappingInfo({ field: 'F_COO', table: 'T_AOHPONO' }),\r\n 'description': new DBMappingInfo({ field: 'F_DESCRIPTION', table: 'T_AOHPONO' }),\r\n 'shipQty': new DBMappingInfo({ field: 'F_SHIPQTY', table: 'T_AOHPONO' }),\r\n 'shipUnit': new DBMappingInfo({ field: 'F_SHIPUNIT', table: 'T_AOHPONO' }),\r\n 'uPrice': new DBMappingInfo({ field: 'F_UPRICE', table: 'T_AOHPONO' }),\r\n 'kgs': new DBMappingInfo({ field: 'F_KGS', table: 'T_AOHPONO' }),\r\n 'lbs': new DBMappingInfo({ field: 'F_LBS', table: 'T_AOHPONO' }),\r\n 'cKgs': new DBMappingInfo({ field: 'F_CKGS', table: 'T_AOHPONO' }),\r\n 'cLbs': new DBMappingInfo({ field: 'F_CLBS', table: 'T_AOHPONO' }),\r\n 'pimsPoHdLinkId': new DBMappingInfo({ field: 'F_PIMSPOHDLINKID', table: 'T_AOHPONO' }),\r\n 'pimsPoDetLinkId': new DBMappingInfo({ field: 'F_PIMSPODETLINKID', table: 'T_AOHPONO' }),\r\n\r\n };\r\n\r\n static dicFieldMappings4:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_Id', table: 'T_OIHPONO' }),\r\n 'poNo': new DBMappingInfo({ field: 'F_PONO', table: 'T_OIHPONO' }),\r\n 'skuNo': new DBMappingInfo({ field: 'F_SKUNO', table: 'T_OIHPONO' }),\r\n 'htsCode': new DBMappingInfo({ field: 'F_HTSCODE', table: 'T_OIHPONO' }),\r\n 'coo': new DBMappingInfo({ field: 'F_COO', table: 'T_OIHPONO' }),\r\n 'description': new DBMappingInfo({ field: 'F_DESCRIPTION', table: 'T_OIHPONO' }),\r\n 'shipQty': new DBMappingInfo({ field: 'F_SHIPQTY', table: 'T_OIHPONO' }),\r\n 'shipUnit': new DBMappingInfo({ field: 'F_SHIPUNIT', table: 'T_OIHPONO' }),\r\n 'uPrice': new DBMappingInfo({ field: 'F_UPRICE', table: 'T_OIHPONO' }),\r\n 'kgs': new DBMappingInfo({ field: 'F_KGS', table: 'T_OIHPONO' }),\r\n 'cbm': new DBMappingInfo({ field: 'F_CBM', table: 'T_OIHPONO' }),\r\n 'cntrLinkId': new DBMappingInfo({ field: 'F_CNTRLINKID', table: 'T_OIHPONO' }),\r\n 'pimsPoHdLinkId': new DBMappingInfo({ field: 'F_PIMSPOHDLINKID', table: 'T_OIHPONO' }),\r\n 'pimsPoDetLinkId': new DBMappingInfo({ field: 'F_PIMSPODETLINKID', table: 'T_OIHPONO' }),\r\n 'hblId': new DBMappingInfo({ field: 'F_OIHBLID', table: 'T_OIHPONO' }),\r\n 'lbs': new DBMappingInfo({ field: 'F_LBS', table: 'T_OIHPONO' }),\r\n 'cft': new DBMappingInfo({ field: 'F_CFT', table: 'T_OIHPONO' }),\r\n\r\n };\r\n}\r\n","import './select.css';\r\n\r\nimport _ from 'lodash';\r\nimport { Portal } from 'react-portal';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport { usePopper } from 'react-popper';\r\n\r\nimport { faTimes, faAngleDown } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { focusNextTabable } from '../util/inputUtils';\r\n\r\nfunction FilterableSelect2({\r\n selectId = undefined,\r\n items = [],\r\n onSelect = () => {},\r\n initialValue = undefined,\r\n placeholder = undefined,\r\n getId,\r\n getLabel,\r\n disabled,\r\n selectWidth = undefined,\r\n onTextChange,\r\n maxLength = undefined,\r\n dataType = 'text',\r\n clearable = false,\r\n hideClear = false,\r\n onBlur = undefined,\r\n name = undefined,\r\n fontColorItem = undefined,\r\n}: {\r\n selectId?: string|undefined,\r\n items?: Array\r\n onSelect: (x:any) => void,\r\n initialValue?: string|undefined,\r\n placeholder?: string|undefined,\r\n getId: (x:any, i:number) => string,\r\n getLabel: (x:any, i:number) => string,\r\n disabled: boolean,\r\n selectWidth?: string|undefined,\r\n onTextChange: (x:string) => void,\r\n maxLength?: number|undefined,\r\n dataType?: 'text' | 'number',\r\n clearable?: boolean,\r\n hideClear?: boolean,\r\n onBlur?: (() => void) | undefined,\r\n name?:string|undefined,\r\n fontColorItem?: any,\r\n}) {\r\n const dark = false;\r\n\r\n const [selectedItem, _setSelectedItem] = useState(-1);\r\n const [open, _setOpen] = useState(false);\r\n const openRef = useRef(false);\r\n\r\n const [referenceElement, _setReferenceElement] = useState(null);\r\n const [popperElement, _setPopperElement] = useState(null);\r\n const [, _setArrowElement] = useState(null);\r\n \r\n const { styles, attributes } = usePopper(referenceElement, popperElement, {\r\n placement: 'bottom-start',\r\n strategy: 'fixed'\r\n });\r\n\r\n // const inputIdRef = useRef(_.uniqueId('ifms-select-'));\r\n const inputIdRef = useRef(selectId || _.uniqueId('ifms-select-'));\r\n\r\n const containerIdRef = useRef(_.uniqueId('ifms-select-container-'));\r\n\r\n const popperRef = useRef(null);\r\n const referenceRef = useRef(null);\r\n const arrowElementRef = useRef(null);\r\n const fieldClickRef = useRef(false);\r\n \r\n function setOpen(o:boolean) {\r\n openRef.current = o;\r\n _setOpen(o);\r\n }\r\n\r\n function setReferenceElement(e:HTMLInputElement|null) {\r\n referenceRef.current = e;\r\n _setReferenceElement(e);\r\n }\r\n\r\n function setPopperElement(e:HTMLDivElement|null) {\r\n popperRef.current = e;\r\n _setPopperElement(e);\r\n }\r\n\r\n function setArrowElement(e:HTMLDivElement|null) {\r\n arrowElementRef.current = e;\r\n _setArrowElement(e);\r\n }\r\n\r\n const selectedItemRef = useRef(\r\n (initialValue !== undefined && initialValue !== null)\r\n ? items.findIndex(x => x.value === initialValue)\r\n : -1\r\n );\r\n\r\n useEffect(() => {\r\n document.addEventListener('click', handleClickOutside, true);\r\n return () => {\r\n document.removeEventListener('click', handleClickOutside, true);\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n if (open) {\r\n scrollIntoView(selectedItemRef.current);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [open]\r\n);\r\n\r\n useEffect(() => {\r\n if (referenceElement) {\r\n referenceElement.value = initialValue ?? '';\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [initialValue]\r\n );\r\n\r\n function handleClickOutside(e:MouseEvent) {\r\n if (!popperRef || !referenceRef || !popperRef.current || !referenceRef.current || !arrowElementRef.current) {\r\n return;\r\n }\r\n\r\n const target = e.target as Element;\r\n\r\n if (!popperRef.current.contains(target) && !referenceRef.current.contains(target) && !arrowElementRef.current.contains(target)) {\r\n processBlur();\r\n }\r\n }\r\n\r\n function blurInput() {\r\n if (referenceElement) {\r\n referenceElement.blur();\r\n }\r\n }\r\n\r\n function clear() {\r\n setOpen(false);\r\n blurInput();\r\n onSelect(null);\r\n if (referenceElement) {\r\n referenceElement.value = '';\r\n }\r\n }\r\n\r\n function isScrolledIntoView(container:HTMLElement, row:HTMLElement) {\r\n const trect = container.getBoundingClientRect();\r\n const rect = row.getBoundingClientRect();\r\n\r\n const viewStart = trect.top;\r\n const viewEnd = trect.top + trect.height;\r\n\r\n return rect.top >= viewStart && (rect.top + rect.height) <= viewEnd;\r\n }\r\n\r\n function setSelectedItem(index: number) {\r\n scrollIntoView(index);\r\n selectedItemRef.current = index;\r\n _setSelectedItem(index);\r\n }\r\n\r\n function scrollIntoView(index: number) {\r\n const container = document.getElementById(containerIdRef.current);\r\n const row = document.getElementById(`${containerIdRef.current}-item-${index}`);\r\n\r\n if (!row || !container) {\r\n return;\r\n }\r\n\r\n if (index < 0) {\r\n container.scrollTo({\r\n top: 0,\r\n left: 0,\r\n behavior: 'smooth'\r\n });\r\n return;\r\n }\r\n\r\n if (isScrolledIntoView(container, row)) {\r\n return;\r\n }\r\n\r\n const newPos = row.offsetTop;\r\n\r\n container.scrollTo({\r\n top: newPos >= 0 ? newPos : 0,\r\n left: 0,\r\n behavior: 'smooth'\r\n });\r\n }\r\n\r\n function preselect(text:string|null) {\r\n if (!text) {\r\n setSelectedItem(-1);\r\n return;\r\n }\r\n\r\n const match = items.findIndex((x, i) => getLabel(x, i).toLowerCase().startsWith(text.toLowerCase()));\r\n setSelectedItem(match);\r\n }\r\n\r\n function show() {\r\n if (referenceElement && referenceElement.value) {\r\n preselect(referenceElement.value);\r\n }\r\n setOpen(true);\r\n }\r\n\r\n function hide() {\r\n setOpen(false);\r\n }\r\n\r\n function processBlur() {\r\n if (selectedItem >= 0 && selectedItem < items.length) {\r\n onListItemSelected(items[selectedItem]);\r\n return;\r\n }\r\n\r\n hide();\r\n fieldClickRef.current = false;\r\n }\r\n\r\n function onListItemSelected(item:any) {\r\n onSelect(item);\r\n hide();\r\n\r\n // setTimeout(() => {\r\n // if (referenceElement) {\r\n // referenceElement.focus();\r\n // }\r\n // }, 10);\r\n //focus next tabable field after select\r\n setTimeout(() => {\r\n if (referenceRef.current)\r\n focusNextTabable(referenceRef.current)\r\n }, 10)\r\n }\r\n\r\n function handleTextChange(e:React.ChangeEvent) {\r\n const val = e.target.value;\r\n\r\n preselect(val);\r\n\r\n if (!open) {\r\n show();\r\n }\r\n onTextChange(val);\r\n }\r\n\r\n function processSpecialKeys(e:React.KeyboardEvent) {\r\n if (!e || !e.keyCode) {\r\n return;\r\n }\r\n\r\n switch(e.keyCode) {\r\n case 40: // Arrow down\r\n if (selectedItem < items.length - 1) {\r\n setSelectedItem(selectedItem + 1);\r\n }\r\n break;\r\n case 38: // Arrow up\r\n if (selectedItem > 0) {\r\n setSelectedItem(selectedItem -1);\r\n }\r\n break;\r\n case 9: // Tab\r\n if (openRef.current) {\r\n if (selectedItemRef.current >= 0 && selectedItemRef.current < items.length) {\r\n onListItemSelected(items[selectedItemRef.current]);\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n //blurInput();\r\n hide();\r\n }\r\n break;\r\n case 13: // Enter\r\n if (!openRef.current) {\r\n show();\r\n return;\r\n }\r\n \r\n if (selectedItem >= 0 && selectedItem < items.length) {\r\n onListItemSelected(items[selectedItem]);\r\n } else {\r\n hide();\r\n }\r\n break;\r\n default:\r\n }\r\n }\r\n\r\n if (disabled) {\r\n const cssClass = dark ? 'e-ifms-input-dark e-outline ifms-tabable' : 'e-ifms-input e-outline ifms-tabable';\r\n\r\n return (\r\n {}}\r\n disabled\r\n placeholder={placeholder}\r\n autoComplete=\"off\"\r\n list=\"autocompleteOff\"\r\n />\r\n );\r\n }\r\n\r\n const hasSelectedValue = referenceRef.current && referenceRef.current.value;\r\n const selectedBaseClass = hasSelectedValue ? 'ifms-select-with-value' : '';\r\n\r\n const baseClass = disabled ? `e-ifms-numeric-no-arrows ifms-select-no-caret ${selectedBaseClass}` : `e-ifms-numeric-no-arrows ifms-select ${selectedBaseClass}`;\r\n\r\n let cssClass = dark ? `${baseClass} e-ifms-input-dark e-outline ifms-tabable` : `${baseClass} e-ifms-input e-outline ifms-tabable`;\r\n if (!disabled) {\r\n cssClass = `${cssClass} ifms-tabable-active`;\r\n }\r\n\r\n\r\n const inputRect = referenceElement ? referenceElement.getBoundingClientRect() : null;\r\n\r\n const appliedPopperStyles = {\r\n ...styles.popper,\r\n width: selectWidth ? selectWidth : (`${inputRect ? inputRect.width : 100}px`),\r\n };\r\n\r\n return (\r\n
    \r\n {\r\n if (!disabled && !fieldClickRef.current) {\r\n (e.target as HTMLInputElement).select();\r\n fieldClickRef.current = true;\r\n }\r\n }}\r\n onBlur={onBlur}\r\n />\r\n {(clearable && !hideClear) &&\r\n \r\n \r\n
    \r\n }\r\n {!clearable &&\r\n {\r\n if (disabled) {\r\n return;\r\n }\r\n setOpen(!openRef.current);\r\n if (openRef.current) {\r\n if (referenceElement && referenceElement.value) {\r\n preselect(referenceElement.value);\r\n }\r\n }\r\n if (referenceElement) {\r\n referenceElement.focus();\r\n }\r\n }}\r\n ref={setArrowElement}\r\n >\r\n \r\n \r\n }\r\n \r\n {open &&\r\n \r\n
    \r\n {items.map((x, i) => (\r\n onListItemSelected(x)}\r\n style={{color: (fontColorItem && fontColorItem[i].title === getLabel(x,i) ? fontColorItem[i].color : 'black')}}\r\n >\r\n {getLabel(x, i)}\r\n
    \r\n ))}\r\n \r\n
    \r\n }\r\n \r\n );\r\n}\r\n\r\nFilterableSelect2.defaultProps = {\r\n onSelect: () => {},\r\n disabled: false,\r\n dark: false,\r\n placeholder: '',\r\n onTextChange: () => {},\r\n dataType: 'text',\r\n clearable: false,\r\n hideClear: false,\r\n};\r\n\r\nFilterableSelect2.propTypes = {\r\n selectId: PropTypes.string,\r\n onSelect: PropTypes.func.isRequired,\r\n getId: PropTypes.func.isRequired,\r\n getLabel: PropTypes.func.isRequired,\r\n placeholder: PropTypes.string.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n selectWidth: PropTypes.string,\r\n items: PropTypes.array,\r\n initialValue: PropTypes.string,\r\n onTextChange: PropTypes.func.isRequired,\r\n maxLength: PropTypes.number,\r\n dataType: PropTypes.oneOf(['text', 'number']).isRequired,\r\n clearable: PropTypes.bool.isRequired,\r\n hideClear: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport default React.memo(FilterableSelect2);\r\n","interface IndexByNumber {\r\n [key: number]: string,\r\n};\r\n\r\nexport const AllTypes:IndexByNumber = {\r\n 1: 'Sales/DS',\r\n 2: 'Collect4Agent',\r\n 3: 'Sales/IDS',\r\n 4: 'Sales/IDS',\r\n 5: 'Debit Memo',\r\n 6: 'Our Sales (ORG)',\r\n 7: 'PS Sales Only (ORG)',\r\n 27: 'PS Sales Only (DEST)',\r\n 11: 'Cost/DS',\r\n 12: 'Loan2Agent',\r\n 13: 'Cost/IDS',\r\n 14: 'Cost/IDS',\r\n 15: 'Credit Memo',\r\n 16: 'Our Cost (ORG)',\r\n 17: 'PS Cost Only (ORG)',\r\n 37: 'PS Cost Only (DEST)',\r\n 8: 'Duty Agent',\r\n 10: 'Duty Customer',\r\n 18: 'Duty Agent',\r\n 20: 'Duty Customer',\r\n 40: 'Duty Customer',\r\n};\r\n\r\n//\r\nexport const AllTypesShort:IndexByNumber = {\r\n 1: 'Sales/DS',\r\n 2: 'Collect4Agent',\r\n 3: 'Sales/IDS',\r\n 4: 'Sales/IDS',\r\n 5: 'Debit Memo',\r\n 6: 'Sales/DS',\r\n 7: 'PS Sales Only',\r\n 27: 'PS Sales Only',\r\n 11: 'Cost/DS',\r\n 12: 'Loan2Agent',\r\n 13: 'Cost/IDS',\r\n 14: 'Cost/IDS',\r\n 15: 'Credit Memo',\r\n 16: 'Cost/DS',\r\n 17: 'PS Cost Only',\r\n 37: 'PS Cost Only',\r\n 8: 'Duty Agent',\r\n 10: 'Duty Customer',\r\n 18: 'Duty Agent',\r\n 20: 'Duty Customer',\r\n 40: 'Duty Customer',\r\n};\r\n\r\n//export default AllTypes;\r\n ","import PropTypes from 'prop-types';\r\nimport React, {useContext, useEffect, useState} from 'react';\r\n\r\nimport Select, {SelectItem} from '../ui/Select';\r\nimport ApplicationContext from \"../ApplicationContext\";\r\nimport {MultiName} from \"../fms.core/constants\";\r\n\r\ninterface IMultiName {\r\n intValue: number;\r\n text: string;\r\n}\r\n\r\nfunction MultiNameDropDown({\r\n value,\r\n onChange = () => {\r\n },\r\n disabled = false,\r\n selectId,\r\n loadFromConfig = false,\r\n name = undefined,\r\n maxLength = undefined,\r\n}: {\r\n value: string | null | undefined,\r\n disabled?: boolean,\r\n onChange?: (x: IMultiName | null) => void,\r\n selectId?: string,\r\n loadFromConfig?: boolean,\r\n name?: string | undefined,\r\n maxLength?: number|undefined,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const [data, setData] = useState>([]);\r\n\r\n async function fetchData(api: any) {\r\n const data = await api.loadCodeData([new MultiName()]);\r\n if (data && data.length > 0) {\r\n setData(data[0].items);\r\n if(loadFromConfig) {\r\n if(appContext.systemSettings?.useMultipleNames && data[0].items.length > 0) {\r\n if(data[0].items[0]) {\r\n onChange(data[0].items[0] || null);\r\n } else if(data[0].items.length > 1) {\r\n onChange(data[0].items[1] || null);\r\n }\r\n } else if(!appContext.systemSettings?.useMultipleNames && data[0].items.length > 0) {\r\n if(data[0].items[0])\r\n onChange(data[0].items[0] || null);\r\n }\r\n }\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n fetchData(appContext.api);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function handleChange(e: React.ChangeEvent) {\r\n if (e.target.value === undefined) {\r\n onChange(null);\r\n return;\r\n }\r\n onChange(data?.find(d => d.intValue.toString() === e.target.value.toString()) || null);\r\n }\r\n\r\n const displayData: Array = [\r\n ...data.map(x => ({value: x.intValue ?? '', label: x.text ?? ''}))\r\n ];\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nMultiNameDropDown.defaultProps = {\r\n onChange: () => {\r\n },\r\n disabled: false,\r\n dark: false\r\n};\r\n\r\nMultiNameDropDown.propTypes = {\r\n value: PropTypes.number,\r\n onChange: PropTypes.func.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n selectId: PropTypes.string\r\n};\r\n\r\nexport default React.memo(MultiNameDropDown);\r\n","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\n\r\nexport class OhContainer extends TrackableEntity {\r\n id: number = 0;\r\n hblId: number = 0;\r\n mCntId: number = 0;\r\n pkgs: number = 0;\r\n cbm: number = 0;\r\n cft: number = 0;\r\n kgs: number = 0;\r\n lbs: number = 0;\r\n amsLinkUserID: string = '';\r\n amsLinkId: number = 0;\r\n amsLinkDate: string | null = null;\r\n pimsLinkUserID: string = '';\r\n pimsLinkId: number = 0;\r\n pimsLinkDate: string | null = null;\r\n containerNo: string = '';\r\n conType: string = '';\r\n sealNo: string = '';\r\n mPkgs: number = 0;\r\n mUnit: string = '';\r\n agentShow: boolean = false;\r\n oihBlId: number = 0;\r\n oimCntID: number = 0;\r\n // UI\r\n select: boolean = false;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('id', 'containerNo', 'conType', 'sealNo', 'mPkgs', 'mUnit', 'agentShow', 'oihBlId', 'oimCntID');\r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n return OhContainer.dicFieldMappings;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_Id', table: 'T_OOHCONTAINER' }),\r\n 'mCntId': new DBMappingInfo({ field: 'F_OOMCNTID', table: 'T_OOHCONTAINER' }),\r\n 'pkgs': new DBMappingInfo({ field: 'F_PKGS', table: 'T_OOHCONTAINER' }),\r\n 'hblId': new DBMappingInfo({ field: 'F_OOHBLID', table: 'T_OOHCONTAINER' }),\r\n };\r\n\r\n static dicFieldMappings1:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_Id', table: 'T_OIHCONTAINER' }),\r\n 'mCntId': new DBMappingInfo({ field: 'F_OIMCNTID', table: 'T_OIHCONTAINER' }),\r\n 'pkgs': new DBMappingInfo({ field: 'F_PKGS', table: 'T_OIHCONTAINER' }),\r\n 'hblId': new DBMappingInfo({ field: 'F_OIHBLID', table: 'T_OIHCONTAINER' }),\r\n };\r\n \r\n}\r\n","import PropTypes from 'prop-types';\r\nimport React, {useContext} from 'react';\r\nimport {FloatRenderer, TextAlignLeftRenderer} from \"../SmartTableRenderers\";\r\nimport {SQLIndex} from \"../../fms.core/constants\";\r\nimport ApplicationContext from \"../../ApplicationContext\";\r\nimport LookupField from \"../../ui/lookup/LookupField\";\r\nimport {CompanyLookupProps} from \"./CompanyLookupField\";\r\nimport {LookupCompany} from \"../../fms.data/lookup\";\r\nimport CheckBox from \"../../ui/CheckBox\";\r\n\r\ninterface CompanyListNotAgentLookupLookupProps extends Omit, 'onSelect'> {\r\n onSelect: (x: LookupCompany|LookupCompany[]) => void,\r\n fetchAddress: boolean,\r\n isMultiple: boolean,\r\n initialValue?: string|null|undefined,\r\n multiSelectValues?: LookupCompany[]\r\n}\r\n\r\nconst CompanyListNotAgentLookupField = ({\r\n initialValue = '',\r\n onSelect = () => {\r\n },\r\n placeholder = undefined,\r\n onTextChange = () => {\r\n },\r\n disabled = false,\r\n lookupId = undefined,\r\n onTabNext = undefined,\r\n onTabPrevious = undefined,\r\n companyItems = undefined,\r\n onFocus = () => {\r\n },\r\n onBlur = () => {\r\n },\r\n focusableWhenDisabled = false,\r\n fetchAddress = false,\r\n isMultiple = false,\r\n multiSelectValues = [],\r\n ...others\r\n }: CompanyListNotAgentLookupLookupProps) => {\r\n\r\n const changeSelected = (checked: boolean, selected: LookupCompany) => {\r\n if (checked) {\r\n onSelect([...multiSelectValues, selected])\r\n } else {\r\n onSelect([...multiSelectValues.filter(item => item.id !== selected.id)])\r\n }\r\n }\r\n\r\n const additionalColumns = [];\r\n if (isMultiple) {\r\n additionalColumns.push({\r\n Header: '',\r\n accessor: 'select',\r\n resizable: true,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 20,\r\n Cell: ({row}: any) => {\r\n return
    \r\n item.id === row.original.id)}\r\n onChange={(checked) => changeSelected(checked, row.original)}/>\r\n
    \r\n }\r\n })\r\n }\r\n\r\n const columns = [\r\n ...additionalColumns,\r\n {\r\n Header: 'Company Name',\r\n accessor: 'shortName',\r\n resizable: true,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: isMultiple ? 210 : 230,\r\n Cell: TextAlignLeftRenderer\r\n },\r\n {\r\n Header: 'Contact',\r\n accessor: 'contact',\r\n resizable: true,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 150,\r\n Cell: TextAlignLeftRenderer\r\n },\r\n {\r\n Header: 'TEL',\r\n accessor: 'tel',\r\n resizable: true,\r\n sortable: false,\r\n canBeHidden: false,\r\n visible: true,\r\n width: 120,\r\n Cell: TextAlignLeftRenderer\r\n },\r\n ]\r\n\r\n const appContext = useContext(ApplicationContext);\r\n\r\n async function queryCompanies(queryString: string | null) {\r\n const apiResult = await appContext.api.getLookupItems(SQLIndex.CompanyListNotAgnt, queryString || '');\r\n // return apiResult?.data?.entities || [];\r\n return apiResult?.entities || [];\r\n }\r\n\r\n async function _onSelect(x: LookupCompany) {\r\n if(!isMultiple) {\r\n if (fetchAddress) {\r\n const apiResult = await appContext.api.getAddressFromCompanyFile(x.id, false, true, true, true, true, false, false);\r\n onSelect({...x, addr: apiResult})\r\n } else {\r\n onSelect(x)\r\n }\r\n }\r\n }\r\n\r\n function onCancel() {\r\n }\r\n\r\n function filter(data: Array, filterText: string) {\r\n return data.findIndex(x => x.shortName && x.shortName.toLowerCase().startsWith(filterText.toLowerCase()));\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nCompanyListNotAgentLookupField.defaultProps = {\r\n onSelect: () => {\r\n },\r\n onTextChange: () => {\r\n },\r\n filterName: 'shortName',\r\n disabled: false,\r\n focusableWhenDisabled: false,\r\n fetchAddress: false,\r\n isMultiple: false,\r\n};\r\n\r\nCompanyListNotAgentLookupField.propTypes = {\r\n initialValue: PropTypes.string,\r\n onSelect: PropTypes.func.isRequired,\r\n onTextChange: PropTypes.func.isRequired,\r\n placeholder: PropTypes.string,\r\n filterName: PropTypes.string.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n lookupId: PropTypes.string,\r\n onTabNext: PropTypes.func,\r\n onTabPrevious: PropTypes.func,\r\n companyItems: PropTypes.array,\r\n onBlur: PropTypes.func,\r\n onFocus: PropTypes.func,\r\n focusableWhenDisabled: PropTypes.bool.isRequired,\r\n fetchAddress: PropTypes.bool,\r\n isMultiple: PropTypes.bool\r\n};\r\n\r\n\r\nexport default React.memo(CompanyListNotAgentLookupField);","import { SQLField, SQLInfo, SQLType } from \"../../framework.core/data/SQLInfo\";\r\n\r\nexport function saveAcctHistory(id:number, type:string, actionType:number):SQLInfo {\r\n return new SQLInfo({\r\n tableName: SQLInfo.SaveAcctHistory,\r\n type: SQLType.Execute,\r\n whereFields: [\r\n new SQLField({ fieldName: '', propertyName: 'id', value: id}),\r\n new SQLField({ fieldName: '', propertyName: 'type', value: type}),\r\n new SQLField({ fieldName: '', propertyName: 'actionType', value: actionType})\r\n ]\r\n });\r\n}","import PropTypes from 'prop-types';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\n\r\nimport Select, { SelectItem } from '../ui/Select';\r\nimport ApplicationContext from '../ApplicationContext';\r\nimport { Country } from '../ifmsTypes';\r\nimport { ComboParamsBase, FmsComboType } from '../fms.core/constants';\r\n\r\nfunction CountryIsoCodeDropDown({\r\n value,\r\n onChange = () => { },\r\n disabled = false,\r\n items = [],\r\n selectId = undefined,\r\n maxLength = undefined,\r\n notFocusNextEleWhenSelectItem = false,\r\n name= undefined,\r\n}: {\r\n value: Country|null,\r\n onChange?: (x:Country|null) => void,\r\n disabled?: boolean,\r\n items?: Array,\r\n selectId?: string|undefined,\r\n maxLength?: number|undefined,\r\n notFocusNextEleWhenSelectItem?: boolean,\r\n name?: string|undefined,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const [data, setData] = useState>([]);\r\n\r\n async function fetchData(api:any) {\r\n //const apiResult = await api.getCodesCountries({orderBy: 'name', orederByAscending: true});\r\n //setData(apiResult ? apiResult.data : []);\r\n var base = new ComboParamsBase();\r\n base.comboType = FmsComboType.IsoCountry;\r\n const data = await api.loadCodeData([base]);\r\n if (data && data.length > 0) {\r\n setData(data[0].items);\r\n }\r\n }\r\n\r\n function handleChange(e:React.ChangeEvent) {\r\n if (!e.target.value) {\r\n onChange(null);\r\n return;\r\n }\r\n\r\n const element = data.find(x => x.isoCode === e.target.value);\r\n onChange(element ?? null);\r\n }\r\n\r\n useEffect(() => {\r\n if (items && items.length) {\r\n setData(items);\r\n } else {\r\n fetchData(appContext.api);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n const displayData:Array = [\r\n {value: '', label: '', activeLabel: '' },\r\n ...data.map(x => ({ value: x.isoCode ?? '', label: `${x.isoCode} - ${x.name}`, activeLabel: x.isoCode ?? undefined }))\r\n ];\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nCountryIsoCodeDropDown.defaultProps = {\r\n onChange: () => {},\r\n disabled: false,\r\n dark: false,\r\n};\r\n\r\nCountryIsoCodeDropDown.propTypes = {\r\n value: PropTypes.object,\r\n onChange: PropTypes.func.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n items: PropTypes.array,\r\n selectId: PropTypes.string,\r\n maxLength: PropTypes.number,\r\n};\r\n\r\nexport default React.memo(CountryIsoCodeDropDown);\r\n","import _ from 'lodash';\r\nimport { HblPoNo } from '../../../../fms.core/HblPoNo';\r\nimport { OhContainer } from '../../../../fms.core/OhContainer';\r\nimport { OiHbl } from '../../../../fms.core/OiHbl';\r\nimport { OiMbl } from '../../../../fms.core/OiMbl';\r\nimport { formatAmount } from '../../../../util';\r\n\r\nexport function mblToHblModel(mbl:OiMbl) {\r\n if (!mbl) {\r\n return {};\r\n } else {\r\n return {\r\n mbl,\r\n moveType: mbl.moveType,\r\n agentRefNo: mbl.agentRefNo,\r\n shipmentType: mbl.shipmentType,\r\n finalDestination: mbl.finalDest,\r\n feta: mbl.fEta,\r\n classOfEntry: mbl.itClass,\r\n entryDate: mbl.itDate,\r\n entryPlace: mbl.itPlace,\r\n entryNo: mbl.itNo,\r\n containerInfoLineItems: mbl.oimContainerList\r\n ? mbl.oimContainerList.map(l => ({\r\n id: l.id,\r\n containerNo: l.containerNo,\r\n type: l.conType,\r\n unit: l.pUnit,\r\n pkgs: l.pkgs,\r\n agentShow: false,\r\n }))\r\n : [],\r\n }\r\n }\r\n}\r\n\r\nexport function mergeMblToHblModel(mbl:OiMbl, hbl:OiHbl) {\r\n if (!mbl) {\r\n return;\r\n }\r\n\r\n let containerIndexesToRemove = [];\r\n let mblCi = mbl.oimContainerList ? mbl.oimContainerList : [];\r\n\r\n if (hbl.container) {\r\n // First, delete those line items for which container no longer exists in MBL\r\n for (let i = hbl.container.length - 1; i >= 0; --i) {\r\n if (!mblCi.some(x => x.id === hbl.container[i].id)) {\r\n containerIndexesToRemove.push(i);\r\n }\r\n }\r\n\r\n containerIndexesToRemove.forEach(i => hbl.container.splice(i, 1));\r\n\r\n // For remaining items map latest data from MBL\r\n for (let i = 0; i < hbl.container.length; ++i) {\r\n const match = mblCi.find(x => x.id === hbl.container[i].id);\r\n if (!match) {\r\n continue;\r\n }\r\n\r\n hbl.container[i].containerNo = match.containerNo;\r\n hbl.container[i].conType = match.conType;\r\n hbl.container[i].mUnit = match.pUnit;\r\n }\r\n\r\n // As a last step, check for new MBL items, not yet in HBL and add them\r\n for (let i = 0; i < mblCi.length; ++i) {\r\n if (!hbl.container.some(x => x.id === mblCi[i].id)) {\r\n hbl.container.push(new OhContainer({ \r\n mCntId: mblCi[i].id,\r\n containerNo: mblCi[i].containerNo,\r\n conType: mblCi[i].conType,\r\n mUnit: mblCi[i].pUnit,\r\n mPkgs: mblCi[i].pkgs,\r\n select: false,\r\n }));\r\n }\r\n\r\n }\r\n }\r\n\r\n // Now remove line items of po info containers that no longer exist in MBL\r\n if (hbl.other) {\r\n let poIndexesToRemove = []\r\n for (let i = hbl.other.length - 1; i>= 0; --i) {\r\n if (!mblCi.some(x => x.id.toString() === hbl.other[i].containerNo)) {\r\n poIndexesToRemove.push(i);\r\n }\r\n }\r\n\r\n poIndexesToRemove.forEach(i => hbl.other.splice(i, 1));\r\n }\r\n\r\n hbl.oimblId = mbl.id;\r\n hbl.agentRefNo = mbl?.agentRefNo ?? '';\r\n}\r\n\r\nexport interface PoCheckResultCoItem {\r\n mCntId: number,\r\n containerNo: string,\r\n valid: boolean,\r\n requiredAmount: number,\r\n notAppliedAmount: number,\r\n poElements: number,\r\n};\r\nexport interface PoCheckResult {\r\n valid: boolean,\r\n coItems: Array,\r\n poItems: Array,\r\n};\r\n\r\nexport function checkPoInfoLineItems(containerInfoLineItems:Array, poInfoLineItems:Array):PoCheckResult {\r\n const co = containerInfoLineItems.filter(x => x.agentShow) || [];\r\n\r\n const result:PoCheckResult = {\r\n valid: true,\r\n coItems: co.map(x => ({\r\n mCntId: x.mCntId,\r\n containerNo: x.containerNo,\r\n valid: true,\r\n requiredAmount: x.pkgs || 0,\r\n notAppliedAmount: x.pkgs || 0,\r\n poElements: 0,\r\n })),\r\n poItems: poInfoLineItems,\r\n };\r\n\r\n for (let i = 0; i < result.poItems.length; ++i) {\r\n const po = result.poItems[i];\r\n if (!po.cntrLinkId) {\r\n // Container not selected for this line item\r\n continue;\r\n }\r\n const coIndex = result.coItems.findIndex(x => x.mCntId === po.cntrLinkId);\r\n if (coIndex < 0) {\r\n // Should never happen\r\n continue;\r\n }\r\n\r\n result.coItems[coIndex].notAppliedAmount = result.coItems[coIndex].notAppliedAmount - (po.shipQty ?? 0);\r\n result.coItems[coIndex].poElements = result.coItems[coIndex].poElements + 1;\r\n }\r\n\r\n for (let i = 0; i < result.coItems.length; ++i) {\r\n // If total sum of amounts entered is above total pkgs - it is not valid\r\n const totalsQty = poInfoLineItems.reduce((sum, it) => sum + (it.containerNo === result.coItems[i].containerNo ? it.shipQty : 0), 0);\r\n if ((result.coItems[i].requiredAmount !== totalsQty) && result.coItems[i].poElements > 0) {\r\n result.coItems[i].valid = false;\r\n result.valid = false;\r\n }\r\n }\r\n\r\n if (!result.valid) {\r\n // If not valid, for each container item find the first in po, apply whole amount to it and reset containers for others\r\n for (let i = 0; i < result.coItems.length; ++i) {\r\n if (result.coItems[i].valid) {\r\n continue;\r\n }\r\n\r\n if (result.coItems[i].notAppliedAmount > 0) {\r\n // Qty is missing. Apply it to the last matching item\r\n for (let j = result.poItems.length - 1; j >= 0; --j) {\r\n if (result.poItems[j].cntrLinkId === result.coItems[i].mCntId) {\r\n let curQty = result.poItems[j].shipQty || 0;\r\n result.poItems[j].shipQty = curQty + result.coItems[i].notAppliedAmount;\r\n break;\r\n }\r\n }\r\n } else {\r\n // There is extra qty applied. Start reducing from last item appropriately\r\n\r\n for (let j = result.poItems.length - 1; j >= 0; --j) {\r\n if (result.coItems[i].notAppliedAmount === 0) {\r\n break;\r\n }\r\n\r\n if (result.poItems[j].cntrLinkId === result.coItems[i].mCntId) {\r\n let curQty = result.poItems[j].shipQty || 0;\r\n const delta = Math.min(curQty, -result.coItems[i].notAppliedAmount);\r\n result.poItems[j].shipQty = curQty - delta;\r\n result.coItems[i].notAppliedAmount = result.coItems[i].notAppliedAmount + delta;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function createDefaultPonoLineOih(h: OiHbl) {\r\n const po = new HblPoNo({\r\n hblId: h.id,\r\n poNo: 'N/A',\r\n skuNo: '',\r\n htsCode: '',\r\n coo: '',\r\n description: !_.isEmpty(h.commodity) && (h.commodity.length ?? 0) > 50 ? h.commodity.substring(0, 50) : h.commodity ?? '',\r\n shipQty: h.pkgs,\r\n shipUnit: h.punit,\r\n uPrice: 0,\r\n kgs: 0,\r\n lbs: 0,\r\n cbm: 0,\r\n cft: 0,\r\n cntrLinkId: 0,\r\n pimsPoHdLinkId: 0,\r\n pimsPoDetLinkId: 0,\r\n });\r\n po.trackable = true;\r\n h.other.push(po);\r\n}\r\n\r\n\r\nexport function calculateBodyContent(current:Partial, change:Partial, isIntnl:boolean): Partial {\r\n // const c = _.has(change, 'container') ? change.container : current.container;\r\n const pkg = _.has(change, 'pkgs') ? change.pkgs : current.pkgs;\r\n const packagesUnit = _.has(change, 'punit') ? change.punit : current.punit;\r\n const cbm = _.has(change, 'cbm') ? change.cbm : current.cbm;\r\n const cft = _.has(change, 'cft') ? change.cft : current.cft;\r\n const kgs = _.has(change, 'kgs') ? change.kgs : current.kgs;\r\n const lbs = _.has(change, 'lbs') ? change.lbs : current.lbs;\r\n\r\n // const noOfPackages = c?.map(x => ({ pkgs: x.pkgs, agentShow: x.agentShow }))\r\n // .filter(x => !!x && !!x.pkgs && x.agentShow).reduce((acc, x) => acc + (x.pkgs ?? 0), 0);\r\n const numberOfPackages = `${formatAmount(pkg??0, 0)} ${packagesUnit}`;\r\n let tempMarkPkg='';\r\n if(current.lclFcl === 'F'){\r\n tempMarkPkg = numberOfPackages + '\\r\\n' + current.containerSummary;\r\n }\r\n\r\n const grossWeight = `${formatAmount(kgs, 2)} KGS` + (isIntnl ? '' : `\\r\\n${formatAmount(lbs, 2)} LBS`);\r\n\r\n const measurment = `${formatAmount(cbm, 3)} CBM` + (isIntnl ? '' : `\\r\\n${formatAmount(cft, 0)} CFT`);\r\n\r\n return {\r\n markPkg: _.isEmpty(tempMarkPkg) ? numberOfPackages: tempMarkPkg,\r\n markGross: grossWeight,\r\n markMeasure: measurment,\r\n };\r\n}\r\n\r\nexport function formatHblType(h:string|null) {\r\n if (h === 'S') {\r\n return 'Standard';\r\n\r\n } else if (h === 'C') {\r\n return 'Co-Load';\r\n }\r\n\r\n return 'None';\r\n}","import PropTypes from 'prop-types';\r\nimport React, { useRef } from 'react';\r\nimport IfmsButton from './IfmsButton';\r\n\r\nfunction GreenButtonInputExcel({\r\n children = undefined,\r\n ...other\r\n}: {\r\n children: React.ReactNode | string,\r\n [x: string]: any,\r\n}) {\r\n const inputRef = useRef(null);\r\n const { onClick, handleFile, isText, isBlue, isPrimary, \r\n //...remainingProps\r\n } = other;\r\n\r\n const baseClass = !other.notsetbackcolorwhenfocus ? 'ifms-primary-button' : 'ifms-primary-button b';\r\n async function handleClick() {\r\n if(onClick){\r\n if(!await onClick()) return;\r\n }\r\n if (inputRef && inputRef.current)\r\n inputRef.current.click();\r\n }\r\n function handleChangeUpload(e: any) {\r\n handleFile(e);\r\n }\r\n\r\n return (\r\n <>\r\n { handleClick() }}>\r\n {children}\r\n \r\n handleChangeUpload(e)} />\r\n \r\n );\r\n}\r\n\r\nGreenButtonInputExcel.defaultProps = {\r\n};\r\n\r\nGreenButtonInputExcel.propTypes = {\r\n size: PropTypes.oneOf(['regular', 'small', 'large']),\r\n};\r\n\r\nexport default React.memo(GreenButtonInputExcel);\r\n\r\n","import PropTypes from 'prop-types';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\n\r\nimport Select from '../ui/Select';\r\nimport ApplicationContext from '../ApplicationContext';\r\nimport { ComboParamsBase, FmsComboType } from '../fms.core/constants';\r\nimport { JobNames } from '../framework.core/JobNames';\r\nimport _ from 'lodash';\r\n\r\nfunction ContainerTypeDropDown({\r\n value,\r\n onChange = () => {},\r\n disabled = false,\r\n selectId = undefined,\r\n isShort = false,\r\n onEnterSameValue,\r\n jobName = '',\r\n maxLength = undefined,\r\n name = undefined,\r\n} : {\r\n value: string|null,\r\n onChange?: (x:string|null) => void,\r\n disabled?: boolean,\r\n selectId: string|undefined,\r\n isShort?: boolean,\r\n onEnterSameValue?: VoidFunction,\r\n jobName:string,\r\n maxLength:number|undefined,\r\n name?: string|undefined,\r\n}\r\n) {\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const [data, setData] = useState>([]);\r\n\r\n async function fetchData(api:any) {\r\n //const data = await api.getCodesOceanContainerTypes();\r\n //setData(data);\r\n var base = new ComboParamsBase();\r\n base.comboType = FmsComboType.CntrType;\r\n const data = await api.loadCodeData([base]);\r\n if (data && data.length > 0) {\r\n setData(data[0].items);\r\n }\r\n }\r\n\r\n function getWidth(jobName : string) {\r\n let tempWidth = '100px';\r\n switch(jobName){\r\n case JobNames.OIMbl:\r\n tempWidth = '90px'; \r\n break;\r\n case JobNames.OEMbl:\r\n case JobNames.FlexiTank:\r\n tempWidth = '80px'; \r\n break;\r\n case JobNames.OtherOP:\r\n tempWidth = '50px'; \r\n break;\r\n default:\r\n tempWidth = '100px'; \r\n break;\r\n }\r\n return tempWidth;\r\n }\r\n\r\n\r\n function handleChange(e:React.ChangeEvent) {\r\n onChange(e.target.value || null);\r\n }\r\n\r\n useEffect(() => {\r\n fetchData(appContext.api);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n const displayData = isShort ? [\r\n {value: '', label: '', activeLabel: '' },\r\n ...data.map(x => ({ value: x.text, label: !_.isEmpty(x.value) ? `${x.text} ${x.value}` : x.text, activeLabel: x.text }))\r\n ] : [\r\n {value: '', label: '', activeLabel: '' },\r\n ...data.map(x => ({ value: x.text, label: x.text, activeLabel: x.text }))\r\n ];\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nContainerTypeDropDown.defaultProps = {\r\n onChange: () => {},\r\n disabled: false,\r\n dark: false,\r\n};\r\n\r\nContainerTypeDropDown.propTypes = {\r\n selectId: PropTypes.string,\r\n value: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n onEnterSameValue: PropTypes.func,\r\n disabled: PropTypes.bool.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport default React.memo(ContainerTypeDropDown);\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeSCACListItem extends SearchModelBase {\r\n id: number = 0;\r\n carrierName: string = '';\r\n code: string = '';\r\n sName: string = '';\r\n senderId: string = '';\r\n receiverId: string = '';\r\n customerCode: string = '';\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Carrier', width: 600, dataIndex: 'carrierName'}),\r\n XCol.Create({ col: 1, text: 'Code', width: 80, dataIndex: 'code'}),\r\n XCol.Create({ col: 2, text: 'Company', width: 300, dataIndex: 'sName'}),\r\n XCol.Create({ col: 3, text: 'Sender ID', width: 150, dataIndex: 'senderId'}),\r\n XCol.Create({ col: 4, text: 'Receiver ID', width: 150, dataIndex: 'receiverId'}),\r\n XCol.Create({ col: 5, text: 'Customer Code', width: 150, dataIndex: 'customerCode'})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeSCACListItem.prototype.carrierName, orderByAscending: true };\r\n\r\n public static formatData(data: CodeSCACListItem[]) {\r\n return data.map((d: CodeSCACListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n}\r\n","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\n\r\nexport class CodeScac extends TrackableEntity {\r\n carrierName: string = '';\r\n code: string = '';\r\n senderId: string = '';\r\n receiverId: string = '';\r\n customerCode: string = '';\r\n companyId: number = 0;\r\n companyName: string = '';\r\n oiAcctCom: number = 0;\r\n oiAcctComName: string = '';\r\n ooAcctCom: number = 0;\r\n ooAcctComName: string = '';\r\n id: number = 0;\r\n\r\n\r\n // for cloud\r\n indicator?: number = 0;\r\n // Current operation\r\n edit: boolean = false;\r\n view: boolean= false;\r\n editIndex?: number = 0;\r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('id');\r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n return CodeScac.dicFieldMappings;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'carrierName': new DBMappingInfo({ field: 'F_CARRIERNAME', table: 'T_CODESCAC' }),\r\n 'code': new DBMappingInfo({ field: 'F_CODE', table: 'T_CODESCAC' }),\r\n 'id': new DBMappingInfo({ field: 'F_ID', table: 'T_CODESCAC' }),\r\n 'companyId': new DBMappingInfo({ field: 'F_COMPANYID', table: 'T_CODESCAC' }),\r\n 'senderId': new DBMappingInfo({ field: 'F_C1', table: 'T_AOTHERINFO', tbName: 'T_CODESCAC', tbId: '@ScacId', type: 0 }),\r\n 'receiverId': new DBMappingInfo({ field: 'F_C2', table: 'T_AOTHERINFO', tbName: 'T_CODESCAC', tbId: '@ScacId', type: 0 }),\r\n 'customerCode': new DBMappingInfo({ field: 'F_C3', table: 'T_AOTHERINFO', tbName: 'T_CODESCAC', tbId: '@ScacId', type: 0 }),\r\n 'oiAcctCom': new DBMappingInfo({ field: 'F_N1', table: 'T_AOTHERINFO', tbName: 'T_CODESCAC', tbId: '@ScacId', type: 0 }),\r\n 'ooAcctCom': new DBMappingInfo({ field: 'F_N2', table: 'T_AOTHERINFO', tbName: 'T_CODESCAC', tbId: '@ScacId', type: 0 }),\r\n\r\n };\r\n}\r\n","import { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nimport PrimaryButton from '../../../../ui/PrimaryButton';\r\nimport IfmsModal from '../../../../ui/IfmsModal';\r\nimport useTableNavigation from '../../../../ui/tables/useTableNavigation';\r\n\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\nimport useFastStorage, { useTypedFastStorage } from '../../../../hooks/useFastStorage';\r\n\r\nimport { ApplicableTableSettings, codesAesCarrierList } from '../../../../tableSettings';\r\n\r\nimport {\r\n TextAlignLeftRenderer,\r\n TextRenderer,\r\n} from '../../../../uiControls/SmartTableRenderers';\r\n\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\nimport SecondaryButton from '../../../../ui/SecondaryButton';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport { Search, initialSearch, isFilterObjectEmpty } from '../../../../filtering';\r\nimport InputControlRow from '../../../../ui/layout/InputControlRow';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport LeftRightSplit from '../../../../ui/LeftRightSplit';\r\nimport CompanyLookupField from '../../../../uiControls/lookup/CompanyLookupField';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { CodeSCACListItem } from '../../../../fms.data/models/CodeSCACListItem';\r\nimport { CodeScac } from '../../../../fms.core/CodeScac';\r\nimport useDirtyCheck from '../../../../hooks/useDirtyCheck2';\r\nimport { ApiResult, InsertResultsWithData } from '../../../../framework.core/data/ApiResult';\r\nimport { TrackableEntity } from '../../../../fms.core/data/ChangeTrackable';\r\nimport { checkPropDirty, getSQLInfoList } from '../../../../fms.core/data/TrackingModule';\r\nimport { findSecurityTask, stringsEqualIgnoreCase } from '../../../../util';\r\nimport { CheckLookup } from '../../../../fms.data/lookup/CheckLookup';\r\nimport { TextValue } from '../../../../framework.core/data/TextValue';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport useGlobalYesNoDialog from '../../../../hooks/useGlobalYesNoDialog';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\nimport { CarrierInfo, sortingListData } from '../../ReferenceFiles';\r\nimport _ from 'lodash';\r\nimport CodesFactory from '../CodesFactory';\r\nimport useFilterBar from '../../../../hooks/useFilterBar';\r\nimport { ListOrderBy } from \"../../../common/AbstractListView\";\r\nimport postal from 'postal';\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport CompanyListExLookupField from '../../../../uiControls/lookup/CompanyListExLookupField';\r\nimport { LookupCompany } from '../../../../fms.data/lookup';\r\nimport constants from '../../../../constants';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport { Portal } from 'react-portal';\r\nimport GreenButton from '../../../../ui/GreenButton';\r\n\r\nfunction RowSpacer() {\r\n return (\r\n
     
    \r\n );\r\n}\r\n\r\nexport function CarrierDetails({\r\n readonly,\r\n carrier,\r\n onChange\r\n}: {\r\n readonly: boolean,\r\n carrier: CodeScac,\r\n onChange: (change: Partial) => void,\r\n}) {\r\n return (\r\n
    \r\n
    \r\n \r\n\r\n \r\n onChange({carrierName: e.target.value})} />\r\n \r\n\r\n Code *}>\r\n \r\n onChange({code: e.target.value})} />\r\n
    \r\n }\r\n right={\r\n
    \r\n }\r\n />\r\n \r\n\r\n \r\n onChange({ companyId:0, companyName:shortName})}\r\n onSelect={company => onChange({ companyId: company.id, companyName: company.shortName ?? '' })}\r\n />\r\n \r\n\r\n \r\n onChange({ oiAcctCom:0, oiAcctComName:shortName })}\r\n onSelect={freightVendorOi => { const company = freightVendorOi as LookupCompany; onChange({ oiAcctCom: company.id, oiAcctComName: company.shortName ?? '' })}}\r\n disabled={readonly}\r\n />\r\n \r\n\r\n \r\n onChange({ ooAcctCom:0, ooAcctComName:shortName })}\r\n onSelect={freightVendorOe => { const company = freightVendorOe as LookupCompany; onChange({ ooAcctCom: company.id, ooAcctComName:company.shortName ?? '' })}}\r\n disabled={readonly}\r\n />\r\n \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n onChange({senderId: e.target.value})} />\r\n \r\n
    \r\n }\r\n right={\r\n
    \r\n \r\n onChange({receiverId: e.target.value})} />\r\n \r\n
    \r\n }\r\n />\r\n\r\n \r\n onChange({customerCode: e.target.value})}\r\n onTabNext={() => {\r\n document.getElementById('code-carrier')?.focus();\r\n return true;\r\n }} />\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nfunction formatElement(data:any, index:number) {\r\n return {\r\n ...data,\r\n companyName: data.company?.shortName ?? '',\r\n indicator: index + 1\r\n };\r\n}\r\n\r\nfunction formatData(data: Array) {\r\n return data.map((d, i) => formatElement(d, i));\r\n}\r\n\r\nfunction Carriers({\r\n componentIndex,\r\n carrierBuyRate,\r\n setCarrierBuyRate,\r\n setHideTab\r\n}: {\r\n componentIndex: number,\r\n carrierBuyRate: CarrierInfo,\r\n setCarrierBuyRate: (x: CarrierInfo) => void,\r\n setHideTab: (x: boolean) => void\r\n}) {\r\n useFunction({invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n }});\r\n useFunctionKeys({onEsc: cancelOperation});\r\n \r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const {selectTableRow, tableNavigationCleanup } = useTableNavigation('codes-carrier-list', onRowSelect, onRowDoubleSelect, ['carrierName'], false, false, false);\r\n\r\n const tableRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n const [, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, dataRef] = useFastStorage(`ifms-referenceFiles-carrier-list`, []);\r\n //const [viewId, setViewId] = useTypedFastStorage(`ifms-referenceFiles-carrier-view-id`, -1);\r\n const [carrier, _setCarrier, removeCarrierFromStorage] = useTypedFastStorage(`ifms-referenceFiles-carrier-editable`, null);\r\n const [orderBy, setOrderBy] = useFastStorage(`ifms-referenceFiles-carrier-orderby`, {\r\n orderBy: 'carrierName',\r\n orderByAscending: true,\r\n });\r\n //\r\n const {setCleanState, dirtyCleanup} = useDirtyCheck(`ifms-referenceFiles-carrier-editable`, ['edit', 'view']);\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeScac);\r\n const [selectedRow, setSelectedRow] = useState(-1);\r\n const { FilterButton, search } = useFilterBar(\r\n codesAesCarrierList,\r\n undefined,\r\n getDefaultOrderBy,\r\n String(componentIndex)\r\n );\r\n\r\n function getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'carrierName',\r\n orderByAscending: true,\r\n };\r\n }\r\n\r\n function setCarrier(c:Partial, skipDirty:boolean = false) {\r\n if (!skipDirty) {\r\n setHasChanges(true);\r\n }\r\n _setCarrier(c);\r\n }\r\n\r\n function setData(d:Array) {\r\n removeData();\r\n _setData(d);\r\n }\r\n\r\n async function fetchData(api:any, search:Search) {\r\n setLoading(true);\r\n\r\n const apiResult = await api.getListItems(JobNames.Scac,\r\n 'CodeSCACListItem',\r\n CodeSCACListItem.calculateSearchParameters(search),\r\n 1,\r\n search.pageSize);\r\n\r\n const fetchedTableData = formatData(apiResult && apiResult.entities ? apiResult.entities : []);\r\n sortingListData(CodeSCACListItem, fetchedTableData , setData, orderBy); \r\n setHasChanges(false);\r\n setLoading(false);\r\n }\r\n\r\n/*\r\n function checkViewIdOnInitialLoad() {\r\n if (!viewId || viewId <= 0) {\r\n return;\r\n }\r\n\r\n // x.id === viewId);\r\n\r\n // if (rowIndex >= 0) {\r\n // setCarrier({..._.cloneDeep(dataRef.current[rowIndex]), edit: true, view: true, editIndex: rowIndex}, true);\r\n // }\r\n // }\r\n //pt220818>\r\n\r\n setViewId(-1);\r\n }\r\n*/\r\n useEffect(() => {\r\n if (isFilterObjectEmpty(search) && search.version === 1) reload(false);\r\n \r\n return () => {\r\n removeData();\r\n tableNavigationCleanup();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n if (loading || (isFilterObjectEmpty(search) && search.version === 1)) {\r\n return;\r\n }\r\n fetchData(appContext.api, search);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [search]\r\n );\r\n\r\n useEffect(() => {\r\n if (dataRef.current?.length > 0 && !loading) {\r\n selectTableRow(0, true);\r\n onRowSelect(0);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [loading]\r\n );\r\n\r\n async function onRowSelect(rowIndex: number){\r\n setSelectedRow(!isNaN(rowIndex) ? rowIndex: -1);\r\n setHideTab(true);\r\n }\r\n\r\n async function onRowDoubleSelect(rowIndex:number) {\r\n if (!dataRef || !dataRef.current) {\r\n return;\r\n }\r\n\r\n //= 0 && rowIndex < dataRef.current.length && _.isEmpty(carrier)) {\r\n // setCarrier({..._.cloneDeep(dataRef.current[rowIndex]), edit: true, view: true, editIndex: rowIndex}, true);\r\n // }\r\n const apiResult:ApiResult = await appContext.api.getJobDetail(JobNames.Scac,\r\n {id: dataRef.current[rowIndex].id });\r\n if(!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

    );\r\n return;\r\n }\r\n\r\n const objScac = {...apiResult.result, edit: true, view: true, editIndex: rowIndex};\r\n setCleanState(objScac);\r\n const tEntity = new CodeScac(objScac);\r\n tEntity.trackable = true;\r\n setCarrier(tEntity, true);\r\n //pt220818>\r\n }\r\n\r\n async function setCarrierCodeDetail(isView: boolean){\r\n const apiResult:ApiResult = await appContext.api.getJobDetail(JobNames.Scac,\r\n {id: dataRef.current[selectedRow].id });\r\n if(!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

    );\r\n return;\r\n }\r\n\r\n const objScac = {...apiResult.result, edit: true, view: isView, editIndex: selectedRow};\r\n setCleanState(objScac);\r\n const tEntity = new CodeScac(objScac);\r\n tEntity.trackable = true;\r\n setCarrier(tEntity, true);\r\n }\r\n\r\n async function reload(clearAll:boolean = true) {\r\n const searchValue = clearAll ? initialSearch : search;\r\n await fetchData(appContext.api, searchValue);\r\n }\r\n\r\n function onHeaderClick(header:any) {\r\n if (carrier !== null) {\r\n return;\r\n }\r\n\r\n if (header && header.id !== 'indicator') {\r\n if (header.id === orderBy.orderBy) {\r\n setOrderBy({orderByAscending: !orderBy.orderByAscending});\r\n } else {\r\n setOrderBy({orderBy: header.id, orderByAscending: true});\r\n }\r\n }\r\n sortingListData(CodeSCACListItem, data, setData, orderBy);\r\n }\r\n\r\n function selectUserForNew() {\r\n\r\n const newCodeModel = new CodeScac(); \r\n setCarrier(newCodeModel, false);\r\n setCleanState(newCodeModel);\r\n \r\n setCarrier({\r\n edit : false,\r\n view: false});\r\n }\r\n\r\n async function selectUserForEdit(){\r\n //clearTableSelection();\r\n await setCarrierCodeDetail(false);\r\n }\r\n\r\n async function selectUserForView(){\r\n //clearTableSelection();\r\n await setCarrierCodeDetail(true);\r\n }\r\n \r\n async function selectUserForDelete(){\r\n const doConfirm = await showGlobalYesNoDialog(\r\n
    \r\n

    Confirm to Delete?

    \r\n
    \r\n , false, 0, true, 'warning');\r\n if(doConfirm){\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.Scac, { id:dataRef.current[selectedRow].id , pimsLinkId: 0 });\r\n if (apiResult && apiResult.success) {\r\n await reload(false);\r\n }else\r\n showGlobalOkDialog(

    {\"Cannot delete\"}

    );\r\n }else\r\n return;\r\n }\r\n\r\n async function selectUserForBuyingRate(){\r\n setCarrierBuyRate({tbId: dataRef.current[selectedRow].id, \r\n code: dataRef.current[selectedRow].code});\r\n setHideTab(false);\r\n\r\n return ;\r\n }\r\n\r\n function cancelOperation() {\r\n const filterNode = document.getElementById('ifms-list-screen-filter');\r\n const channel = postal.channel('ifms-filter');\r\n\r\n if (!filterNode) {\r\n setHasChanges(false);\r\n removeCarrierFromStorage();\r\n } else {\r\n channel.publish('ifms-filter.dismiss');\r\n }\r\n return true;\r\n }\r\n\r\n async function checkDataAsync(): Promise{\r\n if(carrier?.code?.length === 0){\r\n await showGlobalOkDialog(

    {\" * Empty Code\"}

    );\r\n return false;\r\n }\r\n else {\r\n if(!carrier?.view || !carrier?.edit || checkPropDirty(carrier as TrackableEntity, 'code')){\r\n if (await appContext.api.checkupDuplicateFieldValueIsDuplicate(\"T_CODESCAC\", \"F_Code\", carrier?.code, \"F_ID\", carrier?.id)) {\r\n await showGlobalOkDialog(

    Duplicated Value. Please type in another value.

    );\r\n return false;\r\n }\r\n }\r\n }\r\n \r\n const comLks: CheckLookup[] = [];\r\n\r\n comLks.push(new CheckLookup({\r\n labelName: \"Company\",\r\n textValue: new TextValue({Text: carrier?.companyName, IntValue: carrier?.companyId})\r\n }))\r\n comLks.push(new CheckLookup({\r\n labelName: \"Freight Vendor (Ocean Import)\",\r\n textValue: new TextValue({Text: carrier?.oiAcctComName , IntValue: carrier?.oiAcctCom})\r\n }))\r\n comLks.push(new CheckLookup({\r\n labelName: \"Freight Vendor (Ocean Export)\",\r\n textValue: new TextValue({Text: carrier?.ooAcctComName, IntValue: carrier?.ooAcctCom})\r\n }))\r\n\r\n const tempErrMsg = await appContext.api.checkCompanyLookupField(comLks);\r\n if (tempErrMsg) {\r\n await showGlobalOkDialog(tempErrMsg);\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n async function save() {\r\n if (!carrier) {\r\n return;\r\n }\r\n if (!await checkDataAsync()) return;\r\n \r\n const sqlInfoList = getSQLInfoList(carrier as TrackableEntity);\r\n // Replace @ScacId by ct.id\r\n const sqlInfo = sqlInfoList.find(x => stringsEqualIgnoreCase(x.tableName, 't_aotherinfo'));\r\n if(sqlInfo && carrier.id > 0) {\r\n const f = sqlInfo.whereFields.find(w => w.value === '@ScacId');\r\n if(f) f.value = carrier.id;\r\n }\r\n const apiResult:ApiResult = await appContext.api.saveJobDetail(\r\n JobNames.Scac,\r\n sqlInfoList\r\n );\r\n\r\n if(!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.SAVE_ERROR_MESSAGE}

    );\r\n return;\r\n }\r\n else {\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n\r\n if (apiResult.result){\r\n const insresult = apiResult.result.insertList[0].newId;\r\n if (insresult) {\r\n const newItem: any = {\r\n id: insresult,\r\n carrierName: carrier.carrierName,\r\n code: carrier.code,\r\n senderId: carrier.senderId,\r\n receiverId: carrier.receiverId,\r\n customerCode: carrier.customerCode,\r\n companyId: carrier.companyId,\r\n sName: carrier.companyName, \r\n oiAcctCom: carrier.oiAcctCom,\r\n oiAcctComName: carrier.oiAcctComName,\r\n ooAcctCom: carrier.ooAcctCom,\r\n ooAcctComName: carrier.ooAcctComName,\r\n };\r\n const newList = _.cloneDeep(data)\r\n newList.splice(0, 0, newItem);\r\n setData(formatData(newList));\r\n\r\n selectTableRow(0);\r\n }\r\n } else {\r\n const editItem = data.find((x: any) => x.id === carrier.id);\r\n editItem.carrierName = carrier.carrierName;\r\n editItem.code = carrier.code;\r\n editItem.senderId = carrier.senderId;\r\n editItem.receiverId = carrier.receiverId;\r\n editItem.customerCode = carrier.customerCode;\r\n editItem.companyId = carrier.companyId;\r\n editItem.sName = carrier.companyName; \r\n editItem.oiAcctCom = carrier.oiAcctCom;\r\n editItem.oiAcctComName = carrier.oiAcctComName;\r\n editItem.ooAcctCom = carrier.ooAcctCom;\r\n editItem.ooAcctComName = carrier.ooAcctComName;\r\n\r\n const insIndex = data.findIndex((x:any) => x.id === carrier.id);\r\n const newList = _.cloneDeep(data);\r\n newList.splice(insIndex, 1, editItem);\r\n setData(formatData(newList));\r\n\r\n selectTableRow(insIndex);\r\n }\r\n }\r\n \r\n cancelOperation();\r\n dirtyCleanup();\r\n }\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n customTableId: 'codes-carrier-list',\r\n ref: tableRef,\r\n selectable: true,\r\n tableName: 'codesCarrierList',\r\n ...codesAesCarrierList,\r\n height: '520px',\r\n data: (data ?? []).map((x: any, i:number) => ({ ...x, indicator: (i + 1).toString(), })),\r\n rowRenderers: [\r\n { accessor: 'indicator', Cell: TextRenderer },\r\n { accessor: 'carrierName', Cell: TextAlignLeftRenderer },\r\n { accessor: 'code', Cell: TextRenderer },\r\n { accessor: 'sName', Cell: TextAlignLeftRenderer },\r\n { accessor: 'senderId', Cell: TextAlignLeftRenderer },\r\n { accessor: 'receiverId', Cell: TextAlignLeftRenderer },\r\n { accessor: 'customerCode', Cell: TextAlignLeftRenderer },\r\n ],\r\n orderBy: [orderBy],\r\n onHeaderClick,\r\n };\r\n\r\n //const newEnabled = carrier === null;\r\n const canBeAdd = carrier === null && listSec?.grantAdd;\r\n const canBeEdit = !isNaN(selectedRow) && !(selectedRow < 0) && listSec?.grantEdit;\r\n\r\n return (\r\n
    \r\n {/* \r\n

    AES  Carrier

    \r\n
    \r\n setOrderBy({general1: generalText1 ? 'carrierName' : null, generalText1})} />\r\n
    \r\n
    */}\r\n\r\n\r\n {/*
    \r\n {\r\n await reload(generalText1 === null ? '' : generalText1);\r\n }}\r\n />\r\n
    */}\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n   \r\n
    \r\n {appContext.systemSettings?.isCanada ?\r\n ''\r\n :\r\n Buying Rate\r\n }\r\n   \r\n New  \r\n View  \r\n Edit  \r\n Delete \r\n { reload(false) }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n \r\n\r\n \r\n {!!carrier &&\r\n
    \r\n
    \r\n
    \r\n
    \r\n  \r\n {carrier.view && listSec?.grantEdit &&\r\n setCarrier({view: false}, true)}>Edit\r\n }\r\n {!carrier.view &&\r\n Save\r\n }\r\n  \r\n
    \r\n
    \r\n \r\n
      \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default Carriers;\r\n","import {TrackableEntity} from './data/ChangeTrackable';\r\nimport { IDictionary } from './data/TrackingModule';\r\nimport { DBMappingInfo } from '../framework.core/data/DBMappingInfo';\r\n\r\nexport class CodeAirLine extends TrackableEntity {\r\n id: number = 0;\r\n prefix: string = '';\r\n abbr2: string = '';\r\n abbr3: string = '';\r\n name: string = '';\r\n country: string = '';\r\n billTo: string = '';\r\n companyID: number = 0;\r\n accountNo: string = '';\r\n nextBLno: string = '';\r\n endBLno: string = '';\r\n\r\n aefscRate: number = 0;\r\n aesscRate: number = 0;\r\n aefscMin: number = 0;\r\n aesscMin: number = 0;\r\n tsaRate: number = 0;\r\n tsaMin: number = 0;\r\n fscgWt: boolean = false;\r\n sscgWt: boolean = false;\r\n tsagWt: boolean = false;\r\n\r\n u2Id: string | null = null;\r\n u2Date: string | null = null;\r\n \r\n\r\n // for cloud\r\n indicator?: number;\r\n // Current operation\r\n edit: boolean = false;\r\n view: boolean = false;\r\n editIndex?: number;\r\n \r\n //freightVendor: number = 0; --> companyID\r\n //freightVendorName: string = ''; --> billTo\r\n countryUnCode: string = '';\r\n \r\n\r\n constructor(init?:Partial) {\r\n super();\r\n this.key='id';\r\n Object.assign(this, init);\r\n this.noTrackProps.push('id');\r\n if(this.id === 0) this.id = this.GetNextId();\r\n }\r\n\r\n getDbMappings(arg?:any):IDictionary {\r\n return CodeAirLine.dicFieldMappings;\r\n }\r\n\r\n static dicFieldMappings:IDictionary = {\r\n 'id': new DBMappingInfo({ field: 'F_Id', table: 'T_CODEAIRLINE' }),\r\n 'prefix': new DBMappingInfo({ field: 'F_Prefix', table: 'T_CODEAIRLINE' }),\r\n 'abbr2': new DBMappingInfo({ field: 'F_Abbr', table: 'T_CODEAIRLINE' }),\r\n 'abbr3': new DBMappingInfo({ field: 'F_ABBR3', table: 'T_CODEAIRLINE' }),\r\n 'companyID': new DBMappingInfo({ field: 'F_CompanyID', table: 'T_CODEAIRLINE' }),\r\n 'accountNo': new DBMappingInfo({ field: 'F_AccountNo', table: 'T_CODEAIRLINE' }),\r\n 'nextBLno': new DBMappingInfo({ field: 'F_NextBLno', table: 'T_CODEAIRLINE' }),\r\n 'endBLno': new DBMappingInfo({ field: 'F_EndBLno', table: 'T_CODEAIRLINE' }),\r\n 'aefscRate': new DBMappingInfo({ field: 'F_AEFSCRate', table: 'T_CODEAIRLINE' }),\r\n 'aefscMin': new DBMappingInfo({ field: 'F_AEFSCMin', table: 'T_CODEAIRLINE' }),\r\n 'aesscRate': new DBMappingInfo({ field: 'F_AESSCRate', table: 'T_CODEAIRLINE' }),\r\n 'aesscMin': new DBMappingInfo({ field: 'F_AESSCMIN', table: 'T_CODEAIRLINE' }),\r\n 'country': new DBMappingInfo({ field: 'F_Country', table: 'T_CODEAIRLINE' }),\r\n 'name': new DBMappingInfo({ field: 'F_Name', table: 'T_CODEAIRLINE' }),\r\n 'tsaRate': new DBMappingInfo({ field: 'F_F1', table: 'T_AOTHERINFO', tbName: 'T_CODEAIR', tbId: '@AirCodeId', type: 0 }),\r\n 'tsaMin': new DBMappingInfo({ field: 'F_F2', table: 'T_AOTHERINFO', tbName: 'T_CODEAIR', tbId: '@AirCodeId', type: 0 }),\r\n 'fscgWt': new DBMappingInfo({ field: 'F_C1', table: 'T_AOTHERINFO', tbName: 'T_CODEAIR', tbId: '@AirCodeId', type: 0 }),\r\n 'sscgWt': new DBMappingInfo({ field: 'F_C2', table: 'T_AOTHERINFO', tbName: 'T_CODEAIR', tbId: '@AirCodeId', type: 0 }),\r\n 'tsagWt': new DBMappingInfo({ field: 'F_C3', table: 'T_AOTHERINFO', tbName: 'T_CODEAIR', tbId: '@AirCodeId', type: 0 }),\r\n 'u2Id': new DBMappingInfo({ field: 'F_U2ID', table: 'T_AOTHERINFO', tbName: 'T_CODEAIR', tbId: '@AirCodeId', type: 0 }),\r\n 'u2Date': new DBMappingInfo({ field: 'F_U2Date', table: 'T_AOTHERINFO', tbName: 'T_CODEAIR', tbId: '@AirCodeId', type: 0 }),\r\n\r\n };\r\n}\r\n","import {SearchModelBase} from './SearchModelBase';\r\nimport * as XCol from '../../framework.core/XExportColumn';\r\n\r\nexport class CodeAirlineListItem extends SearchModelBase {\r\n name: string = '';\r\n country: string = '';\r\n prefix: string = '';\r\n abbr: string = '';\r\n abbr3: string = '';\r\n nextblNo: string = '';\r\n endblNo: string = '';\r\n accountNo: string = '';\r\n aefscRate: number|null = null;\r\n fromAefscRate: number|null = null;\r\n toAefscRate: number|null = null;\r\n aesscRate: number|null = null;\r\n fromAesscRate: number|null = null;\r\n toAesscRate: number|null = null;\r\n aefscMin: number|null = null;\r\n fromAefscMin: number|null = null;\r\n toAefscMin: number|null = null;\r\n aesscMin: number|null = null;\r\n fromAesscMin: number|null = null;\r\n toAesscMin: number|null = null;\r\n id: number = 0;\r\n countryUnCode: string = '';\r\n freightVendorName: string = '';\r\n updateDate: string | null = null;\r\n toUpdateDate: string | null = null;\r\n fromUpdateDate: string | null = null;\r\n updateBy: string = '';\r\n\r\n\r\n private static ExportCollection: XCol.XExportColumn[] = [\r\n XCol.Create({ col: 0, text: 'Airline Name', width: 350, dataIndex: 'name'}),\r\n XCol.Create({ col: 1, text: 'Country', width: 200, dataIndex: 'country'}),\r\n XCol.Create({ col: 2, text: 'Prefix', width: 80, dataIndex: 'prefix'}),\r\n XCol.Create({ col: 3, text: 'Abbr 2', width: 70, dataIndex: 'abbr'}),\r\n XCol.Create({ col: 4, text: 'Abbr 3', width: 70, dataIndex: 'abbr3'}),\r\n XCol.Create({ col: 5, text: 'Next AWB #', width: 110, dataIndex: 'nextblNo'}),\r\n XCol.Create({ col: 6, text: 'End AWB #', width: 110, dataIndex: 'endblNo'}),\r\n XCol.Create({ col: 7, text: 'Freight Vendor', width: 110, dataIndex: 'freightVendorName'}),\r\n XCol.Create({ col: 8, text: 'FSC Rate', width: 150, dataIndex: 'aefscRate', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 9, text: 'FSC Min', width: 110, dataIndex: 'aefscMin', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 10, text: 'SSC Rate', width: 150, dataIndex: 'aesscRate', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 11, text: 'SSC Min', width: 110, dataIndex: 'aesscMin', type: XCol.XCellType.Double, align: XCol.XAlignType.Right, formatString: '#,##0.00', noNullOrEmptySearch: true }),\r\n XCol.Create({ col: 12, text: 'Update Date', width: 110, dataIndex: 'updateDate', type: XCol.XCellType.Date, align: XCol.XAlignType.Center})\r\n ];\r\n\r\n\r\n public static getExportCollection(): XCol.XExportColumn[] {\r\n return this.ExportCollection;\r\n };\r\n\t\r\n public static OrderBy = { orderBy: CodeAirlineListItem.prototype.name , orderByAscending: true };\r\n\r\n public static formatData(data: CodeAirlineListItem[]) {\r\n return data.map((d: CodeAirlineListItem) => ({\r\n ...d,\r\n }));\r\n }\r\n\r\n public static MapSearchFields: {[key: string]: {[key: string]: string}} = {\r\n aefscRate: {from: 'fromAefscRate', to: 'toAefscRate'},\r\n aefscMin: {from: 'fromAefscMin', to: 'toAefscMin'},\r\n aesscRate: {from: 'fromAesscRate', to: 'toAesscRate'},\r\n aesscMin: {from: 'fromAesscMin', to: 'toAesscMin'},\r\n updateDate: {from: 'fromUpdateDate', to: 'toUpdateDate'},\r\n }\r\n}\r\n","import _ from 'lodash';\r\nimport { useContext, useEffect, useRef, useState } from 'react';\r\nimport { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nimport PrimaryButton from '../../../../ui/PrimaryButton';\r\nimport IfmsModal from '../../../../ui/IfmsModal';\r\nimport useTableNavigation from '../../../../ui/tables/useTableNavigation';\r\n\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\nimport useSystemSettings from '../../../../hooks/useSystemSettings';\r\nimport useFastStorage, { useTypedFastStorage } from '../../../../hooks/useFastStorage';\r\n\r\nimport { ApplicableTableSettings, codesAirlineList } from '../../../../tableSettings';\r\n\r\nimport {\r\n TextAlignLeftRenderer,\r\n TextRenderer,\r\n TextAlignRightRenderer,\r\n DateTimeRenderer,\r\n FloatRenderer,\r\n} from '../../../../uiControls/SmartTableRenderers';\r\n\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\nimport SecondaryButton from '../../../../ui/SecondaryButton';\r\nimport { Country } from '../../../../ifmsTypes';\r\nimport useFunction from '../../../../hooks/useFunction';\r\nimport { Search, initialSearch, isFilterObjectEmpty } from '../../../../filtering';\r\nimport InputControlRow from '../../../../ui/layout/InputControlRow';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport CountryIsoCodeDropDown from '../../../../uiControls/CountryIsoCodeDropDown';\r\nimport LeftRightSplit from '../../../../ui/LeftRightSplit';\r\nimport DateTime from '../../../../ui/DateTime';\r\nimport Float from '../../../../ui/Float';\r\nimport CheckBox from '../../../../ui/CheckBox';\r\nimport CloseButton from '../../../../ui/CloseButton';\r\nimport { getSQLInfoList } from '../../../../fms.core/data/TrackingModule';\r\nimport { TrackableEntity } from '../../../../fms.core/data/ChangeTrackable';\r\nimport { CodeAirLine } from '../../../../fms.core/CodeAirLine';\r\nimport { ApiResult } from '../../../../framework.core/data/ApiResult';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport { CodeAirlineListItem } from '../../../../fms.data/models/CodeAirlineListItem';\r\nimport useDirtyCheck from '../../../../hooks/useDirtyCheck2';\r\nimport GreenButton from '../../../../ui/GreenButton';\r\nimport { now } from '../../../../dateUtils';\r\nimport { appendLine, findSecurityTask, stringsEqualIgnoreCase } from '../../../../util';\r\nimport { FmsSecTask } from '../../../../fms.core/constants';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\nimport useGlobalYesNoDialog from '../../../../hooks/useGlobalYesNoDialog';\r\nimport { sortingListData } from '../../ReferenceFiles';\r\nimport useFilterBar from '../../../../hooks/useFilterBar';\r\nimport { ListOrderBy } from \"../../../common/AbstractListView\";\r\nimport postal from 'postal';\r\nimport BlackInverseButton from '../../../../ui/BlackInverseButton';\r\nimport CompanyListExLookupField from '../../../../uiControls/lookup/CompanyListExLookupField';\r\nimport { LookupCompany } from '../../../../fms.data/lookup';\r\nimport constants from '../../../../constants';\r\nimport IFmsReferenceFilesContext from '../../IfmsReferenceFilesContext';\r\nimport { Portal } from 'react-portal';\r\n\r\ninterface CodeAirLineResult {\r\n newId : number,\r\n oldId : number,\r\n model : string\r\n}\r\n\r\nfunction RowSpacer() {\r\n return (\r\n
     
    \r\n );\r\n}\r\n\r\nexport function AirlineDetails({\r\n readonly,\r\n airline,\r\n onChange\r\n}: {\r\n readonly: boolean,\r\n airline: CodeAirLine,\r\n onChange: (change: Partial) => void,\r\n}) {\r\n const systemSettings = useSystemSettings();\r\n const countries = systemSettings.countries ?? [];\r\n const country:Country|null = !!airline?.country ? (countries.find(x => x.name === airline.country) ?? null) : null;\r\n\r\n function setCountry(c:Country|null) {\r\n onChange({\r\n country: c?.name ?? '',\r\n countryUnCode: c?.unCode ?? ''\r\n });\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n Airline Name *}>\r\n \r\n onChange({name: e.target.value.toUpperCase()})} />\r\n \r\n\r\n \r\n \r\n }\r\n right={}\r\n />\r\n \r\n\r\n \r\n Prefix *}>\r\n onChange({prefix: e.target.value})} />\r\n \r\n
    \r\n }\r\n right={\r\n
    \r\n
    \r\n }\r\n />\r\n\r\n \r\n Abbr2 *}>\r\n onChange({abbr2: e.target.value})} />\r\n \r\n
    \r\n }\r\n right={\r\n
    \r\n \r\n onChange({abbr3: e.target.value})} />\r\n \r\n
    \r\n }\r\n />\r\n\r\n \r\n \r\n onChange({nextBLno: e.target.value})} />\r\n \r\n \r\n }\r\n right={\r\n
    \r\n \r\n onChange({endBLno: e.target.value})} />\r\n \r\n
    \r\n }\r\n />\r\n\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n }\r\n right={\r\n
    \r\n \r\n \r\n \r\n
    \r\n }\r\n />\r\n \r\n
    \r\n \r\n \r\n onChange({ freightVendor: { id: 0, shortName }})}\r\n onTextChange={shortName => onChange({ billTo: shortName, companyID: 0 })}\r\n //onSelect={freightVendor => onChange({freightVendor})}\r\n onSelect={freightVendor =>{ const company = freightVendor as LookupCompany; onChange({companyID: company?.id ?? 0, billTo: company?.shortName ?? '' })}}\r\n disabled={readonly}\r\n />\r\n \r\n\r\n \r\n onChange({accountNo: e.target.value})} />\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n onChange({aefscRate: fscRate ?? 0})} />\r\n \r\n
    \r\n }\r\n right={\r\n
    \r\n \r\n \r\n onChange({aefscMin: fscRateMin ?? 0})} />\r\n \r\n
    \r\n }\r\n right={\r\n
    \r\n \r\n onChange({fscgWt: fscRateGross})} />\r\n \r\n
    \r\n }\r\n />\r\n \r\n }\r\n />\r\n \r\n \r\n onChange({aesscRate: sscRate ?? 0})} />\r\n \r\n \r\n }\r\n right={\r\n
    \r\n \r\n \r\n onChange({aesscMin: sscRateMin ?? 0})} />\r\n \r\n
    \r\n }\r\n right={\r\n
    \r\n \r\n onChange({sscgWt: sscRateGross??0})} />\r\n \r\n
    \r\n }\r\n />\r\n \r\n }\r\n />\r\n \r\n \r\n onChange({tsaRate: tsaScreenChargeRate??0})} />\r\n \r\n \r\n }\r\n right={\r\n
    \r\n \r\n \r\n onChange({tsaMin: tsaScreenChargeRateMin??0})} />\r\n \r\n
    \r\n }\r\n right={\r\n
    \r\n \r\n onChange({tsagWt: tsaScreenChargeRateGross??0})}\r\n onTabNext={() => {\r\n document.getElementById('airline-name')?.focus();\r\n return true;\r\n }} />\r\n \r\n
    \r\n }\r\n />\r\n \r\n }\r\n />\r\n \r\n \r\n );\r\n}\r\n\r\nfunction formatElement(data:any, index:number) {\r\n return {\r\n ...data,\r\n // freightVendorName: data.freightVendorName ?? '',\r\n indicator: index + 1\r\n };\r\n}\r\n\r\nfunction formatData(data: Array) {\r\n return data.map((d, i) => formatElement(d, i));\r\n}\r\n\r\nfunction Airlines({\r\n componentIndex\r\n}: {\r\n componentIndex: number\r\n}) {\r\n useFunction({invokers: {\r\n ifmsReferenceFilesSave: save,\r\n ifmsReferenceFilesCancel: cancelOperation,\r\n }});\r\n useFunctionKeys({ onEsc: cancelOperation, onSave: handleSaveAndClose });\r\n \r\n const appContext = useContext(ApplicationContext);\r\n const refContext = useContext(IFmsReferenceFilesContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const { selectTableRow, tableNavigationCleanup } = useTableNavigation('codes-airline-list', onRowSelect, onRowDoubleSelect, ['name'], false, false, false);\r\n\r\n const tableRef = useRef(null);\r\n const [loading, setLoading] = useState(false);\r\n const [, setHasChanges] = useFastStorage(`ifms-referenceFiles-haschanges`, false);\r\n const [data, _setData, removeData, dataRef] = useFastStorage(`ifms-referenceFiles-airline-list`, []);\r\n const [selectedRow, setSelectedRow] = useState(-1);\r\n\r\n const [airline, _setAirline, removeAirlineFromStorage] = useTypedFastStorage(`ifms-referenceFiles-airline-editable`, null);\r\n const { setCleanState, dirtyCleanup } = useDirtyCheck(`ifms-referenceFiles-airline-editable`, ['edit', 'view']);\r\n const [orderBy, setOrderBy] = useFastStorage(`ifms-referenceFiles-airline-orderby`, {\r\n orderBy: 'name', // Ailine Name\r\n orderByAscending: true,\r\n //general1: 'Name',\r\n //generalText1: '', //\r\n //pageSize: systemSettings.defaultPageSize,\r\n });\r\n\r\n const listSec = findSecurityTask(appContext, FmsSecTask.CodeAirLine);\r\n const tableHeight = 520;\r\n\r\n const { FilterButton, search } = useFilterBar(\r\n codesAirlineList,\r\n undefined, \r\n getDefaultOrderBy,\r\n String(componentIndex)\r\n );\r\n\r\n function handleSaveAndClose() {\r\n const saveBtn = document.getElementById('detail-save-button');\r\n if (saveBtn) {\r\n saveBtn.focus();\r\n const modals = document.querySelectorAll('[class^=\"ReactModal__Content\"]');\r\n const modalsWithoutSaveBtn = Array.from(modals).filter(modal => { return !modal.contains(saveBtn); });\r\n if (modalsWithoutSaveBtn.length <= 0)\r\n saveBtn.click();\r\n }\r\n }\r\n\r\n function getDefaultOrderBy(): ListOrderBy {\r\n return {\r\n orderBy: 'name',\r\n orderByAscending: true,\r\n };\r\n }\r\n\r\n function setAirline(a:Partial, skipDirty:boolean = false) {\r\n if (!skipDirty) {\r\n setHasChanges(true);\r\n }\r\n _setAirline(a)\r\n }\r\n\r\n function setData(d:Array) {\r\n removeData();\r\n _setData(d);\r\n }\r\n\r\n async function fetchData(api:any, search:Search) {\r\n setLoading(true);\r\n\r\n const apiResult = await api.getListItems(JobNames.AirLineEx,\r\n 'CodeAirlineListItem',\r\n CodeAirlineListItem.calculateSearchParameters(search, CodeAirlineListItem.MapSearchFields),\r\n 1, search.pageSize);\r\n\r\n const fetchedTableData = formatData(apiResult && apiResult.entities ? apiResult.entities : []);\r\n sortingListData(CodeAirlineListItem, fetchedTableData , setData, orderBy);\r\n setHasChanges(false);\r\n setLoading(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (isFilterObjectEmpty(search) && search.version === 1) reload(false);\r\n \r\n return () => {\r\n removeData();\r\n tableNavigationCleanup();\r\n };\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n useEffect(() => {\r\n if (loading || (isFilterObjectEmpty(search) && search.version === 1)) {\r\n return;\r\n }\r\n fetchData(appContext.api, search);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [search]\r\n );\r\n\r\n useEffect(() => {\r\n if (dataRef.current?.length > 0 && !loading) {\r\n selectTableRow(0, true);\r\n onRowSelect(0);\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [loading]\r\n );\r\n\r\n async function reload(clearAll:boolean = true) {\r\n const searchValue = clearAll ? initialSearch : search;\r\n await fetchData(appContext.api, searchValue);\r\n }\r\n\r\n async function onRowSelect(rowIndex: number){\r\n setSelectedRow(!isNaN(rowIndex) ? rowIndex : -1);\r\n }\r\n\r\n async function onRowDoubleSelect(rowIndex: number) {\r\n if (!dataRef || !dataRef.current) {\r\n return;\r\n }\r\n\r\n // = await appContext.api.getJobDetail(JobNames.AirLineEx,\r\n { id: dataRef.current[rowIndex].id });\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

    );\r\n return;\r\n }\r\n\r\n const objAirline = { ...apiResult.result, edit: true, view: true, editIndex: rowIndex };\r\n setCleanState(objAirline);\r\n const tEntity = new CodeAirLine(objAirline);\r\n tEntity.trackable = true;\r\n setAirline(tEntity, true);\r\n //pt220817>\r\n }\r\n\r\n function onHeaderClick(header:any) {\r\n if (airline !== null) {\r\n return;\r\n }\r\n \r\n if (header && header.id !== 'indicator') {\r\n if (header.id === orderBy.orderBy) {\r\n setOrderBy({orderByAscending: !orderBy.orderByAscending});\r\n } else {\r\n setOrderBy({orderBy: header.id, orderByAscending: true});\r\n }\r\n }\r\n sortingListData(CodeAirlineListItem, data, setData, orderBy);\r\n }\r\n\r\n async function setAirlineDetail(isView: boolean){\r\n const apiResult:ApiResult = await appContext.api.getJobDetail(JobNames.AirLineEx,\r\n {id: dataRef.current[selectedRow].id });\r\n if(!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

    );\r\n return;\r\n }\r\n\r\n const objAir = {...apiResult.result, edit: true, view: isView, editIndex: selectedRow};\r\n setCleanState(objAir);\r\n const tEntity = new CodeAirLine(objAir);\r\n tEntity.trackable = true;\r\n setAirline(tEntity, true);\r\n }\r\n\r\n function selectAirlineForNew() {\r\n const newCodeModel = new CodeAirLine(); \r\n setAirline(newCodeModel, false);\r\n setCleanState(newCodeModel);\r\n \r\n setAirline({\r\n edit : false,\r\n view: false,\r\n });\r\n }\r\n \r\n async function selectAirlineForEdit(){\r\n await setAirlineDetail(false);\r\n }\r\n \r\n async function selectAirlineForView(){\r\n await setAirlineDetail(true);\r\n }\r\n\r\n async function selectAirlineForDelete(){\r\n const doConfirm = await showGlobalYesNoDialog(\r\n
    \r\n

    Confirm to Delete?

    \r\n
    \r\n , false, 0, true, 'warning');\r\n if(doConfirm){\r\n const apiResult = await appContext.api.deleteJobDetail(JobNames.AirLineEx, { id:dataRef.current[selectedRow].id , pimsLinkId: 0 });\r\n if (apiResult && apiResult.success) {\r\n await reload(false);\r\n } else\r\n showGlobalOkDialog(

    {\"Cannot delete\"}

    );\r\n }else\r\n return;\r\n }\r\n\r\n function cancelOperation() {\r\n const filterNode = document.getElementById('ifms-list-screen-filter');\r\n const channel = postal.channel('ifms-filter');\r\n\r\n if (!filterNode) {\r\n setHasChanges(false);\r\n removeAirlineFromStorage();\r\n } else {\r\n channel.publish('ifms-filter.dismiss');\r\n }\r\n return true;\r\n }\r\n\r\n async function save() {\r\n if (!airline) {\r\n return;\r\n }\r\n else {\r\n let errorMsg = '';\r\n if (_.isEmpty(airline.name))\r\n errorMsg = appendLine(errorMsg, 'Please enter the Airline Name');\r\n if (_.isEmpty(airline.prefix))\r\n errorMsg = appendLine(errorMsg, 'Please enter the Prefix');\r\n if (_.isEmpty(airline.abbr2))\r\n errorMsg = appendLine(errorMsg, 'Please enter the Abbr2');\r\n\r\n if (errorMsg.length > 0) {\r\n await showGlobalOkDialog(\r\n
    \r\n

    Please check following information. (Specify the missing entries.)

    \r\n {errorMsg}\r\n
    \r\n );\r\n return;\r\n }\r\n\r\n if (airline.name.length > 0) {\r\n if (await appContext.api.checkupDuplicateFieldValueIsDuplicate(\"T_CODEAIRLINE\", \"F_Name\", airline.name, 'F_Id', airline.id)) {\r\n errorMsg = appendLine(errorMsg, `The Name '${airline.name}' is already taken`);\r\n }\r\n }\r\n if (airline.prefix.length < 3)\r\n errorMsg = appendLine(errorMsg, 'Prefix must be 3 digits');\r\n else {\r\n if (await appContext.api.checkupDuplicateFieldValueIsDuplicate(\"T_CODEAIRLINE\", \"F_Prefix\", airline.prefix, 'F_Id', airline.id)) {\r\n errorMsg = appendLine(errorMsg, `The prefix '${airline.prefix}' is already taken`);\r\n }\r\n }\r\n if (airline.abbr2.length < 2)\r\n errorMsg = appendLine(errorMsg, 'Abbreviation must be 2 characters');\r\n else {\r\n if (await appContext.api.checkupDuplicateFieldValueIsDuplicate(\"T_CODEAIRLINE\", \"F_Abbr\", airline.abbr2, 'F_Id', airline.id)) {\r\n errorMsg = appendLine(errorMsg, `The abbreviation '${airline.abbr2}' is already taken`);\r\n }\r\n }\r\n if (errorMsg.length > 0) {\r\n await showGlobalOkDialog(\r\n
    \r\n

    Please check following information.

    \r\n {errorMsg}\r\n
    \r\n );\r\n return;\r\n }\r\n }\r\n\r\n const tEntity = new CodeAirLine(airline);\r\n tEntity.trackable = true;\r\n tEntity.u2Date = now();\r\n tEntity.u2Id = appContext.user?.id ?? '';\r\n setAirline(tEntity, false);\r\n \r\n const sqlInfoList = getSQLInfoList(airline as TrackableEntity);\r\n const sqlInfo = sqlInfoList.find(x => stringsEqualIgnoreCase(x.tableName, 't_aotherinfo'));\r\n if(sqlInfo) {\r\n sqlInfo.whereFields.forEach(f => {\r\n if(f.value === '@AirCodeId')\r\n f.value = airline.id;\r\n });\r\n }\r\n\r\n const apiResult:ApiResult = await appContext.api.saveJobDetail(\r\n JobNames.AirLineEx, \r\n sqlInfoList,\r\n );\r\n\r\n if(!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.SAVE_ERROR_MESSAGE}

    );\r\n return;\r\n }else{\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n\r\n if(apiResult.result){\r\n const insresult = apiResult.result.newId;\r\n if (insresult) {\r\n const newItem: any = {\r\n id: insresult,\r\n name: airline.name,\r\n country: airline.country,\r\n prefix: airline.prefix,\r\n abbr: airline.abbr2,\r\n abbr3: airline.abbr3,\r\n nextblNo: airline.nextBLno,\r\n endblNo: airline.endBLno, \r\n billTo: airline.billTo,\r\n aefscRate: airline.aefscRate,\r\n aefscMin: airline.aefscMin,\r\n aesscRate: airline.aesscRate,\r\n aesscMin: airline.aesscMin,\r\n };\r\n const newList = _.cloneDeep(data)\r\n newList.splice(0, 0, newItem);\r\n setData(formatData(newList));\r\n\r\n selectTableRow(0);\r\n }\r\n }\r\n else {\r\n const editItem = data.find((x: any) => x.id === airline.id);\r\n editItem.name = airline.name;\r\n editItem.country = airline.country;\r\n editItem.prefix = airline.prefix;\r\n editItem.abbr = airline.abbr2;\r\n editItem.abbr3 = airline.abbr3;\r\n editItem.nextblNo = airline.nextBLno;\r\n editItem.endblNo = airline.endBLno; \r\n editItem.billTo = airline.billTo;\r\n editItem.aefscRate = airline.aefscRate;\r\n editItem.aefscMin = airline.aefscMin;\r\n editItem.aesscRate = airline.aesscRate;\r\n editItem.aesscMin = airline.aesscMin;\r\n\r\n const insIndex = data.findIndex((x:any) => x.id === airline.id);\r\n const newList = _.cloneDeep(data);\r\n newList.splice(insIndex, 1, editItem);\r\n setData(formatData(newList));\r\n\r\n selectTableRow(insIndex);\r\n } \r\n }\r\n\r\n cancelOperation();\r\n dirtyCleanup(); //\r\n }\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n customTableId: 'codes-airline-list',\r\n ref: tableRef,\r\n selectable: true,\r\n tableName: 'codesAirlineList',\r\n ...codesAirlineList,\r\n height: `${tableHeight}px`,\r\n data: (data ?? []).map((x: any, i:number) => ({ ...x, indicator: (i + 1).toString(), })),\r\n rowRenderers: [\r\n { accessor: 'indicator', Cell: TextRenderer },\r\n { accessor: 'name', Cell: TextAlignLeftRenderer },\r\n { accessor: 'country', Cell: TextRenderer },\r\n { accessor: 'prefix', Cell: TextRenderer },\r\n { accessor: 'abbr', Cell: TextRenderer },\r\n { accessor: 'abbr3', Cell: TextRenderer },\r\n { accessor: 'nextblNo', Cell: TextAlignRightRenderer },\r\n { accessor: 'endblNo', Cell: TextAlignRightRenderer },\r\n { accessor: 'billTo', Cell: TextAlignLeftRenderer },\r\n { accessor: 'aefscRate', Cell: FloatRenderer },\r\n { accessor: 'aefscMin', Cell: FloatRenderer },\r\n { accessor: 'aesscRate', Cell: FloatRenderer },\r\n { accessor: 'aesscMin', Cell: FloatRenderer },\r\n { accessor: 'updateDate', Cell: DateTimeRenderer },\r\n ],\r\n orderBy: [orderBy],\r\n onHeaderClick,\r\n };\r\n\r\n //const newEnabled = airline === null;\r\n const hasSelectedRow = !isNaN(selectedRow) && !(selectedRow < 0);\r\n const canBeAdd = listSec?.grantAdd;\r\n const canBeEdit = hasSelectedRow && listSec?.grantEdit;\r\n const canBeDeleted = hasSelectedRow && listSec?.grantDel;\r\n\r\n return (\r\n
    \r\n {/* \r\n

    Air  Airline

    \r\n
    \r\n \r\n
    \r\n
    */}\r\n\r\n\r\n {/*
    \r\n {\r\n await reload(generalText1 === null ? '' : generalText1);\r\n }}\r\n />\r\n
    */}\r\n\r\n\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n   \r\n
    \r\n New  \r\n View  \r\n Edit  \r\n Delete \r\n { reload(false) }} data-tooltip=\"Refresh\" >\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n \r\n {!!airline &&\r\n
    \r\n
    \r\n
    \r\n
    \r\n {airline.view && listSec?.grantEdit &&\r\n setAirline({view: false}, true)}>Edit\r\n }\r\n {!airline.view &&\r\n Save\r\n }\r\n  \r\n
      \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default Airlines;\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport IfmsButton, { IfmsButtonProps } from './IfmsButton';\r\n\r\nconst WhiteButton = React.forwardRef(({children, ...other}, ref) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\nWhiteButton.defaultProps = {\r\n};\r\n\r\nWhiteButton.propTypes = {\r\n size: PropTypes.oneOf(['regular', 'small', 'large']),\r\n};\r\n\r\nexport default React.memo(WhiteButton);\r\n\r\n","import {TableSettings} from \"../../../../tableSettings\";\r\n\r\nexport const oceanImportLoadPlanList:TableSettings = {\r\n tableVersion: 10043,\r\n overflowX: 'scroll',\r\n overflowY: 'scroll',\r\n \r\n height: '100%',\r\n useStorage: true,\r\n flexResizer: false,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'indicator', Header: '#', visible: true, width: 30, canBeHidden: false, resizable: false, sortable: false },\r\n { accessor:'postDate', Header: 'Date', visible:true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'loadNo', Header: 'Load #', visible:true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'sName', Header: 'Trucking Company', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'warehouseName', Header: 'Warehouse', visible:true, width: 120, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'amount', Header: 'Amount', visible:true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'float' },\r\n { accessor:'truckingETD', Header: 'Trucking ETD', visible:true, width: 75, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'u2Date', Header: 'Update', visible: true, width: 100, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'date' },\r\n { accessor:'u2Id', Header: 'Update by', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n { accessor:'u1Id', Header: 'Create by', visible: true, width: 80, canBeHidden: true, resizable: true, sortable: true, filterable: true, filterType: 'text' },\r\n ]\r\n};\r\n\r\nexport const oceanImportLoadPlanDetailsList:TableSettings = {\r\n tableVersion: 1004,\r\n overflowX: 'hidden',\r\n overflowY: 'scroll',\r\n \r\n useStorage: true,\r\n flexResizer: true,\r\n\r\n headersColor: 'gray',\r\n alternateRows: true,\r\n columns: [\r\n { accessor:'no', Header: '#', visible: true, resizable: false, sortable: false, initialWidthPercentage: 4.05, },\r\n { accessor:'stop', Header: 'Stop', visible: true, resizable: false, sortable: false, initialWidthPercentage: 8.11, },\r\n { accessor:'hblNo', Header: 'HBL #', visible: true, resizable: false, sortable: false, initialWidthPercentage: 10.81, },\r\n { accessor:'itNo', Header: 'I.T #', visible: true, resizable: false, sortable: false, initialWidthPercentage: 9.46, },\r\n { accessor:'pkgs', Header: 'Pkgs', visible: true, resizable: false, sortable: false, initialWidthPercentage: 9.46, },\r\n { accessor:'cbm', Header: 'Cbm', visible: true, resizable: false, sortable: false, initialWidthPercentage: 9.46, },\r\n { accessor:'lbs', Header: 'Lbs', visible: true, resizable: false, sortable: false, initialWidthPercentage: 9.46, },\r\n { accessor:'customer', Header: 'Customer', visible: true, resizable: false, sortable: false, initialWidthPercentage: 13.51, },\r\n { accessor:'deliverTo', Header: 'Delivery To', visible: true, resizable: false, sortable: false, initialWidthPercentage: 12.16, },\r\n { accessor:'truETA', Header: 'Trucking ETA', visible: true, resizable: false, sortable: false, initialWidthPercentage: 10.81, },\r\n { accessor:'scroll', Header: '', visible: true, resizable: false, sortable: false, initialWidthPercentage: 2.71, },\r\n ]\r\n};","import {OeMbl} from \"../../../../fms.core/OeMbl\";\r\nimport _ from \"lodash\";\r\nimport {DefaultContainerMilestoneStatus} from \"./implementationConstants\";\r\nimport {MblStatusViewModel, OceanMblStatusMap, OeContainerEvents} from \"../../../../fms.core/MblStatusViewModel\";\r\nimport {PimsContainer} from \"../../../../fms.core/pims/PimsContainer\";\r\nimport {PimsCntrEvent} from \"../../../../fms.core/PimsCntrEvent\";\r\n\r\nexport function apiResultToDataModel(data: OeMbl) {\r\n // @ts-ignore:next-line\r\n const result: OceanExportMbl = {\r\n ...data,\r\n dutyAgentPreset: data.dutyAgent ? {id: data.dutyAgent, shortName: data.dutyAgentName} : undefined,\r\n dutyCustomerPreset: data.dutyCustomer ? {id: data.dutyCustomer, shortName: data.dutyCustomerName} : undefined,\r\n mblCustomer: data.mblCustomer ? {id: data.mblCustomer, shortName: data.mblCustomerName} : undefined,\r\n mblCustomer2: data.mblCustomer2 ? {id: data.mblCustomer2, shortName: data.mblCustomer2Name} : undefined,\r\n freightVendor: data.carrier ? {id: data.carrier, shortName: data.carrierName} : undefined,\r\n mblAgent1: data.agent ? {id: data.agent, shortName: data.agentName} : undefined,\r\n mblAgent2: data.agent2 ? {id: data.agent2, shortName: data.agent2Name}: undefined,\r\n mblAgent3: data.agent3 ? {id: data.agent3, shortName: data.agent3Name} : undefined,\r\n containerInfo: data.container ? {lineItems: data.container.map((container: any) => {\r\n return {\r\n ...container,\r\n id: container.id,\r\n numberOfPackages: container.pkgs,\r\n containerNumber: container.containerNo,\r\n type: container.conType,\r\n sealNumber: container.sealNo,\r\n unit: container.pUnit,\r\n weightKgs: container.kgs,\r\n weightLbs: container.lbs,\r\n serialNumber: container.serialNo,\r\n milestone: _.cloneDeep(DefaultContainerMilestoneStatus),\r\n flexiTank: {\r\n id: container.id,\r\n containerNumber: container.containerNo,\r\n type: container.conType,\r\n tankSize: container.tankSize,\r\n fitBy: container.fitBy,\r\n fitByDate: container.fitByDate,\r\n commodity: container.commodity,\r\n payload: container.payload,\r\n capacity: container.capacity,\r\n puNumber: container.puNo,\r\n loadDate: container.loadDate,\r\n sealNumber: container.sealNo,\r\n sealNumber2: container.sealNo2,\r\n sealNumber3: container.sealNo3,\r\n serialNumber: container.serialNo,\r\n grossWeight: container.gKgs,\r\n netWeight: container.netKgs,\r\n cbm: container.cbm,\r\n gallon: container.gallon,\r\n hts: container.hts,\r\n }\r\n }\r\n })} : undefined,\r\n updateBy: data.u2Id,\r\n updateDate: data.u2Date,\r\n direct: data.directBl,\r\n containerMode: data.lclfcl,\r\n subMblNo: data.sMblNo,\r\n freightPayment: data.ppcc,\r\n voyageNo: data.voyage,\r\n salesperson: {id: data.msManID, group: '', inactive: false, name: data.msManID},\r\n truckCompany: data.truckCom ? {id: data.truckCom, shortName: data.truckComName}: undefined,\r\n vesselName: data.vessel ? {id: data.vessel, shortName: data.vessel}: undefined,\r\n vesselCarrier: data.steamShip ? {id: data.steamShip, shortName: data.steamShipName}: undefined,\r\n portOfLoading: data.loadingPort ? {unPortName: data.loadingPort, unCode: data.unlCode, usCode: data.uslCode}: undefined,\r\n portOfDischarge: data.discharge ? {unPortName: data.discharge, unCode: data.undCode, usCode: data.usdCode}: undefined,\r\n emptyPuLoc: data.emptyPuLoc ? {id: data.emptyPuLoc, shortName: data.emptyPuLoc} : undefined,\r\n plofRec: data.plofRec ? {id: data.plofRec, shortName: data.plofRec} : undefined,\r\n receivingStation: data.rstation ? {id: data.rstation, shortName: data.rstationName} : undefined,\r\n //plOfDstRtn: data.plOfDstRtn ? {id: data.plOfDstRtn, shortName: data.plOfDstRtn} : undefined,\r\n shipper: data.shipper ? {id: data.shipper, shortName: data.shipperName} : undefined,\r\n consignee: data.consignee ? {id: data.consignee, shortName: data.consigneeName} : undefined,\r\n notifyParty: data.notify ? {id: data.notify, shortName: data.notifyName} : {id: 0, shortName: 'Same as Consignee'},\r\n notifyPartyDetails: data.notifyName || 'Same as Consignee',\r\n forwardAgent: data.forwardAgent ? {id: data.forwardAgent, shortName: data.forwardAgentName} : undefined,\r\n serviceContractNo: data.svccNo,\r\n lot: data.lotNo,\r\n hblCount: data.hblNoCnt,\r\n pickupEmptyContainerLocation: data.emptyPuLoc,\r\n //bookConfirmDate: !!data.bookCfrm,\r\n //sedSentDate: !!data.sedSent,\r\n sedCutoffDate: !!data.sedCutoff,\r\n //arrangeTruckDate: !!data.arrangeTruck,\r\n //pickupEmptyContainerDate: !!data.emptyPickup,\r\n //pickupLoadContainerDate: !!data.loadPickup,\r\n pickupLoadContainerLocation: !!data.plofRec,\r\n //deliverToCarrierDate: !!data.dlvrToCarr,\r\n //fileAesDate: !!data.aesFile,\r\n //oceanCargoManifestSentDate: !!data.sendManifest,\r\n //agentDocPackageSentDate: !!data.sendAgtDoc,\r\n\r\n //bookConfirmDateTimestamp: data.bookCfrm,\r\n //sedSentDateTimestamp: data.sedSent,\r\n //arrangeTruckDateTimestamp: data.arrangeTruck,\r\n //pickupEmptyContainerDateTimestamp: data.emptyPickup,\r\n pickupEmptyContainerLocationTimestamp: data.emptyPuLoc,\r\n //pickupLoadContainerDateTimestamp: data.loadPickup,\r\n pickupLoadContainerLocationTimestamp: data.plofRec,\r\n //deliverToCarrierDateTimestamp: data.dlvrToCarr,\r\n //fileAesDateTimestamp: data.aesFile,\r\n //oceanCargoManifestSentDateTimestamp: data.sendManifest,\r\n //agentDocPackageSentDateTimestamp: data.sendAgtDoc,\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function prepareOeMblForView(mbl:OeMbl) {\r\n // Init milestone\r\n if(!mbl.milestone) {\r\n mbl.milestone = new MblStatusViewModel();\r\n }\r\n if(mbl.milestone.eventItemList.length > 0) {\r\n _.remove(mbl.milestone.eventItemList);\r\n }\r\n\r\n if(mbl.milestone.cntrItemList == null) mbl.milestone.cntrItemList = [];\r\n if(mbl.milestone.eventItemList == null) mbl.milestone.eventItemList = [];\r\n\r\n if (!mbl.milestone.cntrItemList || mbl.milestone.cntrItemList.length === 0) {\r\n AddPimsCntrEvent(mbl, new PimsContainer({ bookingId: mbl.pimsLinkId, cntrNo: mbl.mblNo }))\r\n }\r\n else {\r\n mbl.milestone.cntrItemList.forEach(x => {\r\n AddPimsCntrEvent(mbl, x)\r\n })\r\n }\r\n}\r\n\r\nfunction AddPimsCntrEvent(mbl:OeMbl, pimsContainer:PimsContainer){\r\n OeContainerEvents.forEach((enumEvent) => {\r\n // let seqNo = 0;\r\n const smitem = OceanMblStatusMap.get(enumEvent);\r\n if(!smitem) return;\r\n mbl.milestone?.eventItemList?.push(new PimsCntrEvent({\r\n pimsCntrId: pimsContainer.id,\r\n cntrNo: pimsContainer.cntrNo,\r\n pickupNo: pimsContainer.pickupNo,\r\n name: smitem.label,\r\n lastDate: _.get(pimsContainer, smitem.pimsCntrDate??''),\r\n locName: _.get(pimsContainer, smitem.pimsCntrLoc??''),\r\n seq: enumEvent, //seqNo++,\r\n isVisible: true\r\n }));\r\n });\r\n}","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport {AllTypesShort} from '../constants/salesCostTypes';\r\n\r\nfunction SalesCostTypeLabel({ value }:{value:number}) {\r\n return (\r\n {AllTypesShort[value] || ''}\r\n );\r\n}\r\n\r\nSalesCostTypeLabel.propTypes = {\r\n value: PropTypes.number.isRequired,\r\n};\r\n\r\nexport default React.memo(SalesCostTypeLabel);\r\n","import _ from 'lodash';\r\nimport {useContext, useEffect, useState} from \"react\";\r\nimport InlineInputControlRow from \"../../ui/layout/InlineInputControlRow\";\r\nimport LeftRightSplit from \"../../ui/LeftRightSplit\";\r\nimport TextBox from \"../../ui/TextBox\";\r\nimport LabeledControl from \"../../ui/LabeledControl\";\r\nimport ContainerTypeDropDown from \"../../uiControls/ContainerTypeDropDown\";\r\nimport Date from \"../../ui/Date\";\r\nimport Float from \"../../ui/Float\";\r\nimport DateTime from \"../../ui/DateTime\";\r\nimport {useTypedFastStorage} from \"../../hooks/useFastStorage\";\r\nimport SecondaryButton from \"../../ui/SecondaryButton\";\r\nimport {OmContainer} from \"../../fms.core/OmContainer\";\r\nimport useGlobalOkDialog from \"../../hooks/useGlobalOkDialog\";\r\nimport useGlobalYesNoDialog from \"../../hooks/useGlobalYesNoDialog\";\r\nimport { kgToLbs } from '../../util';\r\nimport { JobNames } from '../../framework.core/JobNames';\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport { round } from 'mathjs';\r\nimport { getSQLInfoList } from '../../fms.core/data/TrackingModule';\r\nimport { TrackableEntity } from '../../fms.core/data/ChangeTrackable';\r\nimport { ApiResult, InsertResultsWithData } from '../../framework.core/data/ApiResult';\r\nimport useDirtyCheck from '../../hooks/useDirtyCheck2';\r\n\r\ninterface FlexTankStorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\ninterface FlexTankViewParams {\r\n id: string | undefined,\r\n onPopupClose?: () => void,\r\n isView?: boolean,\r\n};\r\n\r\ninterface FlexTankLoadedDetailsViewParams {\r\n flexTank: OmContainer,\r\n onPopupClose?: () => void,\r\n isView?: boolean,\r\n isSeparate?: boolean,\r\n onSave?: (containerId: number, data: OmContainer) => void,\r\n onDelete?: (containerId: number) => void,\r\n setFlexTank?:(x: Partial) => void,\r\n};\r\n\r\nfunction getFlexTankStorageKeys(): FlexTankStorageKeys {\r\n return {modelStorage: 'print-bill-report'}\r\n}\r\n\r\nfunction FlexTankImpl(params: FlexTankViewParams) {\r\n const {id, onPopupClose} = params;\r\n const {modelStorage} = getFlexTankStorageKeys();\r\n\r\n const [inStorage, setInStorage, removeFlexTankFromStorage] = useTypedFastStorage(modelStorage, null);\r\n const { setCleanState } = useDirtyCheck(modelStorage);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const appContext = useContext(ApplicationContext);\r\n\r\n useEffect(() => {\r\n initialize();\r\n return () => {\r\n removeFlexTankFromStorage()\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n async function loadExisting() {\r\n const apiResult = await appContext.api.getJobDetail(JobNames.FlexiTank, {id});\r\n if(apiResult && apiResult.success && apiResult.result) {\r\n const data: OmContainer = new OmContainer(apiResult.result);\r\n return data;\r\n }\r\n return {}\r\n }\r\n\r\n async function initialize() {\r\n const data = await loadExisting();\r\n setCleanState(data);\r\n const entity = new OmContainer(_.cloneDeep(data));\r\n entity.trackable = true;\r\n if(!entity?.serialNo){\r\n entity.serialNo = \"TBD\";\r\n }\r\n setInStorage(entity);\r\n }\r\n\r\n if (!inStorage) {\r\n return null;\r\n }\r\n\r\n async function onDelete(){\r\n await fsClearFlexiTankData();\r\n await saveFunc(\"CLEAR\");\r\n }\r\n\r\n async function onSave(){\r\n await saveFunc(\"SAVE\");\r\n }\r\n\r\n async function saveFunc(para: string){\r\n\r\n if(para !== 'CLEAR'){\r\n if(inStorage?.ftLoadDay === null){\r\n setInStorage({ftLoadDate : null});\r\n } else if (inStorage?.ftLoadTime === null){\r\n setInStorage({ftLoadDate: inStorage?.ftLoadDay});\r\n } else {\r\n setInStorage({ftLoadDate: inStorage?.ftLoadDay??\"\" + inStorage?.ftLoadTime})\r\n }\r\n setInStorage({isFlexiTank: true})\r\n }\r\n\r\n const sqlInfoList = getSQLInfoList(inStorage as TrackableEntity);\r\n\r\n const apiResult: ApiResult = await appContext.api.saveJobDetail(JobNames.FlexiTank, sqlInfoList);\r\n if(apiResult.success){\r\n if(para === 'CLEAR'){\r\n await showGlobalOkDialog(\"Successfully Done\");\r\n }\r\n // else if (para === 'SAVE'){\r\n // await showGlobalOkDialog(\"Sucessfully Saved\");\r\n // }\r\n if(onPopupClose){\r\n onPopupClose();\r\n }\r\n }\r\n }\r\n\r\n async function fsClearFlexiTankData(){\r\n setInStorage({\r\n isFlexiTank: false,\r\n tankSize:'',\r\n serialNo:'',\r\n fitByDate: null,\r\n commodity: '',\r\n payload: 0,\r\n capacity:0,\r\n puNo: '',\r\n ftLoadDate: null,\r\n sealNo2:'',\r\n sealNo3:'',\r\n hts:'',\r\n netKgs: 0,\r\n cbm: 0,\r\n gallon: 0,\r\n })\r\n }\r\n\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction createInitialFlexiTankFrom(initial: OmContainer): OmContainer {\r\n const result = _.cloneDeep(initial);\r\n if (!result.serialNo) {\r\n result.serialNo = 'TBD';\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function FlexTankInitializedImpl({\r\n flexTank,\r\n onPopupClose,\r\n isView,\r\n isSeparate,\r\n setFlexTank,\r\n onSave,\r\n onDelete,\r\n}: FlexTankLoadedDetailsViewParams) {\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n const [editableFlexTank, setEditableFlexTank] = useState(createInitialFlexiTankFrom(flexTank));\r\n const [dirty, setDirty] = useState(false);\r\n\r\n useEffect(() => {\r\n setTimeout(() => {\r\n const focusElement = document.getElementById('ft-flexTank-no') as HTMLElement;\r\n if (focusElement) {\r\n focusElement.focus();\r\n }\r\n }, 10)\r\n },\r\n []\r\n);\r\n\r\n function onChange(change: Partial) {\r\n if(!isSeparate){\r\n const eft = _.cloneDeep(_.merge(editableFlexTank, change));\r\n setEditableFlexTank(eft);\r\n }else{\r\n if(setFlexTank) setFlexTank(change);\r\n }\r\n \r\n if (!dirty) {\r\n setDirty(true);\r\n }\r\n }\r\n\r\n async function processCancel() {\r\n if (dirty) {\r\n const doSave = await showGlobalYesNoDialog('Do you want to save Flexi Tank Information?',false,0,true);\r\n if (doSave) {\r\n await processSave();\r\n }\r\n else {\r\n if (onPopupClose) {\r\n onPopupClose();\r\n }\r\n }\r\n }\r\n else {\r\n if (onPopupClose) {\r\n onPopupClose();\r\n }\r\n }\r\n }\r\n\r\n async function processDelete() {\r\n if (onDelete) {\r\n const doDelete = await showGlobalYesNoDialog('Do you want to delete Flexi Tank Information?',false, 0, true, 'warning');\r\n if (doDelete) {\r\n onDelete(flexTank.id);\r\n if (onPopupClose) {\r\n onPopupClose();\r\n }\r\n }\r\n }\r\n }\r\n\r\n async function processSave() {\r\n if (!editableFlexTank.serialNo) {\r\n showGlobalOkDialog('Need to enter Serial #');\r\n const focusElement = document.getElementById('ft-serial-no');\r\n if (focusElement) {\r\n focusElement.focus();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (onSave) {\r\n onSave(flexTank.id, editableFlexTank);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n onChange({containerNo: e.target.value})} maxLength={11} disabled={isView} />\r\n }\r\n right={\r\n {\r\n onChange({conType: conType || ''});\r\n }}\r\n jobName={JobNames.FlexiTank}\r\n />\r\n }\r\n />\r\n }\r\n />\r\n \r\n\r\n \r\n onChange({tankSize: e.target.value})}/> }\r\n right={\r\n onChange({fitByDate})} />\r\n }\r\n />\r\n }\r\n />\r\n \r\n\r\n \r\n onChange({commodity: e.target.value})} />\r\n \r\n\r\n \r\n onChange({payload: payload || 0})} min={0} max={99999999} decimals={4} />\r\n }\r\n right={\r\n onChange({capacity: capacity || 0})} min={0} max={99999999} decimals={4} />\r\n }\r\n />\r\n }\r\n />\r\n \r\n\r\n \r\n onChange({puNo: e.target.value})}/>\r\n \r\n\r\n \r\n
    \r\n onChange({ftLoadDate})} disabled={isView} />\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n onChange({sealNo: e.target.value})} disabled={isView} />\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n onChange({sealNo2: e.target.value})} disabled={isView} />\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n onChange({sealNo3: e.target.value})} disabled={isView} />\r\n
    \r\n
    \r\n\r\n \r\n onChange({serialNo: e.target.value})} disabled={isView} />\r\n }\r\n right={\r\n // !isSeparate ? (\r\n
    \r\n (*) Required\r\n
    \r\n // ) : <> \r\n }\r\n />\r\n
    \r\n\r\n \r\n onChange({netKgs: netWeight ?? 0})} min={0} max={99999999} decimals={2} />\r\n }\r\n right={\r\n onChange({gKgs: grossWeight || 0, gLbs: round(kgToLbs(grossWeight) ?? 0 ,2)})} min={0} max={99999999} decimals={2} />\r\n }\r\n />\r\n }\r\n />\r\n \r\n\r\n \r\n onChange({cbm: cbm || 0})} min={0} max={99999999} decimals={3} />\r\n }\r\n right={\r\n onChange({gallon: gallon || 0})} min={0} max={99999999} decimals={2} />\r\n }\r\n />\r\n }\r\n />\r\n \r\n\r\n \r\n onChange({hts: e.target.value})} />\r\n \r\n
    \r\n
    \r\n
    \r\n {!isView &&\r\n \r\n SAVE\r\n \r\n }\r\n {!isView &&\r\n \r\n DELETE\r\n \r\n }\r\n \r\n CANCEL\r\n \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nconst FlexTankDetails = ({\r\n onPopupClose,\r\n selectedElementId\r\n }: { onPopupClose?: () => void, selectedElementId: number }) => {\r\n\r\n /**\r\n * Implementation note:\r\n * key is important in this case in order to force full List view rerender for different parameters.\r\n */\r\n\r\n return (\r\n \r\n );\r\n};\r\nexport default FlexTankDetails;","import PropTypes from 'prop-types';\r\nimport React, {useContext, useEffect, useRef, useState} from 'react';\r\n\r\nimport Select, {SelectItem} from '../ui/Select';\r\nimport ApplicationContext from \"../ApplicationContext\";\r\nimport {IsoCountryParams} from \"../fms.core/constants\";\r\n\r\n\r\ninterface IIsoCountry {\r\n text: string,\r\n value:string,\r\n}\r\n\r\nfunction IcoCountryDropDown({\r\n value,\r\n onChange = () => {},\r\n disabled = false,\r\n name=undefined,\r\n maxLength=undefined,\r\n }: {\r\n maxLength?: number|undefined,\r\n name?:string|undefined, \r\n value: string|null|undefined,\r\n disabled?: boolean,\r\n onChange?: (x:IIsoCountry|null) => void,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const [data, _setData] = useState>([]);\r\n const dataRef = useRef>([]);\r\n\r\n function setData(d: Array){\r\n dataRef.current = d;\r\n _setData(d);\r\n }\r\n\r\n async function fetchData(api:any) {\r\n const data = await api.loadCodeData([new IsoCountryParams()]);\r\n if(data && data.length > 0) {\r\n setData(data[0].items);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n fetchData(appContext.api);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function handleChange(e:React.ChangeEvent) {\r\n if (!e.target.value) {\r\n onChange(null);\r\n return;\r\n }\r\n\r\n onChange(dataRef.current?.find(d => d.value === e.target.value) || null);\r\n }\r\n\r\n const displayData:Array = [\r\n ...data.map(x => ({ value: x.value ?? '', label: x.value ?? '' }))\r\n ];\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nIcoCountryDropDown.defaultProps = {\r\n onChange: () => {},\r\n disabled: false,\r\n dark: false,\r\n};\r\n\r\nIcoCountryDropDown.propTypes = {\r\n value: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n disabled: PropTypes.bool.isRequired,\r\n dark: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport default React.memo(IcoCountryDropDown);\r\n","let initializedFromOperation:Map = new Map(); // key is viewIndex, value is operation\r\n\r\nexport function useMemoListOperationStorage() {\r\n function hasViewIndex(viewIndex: string) {\r\n return initializedFromOperation.has(viewIndex);\r\n }\r\n\r\n function getViewIndex(viewIndex: string): string {\r\n const result = initializedFromOperation.get(viewIndex);\r\n if (!result) {\r\n throw new Error('Invalid operation');\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function setViewIndex(viewIndex: string, operation: string) {\r\n initializedFromOperation.set(viewIndex, operation);\r\n }\r\n\r\n function deleteViewIndex(viewIndex: string) {\r\n initializedFromOperation.delete(viewIndex);\r\n }\r\n\r\n return {\r\n hasViewIndex,\r\n getViewIndex,\r\n setViewIndex,\r\n deleteViewIndex,\r\n };\r\n}\r\n","import _ from 'lodash';\r\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport { CompanyPreview } from '../ifmsTypes';\r\nimport { JobNames } from '../framework.core/JobNames';\r\n\r\nexport interface DutyEntityHolder {\r\n id: number,\r\n entity: 'bill' | 'invoice' | 'crdb',\r\n};\r\n\r\nexport type DutyParentType = JobNames.OIHbl | JobNames.OIMbl |\r\n JobNames.OEMbl | JobNames.OEHbl |\r\n JobNames.AIMbl | JobNames.AIHbl |\r\n JobNames.AEMbl | JobNames.AEHbl |\r\n JobNames.OtherOP | JobNames.WHRcv | JobNames.WHShip;\r\n\r\nexport type DutyEntity = 'bill' | 'invoice' | 'crdb';\r\n\r\nexport interface ActiveDutyEntity {\r\n id: number,\r\n entity: DutyEntity,\r\n dutyAgent: CompanyPreview|null,\r\n dutyCustomer: CompanyPreview|null,\r\n hasDutyAgentInLineItems: boolean,\r\n hasDutyCustomerInLineItems: boolean,\r\n};\r\n\r\nexport interface DutyEntityHolder {\r\n id: number,\r\n entity: DutyEntity,\r\n};\r\n\r\nexport interface DutyTrackingStateElement {\r\n parentId: number,\r\n parent: DutyParentType,\r\n dutyAgentInParent: CompanyPreview|null,\r\n dutyCustomerInParent: CompanyPreview|null,\r\n dutyAgentHolders: Array, // Currently saved in parent\r\n dutyCustomerHolders: Array, // Currently saved in parent,\r\n activeScreens: Array,\r\n};\r\n\r\nexport interface DutyTrackingState {\r\n elements: Array\r\n};\r\n\r\nconst initialState:DutyTrackingState = {\r\n elements: [],\r\n};\r\n\r\nexport interface LoadDutyTrackingScreen {\r\n parentId: number,\r\n parent: DutyParentType,\r\n id: number,\r\n entity: DutyEntity,\r\n hasDutyAgentInLineItems: boolean,\r\n hasDutyCustomerInLineItems: boolean,\r\n dutyAgent: CompanyPreview|null, // Currently on screen in line items\r\n dutyCustomer: CompanyPreview|null, // Currently on screen in line items\r\n dutyAgentInParent: CompanyPreview|null, // Currently saved in parent\r\n dutyCustomerInParent: CompanyPreview|null, // Currently saved in parent\r\n dutyAgentHolders: Array, // Currently saved in parent\r\n dutyCustomerHolders: Array, // Currently saved in parent,\r\n};\r\n\r\nexport interface UnloadDutyTrackingScreen {\r\n parentId: number,\r\n parent: DutyParentType,\r\n id: number,\r\n entity: DutyEntity,\r\n};\r\n\r\nconst activeDutyTrackingSlice = createSlice({\r\n name: 'activeDutyTracking',\r\n initialState,\r\n reducers: {\r\n loadScreen: (state, action: PayloadAction) => {\r\n const newState = _.cloneDeep(state);\r\n const payload = action.payload;\r\n\r\n const parentIndex = newState.elements.findIndex(x => x.parent === action.payload.parent && x.parentId === action.payload.parentId);\r\n if (parentIndex < 0) {\r\n newState.elements.push({\r\n activeScreens: [{\r\n dutyAgent: payload.dutyAgent,\r\n dutyCustomer: payload.dutyCustomer,\r\n entity: payload.entity,\r\n id: payload.id,\r\n hasDutyAgentInLineItems: payload.hasDutyAgentInLineItems,\r\n hasDutyCustomerInLineItems: payload.hasDutyCustomerInLineItems,\r\n }],\r\n dutyAgentHolders: payload.dutyAgentHolders,\r\n dutyCustomerHolders: payload.dutyCustomerHolders,\r\n dutyAgentInParent: payload.dutyAgentInParent,\r\n dutyCustomerInParent: payload.dutyCustomerInParent,\r\n parent: payload.parent,\r\n parentId: payload.parentId\r\n });\r\n } else {\r\n newState.elements[parentIndex].dutyAgentHolders = payload.dutyAgentHolders;\r\n newState.elements[parentIndex].dutyCustomerHolders = payload.dutyCustomerHolders;\r\n newState.elements[parentIndex].dutyAgentInParent = payload.dutyAgentInParent;\r\n newState.elements[parentIndex].dutyCustomerInParent = payload.dutyCustomerInParent;\r\n\r\n const screenIndex = newState.elements[parentIndex].activeScreens.findIndex(s => s.id === payload.id && s.entity === payload.entity);\r\n if (screenIndex >= 0) {\r\n newState.elements[parentIndex].activeScreens[screenIndex].dutyAgent = payload.dutyAgent;\r\n newState.elements[parentIndex].activeScreens[screenIndex].dutyCustomer = payload.dutyCustomer;\r\n newState.elements[parentIndex].activeScreens[screenIndex].hasDutyAgentInLineItems = payload.hasDutyAgentInLineItems;\r\n newState.elements[parentIndex].activeScreens[screenIndex].hasDutyCustomerInLineItems = payload.hasDutyCustomerInLineItems;\r\n } else {\r\n newState.elements[parentIndex].activeScreens.push({\r\n dutyAgent: payload.dutyAgent,\r\n dutyCustomer: payload.dutyCustomer,\r\n entity: payload.entity,\r\n id: payload.id,\r\n hasDutyAgentInLineItems: payload.hasDutyAgentInLineItems,\r\n hasDutyCustomerInLineItems: payload.hasDutyCustomerInLineItems,\r\n });\r\n }\r\n }\r\n\r\n return newState;\r\n },\r\n unloadScreen: (state, action: PayloadAction) => {\r\n const newState = _.cloneDeep(state);\r\n const payload = action.payload;\r\n\r\n const parentIndex = newState.elements.findIndex(x => x.parent === action.payload.parent && x.parentId === action.payload.parentId);\r\n if (parentIndex < 0) {\r\n // Should never happen\r\n return newState;\r\n }\r\n\r\n const screenIndex = newState.elements[parentIndex].activeScreens.findIndex(s => s.id === payload.id && s.entity === payload.entity);\r\n if (screenIndex < 0) {\r\n // Should never happen\r\n return;\r\n }\r\n\r\n newState.elements[parentIndex].activeScreens.splice(screenIndex, 1);\r\n\r\n if (newState.elements[parentIndex].activeScreens.length <= 0) {\r\n newState.elements.splice(parentIndex, 1);\r\n }\r\n\r\n return newState;\r\n }\r\n }\r\n});\r\n\r\nexport default activeDutyTrackingSlice.reducer;\r\n\r\nexport const { loadScreen, unloadScreen } = activeDutyTrackingSlice.actions;\r\n","/**\r\n * save-sqlinfo - will be obsolete\r\n */\r\nexport const DefaultContainerMilestoneStatus = [\r\n { editable: true, name: 'Booking', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Container Dispatched', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'In Gate', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Load on Vessel', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Vessel Departure', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: false, name: 'Carrier Release', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: false, name: 'Customs Release', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Vessel Arrival', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Unload from Vessel', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: false, name: 'Devanning Inst. to CFS', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Rail Departure', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Rail Arrival', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Available for Delivery', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Out Gate', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Deliver to Customer', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: false, name: 'Return Empty Container', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n];\r\n","import PropTypes from 'prop-types';\r\nimport React, { useEffect, useState } from 'react';\r\n\r\nimport { ApplicableTableSettings, mblStatus } from '../../../../tableSettings';\r\n\r\nimport IfmsDate from '../../../../ui/Date';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport CheckBox from '../../../../ui/CheckBox';\r\nimport { Time } from '../../../../ui/DateTime';\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\nimport OceanUnPortLookupField from '../../../../uiControls/lookup/OceanUnPortLookupField';\r\n\r\nimport { DefaultContainerMilestoneStatus } from './implementationConstants';\r\nimport { TableStorage } from '../../../../hooks/useTableStorage';\r\nimport { now, getTime, formatDateTime, formatDate } from '../../../../dateUtils';\r\nimport { PimsCntrEvent } from '../../../../fms.core/PimsCntrEvent';\r\nimport { OiMbl } from '../../../../fms.core/OiMbl';\r\n\r\nfunction SelectRenderer({data, row}:any) {\r\n if (//[save-sqlinfo]!row.original.editable\r\n !row.original.selectable) {\r\n return
    ;\r\n }\r\n\r\n const toggleRow = data[0].toggleRow;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n const selected = selectedIndeces.findIndex((x:any) => x === row.index) >= 0 || !!data[row.index].date;\r\n \r\n return
    toggleRow(row.index, select)} />
    ;\r\n}\r\n\r\nfunction StatusNameRenderer({ cell }:any) {\r\n return
    {cell.value}
    ;\r\n}\r\n\r\nfunction DateRenderer({data, row}:any) {\r\n if (//[save-sqlinfo]!row.original.editable\r\n !row.original.selectable) {\r\n return
    ;\r\n }\r\n\r\n const onRowChange = data[0].onRowChange;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n let selected = selectedIndeces.findIndex((x:any) => x === row.index) >= 0 || !!data[row.index].date;\r\n\r\n function onChange(date: string|null) {\r\n if (!date) {\r\n onRowChange(row.index, {\r\n date: null,\r\n time: null,\r\n datetime: null,\r\n }, selected);\r\n } else {\r\n const tIndex = date.indexOf('T');\r\n const datetime = tIndex >= 0 ? `${date.substring(0, tIndex)}T${row.original.time}` : row.original.datetime;\r\n\r\n onRowChange(row.index, {\r\n date: date,\r\n datetime,\r\n }, selected);\r\n }\r\n }\r\n\r\n return
    ;\r\n}\r\n\r\nfunction TimeRenderer({data, row}:any) {\r\n if (//[save-sqlinfo]!row.original.editable\r\n !row.original.selectable) {\r\n return
    ;\r\n }\r\n\r\n const onRowChange = data[0].onRowChange;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n const selected = selectedIndeces.findIndex((x:any) => x === row.index) >= 0 || !!data[row.index].date;\r\n\r\n function onChange(changedTime: string|null) {\r\n if (!row.original.date) {\r\n return;\r\n }\r\n\r\n const timeToApply = changedTime ?? '00:00';\r\n\r\n const tIndex = row.original.date.indexOf('T');\r\n const datetime = tIndex >= 0 ? `${row.original.date.substring(0, tIndex)}T${timeToApply}` : row.original.datetime;\r\n\r\n\r\n onRowChange(row.index, {\r\n time: timeToApply,\r\n datetime,\r\n }, selected);\r\n }\r\n\r\n return
    ;\r\n}\r\n\r\nfunction LocationRenderer({data, row}:any) {\r\n if (//[save-sqlinfo]!row.original.editable\r\n !row.original.selectable) {\r\n return ;\r\n }\r\n\r\n const onRowChange = data[0].onRowChange;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n const selected = selectedIndeces.findIndex((x:any) => x === row.index) >= 0 || !!data[row.index].date;\r\n\r\n return selected\r\n ?
    \r\n onRowChange(row.index, { location: { ...row.original.location, unCodeWithPortName }})}\r\n // onSelect={location => onRowChange(row.index, {location})}\r\n initialValue={row.original.locName ?? ''}\r\n onTextChange={locName => onRowChange(row.index, { locName }, selected)}\r\n onSelect={location => onRowChange(row.index, { locName: location.portName }, selected)}\r\n //save-sqlinfo>\r\n //searchBy =\"unWithPortName\"\r\n searchBy=\"portName\"\r\n />\r\n
    \r\n :
    \r\n {/* [save-sqlinfo]{row.original.location ? row.original.location.unCodeWithPortName : ''} */}\r\n {row.original.locName ?? ''}\r\n
    ;\r\n}\r\n\r\nfunction LastEventTimeRenderer({row, data}:any) {\r\n // x.statusName === row.original.statusName).lastEventDateTime : '';\r\n\r\n // const timestamp = row.original.selectable ? row.original.lastEventDateTime : defaultStatusTimestamp;\r\n //save-sqlinfo>\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction MblMilestoneContainerStatus({\r\n //[save-sqlinfo]defaultStatus,\r\n selectedIndex,\r\n status,\r\n applyToAll,\r\n tableStorage,\r\n onChange,\r\n isView,\r\n mbl,\r\n}:{\r\n selectedIndex: number, // selected container index\r\n //[save-sqlinfo]defaultStatus: Array|null, //[save-sqlinfo]Array|null,\r\n status: Array|null, //[save-sqlinfo]Array|null,\r\n onChange: (rowIndex: number, status: Array, select: boolean) => void, //[save-sqlinfo](rowIndex: number, status: Array) => void,\r\n applyToAll: (status: Array) => void, //[save-sqlinfo](status: Array) => void,\r\n tableStorage: TableStorage,\r\n isView: boolean,\r\n mbl:OiMbl\r\n}) {\r\n // const selectable = !!status;\r\n\r\n const [selectedIndeces, setSelectedIndeces] = useState>([]);\r\n\r\n useEffect(() => {\r\n setSelectedIndeces([]);\r\n }, [selectedIndex]);\r\n\r\n /**\r\n * pt211230 - add comment\r\n * if rowIndex resides in selectedIndices state, then remove it, \r\n * otherwise add rowIndex into selectedIndices and update row data\r\n * @param rowIndex \r\n */\r\n function toggleRow(rowIndex: any, select: boolean) {\r\n const index = selectedIndeces.findIndex(x => x === rowIndex);\r\n if (index >= 0) {\r\n const indeces = [...selectedIndeces];\r\n indeces.splice(index, 1);\r\n setSelectedIndeces(indeces);\r\n onRowChange(rowIndex, {\r\n date: null,\r\n time: null,\r\n datetime: null,\r\n locName: '',\r\n }, select);\r\n } else {\r\n setSelectedIndeces([...selectedIndeces, rowIndex]);\r\n\r\n var currentTime = now();\r\n let tempLocName = '';\r\n const time = getTime(currentTime);\r\n\r\n switch (rowIndex) {\r\n case 0: case 1: case 2: case 3: case 4:\r\n tempLocName = mbl.loadingPort;\r\n break;\r\n case 7: case 8: case 9: case 10: \r\n tempLocName = mbl.discharge;\r\n break;\r\n case 5: case 6: case 11: case 12: case 13: case 14: case 15:\r\n tempLocName = mbl.finalDest;\r\n break;\r\n default:\r\n tempLocName = '';\r\n break;\r\n }\r\n\r\n onRowChange(rowIndex, {\r\n date: formatDate(currentTime), //currentTime,\r\n time,\r\n //dateTime: formatDateTime(currentTime),\r\n datetime: currentTime,\r\n locName: tempLocName\r\n }, select);\r\n }\r\n }\r\n\r\n /**\r\n * pt211230 - add comment\r\n * Apply change to mbl.milestone.eventListItems[rowIndex]\r\n * @param rowIndex index of PimsCntrEvent[]\r\n * @param change {Partial}\r\n */\r\n function onRowChange(rowIndex: number, change: any, select: boolean) {\r\n if (!status) {\r\n return;\r\n }\r\n\r\n //\r\n\r\n onChange(selectedIndex, [status[rowIndex]], select); // Update corresponding OmContainer\r\n }\r\n\r\n // function doApplyToAll(//[same-sqlinfo]s:Array|null\r\n // s:Array|null) {\r\n // if (s) {\r\n // applyToAll(s);\r\n // }\r\n // }\r\n\r\n const statusData = !!status ? status : DefaultContainerMilestoneStatus;\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n tableName: 'mblStatus',\r\n ...mblStatus,\r\n data: statusData.map((x:any, i:number) => ({...x, i, onRowChange, toggleRow, \r\n // selectable: [\r\n // OceanMblStatusMap.get(OceanEventName.CarrierRelease)?.label, \r\n // OceanMblStatusMap.get(OceanEventName.CustomsRelease)?.label, \r\n // OceanMblStatusMap.get(OceanEventName.DevanInstToCfs)?.label, \r\n // OceanMblStatusMap.get(OceanEventName.ReturnEmptyContainer)?.label\r\n // ].indexOf(x.name) < 0,\r\n //name: x.statusName,\r\n selectable: true,\r\n selectedIndeces, //[save-sqlinfo]defaultStatus \r\n })),\r\n rowRenderers: [\r\n //\r\n ],\r\n customStorage: tableStorage,\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n}\r\n\r\nMblMilestoneContainerStatus.propTypes = {\r\n selectedIndex: PropTypes.number,\r\n status: PropTypes.array,\r\n applyToAll: PropTypes.func,\r\n onChange: PropTypes.func,\r\n tableStorage: PropTypes.object,\r\n defaultStatus: PropTypes.any,\r\n};\r\n\r\nexport default React.memo(MblMilestoneContainerStatus);\r\n","import _ from 'lodash';\r\nimport React from 'react';\r\n\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport Date from '../../../../ui/Date';\r\nimport CheckBox from '../../../../ui/CheckBox';\r\n\r\nimport { ApplicableTableSettings, mblSelectContainer } from '../../../../tableSettings';\r\n\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\n\r\nimport useTableStorage from '../../../../hooks/useTableStorage';\r\n\r\nimport MblMilestoneContainerStatus from './MblMilestoneContainerStatus';\r\nimport { OiMbl } from '../../../../fms.core/OiMbl';\r\nimport { OceanMblStatusMap } from '../../../../fms.core/MblStatusViewModel';\r\nimport { OmContainer } from '../../../../fms.core/OmContainer';\r\nimport { PimsCntrEvent } from '../../../../fms.core/PimsCntrEvent';\r\nimport InlineInputControlRow from '../../../../ui/layout/InlineInputControlRow';\r\nimport BlueTitleRow from '../../../../ui/BlueTitleRow';\r\nimport { TextAlignLeftRenderer } from '../../../../uiControls/SmartTableRenderers';\r\nimport { getOriginalValue } from '../../../../fms.core/data/TrackingModule';\r\nimport { useHistory } from 'react-router';\r\n\r\n// function MilestoneStatusRow({left, middle, right}:{left:React.ReactNode|string|null|undefined, middle:React.ReactNode|string|null|undefined, right:React.ReactNode|string|null|undefined}) {\r\n// return (\r\n// <>\r\n// \r\n// {/*
    {left}
    */}\r\n//
    {middle}
    \r\n//
    {right}
    \r\n//
    \r\n//
    \r\n// \r\n// );\r\n// }\r\n\r\nfunction SelectRenderer({data, row}:any) {\r\n const toggleSelection = data[0].toggleSelection;\r\n const selectedIndex = data[0].selectedIndex;\r\n const isView = data[0].isView;\r\n\r\n return
    toggleSelection(row.index)} disabled={isView} />
    ;\r\n}\r\n\r\nexport type OiMblMilestoneHandle = {\r\n executeApplyToAll: VoidFunction,\r\n};\r\n\r\ntype MblMilestoneProps = {\r\n mbl: OiMbl, //[save-sqlinfo]:OceanImportMbl,\r\n onChange: (x:Partial) => void, //[save-sqlinfo]:(x:Partial) => void,\r\n containerInfo: OmContainer[], //ContainerInfo,\r\n onContainerInfoChange: (x:OmContainer[]) => void, //(x:Partial) => void,\r\n isView: boolean,\r\n user: string,\r\n};\r\n\r\nconst MblMilestoneImpl: React.ForwardRefRenderFunction =({\r\n mbl,\r\n onChange,\r\n containerInfo,\r\n onContainerInfoChange,\r\n isView,\r\n user\r\n}, ref) => {\r\n React.useImperativeHandle(ref, () => ({\r\n executeApplyToAll: () => {\r\n const status = selectedIndex >= 0 && selectedIndex < containerInfo.length ? mbl.milestone?.eventItemList?.filter(v => v.cntrNo === containerInfo[selectedIndex].containerNo || (v.pimsCntrId > 0 && v.pimsCntrId === containerInfo[selectedIndex].pimsLinkId))??null : null;\r\n if (status && status.filter(x => x.datetime !== null ).length > 0) {\r\n applyContainerStatusToAll(status);\r\n }\r\n },\r\n }));\r\n\r\n const tableStorage = useTableStorage();\r\n\r\n const history = useHistory();\r\n const isOtherShipment = history.location.pathname.includes('otherShipment');\r\n\r\n const selectedIndex = mbl.milestoneContainerSelectedIndex ?? 0;\r\n function setSelectedIndex(milestoneContainerSelectedIndex:number) {\r\n onChange({ milestoneContainerSelectedIndex });\r\n }\r\n\r\n function toggleSelection(index:number) {\r\n setSelectedIndex(selectedIndex === index ? -1 : index);\r\n }\r\n\r\n /**\r\n * Update OmContainer's props at rowIndex by status\r\n * @param rowIndex index of container list\r\n * @param status \r\n */\r\n function onContainerStatusChange(cntrIndex:number, //[save-sqlinfo]status:Array\r\n status: Array, select: boolean) {\r\n\r\n const update = _.cloneDeep(containerInfo);\r\n // {\r\n const omCntr = update[cntrIndex];\r\n\r\n const pimsCntr = mbl.milestone?.cntrItemList.find(x => x.cntrNo === s.cntrNo || (x.id > 0 && x.id === s.pimsCntrId)); \r\n const msitem = OceanMblStatusMap.get(s.seq);\r\n\r\n if (msitem?.cntrDate) {\r\n const cntrDateToSet = !select ? getOriginalValue(mbl.oimContainerList[cntrIndex], msitem.cntrDate) : s.datetime;\r\n if (omCntr) _.set(omCntr, msitem.cntrDate, cntrDateToSet);\r\n if (pimsCntr && msitem.pimsCntrDate) _.set(pimsCntr, msitem.pimsCntrDate, cntrDateToSet);\r\n }\r\n \r\n if (msitem?.cntrLoc) {\r\n const locToSet = !select ? getOriginalValue(mbl.oimContainerList[cntrIndex],msitem.cntrLoc) : s.locName;\r\n if (omCntr) _.set(omCntr, msitem.cntrLoc, locToSet);\r\n if (pimsCntr && msitem.pimsCntrLoc) _.set(pimsCntr, msitem.pimsCntrLoc, locToSet);\r\n }\r\n });\r\n //save-sqlinfo>\r\n onContainerInfoChange(update);\r\n }\r\n\r\n function applyContainerStatusToAll(//[save-sqlinfo]status:Array\r\n status:Array) {\r\n const update = _.cloneDeep(containerInfo);\r\n\r\n // collect valid events\r\n // const statusUpdate = //[save-sqlinfo]status.filter((s:MilestoneContainerInfoStatus) => s.date && s.time);\r\n // status.filter(s => s.datetime);\r\n\r\n const statusUpdateWithIndices = status.map((status, index) => ({status, index})).filter(s => s.status.datetime);\r\n\r\n const changeProps = update[selectedIndex].changedProps.map(x => x.propertyName);\r\n\r\n const updatedProps = _.keys(update[selectedIndex]).filter(x => (\r\n x.endsWith('Date') ||\r\n x.endsWith('Loc') ||\r\n x.endsWith('ord') ||\r\n x.endsWith('atd') ||\r\n x.endsWith('carrierRls') ||\r\n x.endsWith('customRls') ||\r\n x.endsWith('ata') ||\r\n x.endsWith('rAtd') ||\r\n x.endsWith('rAta') ||\r\n x.endsWith('emptyReturn')\r\n ) && !!(update[selectedIndex] as any)[x] && (changeProps.includes(x)));\r\n\r\n update.forEach((x, i) => {\r\n if (i === selectedIndex) {\r\n return;\r\n }\r\n\r\n updatedProps.forEach(u => {\r\n (x as any)[u] = (update[selectedIndex] as any)[u];\r\n });\r\n\r\n if (mbl.milestone && mbl.milestone.eventItemList) {\r\n\r\n const itemList = mbl.milestone.eventItemList.filter(v => v.cntrNo === x.containerNo || (v.pimsCntrId > 0 && v.pimsCntrId === x.pimsLinkId));\r\n\r\n statusUpdateWithIndices.forEach(si => {\r\n if (itemList.length > si.index) {\r\n itemList[si.index].check = si.status.check;\r\n itemList[si.index].date = si.status.date;\r\n itemList[si.index].datetime = si.status.datetime;\r\n itemList[si.index].time = si.status.time;\r\n itemList[si.index].locName = si.status.locName;\r\n }\r\n })\r\n }\r\n })\r\n\r\n // {\r\n // statusUpdate.forEach((u:MilestoneContainerInfoStatus) => {\r\n // const i = x.milestone.status.findIndex((ms:MilestoneContainerInfoStatus) => ms.statusName === u.statusName);\r\n // if (i >= 0) {\r\n // x.milestone.status[i] = {...x.milestone.status[i], ...u};\r\n // }\r\n // });\r\n // });\r\n // update.forEach(x => {\r\n // statusUpdate.forEach(u => {\r\n // const i = mbl.milestone?.eventItemList?.findIndex(ms => ms.name === u.name && (ms.cntrNo === x.containerNo || (ms.pimsCntrId > 0 && ms.pimsCntrId === x.pimsLinkId))) ?? -1;\r\n // if (i >= 0) {\r\n // mbl.milestone?.eventItemList?.splice(i, 1, {...mbl.milestone?.eventItemList[i], ...u} as PimsCntrEvent);\r\n // }\r\n // });\r\n // });\r\n //save-sqlinfo>\r\n\r\n onContainerInfoChange(update);\r\n setSelectedIndex(-1);\r\n }\r\n\r\n const pickupNo = mbl.oimContainerList && mbl.oimContainerList\r\n ? mbl.oimContainerList.filter(x => !!x.pickupNo).map(x => x.pickupNo).join(', ')\r\n : '';\r\n \r\n const tableOptions:ApplicableTableSettings = {\r\n tableName: 'oi-mblSelectContainer',\r\n ...mblSelectContainer,\r\n height: '135px',\r\n data: mbl.milestone?.cntrItemList?.map((x, i) => ({...x, i, toggleSelection, selectedIndex, isView})) || [],\r\n rowRenderers: [\r\n { accessor: 'select', Cell: SelectRenderer },\r\n { accessor: 'cntrNo', Cell: TextAlignLeftRenderer },\r\n { accessor: 'cntrType', Cell: TextAlignLeftRenderer },\r\n ],\r\n customStorage: tableStorage,\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n Select Container (must select before update)} />\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {!isOtherShipment &&\r\n \r\n }\r\n\r\n {!isOtherShipment && \r\n \r\n }\r\n
    \r\n
    \r\n\r\n
    \r\n Container Status} />\r\n
    \r\n\r\n = 0 && selectedIndex < containerInfo.lineItems.length ? containerInfo.lineItems[selectedIndex].milestone.status : null}\r\n status={selectedIndex >= 0 && selectedIndex < containerInfo.length ? mbl.milestone?.eventItemList?.filter(v => v.cntrNo === containerInfo[selectedIndex].containerNo || (v.pimsCntrId > 0 && v.pimsCntrId === containerInfo[selectedIndex].pimsLinkId))??null : null}\r\n applyToAll={applyContainerStatusToAll}\r\n onChange={onContainerStatusChange}\r\n tableStorage={tableStorage}\r\n //[save-sqlinfo]defaultStatus={containerInfo.lineItems.length > 0 ? containerInfo.lineItems[0].milestone.status : null}\r\n //defaultStatus={containerInfo.length > 0 ? mbl.milestone?.eventItemList?.filter(v => v.cntrNo === containerInfo[0].containerNo || (v.pimsCntrId > 0 && v.pimsCntrId === containerInfo[0].pimsLinkId))??null : null}\r\n mbl={mbl}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nconst MblMilestone = React.forwardRef(MblMilestoneImpl);\r\n\r\nexport default React.memo(MblMilestone);\r\n","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport Skeleton, { SkeletonTheme } from \"react-loading-skeleton\";\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport { OiMbl } from '../../../fms.core/OiMbl';\r\nimport { ApiResult, InsertResultsWithData } from '../../../framework.core/data/ApiResult';\r\nimport { JobNames } from '../../../framework.core/JobNames';\r\nimport useDirtyCheck from '../../../hooks/useDirtyCheck2';\r\n\r\nimport MblMilestoneView, { OiMblMilestoneHandle } from './implementation/MblMilestone';\r\n\r\nimport { useTypedFastStorage } from '../../../hooks/useFastStorage';\r\n\r\nimport { AddEventToNotice, CreateCargoEventLog, FindIndexOfKeyStartsWith, prepareOiMblForView } from './implementation/mblUtils';\r\nimport { OmContainer } from '../../../fms.core/OmContainer';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport { SQLField, SQLInfo, SQLType } from '../../../framework.core/data/SQLInfo';\r\nimport { historyUpdate } from '../../../fms.data/modules/FmsModFunc';\r\nimport { TrackableEntity } from '../../../fms.core/data/ChangeTrackable';\r\nimport { getSQLInfoList } from '../../../fms.core/data/TrackingModule';\r\nimport { MblStatusViewModel, OceanMblStatusMap, OiContainerEvents } from '../../../fms.core/MblStatusViewModel';\r\nimport SecondaryButton from '../../../ui/SecondaryButton';\r\nimport useSetEditedId from '../../../hooks/useSetEditedId';\r\nimport { compareIso, formatDateTime, now } from '../../../dateUtils';\r\nimport { CargoEventName } from '../../../framework.core/CargoEventName';\r\nimport { CargoEventLog } from '../../../fms.core/CargoEventLog';\r\nimport constants from '../../../constants';\r\nimport fastStorage from '../../../fastStorage';\r\nimport JobListViewContext from '../../common/JobListViewContext';\r\n\r\nconst eventMappings = [\r\n { prefix: \"0|\", name: CargoEventName.FmsBooking, seq: 9, mappingKey:'0' },\r\n { prefix: \"1|\", name: CargoEventName.EmptyOut, seq: 11, mappingKey:'1' },\r\n { prefix: \"250\", name: CargoEventName.FullIn, seq: 13, mappingKey:'250' },\r\n { prefix: \"3|\", name: CargoEventName.VesselLoaded, seq: 15, mappingKey:'15' },\r\n { prefix: \"260,470\", name: CargoEventName.VesselDeparted, seq: 16, mappingKey:'260' },\r\n { prefix: \"5|\", name: CargoEventName.CarrierRls, seq: 17, mappingKey:'5' },\r\n { prefix: \"6|\", name: CargoEventName.CustomsRls, seq: 18, mappingKey:'6' },\r\n { prefix: \"270,460\", name: CargoEventName.VesselArrived, seq: 19, mappingKey:'270' },\r\n { prefix: \"275\", name: CargoEventName.VesselDischarged, seq: 20, mappingKey:'275' },\r\n { prefix: \"9|\", name: CargoEventName.FmsDlvrToCfs, seq: 5, mappingKey:'9' },\r\n { prefix: \"290\", name: CargoEventName.RailDeparted, seq: 21, mappingKey:'290' },\r\n { prefix: \"295\", name: CargoEventName.RailArrived, seq: 22, mappingKey:'295' },\r\n { prefix: \"12|\", name: CargoEventName.PickAvail, seq: 23, mappingKey:'12' },\r\n { prefix: \"13|\", name: CargoEventName.FullOut, seq: 24, mappingKey:'13' },\r\n { prefix: \"14|\", name: CargoEventName.Delivered, seq: 25, mappingKey:'14' },\r\n { prefix: \"15|\", name: CargoEventName.EmptyIn, seq: 26, mappingKey:'15' },\r\n];\r\n\r\nfunction getStorageKey(id: string) {\r\n return `oi-mbl-bl-status-${id}`;\r\n}\r\n\r\nfunction MblMilestoneImpl({\r\n mblId,\r\n storageKey,\r\n isView,\r\n onClose,\r\n}: {\r\n mblId: number,\r\n storageKey: string,\r\n isView: boolean,\r\n onClose: (x:OiMbl|null)=> void,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const setSavedEntity = useSetEditedId([JobNames.OIContainer]);\r\n\r\n const [initialized, setInitialized] = useState(false);\r\n \r\n const [mbl, setMbl, removeMbl, mblRef] = useTypedFastStorage(storageKey, null);\r\n const [/*blStatus*/, /*setBlStatus*/, removeBlStatus, /*blStatusRef*/] = useTypedFastStorage(getStorageKey(mblId.toString()), null);\r\n const {setCleanState} = useDirtyCheck(\r\n storageKey,\r\n ['updated', 'updatedBy']);\r\n \r\n const jobListContext = useContext(JobListViewContext);\r\n \r\n useEffect(() => {\r\n initialize();\r\n return () => {\r\n cleanup();\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function doClose(notifyResult: boolean = false) {\r\n //cleanup();\r\n onClose(notifyResult ? mblRef.current : null);\r\n }\r\n \r\n function cleanup() {\r\n removeMbl();\r\n removeBlStatus();\r\n }\r\n\r\n async function initialize() {\r\n const apiResult:ApiResult = await appContext.api.getJobDetail(JobNames.OIMbl, { id: mblId});\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog('Cannot load data');\r\n doClose();\r\n return;\r\n }\r\n const loadedMbl = new OiMbl(apiResult.result);\r\n\r\n const blApiResult: ApiResult = await appContext.api.getMblStatusViewModel(JobNames.OIMbl, mblId);\r\n loadedMbl.milestone = new MblStatusViewModel(blApiResult?.result||null);\r\n prepareOiMblForView(loadedMbl);\r\n\r\n loadedMbl.milestoneContainerSelectedIndex = loadedMbl.oimContainerList && loadedMbl.oimContainerList.length > 0\r\n ? 0\r\n : -1;\r\n\r\n const loadedModelObj = new OiMbl(_.cloneDeep(loadedMbl));\r\n setCleanState(loadedModelObj);\r\n setMbl(loadedModelObj);\r\n if(mblRef.current !== null) {\r\n mblRef.current.trackable = true;\r\n }\r\n\r\n setInitialized(true);\r\n }\r\n\r\n // MContainer와 일치하는 항목 업데이트\r\n function RefreshListView(keyValue: number, value: string|null) {\r\n if (!value || keyValue <= 0) return;\r\n\r\n const keyMatch = _.keys(fastStorage).find(x => x.startsWith('ifms-list-data-/common/joblistview/MYEVT/myEvent'));\r\n if (keyMatch) {\r\n const listData = _.values(fastStorage[keyMatch]);\r\n listData.filter(x => x.mCntrId === keyValue).forEach(row => {\r\n row.carrierRlsDate = value;\r\n jobListContext.updateDataRow(row);\r\n });\r\n }\r\n }\r\n\r\n async function save() {\r\n if (!mbl || !mblRef.current) {\r\n throw new Error('Invalid operation');\r\n }\r\n\r\n if(!mblRef.current.isDirty) {\r\n //await showGlobalOkDialog(

    Nothing to save!!!

    );\r\n doClose();\r\n return;\r\n }\r\n\r\n const si:SQLInfo[] = [];\r\n\r\n let hiSqlInfo = historyUpdate(\"T_OIMMAIN\", mblRef.current?.id??0, appContext.user?.id??'', 'Update B/L Info');\r\n if (hiSqlInfo) {\r\n si.push(hiSqlInfo);\r\n }\r\n\r\n const blStatusInfoList = getSQLInfoList(mbl as TrackableEntity);\r\n blStatusInfoList.push(...si);\r\n\r\n // MBL > Carrier Release 날짜가 없는 경우 Container Status에 입력한 최소 값으로 업데이트\r\n let cntrId = 0, prevCntrId = 0;\r\n let carrierRlsDate = '', prevCarrierRlsDate = '';\r\n\r\n blStatusInfoList.filter(x => x.tableName === \"T_OIMCONTAINER\").forEach(cntr => {\r\n const carrierRls = cntr?.fields.find(f => f.fieldName === \"f_carrierrls\");\r\n if (carrierRls) {\r\n carrierRlsDate = carrierRls.value;\r\n cntrId = cntr.key?.value??0;\r\n\r\n // My Evnet List 갱신\r\n RefreshListView(cntrId, carrierRlsDate);\r\n\r\n if (prevCarrierRlsDate && compareIso(carrierRlsDate, prevCarrierRlsDate) > 0) {\r\n carrierRlsDate = prevCarrierRlsDate;\r\n cntrId = prevCntrId;\r\n }\r\n prevCarrierRlsDate = carrierRlsDate;\r\n prevCntrId = cntr.key?.value??0;\r\n }\r\n });\r\n\r\n if (!mblRef.current?.rlsDate && cntrId) {\r\n const sqlInfo = new SQLInfo ({\r\n tableName: \"T_OIMMAIN\",\r\n type: SQLType.Update,\r\n fields: [\r\n new SQLField({ fieldName: \"F_RLSDate\", propertyName: \"rlsDate\", value: carrierRlsDate }),\r\n new SQLField({ fieldName: \"rlsby\", propertyName: \"rlsDateBy\", value: appContext.user?.id??'' }),\r\n new SQLField({ fieldName: \"F_U2ID\", propertyName: \"u2Id\", value: appContext.user?.id??'' }),\r\n new SQLField({ fieldName: \"F_U2Date\", propertyName: \"u2Date\", value: now() }),\r\n ],\r\n key: new SQLField({ fieldName: \"F_ID\", propertyName: \"Id\", value: mblRef.current?.id??0 })\r\n });\r\n blStatusInfoList.push(sqlInfo);\r\n\r\n setMbl({ rlsDate: carrierRlsDate, rlsDateBy: appContext.user?.id??''});\r\n }\r\n \r\n\r\n const apiResult:ApiResult = await appContext.api.saveMblStatusViewModel(blStatusInfoList);\r\n \r\n if (apiResult && apiResult.success) {\r\n await UpdateLogMblMilestone(blStatusInfoList, mbl); //[t49-webhook] LogMblMilestone. 이 기능은 TrackingService를 사용하지 않더라도 적용한다.\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n setSavedEntity(mblRef.current.id.toString(), false);\r\n } else {\r\n await showGlobalOkDialog(
    \r\n

    Cannot save

    \r\n

    {apiResult?.message}

    \r\n
    );\r\n }\r\n\r\n doClose(true);\r\n }\r\n\r\n async function UpdateLogMblMilestone(blStatusInfoList: SQLInfo[], mbl:OiMbl) {\r\n const cntrDataWithSeq: {\r\n loc: string,\r\n cntrNo: string,\r\n seq: number,\r\n }[] = []\r\n\r\n const dicEvent = CollectMblEvents(blStatusInfoList, cntrDataWithSeq);\r\n if (dicEvent.length > 0) {\r\n const cmile: CargoEventLog[] = [];\r\n const lastEvents: CargoEventLog[] = [];\r\n\r\n for (const mapping of eventMappings) {\r\n const dindex = FindIndexOfKeyStartsWith(dicEvent, mapping.prefix);\r\n if (dindex >= 0) {\r\n const cargoEventLog = CreateCargoEventLog(mbl.mblNo, mapping.name, dicEvent[dindex], cntrDataWithSeq.filter(x => x.seq === mapping.seq), appContext.user?.id ?? '');\r\n cmile.push(...cargoEventLog);\r\n }\r\n }\r\n\r\n const uniqueCmileSet = new Set(cmile.map(item => item.cntrNo));\r\n Array.from(uniqueCmileSet).forEach(x => {\r\n const tempData = cmile.filter(c => c.cntrNo === x).sort((a, b) => new Date(a.utcTime ?? '').getTime() - new Date(b.utcTime ?? '').getTime());\r\n lastEvents.push(tempData[tempData.length - 1]);\r\n });\r\n\r\n if (lastEvents.length > 0) {\r\n const apiResult = await appContext.api.trackingLogMblEvents(JobNames.OIMbl, mblId, lastEvents);;\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

    );\r\n }\r\n }\r\n }\r\n }\r\n\r\n function CollectMblEvents(blStatusInfoList: SQLInfo[], cntrDataWithSeq: { loc: string, cntrNo: string, seq: number }[]) {\r\n const changeData: { pimsCntrId: number, seqNum: number, dateTime: string }[] = [];\r\n const dicEvent: { key: string, value: string }[] = [];\r\n\r\n const changeContainerData = blStatusInfoList.filter(x => x.tableName === 'T_OIMCONTAINER');\r\n\r\n OiContainerEvents.forEach((enumEvent) => {\r\n changeContainerData.forEach(x => {\r\n const findData = x.fields.find(x => x.propertyName.endsWith(OceanMblStatusMap.get(enumEvent)?.cntrDate ?? ''));\r\n if (findData) {\r\n const pimsCntrId = mbl?.oimContainerList.find(y => y.id === x.key?.value)?.pimsLinkId ?? 0;\r\n changeData.push({ pimsCntrId: pimsCntrId, seqNum: enumEvent, dateTime: formatDateTime(findData.value) });\r\n\r\n const containerNo = mbl?.oimContainerList.find(y => y.id === x.key?.value)?.containerNo ?? ''; //GetLocNameFromEvent\r\n const cntr = mbl?.oimContainerList.find(x => x.containerNo === containerNo);\r\n const cntrLoc = OceanMblStatusMap.get(enumEvent)?.cntrLoc ?? '';\r\n\r\n cntrDataWithSeq.push({ loc: Object.getOwnPropertyDescriptor(cntr, cntrLoc)?.value, seq: enumEvent, cntrNo: containerNo })\r\n }\r\n })\r\n });\r\n changeData.forEach(x => {\r\n const seqNum = x.seqNum;\r\n const mappingKey = eventMappings.find(x => x.seq === seqNum)?.mappingKey;\r\n if (mappingKey)\r\n AddEventToNotice(dicEvent, `${mappingKey}|${x.dateTime}`, String(x.pimsCntrId));\r\n });\r\n\r\n return dicEvent;\r\n }\r\n\r\n return (\r\n
    \r\n {!initialized &&\r\n
    \r\n \r\n \r\n \r\n
    \r\n }\r\n\r\n {!!mbl &&\r\n \r\n }\r\n
    \r\n );\r\n}\r\n\r\nfunction MblMilestoneInitializedImpl({\r\n mbl,\r\n setMbl,\r\n isView,\r\n save,\r\n close,\r\n}: {\r\n mbl: OiMbl,\r\n setMbl: (x:Partial) => void,\r\n isView: boolean,\r\n save: () => Promise,\r\n close: VoidFunction,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const milestoneRef = useRef(null);\r\n\r\n const containerInfo:OmContainer[] = mbl.oimContainerList ?? [];\r\n\r\n function changeContainerInfo(ci:OmContainer[]) {\r\n setMbl({ oimContainerList: ci });\r\n }\r\n\r\n async function applyToAll() {\r\n if (milestoneRef.current) {\r\n milestoneRef.current.executeApplyToAll();\r\n await save();\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n
    \r\n \r\n Apply to All Container\r\n \r\n \r\n Update\r\n \r\n \r\n Cancel\r\n \r\n
    \r\n \r\n );\r\n}\r\n\r\nconst MblMilestonePopup = ({\r\n mblId,\r\n storageKey,\r\n isView,\r\n onClose,\r\n}:{\r\n mblId: number,\r\n storageKey: string,\r\n isView: boolean,\r\n onClose: (x:OiMbl|null)=> void,\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nMblMilestonePopup.defaultProps = {\r\n};\r\n\r\nMblMilestonePopup.propTypes = {\r\n mblId: PropTypes.number.isRequired,\r\n storageKey: PropTypes.string.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n isView: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport default React.memo(MblMilestonePopup);\r\n\r\n\r\n","export const DefaultContainerMilestoneStatus = [\r\n { editable: true, name: 'Pickup', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Flight Departure', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Customs Release', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Flight Arrival', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Available for Delivery', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Delivery to Customer', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n];","import PropTypes from 'prop-types';\r\nimport React, { useState } from 'react';\r\n\r\nimport {ApplicableTableSettings, mblStatus} from '../../../../tableSettings';\r\n\r\nimport IfmsDate from '../../../../ui/Date';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport CheckBox from '../../../../ui/CheckBox';\r\nimport {Time} from '../../../../ui/DateTime';\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\nimport OceanUnPortLookupField from '../../../../uiControls/lookup/OceanUnPortLookupField';\r\nimport {formatDate, formatDateTime, getTime, now} from '../../../../dateUtils';\r\nimport {PimsCntrEvent} from \"../../../../fms.core/PimsCntrEvent\";\r\nimport {DefaultContainerMilestoneStatus} from \"./implementationConstants\";\r\nimport { TableStorage } from '../../../../hooks/useTableStorage';\r\nimport { AiMbl } from '../../../../fms.core/AiMbl';\r\nimport { getOriginalValue } from '../../../../fms.core/data/TrackingModule';\r\n\r\nfunction SelectRenderer({data, row}: any) {\r\n if (!row.original.selectable) {\r\n return
    ;\r\n }\r\n\r\n const toggleRow = data[0].toggleRow;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n const selected = selectedIndeces.findIndex((x: any) => x === row.index) >= 0;\r\n\r\n return
    toggleRow(row.index, row)} />
    ;\r\n}\r\n\r\nfunction StatusNameRenderer({ cell }:any) {\r\n return
    {cell.value}
    ;\r\n}\r\n\r\nfunction DateRenderer({data, row}:any) {\r\n if (!row.original.selectable) {\r\n return
    ;\r\n }\r\n\r\n const onRowChange = data[0].onRowChange;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n const selected = selectedIndeces.findIndex((x:any) => x === row.index) >= 0;\r\n\r\n function onChange(date: string|null) {\r\n if (!date) {\r\n onRowChange(row.index, {\r\n date: null,\r\n time: null,\r\n datetime: null,\r\n });\r\n } else {\r\n const tIndex = date.indexOf('T');\r\n const datetime = tIndex >= 0 ? `${date.substring(0, tIndex)}T${row.original.time}` : row.original.datetime;\r\n\r\n onRowChange(row.index, {\r\n date: date,\r\n datetime,\r\n });\r\n }\r\n }\r\n\r\n return
    ;\r\n}\r\n\r\nfunction TimeRenderer({data, row}:any) {\r\n if (!row.original.selectable) {\r\n return
    ;\r\n }\r\n\r\n const onRowChange = data[0].onRowChange;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n const selected = selectedIndeces.findIndex((x:any) => x === row.index) >= 0;\r\n \r\n function onChange(changedTime: string|null) {\r\n if (!row.original.date) {\r\n return;\r\n }\r\n\r\n const timeToApply = changedTime ?? '00:00';\r\n\r\n const tIndex = row.original.date.indexOf('T');\r\n const datetime = tIndex >= 0 ? `${row.original.date.substring(0, tIndex)}T${timeToApply}` : row.original.datetime;\r\n\r\n onRowChange(row.index, {\r\n time: timeToApply,\r\n datetime,\r\n });\r\n }\r\n\r\n return
    ;\r\n}\r\n\r\nfunction LocationRenderer({data, row}:any) {\r\n if (!row.original.selectable) {\r\n return ;\r\n }\r\n\r\n const onRowChange = data[0].onRowChange;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n const selected = selectedIndeces.findIndex((x:any) => x === row.index) >= 0;\r\n\r\n return selected\r\n ?
    \r\n onRowChange(row.index, {locName})}\r\n onSelect={location => onRowChange(row.index, {locName: location.portName})}\r\n searchBy=\"portName\"\r\n />\r\n
    \r\n :
    \r\n {row.original.locName ?? ''}\r\n
    ;\r\n}\r\n\r\nfunction LastEventTimeRenderer({row, data}:any) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction MawbAirLineStatus({\r\n status,\r\n tableStorage,\r\n onChange,\r\n mawb,\r\n}:{\r\n status: Array|null,\r\n onChange: (status: Array) => void,\r\n tableStorage: TableStorage,\r\n mawb:AiMbl\r\n}) {\r\n const [selectedIndeces, setSelectedIndeces] = useState>([]);\r\n\r\n function toggleRow(rowIndex:any, row:any) {\r\n const index = selectedIndeces.findIndex(x => x === rowIndex);\r\n if (index >= 0) {\r\n const indeces = [...selectedIndeces];\r\n indeces.splice(index, 1);\r\n setSelectedIndeces(indeces);\r\n\r\n let findProp1 = '';\r\n let findProp2 = '';\r\n switch(rowIndex){\r\n case 0:\r\n findProp1 = 'pickupLoc';\r\n findProp2 = 'pickupDate';\r\n break;\r\n case 1:\r\n findProp1 = 'atdLoc';\r\n findProp2 = 'atd';\r\n break;\r\n case 2:\r\n findProp1 = 'customsRlsLoc';\r\n findProp2 = 'customsRls';\r\n break;\r\n case 3:\r\n findProp1 = 'ataLoc';\r\n findProp2 = 'ata';\r\n break;\r\n case 4:\r\n findProp1 = 'availLoc';\r\n findProp2 = 'avail';\r\n break;\r\n case 5:\r\n findProp1 = 'delvLoc';\r\n findProp2 = 'delivery';\r\n break;\r\n }\r\n\r\n onRowChange(rowIndex, {\r\n check: false,\r\n date: null,\r\n time: null,\r\n datetime: getOriginalValue(mawb, findProp2),\r\n locName: getOriginalValue(mawb, findProp1),\r\n });\r\n } else {\r\n setSelectedIndeces([...selectedIndeces, rowIndex]);\r\n\r\n const currentTime = now();\r\n let tempLocName = '';\r\n const time = getTime(currentTime);\r\n\r\n switch (rowIndex) {\r\n case 0: case 1:\r\n tempLocName = mawb.departureName;\r\n break;\r\n case 2: case 3: case 4: case 5:\r\n tempLocName = mawb.discharge;\r\n break;\r\n default:\r\n tempLocName = '';\r\n break;\r\n }\r\n\r\n onRowChange(rowIndex, {\r\n check: true,\r\n date: formatDate(currentTime),\r\n time,\r\n datetime: currentTime,\r\n locName: tempLocName\r\n });\r\n }\r\n }\r\n \r\n function onRowChange(rowIndex:number, change:any) {\r\n if (!status) {\r\n return;\r\n }\r\n\r\n Object.assign(status[rowIndex], change);\r\n onChange([status[rowIndex]]);\r\n }\r\n\r\n const statusData = status ?? DefaultContainerMilestoneStatus;\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n tableName: 'mawblStatus',\r\n ...mblStatus,\r\n data: statusData.map((x:any, i:number) => ({...x, i, onRowChange, toggleRow, selectable: true, selectedIndeces, /* name: x.statusName */})),\r\n rowRenderers: [\r\n { accessor: 'check', Cell: SelectRenderer },\r\n { accessor: 'name', Cell: StatusNameRenderer },\r\n { accessor: 'date', Cell: DateRenderer },\r\n { accessor: 'time', Cell: TimeRenderer },\r\n { accessor: 'locName', Cell: LocationRenderer },\r\n { accessor: 'lastDate', Cell: LastEventTimeRenderer }\r\n ],\r\n customStorage: tableStorage,\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n}\r\n\r\nMawbAirLineStatus.propTypes = {\r\n //selectedIndex: PropTypes.number,\r\n status: PropTypes.array,\r\n //applyToAll: PropTypes.func,\r\n onChange: PropTypes.func,\r\n tableStorage: PropTypes.object,\r\n defaultStatus: PropTypes.any,\r\n};\r\n\r\nexport default React.memo(MawbAirLineStatus);\r\n","import React from 'react';\r\n\r\nimport { AiMbl } from '../../../../fms.core/AiMbl';\r\n\r\nimport InlineInputControlRow from '../../../../ui/layout/InlineInputControlRow';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport Date from '../../../../ui/Date';\r\nimport DateTime from '../../../../ui/DateTime';\r\n\r\nimport InlineInputControlRowNoLabel from '../../../../ui/layout/InlineInputControlRowNoLabel';\r\nimport BlueTitleRow from '../../../../ui/BlueTitleRow';\r\nimport BlStatusRow from '../../../common/BlStatusRow';\r\nimport MawbAirLineStatus from './MawbAirLineStatus';\r\nimport { PimsCntrEvent } from '../../../../fms.core/PimsCntrEvent';\r\nimport useTableStorage from '../../../../hooks/useTableStorage';\r\n\r\nfunction MawbMilestone({\r\n mawb,\r\n onChange,\r\n}: {\r\n mawb: AiMbl,\r\n onChange: (x: Partial) => void,\r\n}) {\r\n const tableStorage = useTableStorage();\r\n\r\n function onContainerStatusChange(status: Array) {\r\n\r\n let result: Partial = {};\r\n\r\n status.forEach(s => {\r\n switch (s.seq) {\r\n case 0:\r\n result = {\r\n pickupDate: s.datetime,\r\n pickupLoc: s.locName ?? '',\r\n };\r\n break;\r\n case 1:\r\n result = {\r\n atd: s.datetime,\r\n atdLoc: s.locName ?? '',\r\n };\r\n break;\r\n case 2:\r\n result = {\r\n customsRls: s.datetime,\r\n customsRlsLoc: s.locName ?? '',\r\n isCustomsRls: s.check\r\n };\r\n break;\r\n case 3:\r\n result = {\r\n ata: s.datetime,\r\n ataLoc: s.locName ?? '',\r\n };\r\n break;\r\n case 4:\r\n result = {\r\n avail: s.datetime,\r\n availLoc: s.locName ?? '',\r\n };\r\n break;\r\n case 5:\r\n result = {\r\n delivery: s.datetime,\r\n delvLoc: s.locName ?? '',\r\n };\r\n break;\r\n }\r\n });\r\n\r\n onChange({ ...result });\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n  \r\n \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n {\r\n //window.console.log(checked);\r\n }}\r\n dateTime={mawb.closeDate}\r\n userId={mawb.closedBy}\r\n showDatePlaceHolder={false}\r\n />\r\n \r\n\r\n \r\n { }}\r\n dateTime={mawb.actClosed ? mawb.actCloseDate : ''}\r\n userId={mawb.actClosed ? mawb.actClosedBy : ''}\r\n showDatePlaceHolder={false}\r\n />\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n Airline Status} />\r\n
    \r\n\r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default React.memo(MawbMilestone);\r\n","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\nimport Skeleton, { SkeletonTheme } from \"react-loading-skeleton\";\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport { ApiResult, InsertResultsWithData } from '../../../framework.core/data/ApiResult';\r\nimport {JobNames} from '../../../framework.core/JobNames';\r\nimport useDirtyCheck from '../../../hooks/useDirtyCheck2';\r\nimport MawbMilestoneView from './implementation/MawbMilestone';\r\nimport { useTypedFastStorage } from '../../../hooks/useFastStorage';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport { TrackableEntity } from '../../../fms.core/data/ChangeTrackable';\r\nimport { checkPropDirty, getSQLInfoList } from '../../../fms.core/data/TrackingModule';\r\nimport {AiMbl} from \"../../../fms.core/AiMbl\";\r\nimport {prepareAiMawbModelForView} from \"./util\";\r\nimport SecondaryButton from '../../../ui/SecondaryButton';\r\nimport { AiAirLineEvents, AirMblStatusMap, MblStatusViewModel } from '../../../fms.core/MblStatusViewModel';\r\nimport { CargoEventName } from '../../../framework.core/CargoEventName';\r\nimport { SQLInfo } from '../../../framework.core/data/SQLInfo';\r\nimport { CargoEventLog } from '../../../fms.core/CargoEventLog';\r\nimport { AddEventToNotice, CreateCargoEventLog, FindIndexOfKeyStartsWith } from '../../oceanImport/mbl/implementation/mblUtils';\r\nimport { formatDateTime } from '../../../dateUtils';\r\nimport fastStorage from '../../../fastStorage';\r\nimport JobListViewContext from '../../common/JobListViewContext';\r\nimport constants from '../../../constants';\r\n\r\nconst eventMappings = [\r\n { prefix: \"0|\", name: CargoEventName.FullIn, seq: 0, mappingKey:'0' },\r\n { prefix: \"1|\", name: CargoEventName.VesselDeparted, seq: 1, mappingKey:'1' },\r\n { prefix: \"2|\", name: CargoEventName.CustomsRls, seq: 2, mappingKey:'2' },\r\n { prefix: \"3|\", name: CargoEventName.VesselArrived, seq: 3, mappingKey:'3' },\r\n { prefix: \"4|\", name: CargoEventName.PickAvail, seq: 4, mappingKey:'4' },\r\n { prefix: \"5|\", name: CargoEventName.Delivered, seq: 5, mappingKey:'5' },\r\n];\r\n\r\nfunction MawbMilestoneImpl({\r\n mawbId,\r\n storageKey,\r\n onClose,\r\n setMbl,\r\n}: {\r\n mawbId: number,\r\n storageKey: string,\r\n onClose: VoidFunction,\r\n setMbl: any\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const [initialized, setInitialized] = useState(false);\r\n\r\n const [mawb, setMawb, removeMawb, mawbRef] = useTypedFastStorage(storageKey, null);\r\n const [/*blStatus*/, /*setBlStatus*/, removeBlStatus, /*blStatusRef*/] = useTypedFastStorage(storageKey, null);\r\n const {setCleanState} = useDirtyCheck(storageKey, ['updated', 'updatedBy']);\r\n\r\n useEffect(() => {\r\n initialize();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function doClose() {\r\n cleanup();\r\n onClose();\r\n }\r\n\r\n function cleanup() {\r\n removeMawb();\r\n removeBlStatus();\r\n }\r\n\r\n function RefreshListView(mawbId: number) {\r\n const editModelKey = 'ifms-list-data-/common/joblistview/aiMawb/airImport';\r\n const keyMatch = _.keys(fastStorage).find(x => x.startsWith(editModelKey));\r\n if (keyMatch) {\r\n const listData = _.values(fastStorage[keyMatch]);\r\n listData.filter(x => x.id === mawbId)[0].customsRlsd = mawbRef.current?.isCustomsRls;\r\n jobListContext.updateDataRow(listData.filter(x => x.id === mawbId)[0]);\r\n }\r\n }\r\n\r\n function RefreshDetailView() {\r\n if (setMbl) {\r\n setMbl({\r\n isCustomsRls: mawbRef.current?.isCustomsRls,\r\n customsRls: mawbRef.current?.customsRls,\r\n customsRlsBy: appContext.user?.id,\r\n })\r\n }\r\n }\r\n\r\n async function initialize() {\r\n // Load MAWB\r\n const apiResult:ApiResult = await appContext.api.getJobDetail(JobNames.AIMbl, { id: mawbId});\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog('Cannot load data');\r\n doClose();\r\n return;\r\n }\r\n\r\n const loadedMawb = new AiMbl(apiResult.result);\r\n\r\n const blApiResult:ApiResult = await appContext.api.getMblStatusViewModel(JobNames.AIMbl, mawbId);\r\n loadedMawb.milestone = new MblStatusViewModel(blApiResult?.result ?? null)\r\n prepareAiMawbModelForView(loadedMawb);\r\n\r\n const loadedModelObj = new AiMbl(_.cloneDeep(loadedMawb));\r\n setCleanState(loadedModelObj);\r\n setMawb(loadedModelObj);\r\n \r\n if(mawbRef.current !== null) {\r\n mawbRef.current.trackable = true;\r\n }\r\n\r\n setInitialized(true);\r\n }\r\n\r\n async function save() {\r\n if (!mawb || !mawbRef.current) {\r\n throw new Error('Invalid operation');\r\n }\r\n\r\n if(!mawbRef.current.isDirty) {\r\n //await showGlobalOkDialog(

    Nothing to save!!!

    );\r\n doClose();\r\n return;\r\n }\r\n \r\n const blStatusInfoList = getSQLInfoList(mawb as TrackableEntity);\r\n\r\n const apiResult:ApiResult = await appContext.api.saveMblStatusViewModel(blStatusInfoList);\r\n\r\n if (apiResult && apiResult.success) {\r\n await UpdateLogMawbMilestone(blStatusInfoList,mawb); //[t49-webhook] LogMblMilestone. 이 기능은 TrackingService를 사용하지 않더라도 적용한다.\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n if (checkPropDirty(mawb, 'isCustomsRls')) {\r\n RefreshListView(mawbId);\r\n RefreshDetailView();\r\n }\r\n } else {\r\n await showGlobalOkDialog(
    \r\n

    Cannot save

    \r\n

    {apiResult?.message}

    \r\n
    );\r\n }\r\n\r\n doClose();\r\n }\r\n \r\n async function UpdateLogMawbMilestone(blStatusInfoList: SQLInfo[], mawb:AiMbl) {\r\n const cntrDataWithSeq: {\r\n loc: string,\r\n cntrNo: string,\r\n seq: number,\r\n }[] = []\r\n\r\n const dicEvent = CollectMawbEvents(blStatusInfoList, cntrDataWithSeq);\r\n if (dicEvent.length > 0) {\r\n const cmile: CargoEventLog[] = [];\r\n const lastEvents: CargoEventLog[] = [];\r\n\r\n for (const mapping of eventMappings) {\r\n const dindex = FindIndexOfKeyStartsWith(dicEvent, mapping.prefix);\r\n if (dindex >= 0) {\r\n const cargoEventLog = CreateCargoEventLog(mawb.mawbNo, mapping.name, dicEvent[dindex], cntrDataWithSeq.filter(x => x.seq === mapping.seq), appContext.user?.id ?? '');\r\n cmile.push(...cargoEventLog);\r\n }\r\n }\r\n\r\n const uniqueCmileSet = new Set(cmile.map(item => item.cntrNo));\r\n Array.from(uniqueCmileSet).forEach(x => {\r\n const tempData = cmile.filter(c => c.cntrNo === x).sort((a, b) => new Date(a.utcTime ?? '').getTime() - new Date(b.utcTime ?? '').getTime());\r\n lastEvents.push(tempData[tempData.length - 1]);\r\n });\r\n\r\n if (lastEvents.length > 0) {\r\n const apiResult = await appContext.api.trackingLogMblEvents(JobNames.AIMbl, mawbId, lastEvents);;\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

    );\r\n }\r\n }\r\n }\r\n }\r\n\r\n function CollectMawbEvents(blStatusInfoList: SQLInfo[], cntrDataWithSeq: { loc: string, cntrNo: string, seq: number }[]) {\r\n const changeData: { pimsCntrId: number, seqNum: number, dateTime: string }[] = [];\r\n const dicEvent: { key: string, value: string }[] = [];\r\n\r\n AiAirLineEvents.forEach((enumEvent) => {\r\n blStatusInfoList.forEach(x => {\r\n const findData = x.fields.find(x => x.propertyName === AirMblStatusMap.get(enumEvent)?.cntrDate);\r\n if (findData) {\r\n const pimsCntrId = mawb?.milestone?.eventItemList[0].pimsCntrId ?? 0;\r\n changeData.push({ pimsCntrId: pimsCntrId, seqNum: enumEvent, dateTime: formatDateTime(findData.value) });\r\n const loc = x.fields.find(x => x.propertyName === AirMblStatusMap.get(enumEvent)?.cntrLoc);\r\n\r\n cntrDataWithSeq.push({ loc: loc?.value, seq: enumEvent, cntrNo: '' })\r\n }\r\n })\r\n });\r\n changeData.forEach(x => {\r\n const seqNum = x.seqNum;\r\n const mappingKey = eventMappings.find(x => x.seq === seqNum)?.mappingKey;\r\n if (mappingKey)\r\n AddEventToNotice(dicEvent, `${mappingKey}|${x.dateTime}`, String(x.pimsCntrId));\r\n });\r\n\r\n return dicEvent;\r\n }\r\n\r\n return (\r\n
    \r\n {!initialized &&\r\n
    \r\n \r\n \r\n \r\n
    \r\n }\r\n {!!mawb && initialized &&\r\n
    \r\n \r\n\r\n
    \r\n \r\n Update\r\n \r\n \r\n Cancel\r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n );\r\n}\r\n\r\nfunction MawbMilestoneInitializedImpl({\r\n mawb,\r\n setMawb,\r\n}: {\r\n mawb: AiMbl,\r\n setMawb: (x:Partial) => void,\r\n}) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nconst MawbMilestonePopup = ({\r\n mawbId,\r\n storageKey,\r\n onClose,\r\n setMbl,\r\n}:{\r\n mawbId: number,\r\n storageKey: string,\r\n onClose: VoidFunction,\r\n setMbl?:any\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nMawbMilestonePopup.defaultProps = {\r\n};\r\n\r\nMawbMilestonePopup.propTypes = {\r\n mawbId: PropTypes.number.isRequired,\r\n storageKey: PropTypes.string.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default React.memo(MawbMilestonePopup);\r\n","export const DefaultContainerMilestoneStatus = [\r\n { editable: true, name: 'Pickup', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Flight Departure', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Customs Release', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Flight Arrival', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Available for Delivery', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n { editable: true, name: 'Delivery to Customer', date: null, time: null, dateTime: null, location: null, lastEventDateTime: null },\r\n];","import PropTypes from 'prop-types';\r\nimport React, { useState } from 'react';\r\n\r\nimport {ApplicableTableSettings, mblStatus} from '../../../../tableSettings';\r\n\r\nimport IfmsDate from '../../../../ui/Date';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport CheckBox from '../../../../ui/CheckBox';\r\nimport {Time} from '../../../../ui/DateTime';\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\nimport OceanUnPortLookupField from '../../../../uiControls/lookup/OceanUnPortLookupField';\r\nimport {formatDate, formatDateTime, getTime, now} from '../../../../dateUtils';\r\nimport {PimsCntrEvent} from \"../../../../fms.core/PimsCntrEvent\";\r\nimport {DefaultContainerMilestoneStatus} from \"./implementationConstants\";\r\nimport { TableStorage } from '../../../../hooks/useTableStorage';\r\nimport { AeMbl } from '../../../../fms.core/AeMbl';\r\nimport { getOriginalValue } from '../../../../fms.core/data/TrackingModule';\r\n\r\nfunction SelectRenderer({data, row}: any) {\r\n if (!row.original.selectable) {\r\n return
    ;\r\n }\r\n\r\n const toggleRow = data[0].toggleRow;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n const selected = selectedIndeces.findIndex((x: any) => x === row.index) >= 0;\r\n\r\n return
    toggleRow(row.index)} />
    ;\r\n}\r\n\r\nfunction StatusNameRenderer({ cell }:any) {\r\n return
    {cell.value}
    ;\r\n}\r\n\r\nfunction DateRenderer({data, row}:any) {\r\n if (!row.original.selectable) {\r\n return
    ;\r\n }\r\n\r\n const onRowChange = data[0].onRowChange;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n const selected = selectedIndeces.findIndex((x:any) => x === row.index) >= 0;\r\n\r\n function onChange(date: string|null) {\r\n if (!date) {\r\n onRowChange(row.index, {\r\n date: null,\r\n time: null,\r\n datetime: null,\r\n });\r\n } else {\r\n const tIndex = date.indexOf('T');\r\n const datetime = tIndex >= 0 ? `${date.substring(0, tIndex)}T${row.original.time}` : row.original.datetime;\r\n\r\n onRowChange(row.index, {\r\n date: date,\r\n datetime,\r\n });\r\n }\r\n }\r\n\r\n return
    ;\r\n}\r\n\r\nfunction TimeRenderer({data, row}:any) {\r\n if (!row.original.selectable) {\r\n return
    ;\r\n }\r\n\r\n const onRowChange = data[0].onRowChange;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n const selected = selectedIndeces.findIndex((x:any) => x === row.index) >= 0;\r\n \r\n function onChange(changedTime: string|null) {\r\n if (!row.original.date) {\r\n return;\r\n }\r\n\r\n const timeToApply = changedTime ?? '00:00';\r\n\r\n const tIndex = row.original.date.indexOf('T');\r\n const datetime = tIndex >= 0 ? `${row.original.date.substring(0, tIndex)}T${timeToApply}` : row.original.datetime;\r\n\r\n onRowChange(row.index, {\r\n time: timeToApply,\r\n datetime,\r\n });\r\n }\r\n\r\n return
    ;\r\n}\r\n\r\nfunction LocationRenderer({data, row}:any) {\r\n if (!row.original.selectable) {\r\n return ;\r\n }\r\n\r\n const onRowChange = data[0].onRowChange;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n const selected = selectedIndeces.findIndex((x:any) => x === row.index) >= 0;\r\n\r\n return selected\r\n ?
    \r\n onRowChange(row.index, {locName})}\r\n onSelect={location => onRowChange(row.index, {locName: location.portName})}\r\n searchBy=\"portName\"\r\n />\r\n
    \r\n :
    \r\n {row.original.locName ?? ''}\r\n
    ;\r\n}\r\n\r\nfunction LastEventTimeRenderer({row, data}:any) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction MawbAirLineStatus({\r\n status,\r\n tableStorage,\r\n onChange,\r\n mawb,\r\n}:{\r\n status: Array|null,\r\n onChange: (status: Array) => void,\r\n tableStorage: TableStorage,\r\n mawb:AeMbl\r\n}) {\r\n const [selectedIndeces, setSelectedIndeces] = useState>([]);\r\n\r\n function toggleRow(rowIndex:any) {\r\n const index = selectedIndeces.findIndex(x => x === rowIndex);\r\n if (index >= 0) {\r\n const indeces = [...selectedIndeces];\r\n indeces.splice(index, 1);\r\n setSelectedIndeces(indeces);\r\n\r\n \r\n let findProp1 = '';\r\n let findProp2 = '';\r\n switch(rowIndex){\r\n case 0:\r\n findProp1 = 'pickupLoc';\r\n findProp2 = 'pickupDate';\r\n break;\r\n case 1:\r\n findProp1 = 'atdLoc';\r\n findProp2 = 'atd';\r\n break;\r\n case 2:\r\n findProp1 = 'customsRlsLoc';\r\n findProp2 = 'customsRls';\r\n break;\r\n case 3:\r\n findProp1 = 'ataLoc';\r\n findProp2 = 'ata';\r\n break;\r\n case 4:\r\n findProp1 = 'availLoc';\r\n findProp2 = 'avail';\r\n break;\r\n case 5:\r\n findProp1 = 'delvLoc';\r\n findProp2 = 'delivery';\r\n break;\r\n }\r\n\r\n onRowChange(rowIndex, {\r\n check: false,\r\n date: null,\r\n time: null,\r\n datetime: getOriginalValue(mawb, findProp2),\r\n locName: getOriginalValue(mawb, findProp1),\r\n });\r\n } else {\r\n setSelectedIndeces([...selectedIndeces, rowIndex]);\r\n\r\n const currentTime = now();\r\n let tempLocName = '';\r\n const time = getTime(currentTime);\r\n\r\n switch (rowIndex) {\r\n case 0: case 1:\r\n tempLocName = mawb.loadingPort;\r\n break;\r\n case 2: case 3: case 4: case 5:\r\n tempLocName = mawb.discharge;\r\n break;\r\n default:\r\n tempLocName = '';\r\n break;\r\n }\r\n\r\n onRowChange(rowIndex, {\r\n check: true,\r\n date: formatDate(currentTime),\r\n time,\r\n datetime: currentTime,\r\n locName: tempLocName\r\n });\r\n }\r\n }\r\n\r\n function onRowChange(rowIndex:number, change:any) {\r\n if (!status) {\r\n return;\r\n }\r\n\r\n Object.assign(status[rowIndex], change);\r\n\r\n onChange([status[rowIndex]]);\r\n }\r\n\r\n const statusData = status ?? DefaultContainerMilestoneStatus;\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n tableName: 'mawblStatus',\r\n ...mblStatus,\r\n data: statusData.map((x:any, i:number) => ({...x, i, onRowChange, toggleRow, selectable: true, selectedIndeces, /* name: x.statusName */})),\r\n rowRenderers: [\r\n { accessor: 'check', Cell: SelectRenderer },\r\n { accessor: 'name', Cell: StatusNameRenderer },\r\n { accessor: 'date', Cell: DateRenderer },\r\n { accessor: 'time', Cell: TimeRenderer },\r\n { accessor: 'locName', Cell: LocationRenderer },\r\n { accessor: 'lastDate', Cell: LastEventTimeRenderer }\r\n ],\r\n customStorage: tableStorage,\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n}\r\n\r\nMawbAirLineStatus.propTypes = {\r\n //selectedIndex: PropTypes.number,\r\n status: PropTypes.array,\r\n //applyToAll: PropTypes.func,\r\n onChange: PropTypes.func,\r\n tableStorage: PropTypes.object,\r\n defaultStatus: PropTypes.any,\r\n};\r\n\r\nexport default React.memo(MawbAirLineStatus);\r\n","import React from 'react';\r\n\r\nimport { AeMbl } from '../../../../fms.core/AeMbl';\r\n\r\nimport InlineInputControlRow from '../../../../ui/layout/InlineInputControlRow';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport DateTime from '../../../../ui/DateTime';\r\n\r\nimport InlineInputControlRowNoLabel from '../../../../ui/layout/InlineInputControlRowNoLabel';\r\nimport BlueTitleRow from '../../../../ui/BlueTitleRow';\r\nimport BlStatusRow from '../../../common/BlStatusRow';\r\nimport MawbAirLineStatus from './MawbAirLineStatus';\r\nimport { PimsCntrEvent } from '../../../../fms.core/PimsCntrEvent';\r\nimport useTableStorage from '../../../../hooks/useTableStorage';\r\n\r\nfunction MawbMilestone({\r\n mawb,\r\n onChange,\r\n}: {\r\n mawb: AeMbl,\r\n onChange: (x: Partial) => void,\r\n}) {\r\n const tableStorage = useTableStorage();\r\n\r\n function onContainerStatusChange(status: Array) {\r\n\r\n let result: Partial = {};\r\n\r\n status.forEach(s => {\r\n switch (s.seq) {\r\n case 0:\r\n result = {\r\n pickupDate: s.datetime,\r\n pickupLoc: s.locName ?? '',\r\n };\r\n break;\r\n case 1:\r\n result = {\r\n atd: s.datetime,\r\n atdLoc: s.locName ?? '',\r\n };\r\n break;\r\n case 2:\r\n result = {\r\n customsRls: s.datetime,\r\n customsRlsLoc: s.locName ?? '',\r\n };\r\n break;\r\n case 3:\r\n result = {\r\n ata: s.datetime,\r\n ataLoc: s.locName ?? '',\r\n };\r\n break;\r\n case 4:\r\n result = {\r\n avail: s.datetime,\r\n availLoc: s.locName ?? '',\r\n };\r\n break;\r\n case 5:\r\n result = {\r\n delivery: s.datetime,\r\n delvLoc: s.locName ?? '',\r\n };\r\n break;\r\n }\r\n });\r\n\r\n onChange({ ...result });\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
    \r\n\r\n
    \r\n \r\n  \r\n \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n { }}\r\n dateTime={mawb.closeDate}\r\n userId={mawb.closedBy}\r\n showDatePlaceHolder={false}\r\n />\r\n \r\n\r\n \r\n { }}\r\n dateTime={mawb.actClosed ? mawb.actCloseDate : ''}\r\n userId={mawb.actClosed ? mawb.actClosedBy : ''}\r\n showDatePlaceHolder={false}\r\n />\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n Airline Status} />\r\n
    \r\n\r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default React.memo(MawbMilestone);\r\n","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\nimport Skeleton, { SkeletonTheme } from \"react-loading-skeleton\";\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport { ApiResult, InsertResultsWithData } from '../../../framework.core/data/ApiResult';\r\nimport {JobNames} from '../../../framework.core/JobNames';\r\nimport useDirtyCheck from '../../../hooks/useDirtyCheck2';\r\nimport MawbMilestoneView from './implementation/MawbMilestone';\r\nimport { useTypedFastStorage } from '../../../hooks/useFastStorage';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport { TrackableEntity } from '../../../fms.core/data/ChangeTrackable';\r\nimport { getSQLInfoList } from '../../../fms.core/data/TrackingModule';\r\nimport {AeMbl} from \"../../../fms.core/AeMbl\";\r\nimport SecondaryButton from '../../../ui/SecondaryButton';\r\nimport { AiAirLineEvents, AirMblStatusMap, MblStatusViewModel } from '../../../fms.core/MblStatusViewModel';\r\nimport { prepareAiMawbModelForView } from '../../airImport/mawb/util';\r\nimport { CargoEventName } from '../../../framework.core/CargoEventName';\r\nimport { CargoEventLog } from '../../../fms.core/CargoEventLog';\r\nimport { SQLInfo } from '../../../framework.core/data/SQLInfo';\r\nimport { AddEventToNotice, CreateCargoEventLog, FindIndexOfKeyStartsWith } from '../../oceanImport/mbl/implementation/mblUtils';\r\nimport { formatDateTime } from '../../../dateUtils';\r\nimport constants from '../../../constants';\r\n\r\nconst eventMappings = [\r\n { prefix: \"0|\", name: CargoEventName.FullIn, seq: 0, mappingKey:'0' },\r\n { prefix: \"1|\", name: CargoEventName.VesselDeparted, seq: 1, mappingKey:'1' },\r\n { prefix: \"2|\", name: CargoEventName.CustomsRls, seq: 2, mappingKey:'2' },\r\n { prefix: \"3|\", name: CargoEventName.VesselArrived, seq: 3, mappingKey:'3' },\r\n { prefix: \"4|\", name: CargoEventName.PickAvail, seq: 4, mappingKey:'4' },\r\n { prefix: \"5|\", name: CargoEventName.Delivered, seq: 5, mappingKey:'5' },\r\n];\r\n\r\nfunction MawbMilestoneImpl({\r\n mawbId,\r\n storageKey,\r\n onClose,\r\n}: {\r\n mawbId: number,\r\n storageKey: string,\r\n onClose: VoidFunction,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const [initialized, setInitialized] = useState(false);\r\n\r\n const [mawb, setMawb, removeMawb, mawbRef] = useTypedFastStorage(storageKey, null);\r\n const [/*blStatus*/, /*setBlStatus*/, removeBlStatus, /*blStatusRef*/] = useTypedFastStorage(storageKey, null);\r\n const {setCleanState, } = useDirtyCheck(storageKey, ['updated', 'updatedBy']);\r\n\r\n useEffect(() => {\r\n initialize();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function doClose() {\r\n cleanup();\r\n onClose();\r\n }\r\n\r\n function cleanup() {\r\n removeMawb();\r\n removeBlStatus();\r\n }\r\n\r\n async function initialize() {\r\n // Load MAWB\r\n const apiResult:ApiResult = await appContext.api.getJobDetail(JobNames.AEMbl, { id: mawbId});\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog('Cannot load data');\r\n doClose();\r\n return;\r\n }\r\n\r\n const loadedMawb = new AeMbl(apiResult.result);\r\n\r\n const blApiResult:ApiResult = await appContext.api.getMblStatusViewModel(JobNames.AEMbl, mawbId);\r\n loadedMawb.milestone = new MblStatusViewModel(blApiResult?.result ?? null)\r\n prepareAiMawbModelForView(loadedMawb);\r\n\r\n const loadedModelObj = new AeMbl(_.cloneDeep(loadedMawb));\r\n setCleanState(loadedModelObj);\r\n setMawb(loadedModelObj);\r\n \r\n if(mawbRef.current !== null) {\r\n mawbRef.current.trackable = true;\r\n }\r\n\r\n setInitialized(true);\r\n }\r\n\r\n async function save() {\r\n if (!mawb || !mawbRef.current) {\r\n throw new Error('Invalid operation');\r\n }\r\n\r\n if(!mawbRef.current.isDirty) {\r\n //await showGlobalOkDialog(

    Nothing to save!!!

    );\r\n doClose();\r\n return;\r\n }\r\n \r\n const blStatusInfoList = getSQLInfoList(mawb as TrackableEntity);\r\n\r\n const apiResult:ApiResult = await appContext.api.saveMblStatusViewModel(blStatusInfoList);\r\n\r\n if (apiResult && apiResult.success) {\r\n await UpdateLogMawbMilestone(blStatusInfoList,mawb); //[t49-webhook] LogMblMilestone. 이 기능은 TrackingService를 사용하지 않더라도 적용한다.\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n } else {\r\n await showGlobalOkDialog(
    \r\n

    Cannot save

    \r\n

    {apiResult?.message}

    \r\n
    );\r\n }\r\n\r\n doClose();\r\n }\r\n\r\n async function UpdateLogMawbMilestone(blStatusInfoList: SQLInfo[], mawb:AeMbl) {\r\n const cntrDataWithSeq: {\r\n loc: string,\r\n cntrNo: string,\r\n seq: number,\r\n }[] = []\r\n\r\n const dicEvent = CollectMawbEvents(blStatusInfoList, cntrDataWithSeq);\r\n if (dicEvent.length > 0) {\r\n const cmile: CargoEventLog[] = [];\r\n const lastEvents: CargoEventLog[] = [];\r\n\r\n for (const mapping of eventMappings) {\r\n const dindex = FindIndexOfKeyStartsWith(dicEvent, mapping.prefix);\r\n if (dindex >= 0) {\r\n const cargoEventLog = CreateCargoEventLog(mawb.mawbNo, mapping.name, dicEvent[dindex], cntrDataWithSeq.filter(x => x.seq === mapping.seq), appContext.user?.id ?? '');\r\n cmile.push(...cargoEventLog);\r\n }\r\n }\r\n\r\n const uniqueCmileSet = new Set(cmile.map(item => item.cntrNo));\r\n Array.from(uniqueCmileSet).forEach(x => {\r\n const tempData = cmile.filter(c => c.cntrNo === x).sort((a, b) => new Date(a.utcTime ?? '').getTime() - new Date(b.utcTime ?? '').getTime());\r\n lastEvents.push(tempData[tempData.length - 1]);\r\n });\r\n\r\n if (lastEvents.length > 0) {\r\n const apiResult = await appContext.api.trackingLogMblEvents(JobNames.AEMbl, mawbId, lastEvents);;\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

    );\r\n }\r\n }\r\n }\r\n }\r\n\r\n function CollectMawbEvents(blStatusInfoList: SQLInfo[], cntrDataWithSeq: { loc: string, cntrNo: string, seq: number }[]) {\r\n const changeData: { pimsCntrId: number, seqNum: number, dateTime: string }[] = [];\r\n const dicEvent: { key: string, value: string }[] = [];\r\n\r\n AiAirLineEvents.forEach((enumEvent) => {\r\n blStatusInfoList.forEach(x => {\r\n const findData = x.fields.find(x => x.propertyName === AirMblStatusMap.get(enumEvent)?.cntrDate);\r\n if (findData) {\r\n const pimsCntrId = mawb?.milestone?.eventItemList[0].pimsCntrId ?? 0;\r\n changeData.push({ pimsCntrId: pimsCntrId, seqNum: enumEvent, dateTime: formatDateTime(findData.value) });\r\n const loc = x.fields.find(x => x.propertyName === AirMblStatusMap.get(enumEvent)?.cntrLoc);\r\n\r\n cntrDataWithSeq.push({ loc: loc?.value, seq: enumEvent, cntrNo: '' })\r\n }\r\n })\r\n });\r\n changeData.forEach(x => {\r\n const seqNum = x.seqNum;\r\n const mappingKey = eventMappings.find(x => x.seq === seqNum)?.mappingKey;\r\n if (mappingKey)\r\n AddEventToNotice(dicEvent, `${mappingKey}|${x.dateTime}`, String(x.pimsCntrId));\r\n });\r\n\r\n return dicEvent;\r\n }\r\n\r\n return (\r\n
    \r\n {!initialized &&\r\n
    \r\n \r\n \r\n \r\n
    \r\n }\r\n {!!mawb && initialized &&\r\n
    \r\n \r\n\r\n
    \r\n \r\n Update\r\n \r\n \r\n Cancel\r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n );\r\n}\r\n\r\nfunction MawbMilestoneInitializedImpl({\r\n mawb,\r\n setMawb,\r\n}: {\r\n mawb: AeMbl,\r\n setMawb: (x:Partial) => void,\r\n}) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nconst MawbMilestonePopup = ({\r\n mawbId,\r\n storageKey,\r\n onClose,\r\n}:{\r\n mawbId: number,\r\n storageKey: string,\r\n onClose: VoidFunction,\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nMawbMilestonePopup.defaultProps = {\r\n};\r\n\r\nMawbMilestonePopup.propTypes = {\r\n mawbId: PropTypes.number.isRequired,\r\n storageKey: PropTypes.string.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default React.memo(MawbMilestonePopup);\r\n","import PropTypes from 'prop-types';\r\nimport React, {useEffect, useState} from 'react';\r\n\r\nimport {ApplicableTableSettings, mblStatus} from '../../../../tableSettings';\r\n\r\nimport IfmsDate from '../../../../ui/Date';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport CheckBox from '../../../../ui/CheckBox';\r\nimport {Time} from '../../../../ui/DateTime';\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\nimport OceanUnPortLookupField from '../../../../uiControls/lookup/OceanUnPortLookupField';\r\nimport {formatDate, formatDateTime, getTime, now} from '../../../../dateUtils';\r\nimport {PimsCntrEvent} from \"../../../../fms.core/PimsCntrEvent\";\r\nimport {DefaultContainerMilestoneStatus} from \"./implementationConstants\";\r\nimport { TableStorage } from '../../../../hooks/useTableStorage';\r\nimport { OeMbl } from '../../../../fms.core/OeMbl';\r\n\r\nfunction SelectRenderer({data, row}: any) {\r\n if (!row.original.selectable) {\r\n return
    ;\r\n }\r\n\r\n const toggleRow = data[0].toggleRow;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n const selected = selectedIndeces.findIndex((x: any) => x === row.index) >= 0;\r\n\r\n return
    toggleRow(row.index, check)} />
    ;\r\n}\r\n\r\nfunction StatusNameRenderer({ cell }:any) {\r\n return
    {cell.value}
    ;\r\n}\r\n\r\nfunction DateRenderer({data, row}:any) {\r\n if (!row.original.selectable) {\r\n return
    ;\r\n }\r\n\r\n const onRowChange = data[0].onRowChange;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n const selected = selectedIndeces.findIndex((x:any) => x === row.index) >= 0;\r\n\r\n function onChange(date: string|null) {\r\n if (!date) {\r\n onRowChange(row.index, {\r\n date: null,\r\n time: null,\r\n datetime: null,\r\n }, selected);\r\n } else {\r\n const tIndex = date.indexOf('T');\r\n const datetime = tIndex >= 0 ? `${date.substring(0, tIndex)}T${row.original.time}` : row.original.datetime;\r\n\r\n onRowChange(row.index, {\r\n date: date,\r\n datetime,\r\n }, selected);\r\n }\r\n }\r\n\r\n return
    ;\r\n}\r\n\r\nfunction TimeRenderer({data, row}:any) {\r\n if (!row.original.selectable) {\r\n return
    ;\r\n }\r\n\r\n const onRowChange = data[0].onRowChange;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n const selected = selectedIndeces.findIndex((x:any) => x === row.index) >= 0;\r\n \r\n function onChange(changedTime: string|null) {\r\n if (!row.original.date) {\r\n return;\r\n }\r\n\r\n const timeToApply = changedTime ?? '00:00';\r\n\r\n const tIndex = row.original.date.indexOf('T');\r\n const datetime = tIndex >= 0 ? `${row.original.date.substring(0, tIndex)}T${timeToApply}` : row.original.datetime;\r\n\r\n onRowChange(row.index, {\r\n time: timeToApply,\r\n datetime,\r\n }, selected);\r\n }\r\n\r\n return
    ;\r\n}\r\n\r\nfunction LocationRenderer({data, row}:any) {\r\n if (!row.original.selectable) {\r\n return ;\r\n }\r\n\r\n const onRowChange = data[0].onRowChange;\r\n const selectedIndeces = data[0].selectedIndeces;\r\n\r\n const selected = selectedIndeces.findIndex((x:any) => x === row.index) >= 0;\r\n\r\n return selected\r\n ?
    \r\n onRowChange(row.index, {locName}, selected)}\r\n onSelect={location => onRowChange(row.index, {locName: location.portName}, selected)}\r\n //searchBy=\"unWithPortName\"\r\n searchBy=\"portName\"\r\n />\r\n
    \r\n :
    \r\n {row.original.locName ?? ''}\r\n
    ;\r\n}\r\n\r\nfunction LastEventTimeRenderer({row, data}:any) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction MblMilestoneContainerStatus({\r\n selectedIndex,\r\n status,\r\n applyToAll,\r\n tableStorage,\r\n onChange,\r\n isView,\r\n mbl,\r\n}:{\r\n selectedIndex: number,\r\n status: Array|null,\r\n onChange: (rowIndex: number, status: Array, select: boolean) => void,\r\n applyToAll: (status: Array) => void,\r\n tableStorage: TableStorage,\r\n isView: boolean,\r\n mbl:OeMbl\r\n}) {\r\n // const selectable = !!status;\r\n\r\n const [selectedIndeces, setSelectedIndeces] = useState>([]);\r\n\r\n useEffect(() => {\r\n setSelectedIndeces([]);\r\n }, [selectedIndex]);\r\n\r\n function toggleRow(rowIndex:any, select:boolean) {\r\n const index = selectedIndeces.findIndex(x => x === rowIndex);\r\n if (index >= 0) {\r\n const indeces = [...selectedIndeces];\r\n indeces.splice(index, 1);\r\n setSelectedIndeces(indeces);\r\n onRowChange(rowIndex, {\r\n check: false,\r\n date: null,\r\n time: null,\r\n datetime: null,\r\n locName: '',\r\n }, select);\r\n } else {\r\n setSelectedIndeces([...selectedIndeces, rowIndex]);\r\n\r\n const currentTime = now();\r\n let tempLocName = '';\r\n const time = getTime(currentTime);\r\n\r\n switch (rowIndex) {\r\n case 0: case 1: case 2: case 3: case 4:\r\n tempLocName = mbl.loadingPort;\r\n break;\r\n case 5: case 6: case 7: case 8:\r\n tempLocName = mbl.discharge;\r\n break;\r\n // case 5: case 6: \r\n // tempLocName = mbl.finalDestination;\r\n // break;\r\n default:\r\n tempLocName = '';\r\n break;\r\n }\r\n\r\n onRowChange(rowIndex, {\r\n check: true,\r\n date: formatDate(currentTime),\r\n time,\r\n datetime: currentTime,\r\n locName: tempLocName\r\n }, select);\r\n }\r\n }\r\n\r\n function onRowChange(rowIndex:number, change:any, select:boolean) {\r\n if (!status) {\r\n return;\r\n }\r\n\r\n Object.assign(status[rowIndex], change);\r\n\r\n onChange(selectedIndex, [status[rowIndex]], select);\r\n }\r\n\r\n // function doApplyToAll(s:Array|null) {\r\n // if (s) {\r\n // applyToAll(s);\r\n // }\r\n // }\r\n const statusData = !!status ? status : DefaultContainerMilestoneStatus;\r\n\r\n const tableOptions:ApplicableTableSettings = {\r\n tableName: 'mblStatus',\r\n ...mblStatus,\r\n data: statusData.map((x:any, i:number) => ({...x, i, onRowChange, toggleRow, selectable: true, selectedIndeces, /* name: x.statusName */})),\r\n rowRenderers: [\r\n { accessor: 'check', Cell: SelectRenderer },\r\n { accessor: 'name', Cell: StatusNameRenderer },\r\n { accessor: 'date', Cell: DateRenderer },\r\n { accessor: 'time', Cell: TimeRenderer },\r\n { accessor: 'locName', Cell: LocationRenderer },\r\n { accessor: 'lastDate', Cell: LastEventTimeRenderer }\r\n ],\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n}\r\n\r\nMblMilestoneContainerStatus.propTypes = {\r\n selectedIndex: PropTypes.number,\r\n status: PropTypes.array,\r\n applyToAll: PropTypes.func,\r\n onChange: PropTypes.func,\r\n tableStorage: PropTypes.object,\r\n defaultStatus: PropTypes.any,\r\n};\r\n\r\nexport default React.memo(MblMilestoneContainerStatus);\r\n","import _ from 'lodash';\r\nimport React from 'react';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport CheckBox from '../../../../ui/CheckBox';\r\n\r\nimport {ApplicableTableSettings, mblSelectContainer} from '../../../../tableSettings';\r\n\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\n\r\nimport MblMilestoneContainerStatus from './MblMilestoneContainerStatus';\r\nimport InlineInputControlRow from \"../../../../ui/layout/InlineInputControlRow\";\r\nimport {OeMbl} from \"../../../../fms.core/OeMbl\";\r\nimport {OmContainer} from \"../../../../fms.core/OmContainer\";\r\nimport {OceanMblStatusMap} from \"../../../../fms.core/MblStatusViewModel\";\r\nimport {PimsCntrEvent} from \"../../../../fms.core/PimsCntrEvent\";\r\nimport Date from \"../../../../ui/Date\";\r\nimport BlueTitleRow from \"../../../../ui/BlueTitleRow\";\r\nimport { TextAlignLeftRenderer } from '../../../../uiControls/SmartTableRenderers';\r\nimport useTableStorage from '../../../../hooks/useTableStorage';\r\nimport { getOriginalValue } from '../../../../fms.core/data/TrackingModule';\r\n\r\nfunction SelectRenderer({data, row}: any) {\r\n const toggleSelection = data[0].toggleSelection;\r\n const selectedIndex = data[0].selectedIndex;\r\n const isView = data[0].isView;\r\n\r\n return
    toggleSelection(row.index)} disabled={isView}/>
    ;\r\n}\r\n\r\nexport type OeMblMilestoneHandle = {\r\n executeApplyToAll: VoidFunction,\r\n};\r\n\r\ntype MblMilestoneProps = {\r\n mbl: OeMbl,\r\n onChange: (x: Partial) => void,\r\n containerInfo: OmContainer[],\r\n onContainerInfoChange: (x: OmContainer[]) => void,\r\n isView: boolean,\r\n user: string,\r\n};\r\n\r\nconst MblMilestoneImpl: React.ForwardRefRenderFunction =({\r\n mbl,\r\n onChange,\r\n containerInfo,\r\n onContainerInfoChange,\r\n isView,\r\n user,\r\n}, ref) => {\r\n React.useImperativeHandle(ref, () => ({\r\n executeApplyToAll: () => {\r\n const status = selectedIndex >= 0 && selectedIndex < containerInfo.length ? mbl.milestone?.eventItemList?.filter(v => v.cntrNo === containerInfo[selectedIndex].containerNo || (v.pimsCntrId > 0 && v.pimsCntrId === containerInfo[selectedIndex].pimsLinkId )) ?? null : null;\r\n if (status) {\r\n applyContainerStatusToAll(status);\r\n }\r\n },\r\n }));\r\n\r\n const tableStorage = useTableStorage();\r\n const selectedIndex = mbl.milestoneContainerSelectedIndex || 0;\r\n\r\n function setSelectedIndex(milestoneContainerSelectedIndex: number) {\r\n onChange({milestoneContainerSelectedIndex});\r\n }\r\n\r\n function toggleSelection(index: number) {\r\n setSelectedIndex(selectedIndex === index ? -1 : index);\r\n }\r\n\r\n function onContainerStatusChange(cntrIndex: number, status: Array, select: boolean) {\r\n const update = _.cloneDeep(containerInfo);\r\n status.forEach(s => {\r\n const omCntr = update[cntrIndex];\r\n\r\n const pimsCntr = mbl.milestone?.cntrItemList.find(x => x.cntrNo === s.cntrNo || (x.id > 0 && x.id === s.pimsCntrId));\r\n\r\n const msitem = OceanMblStatusMap.get(s.seq);\r\n\r\n if (msitem?.cntrDate) {\r\n const cntrDateToSet = !select ? getOriginalValue(mbl.container[cntrIndex], msitem.cntrDate) : s.datetime;\r\n if (omCntr) _.set(omCntr, msitem.cntrDate, cntrDateToSet);\r\n if (pimsCntr && msitem.pimsCntrDate) _.set(pimsCntr, msitem.pimsCntrDate, cntrDateToSet);\r\n }\r\n if (msitem?.cntrLoc) {\r\n const locToSet = !select ? getOriginalValue(mbl.container[cntrIndex],msitem.cntrLoc) : s.locName;\r\n if (omCntr) _.set(omCntr, msitem.cntrLoc, locToSet);\r\n if (pimsCntr && msitem.pimsCntrLoc) _.set(pimsCntr, msitem.pimsCntrLoc, locToSet);\r\n }\r\n });\r\n\r\n onContainerInfoChange(update);\r\n }\r\n\r\n function applyContainerStatusToAll(status: Array) {\r\n const update = _.cloneDeep(containerInfo);\r\n\r\n // collect valid events\r\n // const statusUpdate = //[save-sqlinfo]status.filter((s:MilestoneContainerInfoStatus) => s.date && s.time);\r\n // status.filter(s => s.datetime);\r\n const statusUpdateWithIndices = status.map((status, index) => ({status, index})).filter(s => s.status.datetime);\r\n const updatedProps = _.keys(update[selectedIndex]).filter(x => (\r\n x.endsWith('Date') ||\r\n x.endsWith('Loc') ||\r\n x.endsWith('ord') ||\r\n x.endsWith('atd') ||\r\n x.endsWith('ata')\r\n // || x.endsWith('carrierRls') ||\r\n // x.endsWith('customRls') ||\r\n // x.endsWith('rAtd') ||\r\n // x.endsWith('rAta') ||\r\n // x.endsWith('emptyReturn')\r\n ) && !!(update[selectedIndex] as any)[x]);\r\n\r\n update.forEach((x, i) => {\r\n if (i === selectedIndex) {\r\n return;\r\n }\r\n\r\n updatedProps.forEach(u => {\r\n (x as any)[u] = (update[selectedIndex] as any)[u];\r\n });\r\n\r\n if (mbl.milestone && mbl.milestone.eventItemList) {\r\n\r\n const itemList = mbl.milestone.eventItemList.filter(v => v.cntrNo === x.containerNo || (v.pimsCntrId > 0 && v.pimsCntrId === x.pimsLinkId));\r\n\r\n statusUpdateWithIndices.forEach(si => {\r\n if (itemList.length > si.index) {\r\n itemList[si.index].date = si.status.date;\r\n itemList[si.index].datetime = si.status.datetime;\r\n itemList[si.index].time = si.status.time;\r\n itemList[si.index].locName = si.status.locName;\r\n }\r\n })\r\n }\r\n })\r\n\r\n // {\r\n // statusUpdate.forEach((u:MilestoneContainerInfoStatus) => {\r\n // const i = x.milestone.status.findIndex((ms:MilestoneContainerInfoStatus) => ms.statusName === u.statusName);\r\n // if (i >= 0) {\r\n // x.milestone.status[i] = {...x.milestone.status[i], ...u};\r\n // }\r\n // });\r\n // });\r\n // update.forEach(x => {\r\n // statusUpdate.forEach(u => {\r\n // const i = mbl.milestone?.eventItemList?.findIndex(ms => ms.name === u.name && (ms.cntrNo === x.containerNo || (ms.pimsCntrId > 0 && ms.pimsCntrId === x.pimsLinkId))) ?? -1;\r\n // if (i >= 0) {\r\n // mbl.milestone?.eventItemList?.splice(i, 1, {...mbl.milestone?.eventItemList[i], ...u} as PimsCntrEvent);\r\n // }\r\n // });\r\n // });\r\n //save-sqlinfo>\r\n\r\n onContainerInfoChange(update);\r\n setSelectedIndex(-1);\r\n }\r\n\r\n\r\n const tableOptions: ApplicableTableSettings = {\r\n tableName: 'oe-mblSelectContainer',\r\n ...mblSelectContainer,\r\n height: '135px',\r\n data: mbl.milestone?.cntrItemList?.map((x, i) => ({...x, i, toggleSelection, selectedIndex, isView})) || [],\r\n rowRenderers: [\r\n {accessor: 'select', Cell: SelectRenderer},\r\n {accessor: 'cntrNo', Cell: TextAlignLeftRenderer},\r\n {accessor: 'cntrType', Cell: TextAlignLeftRenderer},\r\n ],\r\n customStorage: tableStorage,\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n Select Container (must select before update)} />\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n onChange({milestone: _.merge(mbl.milestone, {pickUpNo: e.target.value})})} />\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n Container Status} />\r\n
    \r\n\r\n = 0 && selectedIndex < containerInfo.length ? mbl.milestone?.eventItemList?.filter(v => v.cntrNo === containerInfo[selectedIndex].containerNo || (v.pimsCntrId > 0 && v.pimsCntrId === containerInfo[selectedIndex].pimsLinkId)) ?? null : null}\r\n applyToAll={applyContainerStatusToAll}\r\n onChange={onContainerStatusChange}\r\n tableStorage={tableStorage}\r\n // defaultStatus={containerInfo.length > 0 ? mbl.milestone?.eventItemList?.filter(v => v.cntrNo === containerInfo[0].containerNo || v.pimsCntrId === containerInfo[0].pimsLinkId)??null : null}\r\n mbl={mbl}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nconst MblMilestone = React.forwardRef(MblMilestoneImpl);\r\n\r\nexport default React.memo(MblMilestone);","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport Skeleton, { SkeletonTheme } from \"react-loading-skeleton\";\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport { OeMbl } from '../../../fms.core/OeMbl';\r\nimport { ApiResult, InsertResultsWithData } from '../../../framework.core/data/ApiResult';\r\nimport { JobNames } from '../../../framework.core/JobNames';\r\nimport useDirtyCheck from '../../../hooks/useDirtyCheck2';\r\n\r\nimport MblMilestoneView, { OeMblMilestoneHandle } from './implementation/MblMilestone';\r\n\r\nimport { useTypedFastStorage } from '../../../hooks/useFastStorage';\r\n\r\nimport { prepareOeMblForView } from './implementation/mblUtils';\r\nimport { OmContainer } from '../../../fms.core/OmContainer';\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport { SQLInfo } from '../../../framework.core/data/SQLInfo';\r\nimport { historyUpdate } from '../../../fms.data/modules/FmsModFunc';\r\nimport { TrackableEntity } from '../../../fms.core/data/ChangeTrackable';\r\nimport { getSQLInfoList } from '../../../fms.core/data/TrackingModule';\r\nimport SecondaryButton from '../../../ui/SecondaryButton';\r\nimport { MblStatusViewModel, OceanMblStatusMap, OeContainerEvents } from '../../../fms.core/MblStatusViewModel';\r\nimport { CargoEventLog } from '../../../fms.core/CargoEventLog';\r\nimport { AddEventToNotice, CreateCargoEventLog, FindIndexOfKeyStartsWith } from '../../oceanImport/mbl/implementation/mblUtils';\r\nimport { formatDateTime } from '../../../dateUtils';\r\nimport { CargoEventName } from '../../../framework.core/CargoEventName';\r\nimport useSetEditedId from '../../../hooks/useSetEditedId';\r\nimport constants from '../../../constants';\r\n\r\nconst eventMappings = [\r\n { prefix: \"0|\", name: CargoEventName.FmsBooking, seq: 9, mappingKey:'0' },\r\n { prefix: \"1|\", name: CargoEventName.EmptyOut, seq: 11, mappingKey:'1' },\r\n { prefix: \"250\", name: CargoEventName.FullIn, seq: 13, mappingKey:'2' },\r\n { prefix: \"3|\", name: CargoEventName.VesselLoaded, seq: 15, mappingKey:'3' },\r\n { prefix: \"270,460\", name: CargoEventName.VesselDeparted, seq: 16, mappingKey:'460' },\r\n { prefix: \"5|\", name: CargoEventName.CarrierRls, seq: 17, mappingKey:'5' },\r\n { prefix: \"6|\", name: CargoEventName.CustomsRls, seq: 18, mappingKey:'6' },\r\n { prefix: \"260,470\", name: CargoEventName.VesselArrived, seq: 19, mappingKey:'470' },\r\n { prefix: \"275\", name: CargoEventName.VesselDischarged, seq: 20, mappingKey:'8' },\r\n { prefix: \"9|\", name: CargoEventName.FmsDlvrToCfs, seq: 5, mappingKey:'9' },\r\n { prefix: \"290\", name: CargoEventName.RailDeparted, seq: 21, mappingKey:'10' },\r\n { prefix: \"295\", name: CargoEventName.RailArrived, seq: 22, mappingKey:'11' },\r\n { prefix: \"12|\", name: CargoEventName.PickAvail, seq: 23, mappingKey:'12' },\r\n { prefix: \"13|\", name: CargoEventName.FullOut, seq: 24, mappingKey:'13' },\r\n { prefix: \"14|\", name: CargoEventName.Delivered, seq: 25, mappingKey:'14' },\r\n { prefix: \"15|\", name: CargoEventName.EmptyIn, seq: 26, mappingKey:'15' },\r\n];\r\n\r\nfunction getStorageKey(id: string) {\r\n return `oe-mbl-bl-status-${id}`;\r\n}\r\n\r\nfunction MblMilestoneImpl({\r\n mblId,\r\n storageKey,\r\n onClose,\r\n isView,\r\n}: {\r\n mblId: number,\r\n storageKey: string,\r\n onClose: VoidFunction,\r\n isView: boolean,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const setSavedEntity = useSetEditedId([JobNames.Container]);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const [initialized, setInitialized] = useState(false);\r\n \r\n const [mbl, setMbl, removeMbl, mblRef] = useTypedFastStorage(storageKey, null);\r\n const [/*blStatus*/, /*setBlStatus*/, removeBlStatus, /*blStatusRef*/] = useTypedFastStorage(getStorageKey(mblId.toString()), null);\r\n const {setCleanState} = useDirtyCheck(\r\n storageKey,\r\n ['updated', 'updatedBy']);\r\n\r\n useEffect(() => {\r\n initialize();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function doClose() {\r\n cleanup();\r\n onClose();\r\n }\r\n\r\n function cleanup() {\r\n removeMbl();\r\n removeBlStatus();\r\n }\r\n\r\n async function initialize() {\r\n // if (!!mbl) {\r\n // setInitialized(true);\r\n // return; // Already initialized\r\n // }\r\n const apiResult:ApiResult = await appContext.api.getJobDetail(JobNames.OEMbl, { id: mblId});\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog('Cannot load data');\r\n doClose();\r\n return;\r\n }\r\n\r\n const loadedMbl = new OeMbl(apiResult.result);\r\n \r\n const blApiResult: ApiResult = await appContext.api.getMblStatusViewModel(JobNames.OEMbl, mblId);\r\n loadedMbl.milestone = new MblStatusViewModel(blApiResult?.result ?? null)\r\n prepareOeMblForView(loadedMbl);\r\n\r\n loadedMbl.milestoneContainerSelectedIndex = loadedMbl.container && loadedMbl.container.length > 0\r\n ? 0\r\n : -1;\r\n\r\n const loadedModelObj = new OeMbl(_.cloneDeep(loadedMbl));\r\n setCleanState(loadedModelObj);\r\n setMbl(loadedModelObj);\r\n if(mblRef.current !== null) {\r\n mblRef.current.trackable = true;\r\n }\r\n\r\n setInitialized(true);\r\n }\r\n\r\n async function save() {\r\n if (!mbl || !mblRef.current) {\r\n throw new Error('Invalid operation');\r\n }\r\n\r\n if(!mblRef.current.isDirty) {\r\n //await showGlobalOkDialog(

    Nothing to save!!!

    );\r\n doClose();\r\n return;\r\n }\r\n\r\n const si:SQLInfo[] = [];\r\n\r\n let hiSqlInfo = historyUpdate(\"T_OOMMAIN\", mblRef.current?.id??0, appContext.user?.id??'', 'Update B/L Info');\r\n if (hiSqlInfo) {\r\n si.push(hiSqlInfo);\r\n }\r\n\r\n const blStatusInfoList = getSQLInfoList(mbl as TrackableEntity);\r\n blStatusInfoList.push(...si);\r\n\r\n\r\n const apiResult:ApiResult = await appContext.api.saveMblStatusViewModel(blStatusInfoList);\r\n \r\n if (apiResult && apiResult.success) {\r\n await UpdateLogMblMilestone(blStatusInfoList, mbl); //[t49-webhook] LogMblMilestone. 이 기능은 TrackingService를 사용하지 않더라도 적용한다.\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n setSavedEntity(mblRef.current.id.toString(), false);\r\n } else {\r\n await showGlobalOkDialog(
    \r\n

    Cannot save

    \r\n

    {apiResult?.message}

    \r\n
    );\r\n }\r\n\r\n doClose();\r\n }\r\n \r\n async function UpdateLogMblMilestone(blStatusInfoList: SQLInfo[], mbl:OeMbl) {\r\n const cntrDataWithSeq: {\r\n loc: string,\r\n cntrNo: string,\r\n seq: number,\r\n }[] = []\r\n\r\n const dicEvent = CollectMblEvents(blStatusInfoList, cntrDataWithSeq);\r\n if (dicEvent.length > 0) {\r\n const cmile: CargoEventLog[] = [];\r\n const lastEvents: CargoEventLog[] = [];\r\n\r\n for (const mapping of eventMappings) {\r\n const dindex = FindIndexOfKeyStartsWith(dicEvent, mapping.prefix);\r\n if (dindex >= 0) {\r\n const cargoEventLog = CreateCargoEventLog(mbl.mblNo, mapping.name, dicEvent[dindex], cntrDataWithSeq.filter(x => x.seq === mapping.seq), appContext.user?.id ?? '');\r\n cmile.push(...cargoEventLog);\r\n }\r\n }\r\n\r\n const uniqueCmileSet = new Set(cmile.map(item => item.cntrNo));\r\n Array.from(uniqueCmileSet).forEach(x => {\r\n const tempData = cmile.filter(c => c.cntrNo === x).sort((a, b) => new Date(a.utcTime ?? '').getTime() - new Date(b.utcTime ?? '').getTime());\r\n lastEvents.push(tempData[tempData.length - 1]);\r\n });\r\n\r\n if (lastEvents.length > 0) {\r\n const apiResult = await appContext.api.trackingLogMblEvents(JobNames.OEMbl, mblId, lastEvents);;\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

    );\r\n }\r\n }\r\n }\r\n }\r\n\r\n function CollectMblEvents(blStatusInfoList: SQLInfo[], cntrDataWithSeq: { loc: string, cntrNo: string, seq: number }[]) {\r\n const changeData: { pimsCntrId: number, seqNum: number, dateTime: string }[] = [];\r\n const dicEvent: { key: string, value: string }[] = [];\r\n\r\n const changeContainerData = blStatusInfoList.filter(x => x.tableName === 'T_OOMCONTAINER');\r\n\r\n OeContainerEvents.forEach((enumEvent) => {\r\n changeContainerData.forEach(x => {\r\n const findData = x.fields.find(x => x.propertyName.endsWith(OceanMblStatusMap.get(enumEvent)?.cntrDate ?? ''));\r\n if (findData) {\r\n const pimsCntrId = mbl?.container.find(y => y.id === x.key?.value)?.pimsLinkId ?? 0;\r\n changeData.push({ pimsCntrId: pimsCntrId, seqNum: enumEvent, dateTime: formatDateTime(findData.value) });\r\n\r\n const containerNo = mbl?.container.find(y => y.id === x.key?.value)?.containerNo ?? ''; //GetLocNameFromEvent\r\n const cntr = mbl?.container.find(x => x.containerNo === containerNo);\r\n const cntrLoc = OceanMblStatusMap.get(enumEvent)?.cntrLoc ?? '';\r\n\r\n cntrDataWithSeq.push({ loc: Object.getOwnPropertyDescriptor(cntr, cntrLoc)?.value, seq: enumEvent, cntrNo: containerNo })\r\n }\r\n })\r\n });\r\n changeData.forEach(x => {\r\n const seqNum = x.seqNum;\r\n const mappingKey = eventMappings.find(x => x.seq === seqNum)?.mappingKey;\r\n if (mappingKey)\r\n AddEventToNotice(dicEvent, `${mappingKey}|${x.dateTime}`, String(x.pimsCntrId));\r\n });\r\n\r\n return dicEvent;\r\n }\r\n\r\n\r\n return (\r\n
    \r\n {!initialized &&\r\n
    \r\n \r\n \r\n \r\n
    \r\n }\r\n {!!mbl &&\r\n \r\n }\r\n
    \r\n );\r\n}\r\n\r\nfunction MblMilestoneInitializedImpl({\r\n mbl,\r\n setMbl,\r\n isView,\r\n close,\r\n save,\r\n}: {\r\n mbl: OeMbl,\r\n setMbl: (x:Partial) => void,\r\n isView: boolean,\r\n save: () => Promise,\r\n close: VoidFunction,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const milestoneRef = useRef(null);\r\n\r\n const containerInfo:OmContainer[] = mbl.container ?? [];\r\n\r\n function changeContainerInfo(ci:OmContainer[]) {\r\n setMbl({ container: ci });\r\n }\r\n\r\n async function applyToAll() {\r\n if (milestoneRef.current) {\r\n milestoneRef.current.executeApplyToAll();\r\n await save();\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n
    \r\n \r\n Apply to All Container\r\n \r\n \r\n Update\r\n \r\n \r\n Cancel\r\n \r\n
    \r\n \r\n );\r\n}\r\n\r\nconst MblMilestonePopup = ({\r\n mblId,\r\n storageKey,\r\n onClose,\r\n isView,\r\n}:{\r\n mblId: number,\r\n storageKey: string,\r\n onClose: VoidFunction,\r\n isView: boolean,\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nMblMilestonePopup.defaultProps = {\r\n};\r\n\r\nMblMilestonePopup.propTypes = {\r\n mblId: PropTypes.number.isRequired,\r\n storageKey: PropTypes.string.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n isView: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport default React.memo(MblMilestonePopup);\r\n","import React from 'react';\r\n\r\nimport TextBox from '../../../../ui/TextBox';\r\n\r\nimport { now } from '../../../../dateUtils';\r\nimport InlineInputControlRow from '../../../../ui/layout/InlineInputControlRow';\r\nimport InlineInputControlRowNoLabel from '../../../../ui/layout/InlineInputControlRowNoLabel';\r\nimport { HblStatusViewModel } from '../../../../fms.core/HblStatusViewModel';\r\nimport BlueTitleRow from '../../../../ui/BlueTitleRow';\r\nimport BlStatusRow from '../../../common/BlStatusRow';\r\n\r\nfunction HblMilestone({\r\n hblNo,\r\n hbl,\r\n onChange,\r\n isEdit,\r\n isView,\r\n user\r\n}: {\r\n hblNo: string,\r\n hbl: HblStatusViewModel,\r\n onChange: (x:Partial) => void,\r\n user: string,\r\n isEdit: boolean,\r\n isView: boolean,\r\n}) {\r\n // function toggleTimestampProperty(name:string, value:boolean) {\r\n // const change:Partial = {};\r\n\r\n // if (value) {\r\n // const timestamp = now();\r\n // change[name] = timestamp;\r\n // change[`${name}User`] = user;\r\n // } else {\r\n // change[name] = null;\r\n // change[`${name}User`] = null;\r\n // }\r\n\r\n // onChange(change);\r\n // }\r\n\r\n // function onTimestampPropertyChange(name:string, value:string|null) {\r\n // const change:Partial = {};\r\n // change[name] = value;\r\n // onChange(change);\r\n // }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n {\r\n window.console.log(checked);\r\n }}\r\n labelColor={'blue'}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n oblRcvd,\r\n oblCol: oblRcvd ? '1' : '0',\r\n oblDate: oblRcvd ? now() : null,\r\n oblBy: oblRcvd ? user : '',\r\n })}\r\n dateTime={hbl.oblDate}\r\n onDateTimeChange={oblDate => onChange({oblDate, oblBy: oblDate ? hbl.oblBy : '', oblRcvd: oblDate ? hbl.oblRcvd : false})}\r\n userId={hbl.oblBy}\r\n labelColor={'blue'}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n rlsd,\r\n rlsDate: rlsd ? now() : null,\r\n rlsdBy: rlsd ? user : '',\r\n })}\r\n dateTime={hbl.rlsDate}\r\n onDateTimeChange={rlsDate => onChange({rlsDate, rlsdBy: rlsDate ? hbl.rlsdBy : '', rlsd: rlsDate ? hbl.rlsd : false})}\r\n userId={hbl.rlsdBy}\r\n labelColor={'blue'}\r\n />\r\n \r\n
    \r\n\r\n
    \r\n \r\n {\r\n window.console.log(checked);\r\n }}\r\n />\r\n \r\n\r\n \r\n {\r\n window.console.log(checked);\r\n }}\r\n dateTime={hbl.opCloseDate}\r\n onDateTimeChange={() => {}}\r\n userId={hbl.opClosedBy}\r\n showDatePlaceHolder={false}\r\n />\r\n \r\n\r\n \r\n {\r\n window.console.log(checked);\r\n }}\r\n dateTime={hbl.actClosed ? hbl.actCloseDate : ''}\r\n onDateTimeChange={() => {}}\r\n userId={hbl.actClosed ? hbl.actClosedBy : ''}\r\n showDatePlaceHolder={false}\r\n />\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n B/L Status} />\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n onChange({\r\n trackerChk,\r\n trackerDate: trackerChk ? now() : null,\r\n trackerBy: trackerChk ? user : '',\r\n })}\r\n dateTime={hbl.trackerDate}\r\n onDateTimeChange={trackerDate => onChange({trackerDate, trackerBy: trackerDate ? hbl.trackerBy : '', trackerChk: trackerDate ? hbl.trackerChk : false})}\r\n userId={hbl.trackerBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n lastTrackChk,\r\n lastTrackDate: lastTrackChk ? now() : null,\r\n lastTrackBy: lastTrackChk ? user : '',\r\n })}\r\n dateTime={hbl.lastTrackDate}\r\n onDateTimeChange={lastTrackDate => onChange({lastTrackDate, lastTrackBy: lastTrackDate ? hbl.lastTrackBy : '', lastTrackChk: lastTrackDate ? hbl.lastTrackChk : false})}\r\n userId={hbl.lastTrackBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n anPrtChk,\r\n anPrtDate: anPrtChk ? now() : null,\r\n anPrtBy: anPrtChk ? user : '',\r\n })}\r\n dateTime={hbl.anPrtDate}\r\n onDateTimeChange={anPrtDate => onChange({anPrtDate, anPrtBy: anPrtDate ? hbl.anPrtBy : '', anPrtChk: anPrtDate ? hbl.anPrtChk : false})}\r\n userId={hbl.anPrtBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n commDocChk,\r\n commDocDate: commDocChk ? now() : null,\r\n commDocBy: commDocChk ? user : '',\r\n })}\r\n dateTime={hbl.commDocDate}\r\n onDateTimeChange={commDocDate => onChange({commDocDate, commDocBy: commDocDate ? hbl.commDocBy : '', commDocChk: commDocDate ? hbl.commDocChk : false})}\r\n userId={hbl.commDocBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n entryDocChk,\r\n entryDocDate: entryDocChk ? now() : null,\r\n entryDocBy: entryDocChk ? user : '',\r\n })}\r\n dateTime={hbl.entryDocDate}\r\n onDateTimeChange={entryDocDate => onChange({entryDocDate, entryDocBy: entryDocDate ? hbl.entryDocBy : '', entryDocChk: entryDocDate ? hbl.entryDocChk : false})}\r\n userId={hbl.entryDocBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n f7501Chk,\r\n f7501Date: f7501Chk ? now() : null,\r\n f7501By: f7501Chk ? user : '',\r\n })}\r\n dateTime={hbl.f7501Date}\r\n onDateTimeChange={f7501Date => onChange({f7501Date, f7501By: f7501Date ? hbl.f7501By : '', f7501Chk: f7501Date ? hbl.f7501Chk : false})}\r\n userId={hbl.f7501By}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n f3461Chk,\r\n f3461Date: f3461Chk ? now() : null,\r\n f3461By: f3461Chk ? user : '',\r\n })}\r\n dateTime={hbl.f3461Date}\r\n onDateTimeChange={f3461Date => onChange({f3461Date, f3461By: f3461Date ? hbl.f3461By : '', f3461Chk: f3461Date ? hbl.f3461Chk : false})}\r\n userId={hbl.f3461By}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n customsStatus: value ? (hbl.customsStatus === '2' ? '3' : '1') : (hbl.customsStatus === '3' ? '2' : '0'),\r\n cClearDate: value ? now() : null,\r\n cClearBy: value ? user : '',\r\n })}\r\n dateTime={hbl.cClearDate}\r\n onDateTimeChange={cClearDate => onChange({\r\n cClearDate,\r\n cClearBy: cClearDate ? hbl.cClearBy : '',\r\n customsStatus: cClearDate ? hbl.customsStatus : (hbl.customsStatus === '3' ? '2' : '0')\r\n })}\r\n userId={hbl.cClearBy}\r\n labelColor='blue'\r\n />\r\n \r\n\r\n \r\n onChange({\r\n customsStatus: value ? (hbl.customsStatus === '1' ? '3' : '2') : (hbl.customsStatus === '3' ? '1' : '0'),\r\n cHoldDate: value ? now() : null,\r\n cHoldBy: value ? user : '',\r\n\r\n //Reset Cargo Release\r\n rlsd : false,\r\n rlsDate: null,\r\n rlsdBy: '',\r\n })}\r\n dateTime={hbl.cHoldDate}\r\n onDateTimeChange={cHoldDate => onChange({\r\n cHoldDate,\r\n cHoldBy: cHoldDate ? hbl.cHoldBy : '',\r\n customsStatus: cHoldDate ? hbl.customsStatus : (hbl.customsStatus === '3' ? '1' : '0')\r\n })}\r\n userId={hbl.cHoldBy}\r\n labelColor='blue'\r\n />\r\n \r\n\r\n \r\n onChange({\r\n customsStatus: hbl.customsStatus === '3' ? '1' : (hbl.customsStatus === '2' ? '0' : hbl.customsStatus),\r\n isClear,\r\n cReleaseDate: isClear ? now() : null,\r\n cReleaseBy: isClear ? user : '',\r\n \r\n // Reset Customs Hold\r\n cHoldDate: null,\r\n cHoldBy: '',\r\n })}\r\n dateTime={hbl.cReleaseDate}\r\n onDateTimeChange={cReleaseDate => onChange({cReleaseDate, cReleaseBy: cReleaseDate ? hbl.cReleaseBy : '', isClear: cReleaseDate ? hbl.isClear : false})}\r\n userId={hbl.cReleaseBy}\r\n labelColor='blue'\r\n />\r\n \r\n\r\n \r\n onChange({\r\n examOnChk,\r\n examOnDate: examOnChk ? now() : null,\r\n examOnBy: examOnChk ? user : '',\r\n })}\r\n dateTime={hbl.examOnDate}\r\n onDateTimeChange={examOnDate => onChange({examOnDate, examOnBy: examOnDate ? hbl.examOnBy : '', examOnChk: examOnDate ? hbl.examOnChk : false})}\r\n userId={hbl.examOnBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n examOffChk,\r\n examOffDate: examOffChk ? now() : null,\r\n examOffBy: examOffChk ? user : '',\r\n })}\r\n dateTime={hbl.examOffDate}\r\n onDateTimeChange={examOffDate => onChange({examOffDate, examOffBy: examOffDate ? hbl.examOffBy : '', examOffChk: examOffDate ? hbl.examOffChk : false})}\r\n userId={hbl.examOffBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n fdaHold,\r\n fdaHoldDate: fdaHold ? now() : null,\r\n fdaHoldBy: fdaHold ? user : '',\r\n \r\n //Reset Cargo Release\r\n rlsd : false,\r\n rlsDate: null,\r\n rlsdBy: '',\r\n })}\r\n dateTime={hbl.fdaHoldDate}\r\n onDateTimeChange={fdaHoldDate => onChange({fdaHoldDate, fdaHoldBy: fdaHoldDate ? hbl.fdaHoldBy : '', fdaHold: fdaHoldDate ? hbl.fdaHold : false})}\r\n userId={hbl.fdaHoldBy}\r\n labelColor='blue'\r\n />\r\n \r\n\r\n \r\n onChange({\r\n fdaRls,\r\n fdaRlsDate: fdaRls ? now() : null,\r\n fdaRlsBy: fdaRls ? user : '',\r\n\r\n //Reset PGA Hold\r\n fdaHold: false,\r\n fdaHoldDate : null,\r\n fdaHoldBy : '',\r\n })}\r\n dateTime={hbl.fdaRlsDate}\r\n onDateTimeChange={fdaRlsDate => onChange({fdaRlsDate, fdaRlsBy: fdaRlsDate ? hbl.fdaRlsBy : '', fdaRls: fdaRlsDate ? hbl.fdaRls : false})}\r\n userId={hbl.fdaRlsBy}\r\n labelColor='blue'\r\n />\r\n \r\n
    \r\n\r\n
    \r\n \r\n onChange({\r\n inlandNtcChk,\r\n inlandNtcDate: inlandNtcChk ? now() : null,\r\n inlandNtcBy: inlandNtcChk ? user : '',\r\n })}\r\n dateTime={hbl.inlandNtcDate}\r\n onDateTimeChange={inlandNtcDate => onChange({inlandNtcDate, inlandNtcBy: inlandNtcDate ? hbl.inlandNtcBy : '', inlandNtcChk: inlandNtcDate ? hbl.inlandNtcChk : false})}\r\n userId={hbl.inlandNtcBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n puSentChk,\r\n puSentDate: puSentChk ? now() : null,\r\n puSentBy: puSentChk ? user : '',\r\n })}\r\n dateTime={hbl.puSentDate}\r\n onDateTimeChange={puSentDate => onChange({puSentDate, puSentBy: puSentDate ? hbl.puSentBy : '', puSentChk: puSentDate ? hbl.puSentChk : false})}\r\n userId={hbl.puSentBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n doConfirmChk,\r\n doConfirmDate: doConfirmChk ? now() : null,\r\n doConfirmBy: doConfirmChk ? user : '',\r\n })}\r\n dateTime={hbl.doConfirmDate}\r\n onDateTimeChange={doConfirmDate => onChange({doConfirmDate, doConfirmBy: doConfirmDate ? hbl.doConfirmBy : '', doConfirmChk: doConfirmDate ? hbl.doConfirmChk : false})}\r\n userId={hbl.doConfirmBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n delAddrChk,\r\n delAddrDate: delAddrChk ? now() : null,\r\n delAddrBy: delAddrChk ? user : '',\r\n })}\r\n dateTime={hbl.delAddrDate}\r\n onDateTimeChange={delAddrDate => onChange({delAddrDate, delAddrBy: delAddrDate ? hbl.delAddrBy : '', delAddrChk: delAddrDate ? hbl.delAddrChk : false})}\r\n userId={hbl.delAddrBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n doSentChk,\r\n doSentDate: doSentChk ? now() : null,\r\n doSentBy: doSentChk ? user : '',\r\n })}\r\n dateTime={hbl.doSentDate}\r\n onDateTimeChange={doSentDate => onChange({doSentDate, doSentBy: doSentDate ? hbl.doSentBy : '', doSentChk: doSentDate ? hbl.doSentChk : false})}\r\n userId={hbl.doSentBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n delSchedChk,\r\n delSchedDate: delSchedChk ? now() : null,\r\n delSchedBy: delSchedChk ? user : '',\r\n })}\r\n dateTime={hbl.delSchedDate}\r\n onDateTimeChange={delSchedDate => onChange({delSchedDate, delSchedBy: delSchedDate ? hbl.delSchedBy : '', delSchedChk: delSchedDate ? hbl.delSchedChk : false})}\r\n userId={hbl.delSchedBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n delActChk,\r\n delActDate: delActChk ? now() : null,\r\n delActBy: delActChk ? user : '',\r\n })}\r\n dateTime={hbl.delActDate}\r\n onDateTimeChange={delActDate => onChange({delActDate, delActBy: delActDate ? hbl.delActBy : '', delActChk: delActDate ? hbl.delActChk : false})}\r\n userId={hbl.delActBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n emptyRetChk,\r\n emptyRetDate: emptyRetChk ? now() : null,\r\n emptyRetBy: emptyRetChk ? user : '',\r\n })}\r\n dateTime={hbl.emptyRetDate}\r\n onDateTimeChange={emptyRetDate => onChange({emptyRetDate, emptyRetBy: emptyRetDate ? hbl.emptyRetBy : '', emptyRetChk: emptyRetDate ? hbl.emptyRetChk : false})}\r\n userId={hbl.emptyRetBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n podChk,\r\n podDate: podChk ? now() : null,\r\n podBy: podChk ? user : '',\r\n })}\r\n dateTime={hbl.podDate}\r\n onDateTimeChange={podDate => onChange({podDate, podBy: podDate ? hbl.podBy : '', podChk: podDate ? hbl.podChk : false})}\r\n userId={hbl.podBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n billChk,\r\n billDate: billChk ? now() : null,\r\n billBy: billChk ? user : '',\r\n })}\r\n dateTime={hbl.billDate}\r\n onDateTimeChange={billDate => onChange({billDate, billBy: billDate ? hbl.billBy : '', billChk: billDate ? hbl.billChk : false})}\r\n userId={hbl.billBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n billPacketChk,\r\n billPacketDate: billPacketChk ? now() : null,\r\n billPacketBy: billPacketChk ? user : '',\r\n })}\r\n dateTime={hbl.billPacketDate}\r\n onDateTimeChange={billPacketDate => onChange({billPacketDate, billPacketBy: billPacketDate ? hbl.billPacketBy : '', billPacketChk: billPacketDate ? hbl.billPacketChk : false})}\r\n userId={hbl.billPacketBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n ddpChk,\r\n ddpDate: ddpChk ? now() : null,\r\n ddpBy: ddpChk ? user : '',\r\n })}\r\n dateTime={hbl.ddpDate}\r\n onDateTimeChange={ddpDate => onChange({ddpDate, ddpBy: ddpDate ? hbl.ddpBy : '', ddpChk: ddpDate ? hbl.ddpChk : false})}\r\n userId={hbl.ddpBy}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default React.memo(HblMilestone);\r\n","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\nimport Skeleton, { SkeletonTheme } from \"react-loading-skeleton\";\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport { ApiResult, InsertResultsWithData } from '../../../framework.core/data/ApiResult';\r\nimport { getTbNameByJobName, JobNames } from '../../../framework.core/JobNames';\r\nimport useDirtyCheck from '../../../hooks/useDirtyCheck2';\r\n\r\nimport HblMilestoneView from './implementation/HblMilestone';\r\n\r\nimport { useTypedFastStorage } from '../../../hooks/useFastStorage';\r\n\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport { SQLField, SQLInfo } from '../../../framework.core/data/SQLInfo';\r\nimport { historyUpdate } from '../../../fms.data/modules/FmsModFunc';\r\nimport { TrackableEntity } from '../../../fms.core/data/ChangeTrackable';\r\nimport { checkPropDirty, getSQLInfoList2 } from '../../../fms.core/data/TrackingModule';\r\nimport { HblStatusViewModel } from '../../../fms.core/HblStatusViewModel';\r\nimport SecondaryButton from '../../../ui/SecondaryButton';\r\nimport { stringsEqualIgnoreCase } from '../../../util';\r\nimport JobListViewContext from '../../common/JobListViewContext';\r\nimport fastStorage from \"../../../fastStorage\";\r\nimport { BlEventName } from '../../../framework.core/BlEventName';\r\nimport { BlEventLog } from '../../../fms.core/BlEventLog';\r\nimport { getFmsGlobal } from '../../../globals';\r\nimport constants from '../../../constants';\r\nimport useSetEditedId from '../../../hooks/useSetEditedId';\r\nimport { receiptContainerDetails } from './../../warehousing/tableSettings/index';\r\n\r\nfunction HblBlStatusImpl({\r\n hblNo,\r\n hblId,\r\n storageKey,\r\n onClose,\r\n isView,\r\n}: {\r\n hblNo: string,\r\n hblId: number,\r\n storageKey: string,\r\n onClose: (x:HblStatusViewModel|null) => void,\r\n isView: boolean,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const jobListContext = useContext(JobListViewContext);\r\n \r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const [initialized, setInitialized] = useState(false);\r\n \r\n const [blStatus, setBlStatus, removeBlStatus, blStatusRef] = useTypedFastStorage(storageKey, null);\r\n const {setCleanState, dirtyCleanup} = useDirtyCheck(\r\n storageKey,\r\n ['updated', 'updatedBy']);\r\n\r\n const setSavedEntity = useSetEditedId([JobNames.OIHbl]);\r\n \r\n\r\n useEffect(() => {\r\n initialize();\r\n return () => {\r\n removeBlStatus();\r\n dirtyCleanup();\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function doClose(notifyResult: boolean = false) {\r\n onClose(notifyResult ? blStatusRef.current : null);\r\n }\r\n\r\n function refreshView(hblId: number) {\r\n // let keyMatch = _.keys(fastStorage).find(x => x.startsWith('ifms-list-data-/common/joblistview/hbl/oceanImport'));\r\n // if (keyMatch) {\r\n // const listData = _.values(fastStorage[keyMatch]);\r\n // // listData.filter(x => x.id === hblId)[0].anPrtChk = !!blStatusRef.current?.anPrtDate;\r\n // // listData.filter(x => x.id === hblId)[0].cClear = !!blStatusRef.current?.cClearDate;\r\n // // listData.filter(x => x.id === hblId)[0].cHold = !!blStatusRef.current?.cHoldDate;\r\n // // jobListContext.updateDataRow(listData.filter(x => x.id === hblId)[0]);\r\n // }\r\n\r\n // OIH List\r\n setSavedEntity(hblId.toString(), false);\r\n\r\n // My Event List\r\n const keyMatch = _.keys(fastStorage).find(x => x.startsWith('ifms-list-data-/common/joblistview/MYEVT/myEvent'));\r\n if (keyMatch) {\r\n const listData = _.values(fastStorage[keyMatch]);\r\n listData.filter(x => x.hblId === hblId).forEach(row => {\r\n row.customsRlsDate = blStatusRef.current?.cReleaseDate;\r\n row.anSentDate = blStatusRef.current?.anPrtDate;\r\n jobListContext.updateDataRow(row);\r\n });\r\n }\r\n }\r\n\r\n async function initialize() {\r\n const apiResult:ApiResult = await appContext.api.getHblStatusViewModel(JobNames.OIHbl, hblId);\r\n\r\n if (!apiResult) {\r\n await showGlobalOkDialog('Cannot load data');\r\n doClose();\r\n return;\r\n }\r\n\r\n const loadedModelObj = new HblStatusViewModel(apiResult.result);\r\n setCleanState(loadedModelObj);\r\n\r\n setBlStatus(new HblStatusViewModel(_.cloneDeep(loadedModelObj)));\r\n\r\n if(blStatusRef.current !== null) {\r\n blStatusRef.current.trackable = true;\r\n }\r\n\r\n setInitialized(true);\r\n }\r\n\r\n async function save() {\r\n if (!blStatus || !blStatusRef.current) {\r\n throw new Error('Invalid operation');\r\n }\r\n\r\n if(!blStatusRef.current.isDirty) {\r\n //await showGlobalOkDialog(

    Nothing to save!!!

    );\r\n doClose();\r\n return;\r\n }\r\n\r\n const si:SQLInfo[] = [];\r\n\r\n let hiSqlInfo = historyUpdate(getTbNameByJobName(JobNames.OIHbl), hblId, appContext.user?.id??'', 'Update B/L Info');\r\n if (hiSqlInfo) {\r\n si.push(hiSqlInfo);\r\n }\r\n \r\n const sqlInfoList = getSQLInfoList2(blStatusRef.current as TrackableEntity, HblStatusViewModel.getFieldMappings(JobNames.OIHbl));\r\n sqlInfoList.push(...si);\r\n\r\n sqlInfoList.filter(x => stringsEqualIgnoreCase(x.tableName, \"t_aotherinfo\")).forEach(x => {\r\n SQLInfo.setWhereFieldValueByFieldName(x, 'f_tbid', hblId);\r\n });\r\n\r\n sqlInfoList.filter(x => stringsEqualIgnoreCase(x.tableName, \"t_oihmain\")).forEach(x => {\r\n if(!SQLInfo.hasWhereFieldOfPropertyWithValue(x, 'f_id', hblId)){\r\n x.whereFields.push(new SQLField({fieldName: 'f_id', value: hblId}));\r\n }\r\n });\r\n\r\n const apiResult:ApiResult = await appContext.api.saveHblStatusViewModel(sqlInfoList);\r\n\r\n if (apiResult && apiResult.success) {\r\n await UpdateLogHblMilestone(); //[t49-webhook] LogMblMilestone. 이 기능은 TrackingService를 사용하지 않더라도 적용한다.\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n refreshView(hblId);\r\n doClose(true); \r\n } else {\r\n await showGlobalOkDialog(
    \r\n

    Cannot save

    \r\n

    {apiResult?.message}

    \r\n
    );\r\n }\r\n }\r\n \r\n async function UpdateLogHblMilestone() {\r\n if (!blStatus) return;\r\n\r\n let cmile:BlEventLog[] = [];\r\n\r\n if (checkPropDirty(blStatus, 'f3461Date')) {\r\n cmile.push(new BlEventLog(BlEventName.Fms3461, blStatus.f3461Date))\r\n }\r\n if (checkPropDirty(blStatus, 'f7501Date')) {\r\n cmile.push(new BlEventLog(BlEventName.Fms7501, blStatus.f7501Date))\r\n }\r\n if (checkPropDirty(blStatus, 'doSentDate')) {\r\n cmile.push(new BlEventLog(BlEventName.FmsDoSent, blStatus.doSentDate))\r\n }\r\n if (checkPropDirty(blStatus, 'delSchedDate')) {\r\n cmile.push(new BlEventLog(BlEventName.FmsDelSched, blStatus.delSchedDate))\r\n }\r\n if (checkPropDirty(blStatus, 'delActDate')) {\r\n cmile.push(new BlEventLog(BlEventName.FmsDelAct, blStatus.delActDate))\r\n }\r\n\r\n if (cmile.length > 0) {\r\n const tempData = cmile.sort((a, b) => new Date(a.eventAt ?? '').getTime() - new Date(b.eventAt ?? '').getTime());\r\n const lastEvents: BlEventLog = tempData[tempData.length - 1];\r\n lastEvents.suntekID = getFmsGlobal().AcmeID ?? '';\r\n lastEvents.jobName = JobNames.OIHbl;\r\n lastEvents.jobId = hblId;\r\n lastEvents.blNo = blStatus.hblNo;\r\n //lastEvents.eventAtUtc\r\n lastEvents.u1Id = appContext.user?.id ?? '';\r\n const apiResult = await appContext.api.trackingLogHblMilestone(lastEvents);;\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

    );\r\n }\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n {!initialized &&\r\n
    \r\n \r\n \r\n \r\n
    \r\n }\r\n\r\n {!!blStatus &&\r\n
    \r\n \r\n\r\n
    \r\n \r\n Update\r\n \r\n \r\n Cancel\r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n );\r\n}\r\n\r\nfunction HblBlStatusInitializedImpl({\r\n hblNo,\r\n hbl,\r\n setHbl,\r\n isView,\r\n}: {\r\n hblNo: string,\r\n hbl: HblStatusViewModel,\r\n setHbl: (x:Partial) => void,\r\n isView: boolean,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nconst HblBlStatusPopup = ({\r\n hblNo,\r\n hblId,\r\n storageKey,\r\n onClose,\r\n isView,\r\n}:{\r\n hblNo: string,\r\n hblId: number,\r\n storageKey: string,\r\n onClose: (x:HblStatusViewModel|null) => void,\r\n isView: boolean,\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nHblBlStatusPopup.defaultProps = {\r\n};\r\n\r\nHblBlStatusPopup.propTypes = {\r\n hblId: PropTypes.number.isRequired,\r\n storageKey: PropTypes.string.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n isView: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport default React.memo(HblBlStatusPopup);\r\n","import React from 'react';\r\n\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport Date from '../../../../ui/Date';\r\n\r\nimport { now } from '../../../../dateUtils';\r\nimport InlineInputControlRow from \"../../../../ui/layout/InlineInputControlRow\";\r\nimport { HblStatusViewModel } from '../../../../fms.core/HblStatusViewModel';\r\nimport InlineInputControlRowNoLabel from '../../../../ui/layout/InlineInputControlRowNoLabel';\r\nimport BlStatusRow from '../../../common/BlStatusRow';\r\nimport BlueTitleRow from '../../../../ui/BlueTitleRow';\r\n\r\nfunction HblMilestone({\r\n blStatus,\r\n onChange,\r\n isView,\r\n user\r\n}: {\r\n blStatus: HblStatusViewModel,\r\n onChange: (x:Partial) => void,\r\n user: string,\r\n isView: boolean,\r\n}) {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n {}}\r\n userId={blStatus.opClosedBy}\r\n onToggle={checked => {\r\n window.console.log(checked);\r\n }}\r\n showDatePlaceHolder={false}\r\n />\r\n \r\n\r\n \r\n {}}\r\n userId={blStatus.actClosed ? blStatus.actClosedBy : ''}\r\n onToggle={checked => {\r\n window.console.log(checked);\r\n }}\r\n showDatePlaceHolder={false}\r\n />\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n B/L Status} />\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n onChange({\r\n trackerChk,\r\n trackerDate: trackerChk ? now() : null,\r\n trackerBy: trackerChk ? user : '',\r\n })}\r\n dateTime={blStatus.trackerDate}\r\n onDateTimeChange={trackerDate => onChange({trackerDate, trackerBy: trackerDate ? blStatus.trackerBy : '', trackerChk: trackerDate ? blStatus.trackerChk : false})}\r\n userId={blStatus.trackerBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n lastTrackChk,\r\n lastTrackDate: lastTrackChk ? now() : null,\r\n lastTrackBy: lastTrackChk ? user : '',\r\n })}\r\n dateTime={blStatus.lastTrackDate}\r\n onDateTimeChange={lastTrackDate => onChange({lastTrackDate, lastTrackBy: lastTrackDate ? blStatus.lastTrackBy : '', lastTrackChk: lastTrackDate ? blStatus.lastTrackChk : false})}\r\n userId={blStatus.lastTrackBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n emptyRetChk,\r\n emptyRetDate: emptyRetChk ? now() : null,\r\n emptyRetBy: emptyRetChk ? user : '',\r\n })}\r\n dateTime={blStatus.emptyRetDate}\r\n onDateTimeChange={emptyRetDate => onChange({emptyRetDate, emptyRetBy: emptyRetDate ? blStatus.emptyRetBy : '', emptyRetChk: emptyRetDate ? blStatus.emptyRetChk : false})}\r\n userId={blStatus.emptyRetBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n anPrtChk,\r\n anPrtDate: anPrtChk ? now() : null,\r\n anPrtBy: anPrtChk ? user : '',\r\n })}\r\n dateTime={blStatus.anPrtDate}\r\n onDateTimeChange={anPrtDate => onChange({anPrtDate, anPrtBy: anPrtDate ? blStatus.anPrtBy : '', anPrtChk: anPrtDate ? blStatus.anPrtChk : false})}\r\n userId={blStatus.anPrtBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n isRcvDoc,\r\n rcvDocDate: isRcvDoc ? now() : null,\r\n rcvDocDateBy: isRcvDoc ? user : '',\r\n })}\r\n dateTime={blStatus.rcvDocDate}\r\n onDateTimeChange={rcvDocDate => onChange({rcvDocDate, rcvDocDateBy: rcvDocDate ? blStatus.rcvDocDateBy : '', isRcvDoc: rcvDocDate ? blStatus.isRcvDoc : false})}\r\n userId={blStatus.rcvDocDateBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n inlandNtcChk,\r\n inlandNtcDate: inlandNtcChk ? now() : null,\r\n inlandNtcBy: inlandNtcChk ? user : '',\r\n })}\r\n dateTime={blStatus.inlandNtcDate}\r\n onDateTimeChange={inlandNtcDate => onChange({inlandNtcDate, inlandNtcBy: inlandNtcDate ? blStatus.inlandNtcBy : '', inlandNtcChk: inlandNtcDate ? blStatus.inlandNtcChk : false})}\r\n userId={blStatus.inlandNtcBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n doConfirmChk,\r\n doConfirmDate: doConfirmChk ? now() : null,\r\n doConfirmBy: doConfirmChk ? user : '',\r\n })}\r\n dateTime={blStatus.doConfirmDate}\r\n onDateTimeChange={doConfirmDate => onChange({doConfirmDate, doConfirmBy: doConfirmDate ? blStatus.doConfirmBy : '', doConfirmChk: doConfirmDate ? blStatus.doConfirmChk : false})}\r\n userId={blStatus.doConfirmBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n doSentChk,\r\n doSentDate: doSentChk ? now() : null,\r\n doSentBy: doSentChk ? user : '',\r\n })}\r\n dateTime={blStatus.doSentDate}\r\n onDateTimeChange={doSentDate => onChange({doSentDate, doSentBy: doSentDate ? blStatus.doSentBy : '', doSentChk: doSentDate ? blStatus.doSentChk : false})}\r\n userId={blStatus.doSentBy}\r\n />\r\n \r\n
    \r\n\r\n
    \r\n \r\n onChange({\r\n ddpChk,\r\n ddpDate: ddpChk ? now() : null,\r\n ddpBy: ddpChk ? user : '',\r\n })}\r\n dateTime={blStatus.ddpDate}\r\n onDateTimeChange={ddpDate => onChange({ddpDate, ddpBy: ddpDate ? blStatus.ddpBy : '', ddpChk: ddpDate ? blStatus.ddpChk : false})}\r\n userId={blStatus.ddpBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n examOnChk,\r\n examOnDate: examOnChk ? now() : null,\r\n examOnBy: examOnChk ? user : '',\r\n })}\r\n dateTime={blStatus.examOnDate}\r\n onDateTimeChange={examOnDate => onChange({examOnDate, examOnBy: examOnDate ? blStatus.examOnBy : '', examOnChk: examOnDate ? blStatus.examOnChk : false})}\r\n userId={blStatus.examOnBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n isRcvCargo,\r\n rcvCargoDate: isRcvCargo ? now() : null,\r\n rcvCargoDateBy: isRcvCargo ? user : '',\r\n })}\r\n dateTime={blStatus.rcvCargoDate}\r\n onDateTimeChange={rcvCargoDate => onChange({rcvCargoDate, rcvCargoDateBy: rcvCargoDate ? blStatus.rcvCargoDateBy : '', isRcvCargo: rcvCargoDate ? blStatus.isRcvCargo : false})}\r\n userId={blStatus.rcvCargoDateBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n isDlvrCarr,\r\n dlvrCarrDate: isDlvrCarr ? now() : null,\r\n dlvrCarrDateby: isDlvrCarr ? user : '',\r\n })}\r\n dateTime={blStatus.dlvrCarrDate}\r\n onDateTimeChange={dlvrCarrDate => onChange({dlvrCarrDate, dlvrCarrDateby: dlvrCarrDate ? blStatus.dlvrCarrDateby : '', isDlvrCarr: dlvrCarrDate ? blStatus.isDlvrCarr : false})}\r\n userId={blStatus.dlvrCarrDateby}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n delAddrChk,\r\n delAddrDate: delAddrChk ? now() : null,\r\n delAddrBy: delAddrChk ? user : '',\r\n })}\r\n dateTime={blStatus.delAddrDate}\r\n onDateTimeChange={delAddrDate => onChange({delAddrDate, delAddrBy: delAddrDate ? blStatus.delAddrBy : '', delAddrChk: delAddrDate ? blStatus.delAddrChk : false})}\r\n userId={blStatus.delAddrBy}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default React.memo(HblMilestone);\r\n","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useContext, useEffect, useState } from 'react';\r\nimport Skeleton, { SkeletonTheme } from \"react-loading-skeleton\";\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport { ApiResult, InsertResultsWithData } from '../../../framework.core/data/ApiResult';\r\nimport { getTbNameByJobName, JobNames } from '../../../framework.core/JobNames';\r\nimport useDirtyCheck from '../../../hooks/useDirtyCheck2';\r\n\r\nimport HblMilestoneView from './implementation/HblMilestone';\r\n\r\nimport { useTypedFastStorage } from '../../../hooks/useFastStorage';\r\n\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport { TrackableEntity } from '../../../fms.core/data/ChangeTrackable';\r\nimport { checkPropDirty, getSQLInfoList2 } from '../../../fms.core/data/TrackingModule';\r\nimport { HblStatusViewModel } from '../../../fms.core/HblStatusViewModel';\r\nimport SecondaryButton from '../../../ui/SecondaryButton';\r\nimport { stringsEqualIgnoreCase } from '../../../util';\r\nimport { SQLField, SQLInfo } from '../../../framework.core/data/SQLInfo';\r\nimport { historyUpdate } from '../../../fms.data/modules/FmsModFunc';\r\nimport { BlEventLog } from '../../../fms.core/BlEventLog';\r\nimport { BlEventName } from '../../../framework.core/BlEventName';\r\nimport { getFmsGlobal } from '../../../globals';\r\nimport constants from '../../../constants';\r\n\r\nfunction getStorageKey(id: string) {\r\n return `oi-hbl-bl-status-${id}`;\r\n}\r\n\r\n\r\nfunction HblMilestoneImpl({\r\n hblId,\r\n storageKey,\r\n onClose,\r\n isView,\r\n}: {\r\n hblId: number,\r\n storageKey: string,\r\n onClose: (s: HblStatusViewModel|null) => void,\r\n isView: boolean,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const [initialized, setInitialized] = useState(false);\r\n\r\n const [blStatus, setBlStatus, removeBlStatus, blStatusRef] = useTypedFastStorage(getStorageKey(hblId.toString()), null);\r\n const {setCleanState, /*isDirtyComparedTo,*/ dirtyCleanup} = useDirtyCheck(getStorageKey(hblId.toString()), ['updated', 'updatedBy']);\r\n\r\n useEffect(() => {\r\n initialize();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n\r\n function doClose() {\r\n dirtyCleanup();\r\n cleanup();\r\n onClose(null);\r\n }\r\n\r\n function cleanup() {\r\n removeBlStatus();\r\n }\r\n\r\n async function loadBlStatus() {\r\n const apiResult:ApiResult= await appContext.api.getHblStatusViewModel(JobNames.OEHbl, hblId);\r\n\r\n if (!apiResult) {\r\n await showGlobalOkDialog('Cannot load data');\r\n onClose(null);\r\n return;\r\n }\r\n\r\n const loadedModelObj = new HblStatusViewModel(apiResult.result);\r\n setCleanState(loadedModelObj);\r\n\r\n setBlStatus(new HblStatusViewModel(_.cloneDeep(loadedModelObj)));\r\n\r\n if(blStatusRef.current !== null) {\r\n blStatusRef.current.trackable = true;\r\n }\r\n\r\n setInitialized(true);\r\n }\r\n\r\n async function initialize() {\r\n await loadBlStatus();\r\n }\r\n\r\n async function save() {\r\n if (!blStatus || !blStatusRef.current) {\r\n throw new Error('Invalid operation');\r\n }\r\n\r\n if(!blStatusRef.current.isDirty) {\r\n //await showGlobalOkDialog(

    Nothing to save!!!

    );\r\n doClose();\r\n return;\r\n }\r\n\r\n const si:SQLInfo[] = [];\r\n\r\n let hiSqlInfo = historyUpdate(getTbNameByJobName(JobNames.OEHbl), hblId, appContext.user?.id??'', 'Update B/L Info');\r\n if (hiSqlInfo) {\r\n si.push(hiSqlInfo);\r\n }\r\n \r\n const sqlInfoList = getSQLInfoList2(blStatusRef.current as TrackableEntity, HblStatusViewModel.getFieldMappings(JobNames.OEHbl));\r\n sqlInfoList.push(...si);\r\n\r\n sqlInfoList.filter(x => stringsEqualIgnoreCase(x.tableName, \"t_aotherinfo\")).forEach(x => {\r\n SQLInfo.setWhereFieldValueByFieldName(x, 'f_tbid', hblId);\r\n });\r\n\r\n sqlInfoList.filter(x => stringsEqualIgnoreCase(x.tableName, \"t_oohmain\")).forEach(x => {\r\n if(!SQLInfo.hasWhereFieldOfPropertyWithValue(x, 'f_id', hblId)){\r\n x.whereFields.push(new SQLField({fieldName: 'f_id', value: hblId}));\r\n }\r\n });\r\n\r\n const apiResult:ApiResult = await appContext.api.saveHblStatusViewModel(sqlInfoList);\r\n\r\n if (apiResult && apiResult.success) {\r\n await UpdateLogHblMilestone(); //[t49-webhook] LogMblMilestone. 이 기능은 TrackingService를 사용하지 않더라도 적용한다.\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n onClose(blStatusRef.current);\r\n \r\n } else {\r\n await showGlobalOkDialog(
    \r\n

    Cannot save

    \r\n

    {apiResult?.message}

    \r\n
    );\r\n }\r\n }\r\n\r\n async function UpdateLogHblMilestone() {\r\n if (!blStatus) return;\r\n\r\n let cmile:BlEventLog[] = [];\r\n\r\n if (checkPropDirty(blStatus, 'f3461Date')) {\r\n cmile.push(new BlEventLog(BlEventName.Fms3461, blStatus.f3461Date))\r\n }\r\n if (checkPropDirty(blStatus, 'f7501Date')) {\r\n cmile.push(new BlEventLog(BlEventName.Fms7501, blStatus.f7501Date))\r\n }\r\n if (checkPropDirty(blStatus, 'doSentDate')) {\r\n cmile.push(new BlEventLog(BlEventName.FmsDoSent, blStatus.doSentDate))\r\n }\r\n if (checkPropDirty(blStatus, 'delSchedDate')) {\r\n cmile.push(new BlEventLog(BlEventName.FmsDelSched, blStatus.delSchedDate))\r\n }\r\n if (checkPropDirty(blStatus, 'delActDate')) {\r\n cmile.push(new BlEventLog(BlEventName.FmsDelAct, blStatus.delActDate))\r\n }\r\n\r\n if (cmile.length > 0) {\r\n const tempData = cmile.sort((a, b) => new Date(a.eventAt ?? '').getTime() - new Date(b.eventAt ?? '').getTime());\r\n const lastEvents: BlEventLog = tempData[tempData.length - 1];\r\n lastEvents.suntekID = getFmsGlobal().AcmeID ?? '';\r\n lastEvents.jobName = JobNames.OEHbl;\r\n lastEvents.jobId = hblId;\r\n lastEvents.blNo = blStatus.hblNo;\r\n //lastEvents.eventAtUtc\r\n lastEvents.u1Id = appContext.user?.id ?? '';\r\n const apiResult = await appContext.api.trackingLogHblMilestone(lastEvents);;\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

    );\r\n }\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n {!initialized &&\r\n
    \r\n \r\n \r\n \r\n
    \r\n }\r\n {!!blStatus &&\r\n
    \r\n \r\n\r\n
    \r\n \r\n Update\r\n \r\n \r\n Cancel\r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n );\r\n}\r\n\r\nfunction HblMilestoneInitializedImpl({\r\n blStatus,\r\n setBlStatus,\r\n isView,\r\n}: {\r\n blStatus: HblStatusViewModel,\r\n setBlStatus: (x:Partial) => void,\r\n isView: boolean,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n\r\n /*const containerInfo:OhContainer[] = hbl.container ?? [];\r\n\r\n function changeContainerInfo(ci:OhContainer[]) {\r\n setHbl({ container: ci });\r\n }*/\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nconst HblMilestonePopup = ({\r\n hblId,\r\n storageKey,\r\n onClose,\r\n isView,\r\n}:{\r\n hblId: number,\r\n storageKey: string,\r\n onClose: (s: HblStatusViewModel|null) => void,\r\n isView: boolean,\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nHblMilestonePopup.defaultProps = {\r\n};\r\n\r\nHblMilestonePopup.propTypes = {\r\n hblId: PropTypes.number.isRequired,\r\n storageKey: PropTypes.string.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n isView: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport default React.memo(HblMilestonePopup);\r\n","import React, {useContext} from 'react';\r\n\r\nimport InlineInputControlRow from '../../../../ui/layout/InlineInputControlRow';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport DateTime from '../../../../ui/DateTime';\r\nimport Date from '../../../../ui/Date';\r\nimport {HblStatusViewModel} from '../../../../fms.core/HblStatusViewModel';\r\nimport InlineInputControlRowNoLabel from '../../../../ui/layout/InlineInputControlRowNoLabel';\r\nimport BlueTitleRow from '../../../../ui/BlueTitleRow';\r\nimport BlStatusRow from '../../../common/BlStatusRow';\r\nimport ApplicationContext from '../../../../ApplicationContext';\r\nimport { now } from '../../../../dateUtils';\r\n\r\nfunction HawbMilestone({\r\n blStatus,\r\n onChange,\r\n isView\r\n}: {\r\n blStatus: HblStatusViewModel,\r\n onChange: (x: Partial) => void,\r\n isView: boolean,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const user = appContext.user?.id??'';\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n  \r\n \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {}}\r\n dateTime={blStatus.opCloseDate}\r\n onDateTimeChange={() => {}}\r\n userId={blStatus.opClosedBy}\r\n showDatePlaceHolder={false}\r\n />\r\n \r\n\r\n \r\n {}}\r\n dateTime={blStatus.actClosed ? blStatus.actCloseDate : ''}\r\n onDateTimeChange={() => {}}\r\n userId={blStatus.actClosed ? blStatus.actClosedBy : ''}\r\n showDatePlaceHolder={false}\r\n />\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n B/L Status} />\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n onChange({\r\n f7501Chk,\r\n f7501Date: f7501Chk ? now() : null,\r\n f7501By: f7501Chk ? user : '',\r\n })}\r\n dateTime={blStatus.f7501Date}\r\n onDateTimeChange={f7501Date => onChange({f7501Date, f7501By: f7501Date ? blStatus.f7501By : '', f7501Chk: f7501Date ? blStatus.f7501Chk : false})}\r\n userId={blStatus.f7501By}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n puSentChk,\r\n puSentDate: puSentChk ? now() : null,\r\n puSentBy: puSentChk ? user : '',\r\n })}\r\n dateTime={blStatus.puSentDate}\r\n onDateTimeChange={puSentDate => onChange({puSentDate, puSentBy: puSentDate ? blStatus.puSentBy : '', puSentChk: puSentDate ? blStatus.puSentChk : false})}\r\n userId={blStatus.puSentBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n anSentChk,\r\n anSentDate: anSentChk ? now() : null,\r\n anSentBy: anSentChk ? user : '',\r\n })}\r\n dateTime={blStatus.anSentDate}\r\n onDateTimeChange={anSentDate => onChange({anSentDate, anSentBy: anSentDate ? blStatus.anSentBy : '', anSentChk: anSentDate ? blStatus.anSentChk : false})}\r\n userId={blStatus.anSentBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n trackerChk,\r\n trackerDate: trackerChk ? now() : null,\r\n trackerBy: trackerChk ? user : '',\r\n })}\r\n dateTime={blStatus.trackerDate}\r\n onDateTimeChange={trackerDate => onChange({trackerDate, trackerBy: trackerDate ? blStatus.trackerBy : '', trackerChk: trackerDate ? blStatus.trackerChk : false})}\r\n userId={blStatus.trackerBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n lastTrackChk,\r\n lastTrackDate: lastTrackChk ? now() : null,\r\n lastTrackBy: lastTrackChk ? user : '',\r\n })}\r\n dateTime={blStatus.lastTrackDate}\r\n onDateTimeChange={lastTrackDate => onChange({lastTrackDate, lastTrackBy: lastTrackDate ? blStatus.lastTrackBy : '', lastTrackChk: lastTrackDate ? blStatus.lastTrackChk : false})}\r\n userId={blStatus.lastTrackBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n commDocChk,\r\n commDocDate: commDocChk ? now() : null,\r\n commDocBy: commDocChk ? user : '',\r\n })}\r\n dateTime={blStatus.commDocDate}\r\n onDateTimeChange={commDocDate => onChange({commDocDate, commDocBy: commDocDate ? blStatus.commDocBy : '', commDocChk: commDocDate ? blStatus.commDocChk : false})}\r\n userId={blStatus.commDocBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n entryDocChk,\r\n entryDocDate: entryDocChk ? now() : null,\r\n entryDocBy: entryDocChk ? user : '',\r\n })}\r\n dateTime={blStatus.entryDocDate}\r\n onDateTimeChange={entryDocDate => onChange({entryDocDate, entryDocBy: entryDocDate ? blStatus.entryDocBy : '', entryDocChk: entryDocDate ? blStatus.entryDocChk : false})}\r\n userId={blStatus.entryDocBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n f3461Chk,\r\n f3461Date: f3461Chk ? now() : null,\r\n f3461By: f3461Chk ? user : '',\r\n })}\r\n dateTime={blStatus.f3461Date}\r\n onDateTimeChange={f3461Date => onChange({f3461Date, f3461By: f3461Date ? blStatus.f3461By : '', f3461Chk: f3461Date ? blStatus.f3461Chk : false})}\r\n userId={blStatus.f3461By}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n anPrtChk,\r\n anPrtDate: anPrtChk ? now() : null,\r\n anPrtBy: anPrtChk ? user : '',\r\n })}\r\n dateTime={blStatus.anPrtDate}\r\n onDateTimeChange={anPrtDate => onChange({anPrtDate, anPrtBy: anPrtDate ? blStatus.anPrtBy : '', anPrtChk: anPrtDate ? blStatus.anPrtChk : false})}\r\n userId={blStatus.anPrtBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n delSchedChk,\r\n delSchedDate: delSchedChk ? now() : null,\r\n delSchedBy: delSchedChk ? user : '',\r\n })}\r\n dateTime={blStatus.delSchedDate}\r\n onDateTimeChange={delSchedDate => onChange({delSchedDate, delSchedBy: delSchedDate ? blStatus.delSchedBy : '', delSchedChk: delSchedDate ? blStatus.delSchedChk : false})}\r\n userId={blStatus.delSchedBy}\r\n />\r\n \r\n
    \r\n\r\n
    \r\n \r\n onChange({\r\n delActChk,\r\n delActDate: delActChk ? now() : null,\r\n delActBy: delActChk ? user : '',\r\n })}\r\n dateTime={blStatus.delActDate}\r\n onDateTimeChange={delActDate => onChange({delActDate, delActBy: delActDate ? blStatus.delActBy : '', delActChk: delActDate ? blStatus.delActChk : false})}\r\n userId={blStatus.delActBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n emptyRetChk,\r\n emptyRetDate: emptyRetChk ? now() : null,\r\n emptyRetBy: emptyRetChk ? user : '',\r\n })}\r\n dateTime={blStatus.emptyRetDate}\r\n onDateTimeChange={emptyRetDate => onChange({emptyRetDate, emptyRetBy: emptyRetDate ? blStatus.emptyRetBy : '', emptyRetChk: emptyRetDate ? blStatus.emptyRetChk : false})}\r\n userId={blStatus.emptyRetBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n //isRls,\r\n paidDate: isRls ? now() : null,\r\n rlsBy: isRls ? user : '',\r\n })}\r\n dateTime={blStatus.paidDate}\r\n onDateTimeChange={paidDate => onChange({paidDate, rlsBy: paidDate ? blStatus.rlsBy : '', /*isRls: paidDate ? blStatus.isRls : false*/ })}\r\n userId={blStatus.rlsBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n podChk,\r\n podDate: podChk ? now() : null,\r\n podBy: podChk ? user : '',\r\n })}\r\n dateTime={blStatus.podDate}\r\n onDateTimeChange={podDate => onChange({podDate, podBy: podDate ? blStatus.podBy : '', podChk: podDate ? blStatus.podChk : false})}\r\n userId={blStatus.podBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n billPacketChk,\r\n billPacketDate: billPacketChk ? now() : null,\r\n billPacketBy: billPacketChk ? user : '',\r\n })}\r\n dateTime={blStatus.billPacketDate}\r\n onDateTimeChange={billPacketDate => onChange({billPacketDate, billPacketBy: billPacketDate ? blStatus.billPacketBy : '', billPacketChk: billPacketDate ? blStatus.billPacketChk : false})}\r\n userId={blStatus.billPacketBy}\r\n />\r\n \r\n\r\n \r\n onChange({\r\n billChk,\r\n billDate: billChk ? now() : null,\r\n billBy: billChk ? user : '',\r\n })}\r\n dateTime={blStatus.billDate}\r\n onDateTimeChange={billDate => onChange({billDate, billBy: billDate ? blStatus.billBy : '', billChk: billDate ? blStatus.billChk : false})}\r\n userId={blStatus.billBy}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nexport default React.memo(HawbMilestone);\r\n","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, {useContext, useEffect, useState} from 'react';\r\nimport Skeleton, {SkeletonTheme} from \"react-loading-skeleton\";\r\nimport ApplicationContext from '../../../ApplicationContext';\r\nimport {ApiResult, InsertResultsWithData} from '../../../framework.core/data/ApiResult';\r\nimport {getTbNameByJobName, JobNames} from '../../../framework.core/JobNames';\r\nimport useDirtyCheck from '../../../hooks/useDirtyCheck2';\r\n\r\nimport HawbMilestoneView from './implementation/HawbMilestone';\r\n\r\nimport {useTypedFastStorage} from '../../../hooks/useFastStorage';\r\n\r\nimport useGlobalOkDialog from '../../../hooks/useGlobalOkDialog';\r\nimport {SQLField, SQLInfo} from '../../../framework.core/data/SQLInfo';\r\nimport {TrackableEntity} from '../../../fms.core/data/ChangeTrackable';\r\nimport {checkPropDirty, getSQLInfoList2} from '../../../fms.core/data/TrackingModule';\r\nimport {HblStatusViewModel} from \"../../../fms.core/HblStatusViewModel\";\r\nimport {stringsEqualIgnoreCase} from \"../../../util\";\r\nimport SecondaryButton from '../../../ui/SecondaryButton';\r\nimport { historyUpdate } from '../../../fms.data/modules/FmsModFunc';\r\nimport JobListViewContext from '../../common/JobListViewContext';\r\nimport fastStorage from \"../../../fastStorage\";\r\nimport { BlEventLog } from '../../../fms.core/BlEventLog';\r\nimport { BlEventName } from '../../../framework.core/BlEventName';\r\nimport { getFmsGlobal } from '../../../globals';\r\nimport constants from '../../../constants';\r\n\r\nfunction HawbMilestoneImpl({\r\n hawbId,\r\n storageKey,\r\n onClose,\r\n isView,\r\n statusStorageKey\r\n}: {\r\n hawbId: number,\r\n storageKey: string,\r\n statusStorageKey: string,\r\n onClose: (s: HblStatusViewModel|null) => void,\r\n isView: boolean,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const [initialized, setInitialized] = useState(false);\r\n\r\n const [blStatus, setBlStatus, removeBlStatus, blStatusRef] = useTypedFastStorage(statusStorageKey, null);\r\n const {setCleanState, /*isDirtyComparedTo,*/ dirtyCleanup} = useDirtyCheck(statusStorageKey, ['updated', 'updatedBy']);\r\n const jobListContext = useContext(JobListViewContext);\r\n\r\n useEffect(() => {\r\n initialize();\r\n return () => {\r\n removeBlStatus();\r\n dirtyCleanup();\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []\r\n );\r\n \r\n function RefreshListView(hawbId: number) {\r\n if(!blStatus) return;\r\n\r\n const editModelKey = 'ifms-list-data-/common/joblistview/aiHawb/airImport';\r\n const keyMatch = _.keys(fastStorage).find(x => x.startsWith(editModelKey));\r\n if (keyMatch) {\r\n const listData = _.values(fastStorage[keyMatch]);\r\n if (checkPropDirty(blStatus, 'anSentChk')) listData.filter(x => x.id === hawbId)[0].anSent = blStatusRef.current?.anSentChk;\r\n if (checkPropDirty(blStatus, 'entryDocChk')) listData.filter(x => x.id === hawbId)[0].atmeSent = !!blStatusRef.current?.entryDocChk;\r\n jobListContext.updateDataRow(listData.filter(x => x.id === hawbId)[0]);\r\n }\r\n }\r\n\r\n async function loadBlStatus() {\r\n const apiResult:ApiResult = await appContext.api.getHblStatusViewModel(JobNames.AIHbl, hawbId);\r\n\r\n if (!apiResult) {\r\n await showGlobalOkDialog('Cannot load data');\r\n onClose(null);\r\n return;\r\n }\r\n\r\n const loadedModelObj = new HblStatusViewModel(apiResult.result);\r\n setCleanState(loadedModelObj);\r\n\r\n setBlStatus(new HblStatusViewModel(_.cloneDeep(loadedModelObj)));\r\n\r\n if(blStatusRef.current !== null) {\r\n blStatusRef.current.trackable = true;\r\n }\r\n\r\n setInitialized(true);\r\n }\r\n\r\n async function initialize() {\r\n await loadBlStatus();\r\n }\r\n\r\n async function save() {\r\n if (!blStatus || !blStatusRef.current) {\r\n throw new Error('Invalid operation');\r\n }\r\n\r\n if(!blStatusRef.current.isDirty) {\r\n //await showGlobalOkDialog(

    Nothing to save!!!

    );\r\n onClose(null);\r\n return;\r\n }\r\n\r\n const si:SQLInfo[] = [];\r\n\r\n let hiSqlInfo = historyUpdate(getTbNameByJobName(JobNames.AIHbl), hawbId, appContext.user?.id??'', 'Update B/L Info');\r\n if (hiSqlInfo) {\r\n si.push(hiSqlInfo);\r\n }\r\n \r\n const sqlInfoList = getSQLInfoList2(blStatusRef.current as TrackableEntity, HblStatusViewModel.getFieldMappings(JobNames.AIHbl));\r\n sqlInfoList.push(...si);\r\n\r\n sqlInfoList.filter(x => stringsEqualIgnoreCase(x.tableName, \"t_aotherinfo\")).forEach(x => {\r\n SQLInfo.setWhereFieldValueByFieldName(x, 'f_tbid', hawbId);\r\n });\r\n\r\n sqlInfoList.filter(x => stringsEqualIgnoreCase(x.tableName, \"t_aihmain\")).forEach(x => {\r\n if(!SQLInfo.hasWhereFieldOfPropertyWithValue(x, 'f_id', hawbId)){\r\n x.whereFields.push(new SQLField({fieldName: 'f_id', value: hawbId}));\r\n }\r\n });\r\n\r\n const apiResult:ApiResult = await appContext.api.saveHblStatusViewModel(sqlInfoList);\r\n\r\n if (apiResult && apiResult.success) {\r\n await UpdateLogHawbMilestone(); //[t49-webhook] LogMblMilestone. 이 기능은 TrackingService를 사용하지 않더라도 적용한다.\r\n await showGlobalOkDialog(

    The data has been saved

    );\r\n RefreshListView(hawbId);\r\n } else {\r\n await showGlobalOkDialog(
    \r\n

    Cannot save

    \r\n

    {apiResult?.message}

    \r\n
    );\r\n }\r\n\r\n onClose(blStatusRef.current);\r\n }\r\n\r\n async function UpdateLogHawbMilestone() {\r\n if (!blStatus) return;\r\n\r\n let cmile:BlEventLog[] = [];\r\n\r\n if (checkPropDirty(blStatus, 'anPrtDate')) {\r\n cmile.push(new BlEventLog(BlEventName.Fms7501, blStatus.anPrtDate))\r\n }\r\n if (checkPropDirty(blStatus, 'delSchedDate')) {\r\n cmile.push(new BlEventLog(BlEventName.Fms3461, blStatus.delSchedDate))\r\n }\r\n if (checkPropDirty(blStatus, 'delActDate')) {\r\n cmile.push(new BlEventLog(BlEventName.FmsDelSched, blStatus.delActDate))\r\n }\r\n if (checkPropDirty(blStatus, 'emptyRetDate')) {\r\n cmile.push(new BlEventLog(BlEventName.FmsDelAct, blStatus.emptyRetDate))\r\n }\r\n\r\n if (cmile.length > 0) {\r\n const tempData = cmile.sort((a, b) => new Date(a.eventAt ?? '').getTime() - new Date(b.eventAt ?? '').getTime());\r\n const lastEvents: BlEventLog = tempData[tempData.length - 1];\r\n lastEvents.suntekID = getFmsGlobal().AcmeID ?? '';\r\n lastEvents.jobName = JobNames.AIHbl;\r\n lastEvents.jobId = hawbId;\r\n lastEvents.blNo = blStatus.hblNo;\r\n //lastEvents.eventAtUtc\r\n lastEvents.u1Id = appContext.user?.id ?? '';\r\n const apiResult = await appContext.api.trackingLogHblMilestone(lastEvents);;\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    {apiResult?.message ?? constants.LOAD_ERROR_MESSAGE}

    );\r\n }\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n {!initialized &&\r\n
    \r\n \r\n \r\n \r\n
    \r\n }\r\n {!!blStatus &&\r\n
    \r\n \r\n\r\n
    \r\n \r\n Update\r\n \r\n {onClose(null)}}>\r\n Cancel\r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n );\r\n}\r\n\r\nfunction HawbMilestoneInitializedImpl({\r\n isView,\r\n blStatus,\r\n setBlStatus\r\n}: {\r\n isView: boolean,\r\n blStatus: HblStatusViewModel,\r\n setBlStatus: (x: Partial) => void,\r\n}) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nconst HawbMilestonePopup = ({\r\n hawbId,\r\n storageKey,\r\n onClose,\r\n isView,\r\n statusStorageKey\r\n}: {\r\n hawbId: number,\r\n storageKey: string,\r\n statusStorageKey: string,\r\n onClose: (s: HblStatusViewModel|null) => void,\r\n isView: boolean,\r\n}) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nHawbMilestonePopup.defaultProps = {};\r\n\r\nHawbMilestonePopup.propTypes = {\r\n hawbId: PropTypes.number.isRequired,\r\n storageKey: PropTypes.string.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n isView: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport default React.memo(HawbMilestonePopup);\r\n","/**\r\n * Revision History\r\n * \r\n * 12/13/2021 ptkim Add getListItems for JobListView's data\r\n * 12/23/2021 ptkim Add getJobListPanelItems, getJobAcctDetails\r\n */\r\nimport axios from 'axios';\r\nimport _ from 'lodash';\r\nimport postal from 'postal';\r\n\r\nimport {isElementFocusable} from '../util';\r\nimport config from '../config';\r\nimport {JobNames} from '../framework.core/JobNames';\r\nimport {SQLInfo, SQLType} from '../framework.core/data/SQLInfo';\r\nimport {ApiResult} from '../framework.core/data/ApiResult';\r\nimport {BillingTemplateItem, DbCheckCmd, PayrollSetup} from '../ifmsTypes';\r\nimport {HistoryPanelItem} from '../fms.data/models/HistoryPanelItem';\r\nimport {MemoPanelItem} from '../fms.data/models/MemoPanelItem';\r\nimport {AcctHistoryType} from '../fms.core/AcctHistHd';\r\nimport { FmsAutoNumberType, ListFilterType, SQLIndex} from '../fms.core/constants';\r\nimport {DepoHd} from '../fms.core/DepoHd';\r\nimport {DocumentType} from \"../framework.core/DocumentType\";\r\nimport { DepositCheckClear } from '../fms.core/DepositCheckClear';\r\nimport { CreditCardClear } from '../fms.core/CreditCardClear';\r\nimport { CheckLookup } from '../fms.data/lookup/CheckLookup';\r\nimport { BlEventLog } from '../fms.core/BlEventLog';\r\nimport { GeneralValue } from '../framework.core/data/GeneralValue';\r\nimport { EdiSharedInfo } from '../fms.core/Edi310Header';\r\nimport { DepoDetail } from '../fms.core/DepoDetail';\r\nimport { PimsCustomer } from '../fms.core/pims/PimsCustomer';\r\nimport { DisplayDownload } from '../fms.core/BlDownloadItem';\r\n\r\nconst channel = postal.channel('ajax');\r\n\r\nconst Reporters = [\r\n { id: '0', label: 'Test'},\r\n];\r\n\r\nconst CntrTypes = [\r\n { value: 'L', label: 'LCL'},\r\n { value: 'F', label: 'FCL'},\r\n { value: 'O', label: 'FAK'},\r\n];\r\n\r\n\r\ntype SalesCostParent = JobNames.OIHbl | JobNames.OIMbl |\r\n JobNames.OEMbl | JobNames.OEHbl |\r\n JobNames.AIMbl | JobNames.AIHbl |\r\n JobNames.AEMbl | JobNames.AEHbl;\r\n\r\nfunction markValidationFieldsAsDirty(errors:any) {\r\n if (!errors || errors.length <= 0) {\r\n return;\r\n }\r\n\r\n const dirtyElements:any = [];\r\n\r\n _.forOwn(errors, (_, key) => {\r\n const dirtyElementsForProperty = document.querySelectorAll(`[data-validationfor=\"${key}\"]`);\r\n for (let i = 0; i < dirtyElementsForProperty.length; ++i) {\r\n dirtyElements.push(dirtyElementsForProperty[i]);\r\n }\r\n });\r\n\r\n let focusApplied = false;\r\n for (let i = 0; i < dirtyElements.length; ++i) {\r\n const element = dirtyElements[i];\r\n if (!focusApplied) {\r\n if (isElementFocusable(element)) {\r\n element.focus();\r\n focusApplied = true;\r\n }\r\n }\r\n\r\n element.classList.add('ifms-validation-error');\r\n }\r\n}\r\n\r\nfunction formatValidationErrors(errors:any) {\r\n const errorHtml = _.map(errors, value => Array.isArray(value) ? value.join(', ') : value)\r\n .reduce((acc, x) => `${acc}
  • ${x}
  • `, '');\r\n\r\n return `
      ${errorHtml}
    `;\r\n}\r\n\r\nasync function apiCallResolver(apiCall:any, silent:boolean=false, loadingMsg: boolean=false) {\r\n let apiResult = null;\r\n\r\n if (!silent) {\r\n channel.publish('ajax.start', {});\r\n }\r\n if (loadingMsg) {\r\n channel.publish('ajax.loadingstart', {});\r\n }\r\n\r\n try\r\n {\r\n const response = await apiCall();\r\n\r\n if (response.config.method === 'post' || response.config.method === 'put') {\r\n if (!silent) {\r\n channel.publish('ajax.save', 'Data have been saved');\r\n }\r\n }\r\n\r\n if (response.config.method === 'delete') {\r\n if (!silent) {\r\n channel.publish('ajax.delete', 'Data have been deleted');\r\n }\r\n }\r\n\r\n apiResult = {\r\n success: true,\r\n data: response.data\r\n };\r\n }\r\n catch(e:any) {\r\n let data = undefined;\r\n if (e.response && e.response.data) {\r\n data = e.response.data;\r\n }\r\n\r\n apiResult = {\r\n success: false,\r\n data\r\n };\r\n\r\n if (e.response) {\r\n const responseStatus = e.response.status;\r\n\r\n let errorTitle = 'Error';\r\n let errorText:any = '';\r\n let errorPayload = null;\r\n let errorType = 'error';\r\n\r\n switch (responseStatus) {\r\n case 400:\r\n markValidationFieldsAsDirty(apiResult?.data?.errors || []);\r\n\r\n errorTitle = 'Data validation error';\r\n errorText = apiResult && apiResult.data && apiResult.data.errors ? formatValidationErrors(apiResult.data.errors) : null;\r\n errorPayload = apiResult.data;\r\n break;\r\n case 401:\r\n case 403:\r\n errorTitle = 'You are not authorized for this operation';\r\n break;\r\n case 424:\r\n errorTitle = 'Warning';\r\n errorType = 'warning';\r\n errorText = apiResult && apiResult.data && apiResult.data.errors ? formatValidationErrors(apiResult.data.errors) : null;\r\n break;\r\n default:\r\n errorTitle = 'Internal Server Error';\r\n }\r\n if (!silent) {\r\n channel.publish('ajax.error', {errorTitle, errorPayload, errorText, errorType});\r\n }\r\n //<240221.dwshin>\r\n if (process.env.NODE_ENV === 'production' && e.response.data?.errors === 'SessionId') {\r\n e.response.data.errors = 'Please refresh the page and try again.';\r\n channel.publish('ajax.movetologin', {});\r\n }\r\n }\r\n }\r\n\r\n if (!silent) {\r\n channel.publish('ajax.end', {});\r\n }\r\n if (loadingMsg) {\r\n channel.publish('ajax.loadingend', {});\r\n }\r\n\r\n return apiResult;\r\n}\r\n\r\n\r\nexport interface IGetFieldValuePara {\r\n id: string, \r\n tableName:string,\r\n fieldName:string,\r\n idFieldName?:string, \r\n fieldName2?:string,\r\n}\r\n\r\nfunction createIfmsApi() {\r\n const apiClient = axios.create();\r\n\r\n const apiUrl = config.serverUrl;\r\n\r\n return {\r\n setAccessToken: (accessToken:any) => {\r\n const headers = _.cloneDeep(apiClient.defaults.headers);\r\n headers.common.Authorization = `Bearer ${accessToken}`;\r\n\r\n apiClient.defaults.headers = headers;\r\n },\r\n\r\n //#region - users\r\n login: async (username:any, password:any, urlPrefix:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}user/login/`,\r\n {\r\n email: username,\r\n password,\r\n urlPrefix\r\n },\r\n ));\r\n\r\n return {\r\n success: apiResult.success,\r\n user: apiResult.data,\r\n errorMessage: !apiResult.success ? 'User not found' : null,\r\n }\r\n },\r\n\r\n \r\n autologin: async (info:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}user/autologin/`,\r\n {\r\n info\r\n },\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : {};\r\n },\r\n\r\n\r\n //#endregion - users\r\n\r\n authenticate: async (parms: any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}system/authenticate/`,\r\n parms\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : {};\r\n },\r\n \r\n authenticateLogoff: async () => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}system/authenticatelogoff/`,\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : {};\r\n },\r\n\r\n //#region - system\r\n getSystemSettings: async () => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}system/settings`,\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : {};\r\n },\r\n\r\n /**\r\n * When error, error:error-msg\r\n * otherwise, next it number\r\n */\r\n getNextItNo: async (branch:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}system/nextItNo`,\r\n {\r\n params: { branch }\r\n }\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n //#endregion - system\r\n\r\n //#region - {jobName}\r\n /**\r\n * Commom JobDeail get.\r\n * @param jobName {jobNames}\r\n * @param c { id: , ...}\r\n * @returns ApiResult\r\n */\r\n getJobDetail: async (jobName:string, c: any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${jobName}/detail`,\r\n { params: c}\r\n ), true, true);\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n\r\n /**\r\n * Save with SQLInfo array\r\n * @param jobName \r\n * @param sqlList \r\n * @param params {} job related props to return\r\n * @returns ApiResult\r\n */\r\n saveJobDetail: async (jobName:JobNames, sqlList: SQLInfo[], params:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}${jobName}/save`,\r\n sqlList,\r\n { params }\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n /**\r\n * Save with SQLInfo array\r\n * @param jobName \r\n * @param sqlList \r\n * @param params {} job related props to return\r\n * @returns ApiResult\r\n */\r\n saveUpload: async (jobName: JobNames, sqlList: SQLInfo[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}${jobName}/saveupload`,\r\n sqlList,\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n /**\r\n * Delete jobDetail and Pims Info if exists\r\n * @param jobName \r\n * @param c { id: , ...}\r\n * @returns ApiResult\r\n */\r\n deleteJobDetail: async (jobName:JobNames, c: any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.delete(\r\n `${apiUrl}${jobName}`,\r\n {\r\n params: c\r\n }\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n /**\r\n * Called JobDetailView component before calling save to call check logic\r\n * for the job which need access to database.\r\n * @param jobName \r\n * @param jobId \r\n * @param j {object} dynamic request params\r\n * @returns {json string} For each property of j, \"\" or \"error\"\r\n */\r\n checkData: async(jobName:string, jobId:string, j:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}${jobName}/checkdata`,\r\n j,\r\n {\r\n params: { jobId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : {};\r\n },\r\n checkDupData: async(jobName:string, jobId:string, j:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}${jobName}/checkdupNo`,\r\n j,\r\n {\r\n params: { jobId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : {};\r\n },\r\n checkAgentRefData: async(jobName:string, jobId:string, j:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}${jobName}/checkagentRefNo`,\r\n j,\r\n {\r\n params: { jobId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : {};\r\n },\r\n checkCancel: async(jobName:string, centerNo:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${jobName}/checkcancel`,\r\n {\r\n params: { centerNo }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : {};\r\n },\r\n getAccountCodeInfo:async (jobName:string, id:number, billTo:number, currency:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${jobName}/getAccountCodeInfo`,\r\n {\r\n params: { id, billTo, currency }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n /**\r\n * Get { tbName, tbId} for JobNames.Invoice, JobNames.Bill\r\n * @param jobName \r\n * @param id \r\n */\r\n getSourceJobInfo: async(jobName:string, id: any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${jobName}/getsourcejobinfo?id=${id}`\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n getMblData:async (jobName:string, id:string, readCont:boolean) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${jobName}/getmbldata`,\r\n {\r\n params: { id, readContainer: readCont }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAdjBalance: async(jobName:string, postDate: string, id: number, hdId: number, isEdit: boolean, currency: string|'') => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${jobName}/getAdjBalance`,\r\n { \r\n params: { postDate, id, hdId, isEdit, currency }\r\n }\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n //\r\n getBillingTplInfoList: async (jobName: string, srcJobName: string, srcJobId: number, \r\n customerId:number = 0, currency:string = 'USD', shipmentType:string = 'I') => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${jobName}/getBillingTplInfoList`,\r\n {\r\n params: {srcJobName, srcJobId, customerId, currency, shipmentType}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : [];\r\n },\r\n getAutoBillingInfoList: async (jobName: string, srcJobName: string, customerId:number = 0, shipmentType:string = 'I') => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${jobName}/getAutoBillingInfoList`,\r\n {\r\n params: {srcJobName, customerId, shipmentType}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : [];\r\n },\r\n getBillInformationData: async (id: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.Bill}/getBillInformationData`,\r\n {\r\n params: { id }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : [];\r\n },\r\n saveBillInformationData: async (sqlList: SQLInfo[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}${JobNames.Bill}/saveBillInformationData`,\r\n sqlList\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n getLoadBilling: async (jobName: string, fromDate: string, toDate: string, comId: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${jobName}/getLoadBilling`,\r\n {\r\n params: {fromDate, toDate, comId}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : [];\r\n },\r\n isCancelGiveCredit: async(jobName:string, id:number, invDate:string, currency:string, billToId:number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${jobName}/isCancelGiveCredit`,\r\n { params: { id, invDate, currency, billToId }}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n taxReturnCheck: async(jobName:string, jobId:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${jobName}/taxReturnCheck`,\r\n {\r\n params: { id: jobId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : {};\r\n },\r\n \r\n //#endregion - {jobName}\r\n\r\n //#region - bills\r\n\r\n setBillConfirmed: async (id: number, confirmed: boolean) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}${JobNames.Bill}/confirmed`,\r\n null,\r\n {\r\n params: {\r\n id: id,\r\n confirmed: confirmed\r\n }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : [];\r\n },\r\n\r\n\r\n\r\n\r\n saveOrUpdateBill: async (c:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}bills/save`,\r\n c,\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n getBill: async (parent: SalesCostParent, parentId: number, id: number|undefined) => {\r\n const apiRoute = !! id ? `${apiUrl}bills/${parent}/${parentId}/${id}` : `${apiUrl}bills/${parent}/${parentId}`;\r\n\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n apiRoute,\r\n ), true, true);\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n creditBill: async (c:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}bills/credit`,\r\n c,\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n voidBill: async (id:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}bills/void/${id}`,\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n //#endregion - bills\r\n\r\n //#region - invoices\r\n saveOrUpdateInvoice: async (c:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}invoices/save`,\r\n c,\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n getInvoice: async (parent: SalesCostParent, parentId: number, id: number|undefined) => {\r\n const apiRoute = !! id ? `${apiUrl}invoices/${parent}/${parentId}/${id}` : `${apiUrl}invoices/${parent}/${parentId}`;\r\n\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n apiRoute,\r\n ), true, true);\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n creditInvoice: async (c:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}invoices/credit`,\r\n c,\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n voidInvoice: async (id:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}invoices/void/${id}`,\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n setInvoiceConfirmed: async (id: number, confirmed: boolean) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}${JobNames.Invoice}/confirmed`,\r\n null,\r\n {\r\n params: {\r\n id: id,\r\n confirmed: confirmed\r\n }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : [];\r\n },\r\n\r\n //#endregion - invoices\r\n\r\n //#region - crdbs\r\n saveOrUpdateCrdb: async (c:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}crdbs/save`,\r\n c,\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n setCrdbConfirmed: async (id: number, confirmed: boolean) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}CrDb/confirmed`,\r\n null,\r\n {\r\n params: {\r\n id: id,\r\n confirmed: confirmed\r\n }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : [];\r\n },\r\n\r\n saveRCrDbData: async (jobId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}CrDb/saveRCrDbData`,\r\n null,\r\n {\r\n params: {\r\n jobId: jobId,\r\n }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : [];\r\n },\r\n\r\n getCrdb: async (parent: SalesCostParent, parentId: number, id: number|undefined, agentCur: string|undefined) => {\r\n const apiRoute = !! id ? `${apiUrl}crdbs/${parent}/${parentId}/${id}` : `${apiUrl}crdbs/${parent}/${parentId}`;\r\n\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n apiRoute,\r\n {\r\n params: {\r\n agentCur,\r\n }\r\n },\r\n ), true, true);\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n voidCrdb: async (id:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}crdbs/void/${id}`,\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n //#endregion - crdbs\r\n\r\n //#region - oemb\r\n cmdCopyBodyQuery1: async (id: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}oemb/cmdCopyBodyQuery1`,\r\n {params:{id}}\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n cmdCopyBodyQuery2: async (id: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}oemb/cmdCopyBodyQuery2`,\r\n {params:{id}}\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n //#endregion - oemb\r\n\r\n //#region - oimb\r\n canOceanImportMblContainerBeDeleted: async (containerId:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}oimb/canDeleteContainer`,\r\n {params:{id: containerId}}\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : false;\r\n },\r\n\r\n //#endregion - oimb\r\n\r\n //#region - bill\r\n getOceanImportBillNoExists: async (billId:any, billNo:any, vendorId:any) => {\r\n const id = !!billId ? billId : 0;\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}bill/billNoExists`,\r\n {\r\n params: {\r\n id,\r\n billNo,\r\n vendorId\r\n }\r\n },\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : false;\r\n },\r\n /**\r\n * \r\n * @param billId \r\n * @param billDate \r\n * @param cur \r\n * @param vendorId \r\n * @returns \r\n */\r\n isCancelReceiveCredit: async(billId:number, billDate:string|null, cur:string, vendorId:number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}bill/isCancelReceiveCredit`,\r\n { params: { billId, billDate, cur, vendorId }}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n //#endregion - bill\r\n\r\n //#region - quotations\r\n\r\n /**\r\n * use QuotationLookup, obsolete lookup.\r\n * @param customer \r\n * @returns \r\n */\r\n lookupOiQuotations: async (customer:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}quotations/lookup/${customer}`,\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n //#endregion - quotations\r\n\r\n //#region - pecd\r\n closeAccount: async(sDate:string, sLoginID:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}pecd/closeAccount`,\r\n { params: { sDate, sLoginID } }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n closeOperation: async(sDate:string, sLoginID:string, byAcct:boolean, bOp:boolean, bUseTrans:boolean) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}pecd/closeOperation`,\r\n { params: { sDate, sLoginID, byAcct, bOp, bUseTrans } }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n //#endregion - pecd\r\n \r\n //#region - modlist\r\n\r\n /**\r\n * pt211223\r\n * Get MemoPanelItems, HistoryPanelItems for the given jobName/jobId\r\n * @param jobName \r\n * @param jobId \r\n * @param com1Id {number} only for oih/aih (CustomerId), oeh/aeh (Agent)\r\n * @param com2Id {number} only for oeh/aeh (Customer)\r\n * @returns \r\n */\r\n getJobListPanelItems: async(jobName:string, jobId:number, com1Id?:number, com2Id?:number): Promise<{\r\n jobName:string, jobId:number, memo:MemoPanelItem[], //updateHistory:MemoPanelItem[], \r\n logHistory:HistoryPanelItem[]\r\n }> => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modlist/getjoblistpanelitems`,\r\n {\r\n params: { jobName, jobId, com1Id, com2Id }\r\n }\r\n ));\r\n\r\n return apiResult.success ? JSON.parse((apiResult.data as ApiResult).result) : {};\r\n },\r\n \r\n /**\r\n * pt211223\r\n * Get AcctDetail[] for InfoArea\r\n * @param jobName \r\n * @param jobId \r\n * @returns {AcctDetail[]}\r\n */\r\n getJobAcctDetails: async (jobName:string, jobId:number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modlist/getjobacctdetails`,\r\n { params: { jobName, jobId }}\r\n ));\r\n \r\n return apiResult.success ? apiResult.data.result : null;\r\n },\r\n\r\n getAcctHistory: async (jobName: JobNames, jobId: number, jobType: string, isDelete: boolean, fromDate?: string, toDate?: string) => {\r\n let histType = '';\r\n if(jobName === JobNames.Invoice || jobName === JobNames.GInvo || jobName === JobNames.WHStorageInv || jobName === JobNames.WHInvoice) histType = isDelete ? AcctHistoryType.DInvoHistory : AcctHistoryType.InvoHistory;\r\n else if(jobName === JobNames.Bill || jobName === JobNames.GBill) histType = isDelete ? AcctHistoryType.DApHistory : AcctHistoryType.ApHistory;\r\n else if(jobName === JobNames.CrDb) histType = isDelete ? AcctHistoryType.DCrDbHistory : AcctHistoryType.CrDbHistory;\r\n else return null; // invalid jobname\r\n\r\n if (jobType === '') jobType = 'noType'; //If jobType is null, api does not execute\r\n\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modlist/getaccthistory/${histType}/${jobType}/${jobId}`,\r\n {\r\n params: { fromDate, toDate }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getPaymentHistoryForAcct: async (tbId: string, tbName: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modlist/getPaymentHistoryForAcct`,\r\n { params: { tbId, tbName }}\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getDeleteHistory: async (tbName: string, fromDate?: string, toDate?: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modlist/getDeleteHistory`,\r\n { params: { tbName, fromDate, toDate }}\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getPaymentHistory: async (jobId: string, jobType: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modlist/getPaymentHistory`,\r\n { params: { jobId, jobType } }\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getDeletePaymentHistory: async (jobType: string, fromDate: string, toDate: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modlist/getDeletePaymentHistory`,\r\n { params: { jobType, fromDate, toDate } }\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getTaskReminder: async (showAll: boolean, userId : string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modlist/getTaskReminder`,\r\n { params: { showAll, userId }}\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n /**\r\n * [POST] Get list items of the given jobName satisfying search condition.\r\n * @param jobName framework.core/JobNames\r\n * @param listItemType Class name of list item in fms.data/models/???ListItem.ts\r\n * @param search Instance of list item class which value of property to search or not\r\n * @param start Next index of list item to collect\r\n * @param limit The max number of list items to collect\r\n * @param other Other parameters if required\r\n * @returns framework/core/data/ListResult\r\n */\r\n getListItems: async(jobName: string, listItemType: string, search: any, start: number, limit: number, other: any, listFilterType:ListFilterType) => {\r\n // Special handling required job\r\n switch(jobName) {\r\n case JobNames.Invoice:\r\n if(search.extraWhere === JobNames.OceanImport) search.extraWhere = \"jobtype in ('oih', 'oim')\";\r\n else if(search.extraWhere === JobNames.OceanExport) search.extraWhere = \"jobtype in ('ooh', 'oom')\";\r\n else if(search.extraWhere === JobNames.AirImport) search.extraWhere = \"jobtype in ('aih', 'aim')\";\r\n else if(search.extraWhere === JobNames.AirExport) search.extraWhere = \"jobtype in ('aoh', 'aom')\";\r\n else if(search.extraWhere === JobNames.OtherOP) search.extraWhere = \"jobtype in ('oth')\";\r\n else if(search.extraWhere === JobNames.Warehouse) search.extraWhere = \"jobtype in ('whr', 'whs')\";\r\n break;\r\n\r\n case JobNames.Bill:\r\n if(search.extraWhere === JobNames.OceanImport) search.extraWhere = \"jobtype in ('oih', 'oim')\";\r\n else if(search.extraWhere === JobNames.OceanExport) search.extraWhere = \"jobtype in ('ooh', 'oom')\";\r\n else if(search.extraWhere === JobNames.AirImport) search.extraWhere = \"jobtype in ('aih', 'aim')\";\r\n else if(search.extraWhere === JobNames.AirExport) search.extraWhere = \"jobtype in ('aoh', 'aom')\";\r\n else if(search.extraWhere === JobNames.OtherOP) search.extraWhere = \"jobtype in ('oth')\";\r\n else if(search.extraWhere === JobNames.Warehouse) search.extraWhere = \"jobtype in ('whr', 'whs')\";\r\n break;\r\n\r\n case JobNames.CrDb:\r\n if(search.extraWhere === JobNames.OceanImport) search.extraWhere = \"jobtype in ('oih', 'oim')\";\r\n else if(search.extraWhere === JobNames.OceanExport) search.extraWhere = \"jobtype in ('ooh', 'oom')\";\r\n else if(search.extraWhere === JobNames.AirImport) search.extraWhere = \"jobtype in ('aih', 'aim')\";\r\n else if(search.extraWhere === JobNames.AirExport) search.extraWhere = \"jobtype in ('aoh', 'aom')\";\r\n else if(search.extraWhere === JobNames.OtherOP) search.extraWhere = \"jobtype in ('oth')\";\r\n else if(search.extraWhere === JobNames.Warehouse) search.extraWhere = \"jobtype in ('whr', 'whs')\";\r\n break;\r\n }\r\n \r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}modlist/getlistitems`,\r\n {\r\n jobName,\r\n listItemType,\r\n start,\r\n limit,\r\n searchModel: search,\r\n filterType: listFilterType,\r\n other: typeof other === 'string' ? other : undefined\r\n }\r\n ), true, true);\r\n return apiResult.success ? apiResult.data : []; \r\n }, \r\n\r\n /**\r\n * Get ListResult like getListItems for lookupIndex type\r\n * return: ListResult | null\r\n */\r\n getLookupItems: async(lookupIndex: SQLIndex, searchText: string, formPara: string | '', formPara2: string | '', formPara3:string | '', maxRecords:number | 100) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modlist/getlookupitems`,\r\n {\r\n params: { lookupIndex, searchText, formPara, formPara2, formPara3, maxRecords } \r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n // {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}modlist/savelistitem`,\r\n { listItemType, sqlType, entity }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n //pt220813>\r\n\r\n saveList: async (listItemType:string, entity:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}modlist/saveList`,\r\n { listItemType, entity }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n //#endregion - modlist\r\n\r\n //#region - mbls\r\n\r\n /**\r\n * use InfoArea. obsolete\r\n * @param id \r\n * @returns \r\n */\r\n getOceanImportMblInfoAreaBics: async (id:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}mbls/infoAreaBics/${id}`,\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n //#endregion - mbls\r\n\r\n //#region - subscriptionId\r\n\r\n getSettingsSubscriberIdList: async () => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}subscriptionId/list`,\r\n {\r\n }\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : [];\r\n },\r\n changeSettingsSubscriberId: async (c:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}subscriptionId/change`,\r\n null,\r\n { \r\n params:c\r\n }\r\n //c,\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : [];\r\n },\r\n //#endregion - subscriptionId\r\n\r\n getCntrTypes: () => new Promise(resolve => {\r\n resolve(CntrTypes);\r\n }),\r\n getReporters: () => new Promise(resolve => {\r\n resolve(Reporters);\r\n }),\r\n\r\n //#region - test\r\n // For testing - should be removed\r\n getTestDates: async () => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}test/date`,\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : [];\r\n },\r\n formatDate: async (dateTimeParam:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}test/formatDate`,\r\n {\r\n params: {\r\n dateTimeParam,\r\n }\r\n }\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : [];\r\n },\r\n //#endregion - test\r\n\r\n //#region - blstatus\r\n\r\n /**\r\n * Get fms.core.HblStatusViewModel for container milestone\r\n * @param jobName {string} HBL jobName\r\n * @param jobId \r\n * @returns {ApiResult}\r\n */\r\n getHblStatusViewModel: async (jobName:string, jobId:number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}blstatus/gethblstatus/${jobName}/${jobId}`\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n /**\r\n * Save changes of HBL container milestones\r\n * @param sqlList \r\n * @returns {ApiResult}\r\n */\r\n saveHblStatusViewModel: async (sqlList:SQLInfo[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}blstatus/savehblstatus`,\r\n sqlList\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n /**\r\n * 220721.dwshin. unused?\r\n * Get fms.core.MblStatusViewModel for container milestone\r\n * @param jobName {string} MBL jobName\r\n * @param jobId \r\n * @returns {ApiResult}\r\n */\r\n getMblStatusViewModel: async (jobName:string, jobId:number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}blstatus/getmblstatus/${jobName}/${jobId}`\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n /**\r\n * Save changes of MBL container milestone\r\n * @param sqlList \r\n * @returns {ApiResult}\r\n */\r\n saveMblStatusViewModel: async(sqlList:SQLInfo[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}blstatus/savemblstatus`,\r\n sqlList\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n updateContainerInfo: async(data:SQLInfo) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}blstatus/updateContainerInfo`,\r\n data\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n updateContainerInfos: async(data:SQLInfo[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}blstatus/updateContainerInfos`,\r\n data\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n updateANSentInfo: async(hblId: number, sentDate: string|null) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}blstatus/updateANSentInfo`,\r\n { \r\n params: { \r\n hblId, sentDate \r\n }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n /**\r\n * [uni-model] Unified version to get profit view model\r\n * @param jobName \r\n * @param jobId \r\n * @returns {ApiResult}\r\n */\r\n getProfitResults: async (jobName:string, jobId:number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}blstatus/getprofitresults/${jobName}/${jobId}`,\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getJobSalesCost: async(jobName:string, id:number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}blstatus/getjobsalescost/${jobName}/${id}`\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n //#endregion - blstatus\r\n\r\n //#region - fmsmodfunc\r\n\r\n /**\r\n * \r\n * @param c { id, tableName, fieldName, idFieldName?, fieldName2?}\r\n * @returns \r\n */\r\n getFieldValue: async(c:IGetFieldValuePara) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/getfieldvalue`,\r\n {\r\n params: { ...c }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : '';\r\n },\r\n \r\n /**\r\n * \r\n * @param query\r\n * @returns \r\n */\r\n getFieldValueQuery: async(query: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/getFieldValueQuery`,\r\n {\r\n params: { query }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : '';\r\n },\r\n\r\n /**\r\n * \r\n * @param c { id, tableName, fieldName, idFieldName?, fieldName2?}\r\n * @returns \r\n */\r\n getFieldValueInt: async(c:IGetFieldValuePara) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/getfieldvalueint`,\r\n {\r\n params: { ...c }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : 0;\r\n },\r\n\r\n /**\r\n * \r\n * @param c { id, tableName, fieldName, idFieldName?, fieldName2?}\r\n * @returns \r\n */\r\n getFieldValueDate: async(c:IGetFieldValuePara) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/getfieldvaluedate`,\r\n {\r\n params: { ...c }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getCompanyNameFromCompanyFile: async(id: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsModFunc/getCompanyNameFromCompanyFile`,\r\n {\r\n params:{ id }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getCheckFormName: async(jobId: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsModFunc/getCheckFormName`,\r\n {\r\n params:{ jobId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAddressFromMyCompany: async(includeCompanyName: boolean = false, includeAddress: boolean= false, includeTEL: boolean= false, includeFAX: boolean = false, \r\n includeURL: boolean = false, branch: string = \"\", extrName: string = \"\", includeTaxID: boolean = false) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsModFunc/getAddressFromMyCompany`,\r\n {\r\n params:{ \r\n includeCompanyName, includeAddress, includeTEL, includeFAX, includeURL, branch, extrName, includeTaxID \r\n }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getContactFromCompanyFile: async(id: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsModFunc/getContactFromCompanyFile`,\r\n {\r\n params:{ id }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n checkAutoNo: async(autoNo: string, tbName: string, fName:string, kValue:string, kFName: string, allowDupInvNo: boolean) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsModFunc/checkAutoNo`,\r\n {\r\n params:{ autoNo, tbName, fName, kValue, kFName, allowDupInvNo }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n //\r\n checkSettingAutoNo: async(autoType:FmsAutoNumberType, branch:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsModFunc/checkSettingAutoNo`,\r\n { params: {autoType, branch }}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n /**\r\n * check if there is any FY which date belongs to.\r\n * @param date \r\n * @returns boolean\r\n */\r\n checkupFYDate: async(date: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodFunc/checkupFYDate`,\r\n {\r\n params: { date }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n /**\r\n * if no FY exist which date belongs to, then create FY and return true.\r\n * if FY already exist, then return true.\r\n * @param date \r\n * @returns boolean false only when new FY creation fail.\r\n */\r\n checkupFiscalYear: async(date: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/checkupFiscalYear`,\r\n { params: { date }}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n opClose: async(jobName:string, keyValue:string, isOpClose:boolean) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}fmsModFunc/opclose`,\r\n {\r\n jobName, keyValue, isOpClose \r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n /**\r\n * Used to validate Air Port Code. If valid, the Port Name is reutrn\r\n * @param portCode \r\n * @returns \r\n */\r\n getCityCountryByPortCode: async(portCode: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsModFunc/GetCityCountryByPortCode`,\r\n {\r\n params: { portCode }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getFieldValueFromInitData: async(sFieldName: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/getFieldValueFromInitData`,\r\n {\r\n params: { sFieldName }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n /**\r\n * ocean port validation\r\n * @param portCode un code\r\n * @returns string[] - [0]: port name, [1]: us code\r\n */\r\n getUNCodeInfo: async(portCode: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsModFunc/getUNCodeInfo`,\r\n {\r\n params: { portCode }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n /**\r\n * getCountCreditData\r\n * @param stbName \r\n * @param stbId \r\n * @returns ApiResult\r\n */\r\n getCountCreditData: async(stbName:string, stbId:number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsModFunc/getCountCreditData`,\r\n { params: { stbName, stbId }}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n existCreditItem: async (jobId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsModFunc/existCreditItem`,\r\n {\r\n params: { jobId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n invoiceOkDate: async(vDate:string|null) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/invoiceOkDate`,\r\n { params: { vDate } }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n checkupDuplicateFieldValueIsDuplicate: async(tableName: string, fieldName: string, fieldValue: string, keyFieldName: string, exceptKeyValue: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/checkupDuplicateFieldValueIsDuplicate`,\r\n { params: { tableName, fieldName, fieldValue, keyFieldName, exceptKeyValue }}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n /**\r\n * \r\n * @param blName \r\n * @param blId \r\n * @param lineAgents \r\n * @param tbName \r\n * @param tbId \r\n * @returns ApiResult>|null\r\n */\r\n isUseOperationAgent: async(blName:string, blId:number, lineAgents:string, tbName:string, tbId:number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/isUseOperationAgent`,\r\n { params: { blName, blId, lineAgents, tbName, tbId }}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n /**\r\n * \r\n * @param tbId \r\n * @param tbName \r\n * @param blId \r\n * @param blName \r\n * @param dcLine \r\n * @param daLine \r\n * @param readLevel \r\n * @param prevDBValue \r\n * @returns ApiResult|null\r\n */\r\n dutyEntityExist: async(tbId:number, tbName:string, blId:number, blName:string, dcLine:boolean, daLine:boolean,\r\n readLevel:number = 0, prevDBValue:number = 0) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/dutyEntityExist`,\r\n { params: { tbId, tbName, blId, blName, dcLine, daLine, readLevel, prevDBValue}}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n closeCheckAccount: async(sDate:string, sLoginID:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/closeCheckAccount`,\r\n { params: { sDate, sLoginID } }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n CheckCloseDateNew: async (jobName: string, postDate: string, fileClosed: number, billReceived: boolean = false) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/CheckCloseDateNew`,\r\n { params: { jobName, postDate, fileClosed, billReceived} }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n CheckCloseDate: async (jobName: string, sId: string, errMsgType: number = 1, useToday: boolean = false) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/CheckCloseDate`,\r\n { params: { jobName, sId, errMsgType, useToday } }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n checkFinalizeData: async(tbName:string, tbId:string, silent: boolean = false) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/checkFinalizeData`,\r\n { params: { tbName, tbId }}\r\n ), silent, !silent);\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getEstFinalizeDate: async(tbName:string, tbId:string, silent: boolean = false) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/getEstFinalizeDate`,\r\n { params: { tbName, tbId }}\r\n ), silent, !silent);\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getEstFinalizeDateEx: async(tbName:string, tbId:string, silent: boolean = false) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/getEstFinalizeDateEx`,\r\n { params: { tbName, tbId }}\r\n ), silent, !silent);\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n setRecognizeBLForm: async(jobName:string, jobId:number, flag:boolean) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/setRecognizeBLForm`,\r\n { params: { jobName, jobId, flag }}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n setOIetaByVessel: async(newEta:string|null, vessel:string, voyage:string, discharge:string, oldEta:string|null, setReminder:boolean) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/setOIetaByVessel`,\r\n { params: { newEta, vessel, voyage, discharge, oldEta, setReminder }}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getBillingCodeValue: async(billingCode:string, billingDept:string, billingType: number) => {\r\n const apiResult = await apiCallResolver(()=> apiClient.get(\r\n `${apiUrl}fmsmodfunc/getBillingCodeValue`,\r\n { params: {billingCode, billingDept, billingType}}\r\n ));\r\n return apiResult.success ? apiResult.data: null;\r\n },\r\n \r\n getESupportURL: async(acmeId:string) => {\r\n const apiResult = await apiCallResolver(()=> apiClient.get(\r\n `${apiUrl}fmsmodfunc/getESupportURL`,\r\n { params: {acmeId}}\r\n ));\r\n return apiResult.success ? apiResult.data: null;\r\n },\r\n\r\n //#region ClsAddressText > SetDataFromCompanyFile\r\n\r\n setDataFromCompanyFile: async(companyId: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/setDataFromCompanyFile`,\r\n { params: { companyId }}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n //#endregion\r\n\r\n companyFlagCheck: async (id: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/companyFlagCheck`,\r\n {\r\n params: { id }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n //#endregion - fmsmodfunc\r\n\r\n //#region - modfsnewfunc\r\n checkCompanyLookupField: async(lkComs: CheckLookup[]) => {\r\n let msg = \"\";\r\n if(lkComs.length > 0) { \r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}modfsnewfunc/checkcompanylookupfield`,\r\n lkComs\r\n ));\r\n \r\n msg = apiResult.success ? apiResult.data : \"\";\r\n }\r\n return msg;\r\n },\r\n \r\n getBeginDateFY: async(date: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modfsnewfunc/getBeginDateFY`,\r\n {\r\n params: { date }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getCloseDate: async() => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modfsnewfunc/getCloseDate`, { }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getNextSlipSeqNo: async(postDate: string, branch: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modfsnewfunc/getNextSlipSeqNo`,\r\n {\r\n params: { postDate, branch }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n //#endregion - modfsnewfunc \r\n //pt211226>\r\n\r\n //#region - modfunc\r\n\r\n /**\r\n * Return true for valid number, otherwise return false.\r\n * @param amblNo MAWB No\r\n * @param carrierId Ai(Ae)Mbl.Carrier\r\n */\r\n checkAirMblNo: async (amblNo:string, carrierId:number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modfunc/checkairmblno/${carrierId}`,\r\n {\r\n params: { amblNo }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAddressFromCompanyFile: async(id: string, bIncludeCompanyName: boolean = false, bIncludeContactName: boolean = false, \r\n bInclueTEL: boolean = false, bIncludeFAX: boolean = false, bIncludeEmail: boolean = false,\r\n bIncludeCountry: boolean = false, bDeliveryAddress: boolean = false, bIncludeTaxID: boolean = false) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modfunc/getAddressFromCompanyFile`,\r\n {\r\n params:{ \r\n id, \r\n bIncludeCompanyName, \r\n bIncludeContactName, \r\n bInclueTEL, \r\n bIncludeFAX, \r\n bIncludeEmail, \r\n bIncludeCountry, \r\n bDeliveryAddress, \r\n bIncludeTaxID\r\n }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getCustomerInfo: async(id: string, customer: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}invo/getCustomerInfo`,\r\n {\r\n params:{id}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getInvoiceCount: async(id: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}invo/getInvoiceCount`,\r\n {\r\n params:{ id }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getRList: async(tbId: string, tbName: string, fieldNames: string, idFieldName: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modfunc/getRList`,\r\n {\r\n params:{ tbId, tbName, fieldNames, idFieldName }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAutoCheckNo: async(bankId: string, branch: string | '') => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modfunc/getAutoCheckNo`,\r\n {\r\n params:{ bankId, branch}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n checkItNo: async (inBondNo: string, entryCheckNumber: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modfunc/checkitno`,\r\n {\r\n params: { inBondNo, entryCheckNumber }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : {};\r\n },\r\n\r\n //#endregion - modfunc\r\n\r\n //#region - modsub\r\n /**\r\n * Load items for combobox\r\n * @param comboParams \r\n * @returns Array of { comboType, id, defaultIndex, items} where items = textValue[] or string[] or object[] according to FmsComboType\r\n */\r\n loadCodeData: async (cparams: any[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}modsub/loadCodeData`,\r\n cparams\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getTrackRequestedContainerCountPerMbl: async (oimblId: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modsub/getTrackRequestedContainerCountPerMbl`,\r\n {\r\n params: { oimblId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n //#endregion - modsub\r\n\r\n //#region - salescost\r\n getJobSalesCostPendingItems: async(jobName:string, id:number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}salesCost/pendingItems`,\r\n {\r\n params: { jobName, id } \r\n }\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getJobSalesCostSummary: async(jobName:string, id:number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}salesCost/summary`, { params: { jobName, id}}\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getBicBillingTemplate: async(templatePrefix: 'AIMIS' | 'AIMDS' | 'AIHIS' | 'AIHDS' | 'AEMIS' | 'AEMDS' | 'AEHIS' | 'AEHDS' |\r\n 'OIMIS' | 'OIMDS' | 'OIHIS' | 'OIHDS' | 'OEMIS' | 'OEMDS' | 'OEHIS' | 'OEHDS' | 'OTHIS' | 'OTHDS' | 'WHR' | 'WHS'): Promise> => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}salesCost/billingTemplate/${templatePrefix}`\r\n ), true);\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getUsedAgents: async(jobName:string, id:number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}salesCost/getUsedAgents`,\r\n {\r\n params: { jobName, id } \r\n }\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n //#endregion - salescost\r\n\r\n //#region - cpay\r\n\r\n readAccountData: async(depoHd:DepoHd) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}cpay/readaccountdata`,\r\n {depoHd}\r\n ), false, true);\r\n return apiResult.success ? apiResult.data : {};\r\n },\r\n \r\n getRate: async (accrualDate:string, bankId:number, bankCur:string, billTo:number, id:number, paymentType:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}cpay/getRate`,\r\n {\r\n params: { accrualDate, bankId, bankCur, billTo, id, paymentType }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAccumulatedBalance: async (jobId:number, date:string, originDate:string, toDate:string, \r\n paidAmt:number, accountCode:string, currency:string, entityId:number, paymentType:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}cpay/getAccumulatedBalance`,\r\n {\r\n params: { jobId, date, originDate, toDate, paidAmt, accountCode, currency, entityId, paymentType }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n updatePayment: async (sqlList: SQLInfo[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}cpay/updatePayment`,\r\n sqlList\r\n ));\r\n return apiResult.success ? apiResult.data : [];\r\n },\r\n\r\n getPaymentDetail: async (jobId: number, paymentType: string, isCanUseHybrid: boolean = false) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}cpay/getPaymentDetail`,\r\n {\r\n params: { jobId, paymentType, isCanUseHybrid }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n setVoidFieldByDepoData: async (jobId: number, actionType: number, inputDate: string, defaultDate: string, u2Date: string, isDeposit: boolean, isVoid: boolean, isJournal: boolean, \r\n type: string, invIds: string, billIds: string, crdbIds: string, taxRtnIds: string, payrollIds: string, ccPayIds: string, acctList: DepoDetail[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}cpay/setVoidFieldByDepoData`,\r\n acctList,\r\n {\r\n params: { jobId, actionType, inputDate, defaultDate, u2Date, isDeposit, isVoid, isJournal, type, invIds, billIds, crdbIds, taxRtnIds, payrollIds, ccPayIds }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n //#endregion - cpay\r\n\r\n\r\n //#region - auto Billing\r\n\r\n getAutoNo: async(eNoType: string, sBranch: string, sTableID: string, sType:object) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsModFunc/getAutoNo`,\r\n {\r\n params:{ eNoType, sBranch, sTableID, sType }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n abinvDetailSelect:async (year:number, month:number, group:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.AutoBillingInvoice}/abinvDetailSelect`,\r\n {\r\n params: { year, month, group }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n\r\n\r\n saveBillingDetailList: async (sqlList: SQLInfo[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}${JobNames.AutoBillingInvoice}/saveBillingDetailList`,\r\n sqlList,\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n\r\n\r\n selectAotherTemp:async (ids:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.AutoBillingInvoice}/selectAotherTemp`,\r\n {\r\n params: { ids }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n //#endregion - auto Billing\r\n\r\n\r\n //#region - reportoptionbase\r\n getCargoTypeVolume: async (selectedYear: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/getCargoTypeVolume`,\r\n {\r\n params: { selectedYear }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getCargoTypeProfit: async (selectedYear: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/getCargoTypeProfit`,\r\n {\r\n params: { selectedYear }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n GetEstProfit5Years: async (selectedYear: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/GetEstProfit5Years`,\r\n {\r\n params: { selectedYear }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n\r\n getGrossProfit5Years: async (selectedYear: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/getGrossProfit5Years`,\r\n {\r\n params: { selectedYear }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getTop15SalesData: async (customerType: string, fromDate: string, toDate: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/getTop15SalesData`,\r\n {\r\n params: { customerType, fromDate, toDate }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAccountBalance: async (toDate: string, comId: number, comType: string, branch: string, subCode: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/getAccountBalance`,\r\n {\r\n params: { toDate, comId, comType, branch, subCode }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getVolumebyCargoTypeYears: async (jobName: string, unit: string, toDate: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/getVolumebyCargoTypeYears`,\r\n {\r\n params: { jobName, unit, toDate }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n loadHouseList: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/loadHouseList`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n loadBatchHouseList: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/loadBatchHouseList`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getMasterArrivalNoticeRemark: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/getMasterArrivalNoticeRemark`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readArrivalNoticeInvoiceList: async(id: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readArrivalNoticeInvoiceList`,\r\n {\r\n params:{ id }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getDicPPCCbyCustomer: async(custIds: any[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}reportOptionBase/getDicPPCCbyCustomer`,\r\n custIds\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getArrivalNoticeConfirm: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/getArrivalNoticeConfirm`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n saveArrivalNoticePublicMemo: async(tbName: string, tbId: string, pMemo: string) => {\r\n await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/saveArrivalNoticePublicMemo`,\r\n {\r\n data:{ tbName, tbId, pMemo }\r\n }\r\n ));\r\n },\r\n\r\n readPickupDeliveryInstructionData: async(tbId: string, tbName: string, docType: DocumentType) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readPickupDeliveryInstructionData`,\r\n {\r\n params:{ tbId, tbName, docType }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readPickupHistoryList: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readPickupHistoryList`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readMultiDeliveryList: async(custId: string, delName: string, delAddr: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readMultiDeliveryList`,\r\n {\r\n params:{ custId, delName, delAddr }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readOtherOiHblNoList: async(mblId: number, custId: number, hblId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readOtherOiHblNoList`,\r\n {\r\n params:{ mblId, custId, hblId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readAwbViewData: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readAwbViewData`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readAwbViewDataEx: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readAwbViewDataEx`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n saveAwbViewData: async(tbName: string, tbId: string, sigShipper: string|'', sigCarrier: string|'', firstCarrier: string|'', destCountry: string|'') => {\r\n await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/saveAwbViewData`,\r\n {\r\n params:{ tbName, tbId, sigShipper, sigCarrier, firstCarrier, destCountry }\r\n }\r\n ));\r\n },\r\n\r\n readTrasferManifestViewData: async(tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readTrasferManifestViewData`,\r\n {\r\n params:{ tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n saveTransferManifestData: async(tbId: string, cutoff: string | undefined, remark: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/saveTransferManifestData`,\r\n {\r\n params: { tbId, cutoff, remark }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readWhLabelViewData: async(tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readWhLabelViewData`,\r\n {\r\n params:{ tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n readAirLabelData: async(docType: DocumentType, tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readAirLabelData`,\r\n {\r\n params:{ docType, tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readArrivalReleaseNoticeDate: async(tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readArrivalReleaseNoticeDate`,\r\n {\r\n params:{ tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readDeliveryOrderShortFormData: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readDeliveryOrderShortFormData`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readEmptyContainerReturnGuaranteeData: async(tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readEmptyContainerReturnGuaranteeData`,\r\n {\r\n params:{ tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readOemBatchPrintData: async(tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readOemBatchPrintData`,\r\n {\r\n params:{ tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readCancelNoticeData: async(tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readCancelNoticeData`,\r\n {\r\n params:{ tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readMemoListData: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readMemoListData`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readPreliminaryClaimNoticeData: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readPreliminaryClaimNoticeData`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readMblArriavalNoticeData: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readMblArrivalNoticeData`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n \r\n readMblHoldNoticeData: async(tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readMblHoldNoticeData`,\r\n {\r\n params:{ tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readPackageLabelViewData: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readPackageLabelViewData`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readProofOfDeliveryData: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readProofOfDeliveryData`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readReleaseOrderTurnoverData: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readReleaseOrderTurnoverData`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n saveReleaseOrderTurnoverData: async(tbId: string, date: string, by: string, hblNo: string) => {\r\n await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/saveReleaseOrderTurnoverData`,\r\n {\r\n params:{ tbId, date, by, hblNo }\r\n }\r\n ));\r\n },\r\n\r\n readItTeViewData: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readItTeViewData`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readStraightBLViewData: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readStraightBLViewData`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readPrintOeHblData: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readPrintOeHblData`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n saveOeHblViewData: async(tbId: string, optTitle: string, firstCarrier: string, seller: string, consignee: string, buyer: string) => {\r\n await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/saveOeHblViewData`,\r\n {\r\n params:{ tbId, optTitle, firstCarrier, seller, consignee, buyer }\r\n }\r\n ));\r\n },\r\n\r\n readDocumentPackageData: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readDocumentPackageData`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readAgnetDocData: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readAgentDocViewData`,\r\n {\r\n params:{tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readCargoMViewData: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readCargoMViewData`,\r\n {\r\n params:{tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readShippingAViewData: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readShippingAViewData`,\r\n {\r\n params:{tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readBatchPViewData: async(tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readBatchPViewData`,\r\n {\r\n params:{tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n readBankDraftData: async(tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readBankDraftData`,\r\n {\r\n params:{ tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readBankDraftBLData: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readBankDraftBLData`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n readDeliveryOrderCompanyList: async(tbId: string, priName: string, priDelAddr: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readDeliveryOrderCompanyList`,\r\n {\r\n params:{ tbId, priName, priDelAddr }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n readArrivalNoticeHBLData: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readArrivalNoticeHBLData`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getArrivalNoticeLogHistory: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/getArrivalNoticeLogHistory`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getFYPeriodInfo: async(date: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/getFYPeriodInfo`,\r\n {\r\n params: { date }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n getLoadHouseAgentList: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/getLoadHouseAgentList`,\r\n {\r\n params: { tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n getLoadContactUserList: async() => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/getLoadContactUserList`,\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readMemoListModel: async(tbId: string, tbName: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readMemoListModel`,\r\n {\r\n params: { tbId, tbName }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readBatchPrintList: async(docType: DocumentType, rangeType: string | undefined, fromDate: string | undefined, toDate: string | undefined, fromNumber: number|undefined, toNumber: number|undefined, branch: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readBatchPrintList`,\r\n {\r\n params: { docType, rangeType, fromDate, toDate, fromNo: fromNumber, toNo: toNumber, branch }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n loadApList: async(fromDate: string | '', toDate: string | '', checkNo: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/loadApList`,\r\n {\r\n params: { fromDate, toDate, checkNo }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readCargoManifestSQ: async(jobName: string, jobId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readCargoManifestSQ`,\r\n {\r\n params: { jobName, jobId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n queryCargoStatus: async(args: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/queryCargoStatus`,\r\n {\r\n params: { args }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n issueCheck: async(data: any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}reportOptionBase/issueCheck`,\r\n data\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n savePickupDeliveryInstructionData: async(data: any, pimsLinkId: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}reportOptionBase/savePickupDeliveryInstructionData`,\r\n {data, pimsLinkId}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n saveBankDraftData: async (sqlList: SQLInfo[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}reportOptionBase/saveBankDraftData`,\r\n sqlList,\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n loadBLData: async(recordCnt: string, id: number, oi: boolean, oo: boolean, ai: boolean, ao: boolean, ot: boolean) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/loadBLData`,\r\n { \r\n params: { recordCnt, id, oi, oo, ai, ao, ot } \r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readBaseInfoCompany: async(id: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readBaseInfoCompany`,\r\n { \r\n params: { id } \r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readBaseInfoHistory: async(id: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readBaseInfoHistory`,\r\n { \r\n params: { id } \r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readCompanyAddressLabelList: async (group: string, searchText: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readCompanyAddressLabelList`,\r\n {\r\n params: { group, searchText }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAbiRspDataByReqId: async(abiReqId: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/getAbiRspDataByReqId`,\r\n { \r\n params: { abiReqId } \r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n queryImporterBond: async(args: any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}reportOptionBase/queryImporterBond`,\r\n args\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readPouchAirLabelData: async (id: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readPouchAirLabelData`,\r\n {\r\n params: { id }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n //#endregion - reportoptionbase\r\n\r\n //#region - oebk\r\n getQuoteData:async (id:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}oebk/getquotedata`,\r\n {\r\n params: { id }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAutoHblNo:async (id:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}oebk/getautohblno`,\r\n {\r\n params: { id }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n //#endregion - oebk\r\n\r\n //#region - whrc\r\n getOnHandList:async (id:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}whrc/getonhandlist`,\r\n {\r\n params: { id }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n //#endregion - whrc\r\n\r\n //#region - whLoc\r\n getItemCount: async (id:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}whloc/getitemcount`,\r\n { params: {id} }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n //#endregion - whLoc\r\n\r\n //#region - fmsmodaccount\r\n getLastFiscalDate: async(date: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsModAccount/getLastFiscalDate`,\r\n {\r\n params: { date }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n /**\r\n * called invoiceview, billview, crdbview\r\n * @param ids comma separated id's\r\n * @returns Array>\r\n */\r\n getOpAccts: async (ids:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodaccount/getOpAccts`,\r\n { params: { ids }}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getCountFYPeriod: async (fromDate: string, toDate: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsModAccount/getCountFYPeriod`,\r\n { \r\n params: { fromDate, toDate }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data: null;\r\n },\r\n //#endregion - fmsmodaccount\r\n\r\n //#region - fmsmoddbfunc\r\n getBrokerEmailFax: async(aOType: string, id: number, withSep: boolean) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsModDbFunc/getBrokerEmailFax`,\r\n {\r\n params:{ aOType, id, withSep }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n checkSamePeriod: async(date: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsModDbFunc/checkSamePeriod`,\r\n {\r\n params: { date }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n //#endregion - fmsmoddbfunc\r\n\r\n //#region - settings\r\n dbCheck: (cmd: DbCheckCmd, onMessage: (message: string) => void, onComplete: Function) => {\r\n const urlParams = Object.entries(cmd).map(e => e.join('=')).join('&');\r\n\r\n const eventSource = new EventSource(`${apiUrl}settings/dbcheck?${urlParams}&jwt=${apiClient.defaults.headers.common.Authorization}`, { withCredentials: true } );\r\n eventSource.onmessage = (e) => {\r\n if (_.startsWith(e.data, '<>')) {\r\n eventSource.close();\r\n onComplete(e.data);\r\n return;\r\n }\r\n onMessage(e.data);\r\n };\r\n },\r\n\r\n cancelDbCheck: async () => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}settings/canceldbcheck`\r\n ));\r\n return apiResult.success;\r\n },\r\n\r\n recreateSetupCode: async(cmd: DbCheckCmd) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}settings/recreatesetupcode`,\r\n cmd,\r\n ));\r\n return apiResult;\r\n },\r\n //#endregion - settings\r\n\r\n //#region - bdebt\r\n getBadARBankInfo: async() => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}bdebt/getBadARBankInfo`\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n //#endregion - bdebt\r\n\r\n //#region - banktran\r\n getDepositClearData: async(entity: DepositCheckClear, jobName: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}bankTran/getDepositClearData`,\r\n entity,\r\n { \r\n params:{jobName: jobName} \r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n getCheckClearData: async (entity: DepositCheckClear, jobName: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}bankTran/getCheckClearData`,\r\n entity,\r\n { \r\n params:{jobName: jobName} \r\n }\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n getCheckClearExcelData: async (entity: DepositCheckClear) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}bankTran/getCheckClearExcelData`,\r\n entity\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n getCreditCardClearData: async(entity: CreditCardClear, jobName: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}bankTran/getCreditCardClearData`,\r\n entity,\r\n { \r\n params:{jobName: jobName} \r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n saveDepositCheckCelar: async (sqlList: SQLInfo[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}bankTran/saveDepositCheckCelar`,\r\n sqlList,\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n depositCheckCelarCheckData: async (entity: DepositCheckClear, jobName: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}bankTran/depositCheckCelarCheckData`,\r\n entity,\r\n { \r\n params:{jobName: jobName} \r\n }\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n creditCardCelarCheckData: async (entity: CreditCardClear, jobName: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}bankTran/creditCardCelarCheckData`,\r\n entity,\r\n { \r\n params:{jobName: jobName} \r\n }\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n }, \r\n //#endregion - banktran\r\n\r\n //#region - aembl\r\n getCodesAirlineNextAwbNo: async (id:number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.AEMbl}/getCodesAirlineNextAwbNo`,\r\n { params: { id }}\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n fsGetScRate: async (id:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.AEMbl}/fsGetScRate`,\r\n { params: { carrierCode: id }}\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getDimensionInfo: async (id:number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.AEMbl}/getDimensionInfo`,\r\n { params: { id }}\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n //#endregion - aembl\r\n\r\n //#region - payrollsetup\r\n\r\n getPayrollSetup: async (): Promise => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}payrollSetup`,\r\n {\r\n }\r\n ));\r\n\r\n return apiResult.success ? apiResult.data as PayrollSetup : null;\r\n },\r\n \r\n \r\n //#endregion - payrollsetup\r\n\r\n //#region - invo\r\n getLoadStorage: async (toDate: string, comId: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}Invo/getLoadStorage`,\r\n {\r\n params: {toDate, comId}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : [];\r\n },\r\n\r\n //#endregion - invo\r\n\r\n getAuthKey:()=>{\r\n return apiClient.defaults.headers.common.Authorization;\r\n },\r\n\r\n //#region - fmsmoddbfunc\r\n getLatestExchangeRate: async(curr:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmoddbfunc/getLatestExchangeRate`,\r\n { params: { curr }}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getExchangeRate: async(dt:string, curr:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmoddbfunc/getExchangeRate`,\r\n { params: { dt, curr }}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getOOHBLFormName: async(formTypeIsCopy:boolean) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmoddbfunc/getOOHBLFormName`,\r\n { params: { formTypeIsCopy }}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getBeginningJournal: async() => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmoddbfunc/getBeginningJournal`,\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n //#endregion - fmsmoddbfunc\r\n\r\n //#region - crdb\r\n crdbSelectDetail: async(srcJobId:number, srcJobName:string, opAgentId:number, currency:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}crdb/selectDetail`,\r\n { params: { srcJobId, srcJobName, opAgentId, currency }}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n //#endregion - crdb\r\n\r\n readStorageBillingList: async(billingGroup: string, endDate: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}abstr/readstoragebillinglist`,\r\n { params: { billingGroup, endDate }}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getItnNo: async(hblNo: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}oehb/getitnno`,\r\n { params: { hblNo }}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n upload: async ( formData: FormData) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}memo/upload`,\r\n formData\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n checkfileserver: async () => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}memo/checkfileserver`,\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n //#region - Batch Recognize\r\n \r\n readRecognizeData: async(fromDate: string, toDate: string, searchTbName: string, showNoBilling: boolean) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}brecg/readRecognizeData`,\r\n { params: { fromDate, toDate, searchTbName, showNoBilling }}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readRecogHistoryData: async(id: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}brecg/readRecogHistoryData`,\r\n { params: { id}}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n saveRecognizeData: async (sqlList: SQLInfo[], silent: boolean = false) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}brecg/saveRecognizeData`,\r\n sqlList,\r\n ), silent, !silent);\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n saveRecogHistoryData: async (sqlList: SQLInfo[]) =>{\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}brecg/saveRecogHistoryData`,\r\n sqlList,\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n //#endregion - Batch Recognize\r\n\r\n fixJournalByTask: async(tbName: string, jobName: string, jobId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodaccount/FixJournalByTask`,\r\n { params: { tbName, jobName, jobId }}\r\n ),true,true);\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n fixJournalByMaster: async(tbName: string, jobName: string, jobId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodaccount/FixJournalByMaster`,\r\n { params: { tbName, jobName, jobId }}\r\n ),true,true);\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n fixOpAcct : async(tbName: string, tbid: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodaccount/UpdatePostedByOpAcct`,\r\n { params : {tbName, tbid}}\r\n ), true, true);\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n checkMissingField : async(id: number, tbName: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}rpaes/checkMissingField`,\r\n { params : {id, tbName}}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n makeEDIFile : async(id: number, tbName: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}rpaes/makeEDIFile`,\r\n { params : {id, tbName}}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n makeACEFile : async(id: number, tbName: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}rpaes/makeACEFile`,\r\n { params : {id, tbName}}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getSecTasks : async(tbName: string, tbid: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}secgr/getSecTasks`,\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getSecGroups : async() => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}secgr/getSecGroups`,\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getSecurityControlList : async()=>{\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}secgr/getSecurityControlList`,\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getMaxIden : async() => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}secgr/getMaxIden`,\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n saveUser : async(sqlList: SQLInfo[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}secgr/saveUser`,\r\n sqlList\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n makeCfsManifest: async(tbId: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}cfsManifestEdi/makeCfsManifest`,\r\n {\r\n params: { tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAmsHbl: async(amsHouseId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}ams/getAmsHbl`,\r\n {\r\n params: { amsHouseId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAmsMbl: async(amsMasterId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}ams/getAmsMbl`,\r\n {\r\n params: { amsMasterId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAmsUser: async(amsUserId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}ams/getAmsUser`,\r\n {\r\n params: { amsUserId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAmsUserPort: async(amsUserId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}ams/getAmsUserPort`,\r\n {\r\n params: { amsUserId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAmsUserScac: async(amsUserId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}ams/getAmsUserScac`,\r\n {\r\n params: { amsUserId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAmsVessel: async(amsUserId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}ams/getAmsVessel`,\r\n {\r\n params: { amsUserId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAmsGroupId: async(scac: string, useEManifest: boolean) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}ams/getAmsGroupId`,\r\n {\r\n params: {scac, useEManifest}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAmsGroups: async() => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}ams/getAmsGroups`,\r\n {\r\n params: {}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAmsAccountTypeList: async() => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}ams/getAmsAccountTypeList`,\r\n {\r\n params: {}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n readStatementData : async(overDue: string, excludeZeroTerm: string, invoiceDateFrom: string, invoiceDateTo: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readStatementData`,\r\n { params : {overDue, excludeZeroTerm, invoiceDateFrom, invoiceDateTo}}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n checkAttachment: async ( formData: FormData) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}reportOptionBase/checkattachment`,\r\n formData \r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n sendEMail: async (args: any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}reportOptionBase/sendEMail`,\r\n { args }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getCheckCompanyIsUsed: async (comId: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}Comp/companyIsUsed`,\r\n {\r\n params: comId\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getCheckCompanyIsUsedIl3: async (id: number, il3LicID: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}Comp/companyIsUsedIl3`,\r\n {\r\n params: { id, il3LicID }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n pimsSaveCustomer: async (data: PimsCustomer[], pimsId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}Comp/pimsSaveCustomer`,\r\n data,\r\n {\r\n params: { pimsId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n subFill: async (_AcctTableName: string, _AdjType: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}FmsModAccount/SubFill`,\r\n {\r\n params: { _AcctTableName, _AdjType }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n subUpdate: async(_AcctTableName: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}FmsModAccount/SubUpdate`,\r\n {\r\n params: { _AcctTableName }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readYearEndData : async() => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.EndYearProc}/readYearEndData`, {}\r\n ));\r\n return apiResult && apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n checkFYPeriod : async(beginDate: string, endDate: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.EndYearProc}/checkFYPeriod`, {\r\n params: { beginDate, endDate }\r\n }\r\n ));\r\n return apiResult && apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n checkRecogStatus : async(endDate: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.EndYearProc}/checkRecogStatus`, {\r\n params: { endDate }\r\n }\r\n ));\r\n return apiResult && apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n runYearEnd : async(beginDate: string, endDate: string, earningGLNo: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.EndYearProc}/runYearEnd`, {\r\n params: { beginDate, endDate, earningGLNo }\r\n }\r\n ));\r\n return apiResult && apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n runReverse : async(thisFiscalYear: number, nextFiscalYear: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.EndYearProc}/runReverse`, {\r\n params: { thisFiscalYear, nextFiscalYear }\r\n }\r\n ));\r\n return apiResult && apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n saveFiscalYearHistory : async(action: string, fyNo: string, fiscalYear: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.EndYearProc}/saveFiscalYearHistory`, {\r\n params: { action, fyNo, fiscalYear }\r\n }\r\n ));\r\n return apiResult && apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readFYHistory : async() => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.EndYearProc}/readFYHistory`, {\r\n params: { }\r\n }\r\n ));\r\n return apiResult && apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n periodClose : async(closeDate: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.EndYearProc}/periodClose`, {\r\n params: { closeDate }\r\n }\r\n ));\r\n return apiResult && apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n saveFiscalYearSetting: async(sqlList: SQLInfo[], params:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}${JobNames.EndYearProc}/saveFiscalYearSetting`, \r\n sqlList,\r\n { params }\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n beginJournalCount : async() => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.EndYearProc}/beginJournalCount`, {\r\n params: { }\r\n }\r\n ));\r\n return apiResult && apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n getEmailRecipient: async() => {\r\n //const eventSource = new EventSource(`${apiUrl}settings/dbcheck?${urlParams}&jwt=${apiClient.defaults.headers.common.Authorization}`, { withCredentials: true } );\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}report/getEmailRecipient2?jwt=${apiClient.defaults.headers.common.Authorization}`,\r\n //params: { jwt= apiClient.defaults.headers.common.Authorization }\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n deletePimsItem: async (jobName: string, data: any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.delete(\r\n `${apiUrl}pims/deletePimsItem`,\r\n {\r\n params: { jobName, data }\r\n }\r\n ));\r\n return apiResult && apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n // getLicenseeList: async(username:string, password:string) => {\r\n // const apiResult = await apiCallResolver(() => apiClient.get(\r\n // `${apiUrl}user/getLicenseeList`,{\r\n // params: { email: username, password: password }\r\n // }\r\n // ));\r\n // return apiResult.success ? apiResult.data : null;\r\n // },\r\n\r\n // loginPortalAdmin: async (licid: string, username: string, password: string) => {\r\n // const apiResult = await apiCallResolver(() => apiClient.get(\r\n // `${apiUrl}user/loginPortalAdmin/`, {\r\n // params: {\r\n // licid: licid,\r\n // email: username,\r\n // password,\r\n // },\r\n // }\r\n // ));\r\n\r\n // return {\r\n // success: apiResult.success,\r\n // user: apiResult.data,\r\n // errorMessage: !apiResult.success ? 'User not found' : null,\r\n // }\r\n\r\n // },\r\n\r\n voidBktf: async (sqlList:SQLInfo[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}bktf/savevoid`,\r\n sqlList,\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getBalance: async(c:any) => { \r\n const apiResult = await apiCallResolver(()=> apiClient.get(\r\n `${apiUrl}bktf/getBalance`,\r\n { params: c}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n voidAdjustment: async(jobName: JobNames, sqlList:SQLInfo[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}${jobName}/savevoid`,\r\n sqlList,\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getSecControlList: async() => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}Secu/getsecuritycontrollist`,\r\n {}\r\n ), true, true);\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n showTaxReturnList: async(category: string, toDate: string, fromDate: string, branch: string, useBranch: boolean) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}strt/showTaxReturnList`,{\r\n params: {category, toDate, fromDate, branch, useBranch}\r\n } \r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n voidTaxReturn: async(sqlList: SQLInfo[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}strt/savevoid`,\r\n sqlList,\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n }, \r\n\r\n selectDraftList: async (date: any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}paymtp/selectDraftList`,\r\n {params:{date}}\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n paymentprepdelete: async(sqlList:SQLInfo[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}paymtp/paymentprepdelete`,\r\n sqlList,\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n selectUnPort: async(unCode: string, id: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}unlo/selectunport`,\r\n {params: {unCode, id}}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n checkDuplicatedKeys: async (jobName: string, listItemType:string, insList: any ,chgList:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}modlist/checkDuplicatedKeys`,\r\n {jobName, listItemType, insList, chgList }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readAEMData: async(tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readAEMData`,\r\n {\r\n params:{ tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getBankBalanceInfo: async(id: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}bankbalance/getBankBalanceInfo`,\r\n {\r\n params:{ id }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getBegDate: async (date: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/getBegDate`,\r\n { params: { date } }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAcctStartDate: async () => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/getAcctStartDate`\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n selectBankBalList: async (begDate: string, endDate: string, showInactive: boolean, showBadARBank: boolean, priCurr: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}bankbalance/selectBankBalList`,\r\n {\r\n params: { begDate, endDate, showInactive, showBadARBank, priCurr }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readCustomerNameData: async(tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readCustomerNameData`,\r\n {\r\n params:{tbId}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n checkReconDate: async(reconDate: string, bankId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}BRec/checkReconDate`,\r\n null,\r\n {\r\n params:{reconDate, bankId}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n /**\r\n * @param customer \r\n * @returns \r\n */\r\n inventoryCount : async(customer: string,) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}whcus/inventoryCount`,\r\n {\r\n params: { customer}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n //#region - whLoc\r\n getInventoryCount: async (id: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}whcus/getInventoryCount`,\r\n { params: { id } }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n //#endregion - whLoc\r\n\r\n checkupHQBranch: async () => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}bran/checkupHQBranch`,\r\n {\r\n params: {} \r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n //#endregion - whLoc\r\n\r\n trackingCancelRequest: async (jobName: string, jobId: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}trackRequest/trackingCancelRequest`,\r\n {\r\n params: { jobName, jobId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n trackingUpdateRequest: async (noticeToUpdates: any[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}trackRequest/trackingUpdateRequest`,\r\n noticeToUpdates,\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n trackingCheckShippingLine: async (vcScac: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}trackRequest/trackingCheckShippingLine`,\r\n {\r\n params: { vcScac }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getTrackRequest: async (jobName: string, jobId: number, trType: string, isNew: boolean) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}trackRequest/getTrackRequest`,\r\n {\r\n params: { jobName, jobId, trType, isNew }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n checkThisMonthRequests: async () => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}trackRequest/checkThisMonthRequests`,\r\n {}\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getCompaniesToNotify: async (jobName: string, jobId: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}trackRequest/getCompaniesToNotify`,\r\n {\r\n params: { jobName, jobId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getCode: async (vcScac: string, depart: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}trackRequest/getCode`,\r\n {\r\n params: { vcScac, depart }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n trackingRequestByMbl: async (jobName: string, jobId: number, reqType: string, emails: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}trackRequest/trackingRequestByMbl`,\r\n {\r\n params: { jobName, jobId, reqType, emails }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n trackingRequestByContainer: async (containerNo: string, emails: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}trackRequest/trackingRequestByContainer`,\r\n {\r\n params: { containerNo, emails }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n trackingLogMblEvents: async (jobName: string, jobId: number, logs: any[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}trackRequest/trackingLogMblEvents`, \r\n logs,\r\n {\r\n params: { jobName, jobId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n trackingLogHblMilestone: async (eventLog: BlEventLog) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}trackRequest/trackingLogHblMilestone`,\r\n eventLog\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n chkdupContainer: async (jobId:string, data:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}cntr/checkdata`,\r\n data,\r\n { params: {jobId} }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n chkBCodeDelete: async (jobId:string, data:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}bCode/checkdelete`,\r\n data,\r\n { params: {jobId} }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n recreateJournal: (cmd: DbCheckCmd, onMessage: (message: string) => void, onComplete: Function) => {\r\n const urlParams = Object.entries(cmd).map(e => e.join('=')).join('&');\r\n\r\n const eventSource = new EventSource(`${apiUrl}settings/recreateJournal?${urlParams}&jwt=${apiClient.defaults.headers.common.Authorization}`, { withCredentials: true } );\r\n eventSource.onmessage = (e) => {\r\n if (_.startsWith(e.data, '<>')) {\r\n eventSource.close();\r\n onComplete(e.data);\r\n return;\r\n }\r\n onMessage(e.data);\r\n };\r\n },\r\n\r\n getReceivingItem: async ( data:any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}whrcv/getReceivingItem`,\r\n data\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n signUpload: async (formData: FormData) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}user/signUpload`,\r\n formData\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n clearSign: async (formData: FormData) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}user/clearSign`, \r\n formData\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n saveJournalHistoryByTask : async(tbName: string, tbid: string, userID: string, jourType: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.SlipJournal}/saveJournalHistoryByTask`, {\r\n params: { tbName, tbid, userID, jourType }\r\n }\r\n ));\r\n return apiResult && apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getFiscalYear : async(postDate: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.SlipJournal}/getFiscalYear`, {\r\n params: { postDate }\r\n }\r\n ));\r\n return apiResult && apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n voidJournal : async(id: string, branch: string, userID: string, jourType: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.SlipJournal}/voidJournal`, {\r\n params: { id, branch, userID, jourType }\r\n }\r\n ));\r\n return apiResult && apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readBadARExpense : async() => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.SlipJournal}/readBadARExpense`, {\r\n params: { }\r\n }\r\n ));\r\n return apiResult && apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n updateBadARExpense: async (paymentInfo: GeneralValue[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}${JobNames.SlipJournal}/updateBadARExpense`,\r\n paymentInfo\r\n ));\r\n return apiResult.success ? apiResult.data : [];\r\n },\r\n\r\n updateSTBID: async (id: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.SlipJournal}/updateSTBID`, {\r\n params: { id }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n deletePKey: async (skey: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.SlipJournal}/deletePKey`, {\r\n params: { skey }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n insertPKey: async (skey: string, postDate: string, branch: string, seqNo: string, id: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.SlipJournal}/insertPKey`, {\r\n params: { skey, postDate, branch, seqNo, id }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n updateHeadTbId: async (hdId: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.SlipJournal}/updateHeadTbId`, {\r\n params: { id: hdId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n selectSeq: async (postDate: string, key: string, branch: string, seq: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.SlipJournal}/selectSeq`, {\r\n params: { postDate, key, branch, seq }\r\n }\r\n ));\r\n return apiResult && apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getSearchJournalQuery: async(selectedIndex: number, jobName: string, searchText: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.SlipJournal}/getSearchJournalQuery`, {\r\n params: { selectedIndex, jobName, searchText }\r\n }\r\n ));\r\n return apiResult && apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n selectFormParaId: async (jourType: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${JobNames.SlipJournal}/selectFormParaId`, {\r\n params: { jourType }\r\n }\r\n ));\r\n return apiResult && apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n saveMinutes: async(enterMin: string, userId: string) => {\r\n await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}reminder/saveMinutes`,\r\n { enterMin, userId }\r\n ));\r\n },\r\n\r\n getReminderTaskTime: async (id: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/getReminderTaskTime`,\r\n { params: { id } }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n exportToExcel: async (args: any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}report/exportreport`,\r\n {\r\n params: { args, jwt:apiClient.defaults.headers.common.Authorization}\r\n }\r\n )); \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getBLHDInfo: async (hdOpType: any, hdTBId: number, opAcctIds: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}Invo/getBLHDInfo`,\r\n {params: {hdOpType, hdTBId, opAcctIds}}\r\n ));\r\n return apiResult.success ? apiResult.data: null;\r\n },\r\n\r\n getAIMInfo: async(tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readIRC225Data`,\r\n {\r\n params:{ tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAemMain: async (id: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}AeHb/getAemMain`,\r\n {\r\n params: { id }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getDefaultCharge: async (aehOtherCharge: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}AeHb/getDefaultCharge`,\r\n {\r\n params: { aehOtherCharge }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getCarrierRate: async (carrierId: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}AeHb/getCarrierRate`,\r\n {\r\n params: { carrierId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n setOblCol: async (id: number, ret: string, now: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}oihb/setoblcol`,\r\n { id, ret, now }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getIsfno: async (amsblno: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}oihb/getisfno`,\r\n {\r\n params: { amsblno: amsblno }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getExistedAmsIsfNo: async (amsblno: string, isfNo: string, amsIds: string, isfIds: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}oihb/getExistedAmsIsfNo`,\r\n {\r\n params: { amsblno, isfNo, amsIds, isfIds }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n checkReleaseOrder: async (id: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodedi/checkReleaseOrder`,\r\n {\r\n params: { itemId: id }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n getReleaseHblInfo: async (hblId: number, billToId: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}oihb/getReleaseHblInfo`,\r\n {\r\n params: { hblId, billToId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n saveReleaseHblInfo: async (sqlList: SQLInfo[], params: any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}oihb/saveReleaseHblInfo`,\r\n sqlList,\r\n { params }\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n makeCfsRelease: async (params: any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}fmsmodedi/makecfsrelease`,\r\n { params }\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n releaseNow: async (params: any) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}oihb/ReleaseNow`,\r\n null,\r\n { params }\r\n ));\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n getEDI310: async (invoId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}e310/detail`,\r\n {\r\n params: { invoId}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getEDI310Batch: async (invoId: string, startDate:string, endDate : string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}e310/detailBatch`,\r\n {\r\n params: { invoId, startDate, endDate}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n make310: async (entity : EdiSharedInfo, jobtype: string, invoHdIds: string, tempDir: string, ftpScac: string, ediSeqNo: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}e310/make310`,\r\n entity, { \r\n params:{\r\n jobtype: jobtype,\r\n invoHdIds : invoHdIds,\r\n tempDir : tempDir,\r\n ftpScac : ftpScac,\r\n ediSeqNo : ediSeqNo\r\n } \r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAcctInfo: async (jobname: string, id:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}${jobname}/getacctinfo`,\r\n {\r\n params: {id}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n readAcctDetailData: async (tbname: string, tbid:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}acct/detail`,\r\n {\r\n params: { tbname, tbid}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n acctupdateStatusOP: async(sqlList:SQLInfo) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}acct/updateStatusOP`,\r\n sqlList\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n \r\n checkFileClosed: async (jobName: string, jobId:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}fmsmodfunc/checkFileClosed`,\r\n {\r\n params: {jobName, jobId}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n checkUsePayroll: async () => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}ssetu/checkUsePayroll`,\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n getDefaultPayrollCode: async () => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}ssetu/getDefaultPayrollCode`,\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n getPayrollGroupSummary: async (payGroupId: number, payrollId: number) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}PAYROLL2/getPayrollGroupSummary`,\r\n {\r\n params: { payGroupId, payrollId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n active2FA: async (username:string, password:string, code:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}user/active2fa`,\r\n {\r\n username, password, code\r\n },\r\n ));\r\n\r\n \r\n if (apiResult.success) {\r\n return apiResult.success ? apiResult.data : null;\r\n } else {\r\n return ({\r\n success: false,\r\n result: 'Please refresh the page and try again.'\r\n });\r\n }\r\n },\r\n \r\n suntekAdminAuth: async (username:string, password:string, code:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}user/suntekAdminAuth`,\r\n {\r\n username, password, code\r\n },\r\n ));\r\n\r\n if (apiResult.success) {\r\n return apiResult.success ? apiResult.data : null;\r\n } else {\r\n return ({\r\n success: false,\r\n result: 'Please refresh the page and try again.'\r\n });\r\n }\r\n },\r\n\r\n readLabelFolderList: async(tbName: string, tbId: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}reportOptionBase/readLabelFolderList`,\r\n {\r\n params:{ tbName, tbId }\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n getSearchAllTableFromType: async (searchType: string, searchText:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modList/getSearchAllTableFromType`,\r\n {\r\n params: {searchType, searchText}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n getSearchAllTable: async (searchText:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}modList/getSearchAllTable`,\r\n {\r\n params: {searchText}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n updateHBLs: async (sqlList: SQLInfo[]) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}oihb/updateHBLs`,\r\n sqlList,\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n setCostSalesCode: async (selectCode:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}bcode/setCostSalesCode`,\r\n {\r\n params: {selectCode}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getDownloadList: async (jobName: JobNames, id: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}download/getDownloadList`,\r\n { params: { jobName, id }}\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n download: async (model: DisplayDownload, jobName: JobNames, id: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}download/download`,\r\n {model, jobName, id}\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getManifestProducts: async (amsId1: string, amsId2: string, amsId3: string, useeManifest: boolean) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}ams/getManifestProducts`,\r\n { params: { amsId1, amsId2, amsId3, useeManifest } }\r\n ), true, true);\r\n\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n block: async (jobName: JobNames, id: number, isBlock: boolean) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}download/block`,\r\n { params: { jobName, id, isBlock }}\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n chkBCodeDup: async (jobId:string, codeName:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}bCode/checkDuplicate`,\r\n {\r\n params: { jobId, codeName}\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n actionNotIssuedBillings: async (actionType:string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.put(\r\n `${apiUrl}system/actionNotIssuedBillings`,\r\n null,\r\n {\r\n params: actionType\r\n }\r\n ));\r\n \r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n checkNonExistAcctCode: async (glType:string, glGroup:string, code: string) => {\r\n const apiResult = await apiCallResolver(() => apiClient.post(\r\n `${apiUrl}glno/checkNonExistAcctCode`,\r\n {\r\n glType, glGroup, code\r\n }\r\n ));\r\n return apiResult.success ? apiResult.data : null;\r\n },\r\n\r\n getAesLink: async () =>{\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}utility/getAesLink`\r\n ));\r\n return apiResult.success ?apiResult.data: null;\r\n },\r\n\r\n getAmsLink: async () => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}utility/getAmsLink`\r\n ));\r\n return apiResult.success ? apiResult.data: null;\r\n },\r\n\r\n getIsfLink: async () => {\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}utility/getIsfLink`\r\n ));\r\n return apiResult.success ? apiResult.data: null;\r\n },\r\n\r\n getInbondLink: async () =>{\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}utility/getInbondLink`\r\n ));\r\n return apiResult.success ?apiResult.data: null;\r\n },\r\n\r\n getSupportLink: async () =>{\r\n const apiResult = await apiCallResolver(() => apiClient.get(\r\n `${apiUrl}utility/getSupportLink`\r\n ));\r\n return apiResult.success ?apiResult.data: null;\r\n },\r\n }\r\n}\r\n\r\nexport default createIfmsApi;\r\n","import createIfmsApi from './ifmsApi';\r\n\r\nfunction createApi() {\r\n return createIfmsApi();\r\n}\r\n\r\nexport default createApi;\r\n","import PropTypes from 'prop-types';\r\nimport React, { useEffect, useRef } from 'react';\r\n\r\ntype Props = {\r\n onOk: () => void;\r\n customClass?: string|undefined,\r\n};\r\n\r\nconst OkButton: React.FC = ({ onOk, customClass = undefined }) => {\r\n const okRef = useRef(null);\r\n\r\n useEffect(() => {\r\n if (okRef && okRef.current) {\r\n okRef.current.focus();\r\n }\r\n }, []);\r\n\r\n function onEnter(e:React.KeyboardEvent) {\r\n if (document.activeElement === okRef.current) {\r\n onOk();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n }\r\n\r\n function onKeyDown(e:React.KeyboardEvent) {\r\n switch (e.key) {\r\n case 'Enter': case ' ':\r\n onEnter(e);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n const classNames = customClass ? `ifms-primary-inverse-button ifms-focusable-inverse ${customClass}` : 'ifms-primary-inverse-button ifms-focusable-inverse';\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nOkButton.defaultProps = {\r\n onOk: () => {},\r\n};\r\n\r\nOkButton.propTypes = {\r\n onOk: PropTypes.func.isRequired,\r\n customClass: PropTypes.string,\r\n};\r\n\r\nexport default React.memo(OkButton);\r\n","import './spinner.css'\r\nimport React from 'react';\r\n\r\n/**\r\n * Pure CSS spinner from https://loading.io/css/\r\n */\r\nfunction Spinner() {\r\n return (\r\n
    \r\n );\r\n}\r\n\r\nexport default Spinner;\r\n","import React from 'react';\r\nimport Spinner from './ui/Spinner';\r\n\r\nconst LoadingStyle:React.CSSProperties = {\r\n height: '100vh',\r\n width: '100vw',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n fontSize: '18px',\r\n};\r\n\r\n\r\nfunction ApplicationLoading() {\r\n return (\r\n
    \r\n The application is loading\r\n
    \r\n );\r\n}\r\n\r\nexport default ApplicationLoading;\r\n","export default __webpack_public_path__ + \"static/media/bg1.bfcf60e7.jpg\";","export default __webpack_public_path__ + \"static/media/bg2.3a2626b9.jpg\";","export default __webpack_public_path__ + \"static/media/bg3.c3c206a4.jpg\";","export default __webpack_public_path__ + \"static/media/bg4.60b1a503.jpg\";","export default __webpack_public_path__ + \"static/media/bg5.46bfbe1d.jpg\";","export default __webpack_public_path__ + \"static/media/bg6.2bdefc23.jpg\";","export default __webpack_public_path__ + \"static/media/bg7.48d10de9.jpg\";","export default __webpack_public_path__ + \"static/media/bg8.04fcdf50.jpg\";","export default __webpack_public_path__ + \"static/media/bg9.664d474d.jpg\";","export default __webpack_public_path__ + \"static/media/bg10.17cf4951.jpg\";","export default __webpack_public_path__ + \"static/media/sun-logo.fbb3cf80.svg\";","export default __webpack_public_path__ + \"static/media/iFMS_B.824833f8.svg\";","export default __webpack_public_path__ + \"static/media/ico_user.f0994b6f.png\";","import PropTypes from 'prop-types';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport Modal from 'react-modal';\r\nimport useFunctionKeys from './hooks/useFunctionKeys';\r\nimport styled from 'styled-components';\r\n\r\n// Background images imports\r\nimport bg1 from './img/login/bg1.jpg';\r\nimport bg2 from './img/login/bg2.jpg';\r\nimport bg3 from './img/login/bg3.jpg';\r\nimport bg4 from './img/login/bg4.jpg';\r\nimport bg5 from './img/login/bg5.jpg';\r\nimport bg6 from './img/login/bg6.jpg';\r\nimport bg7 from './img/login/bg7.jpg';\r\nimport bg8 from './img/login/bg8.jpg';\r\nimport bg9 from './img/login/bg9.jpg';\r\nimport bg10 from './img/login/bg10.jpg';\r\n\r\nimport logo from './img/sun-logo.svg';\r\nimport ifmsLogo from './img/iFMS_B.svg';\r\nimport lock from './img/ico_lock.png';\r\nimport user from './img/ico_user.png';\r\nimport { throttle } from 'lodash';\r\nimport PrimaryButton from './ui/PrimaryButton';\r\nimport QRCode from \"react-qr-code\";\r\nimport { User } from './ifmsTypes';\r\n\r\nconst LoginScreen = styled.div`\r\n.loginContainer, .contents, .box-wrap {\r\n width: 100%;\r\n height: 100%;\r\n}\r\n\r\n.loginContainer .box-wrap {\r\n position: relative;\r\n min-width: 320px;\r\n max-width: 450px;\r\n background-color: rgba(255,255,255,0.9);\r\n}\r\n\r\n.loginContainer .box {\r\n position: relative;\r\n width: 100%;\r\n top: 0;\r\n background-color: transparent;\r\n}\r\n\r\n.loginContainer .box .logo {\r\n text-align: center;\r\n padding: 130px 0 50px;\r\n}\r\n\r\n.loginContainer .box .input-custom {\r\n position: relative;\r\n width: 74%;\r\n margin: 0 auto;\r\n padding: 8px 0;\r\n}\r\n\r\n.loginContainer .box .input-custom .form-customize {\r\n position: relative;\r\n width: 100%;\r\n border: none;\r\n border: 2px solid #cccccc;\r\n box-sizing: border-box;\r\n padding: 15px 15px 15px 50px;\r\n margin: 0 auto;\r\n outline: none;\r\n z-index: 20;\r\n background-color: #fff;\r\n border-radius: 5px;\r\n font-size: 15px;\r\n line-height: 17px;\r\n}\r\n\r\n.loginContainer .box .form-customize:hover {\r\n border: 2px solid #0079A4;\r\n}\r\n\r\n.loginContainer .box .btn:hover {\r\nbackground-color: #0079A4;\r\n}\r\n\r\n.loginContainer .box .input-custom .form-customize::placeholder {\r\n font-size: 15px !important;\r\n}\r\n.loginContainer .box .input-custom .form-customize::-webkit-input-placeholder {\r\n font-size: 15px !important;\r\n}\r\n.loginContainer .box .input-custom .form-customize::-moz-placeholder {\r\n font-size: 15px !important;\r\n}\r\n.loginContainer .box .input-custom .form-customize::-ms-input-placeholder {\r\n font-size: 15px !important;\r\n}\r\n\r\n.loginContainer .box .input-custom .ico_login {\r\n position: absolute;\r\n left: 11px;\r\n top: 19px;\r\n width: 30px;\r\n height: 30px;\r\n background-position: center;\r\n background-repeat: no-repeat;\r\n background-size: 20px 20px;\r\n z-index: 30;\r\n opacity: 0.7\r\n}\r\n\r\n.loginContainer .box .input-custom .ico_account {\r\n background-image: url(../images/iCons/ico_account.png);\r\n}\r\n\r\n.loginContainer .box .input-custom .ico_user {\r\n background-image: url(../images/iCons/ico_user.png);\r\n}\r\n\r\n.loginContainer .box .input-custom .ico_pwd {\r\n background-image: url(../images/iCons/ico_lock.png);\r\n}\r\n\r\n.loginContainer .box .checkbox {\r\n width: 150px;\r\n margin: 0 auto;\r\n padding:25px 0;\r\n color:#000;\r\n}\r\n\r\n.loginContainer .box .btn {\r\n padding: 15px 0;\r\n width: 74%;\r\n position: absolute;\r\n left: 13%;\r\n outline: none;\r\n background-color: #E28212;\r\n border: none;\r\n color: #ffffff;\r\n font-weight: 500;\r\n margin: 12px 0 0;\r\n border-radius: 3px;\r\n cursor: pointer;\r\n line-height: 17px;\r\n}\r\n\r\n@media screen and (min-width:450px) {\r\n .loginContainer .box-wrap {\r\n position: fixed;\r\n left: 50%;\r\n margin-left: -225px;\r\n }\r\n}\r\n\r\n@media screen and (max-width:767px) {\r\n body form {\r\n background-color: #464646;\r\n }\r\n}\r\n\r\n@media screen and (min-width:768px) {\r\n .loginContainer .box-wrap {\r\n position: fixed;\r\n left: 23%;\r\n }\r\n}\r\n`;\r\n\r\nconst bgImages = [bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8, bg9, bg10];\r\n\r\nconst ModalContentStyle:React.CSSProperties = {\r\n top: '13%',\r\n left: '38%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n zIndex: 10000,\r\n width: '700px',\r\n};\r\nconst ModalContentStyle2:React.CSSProperties = {\r\n top: '35%',\r\n left: '38%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n zIndex: 10000,\r\n width: '400px',\r\n};\r\nconst ModalOverlayStyle:React.CSSProperties = {\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backgroundColor: 'rgba(0, 0, 0, 0.55)',\r\n zIndex: 999998,\r\n};\r\n\r\n\r\n\r\ntype Props = {\r\n onLogin: (username: string, password: string, rememberMe: boolean, urlPrefix:string) \r\n => Promise<{ success: boolean; user: any; errorMessage: string | null; } | undefined>,\r\n fineOtherTabLogin: (username: string) => Promise,\r\n //2fa\r\n suntekUser: User| undefined,\r\n suntekAdmin2FAActive:boolean,\r\n do2FAActive: (username:string, password:string, code: string) => Promise,\r\n suntekAdminVerify:boolean,\r\n doSuntekAdminAuth: (username:string, password:string, code: string) => Promise,\r\n on2FAActiveCancel: () => void,\r\n onSuntekAdminAuthCancel: () => void,\r\n};\r\n\r\nconst Login: React.FC = ({ onLogin, fineOtherTabLogin, \r\n //2fa\r\n suntekUser,\r\n suntekAdmin2FAActive,\r\n do2FAActive,\r\n suntekAdminVerify,\r\n doSuntekAdminAuth,\r\n on2FAActiveCancel, onSuntekAdminAuthCancel\r\n}) => {\r\n useFunctionKeys({ onEnter });\r\n const enter = 13;\r\n\r\n const [bgIndex] = useState(Math.floor(Math.random() * bgImages.length));\r\n\r\n const [email, _setEmail] = useState('');\r\n //const [emailDirty, setEmailDirty] = useState(false);\r\n const [password, _setPassword] = useState('');\r\n //const [passwordDirty, setPasswordDirty] = useState(false);\r\n const [rememberMe, _setRememberMe] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState('');\r\n\r\n const emailRef = useRef('');\r\n const passwordRef = useRef('');\r\n const rememberRef = useRef(false);\r\n const [boxMarginTop, setBoxMarginTop] = useState(setMarginTop());\r\n const [iconBoxMarginTop, seticonBoxMarginTop] = useState(setIconMarginTop());\r\n const handleResize = throttle(() => {\r\n setBoxMarginTop(setMarginTop());\r\n seticonBoxMarginTop(setIconMarginTop());\r\n }, 200);\r\n\r\n //<240808.dwshin. Suntek Admin ID Pattern Update - 2FA Add\r\n const [verifycode, _setVerifycode] = useState('');\r\n const [veriftErrorMsg, setVeriftErrorMsg] = useState('');\r\n const [authcode, _setAuthcode] = useState('');\r\n const [authErrorMsg, setAuthErrorMsg] = useState('');\r\n //240808.dwshin>\r\n\r\n useEffect(() => {\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => {\r\n // cleanup\r\n window.removeEventListener(\"resize\", handleResize);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n function setIconMarginTop() {\r\n let result = window.innerHeight - 650;\r\n\r\n if (result < 0) result = 0;\r\n result += 10;\r\n if (result > 140) result = 140;\r\n\r\n return result;\r\n }\r\n\r\n function setMarginTop() {\r\n let result = window.innerHeight - 800;\r\n\r\n if (result < 0) result = 0;\r\n else if (result > 170) result = 170;\r\n\r\n return result;\r\n }\r\n\r\n function setEmail(v: string) {\r\n emailRef.current = v;\r\n _setEmail(v);\r\n setErrorMessage('');\r\n }\r\n\r\n function setPassword(v: string) {\r\n passwordRef.current = v;\r\n _setPassword(v);\r\n setErrorMessage('');\r\n }\r\n\r\n function setRememberMe(v: boolean) {\r\n rememberRef.current = v;\r\n _setRememberMe(v);\r\n }\r\n\r\n useEffect(() => {\r\n const focusElement = document.getElementById('email');\r\n if (focusElement) {\r\n focusElement.focus();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n // function onPwdBlur(e: React.FocusEvent) {\r\n // e.preventDefault();\r\n // setPassword(passwordRef.current);\r\n \r\n // const passwordcmp = document.getElementById('password') as HTMLInputElement;\r\n // passwordcmp.value = '';\r\n\r\n // passwordcmp.setAttribute('value','')\r\n\r\n // }\r\n\r\n async function doLogin() {\r\n\r\n const preIndex = window.location.host.toLowerCase().indexOf(\"-ifms.suntekscm.co\");\r\n const canLogin = preIndex > 0;\r\n if (!canLogin) {\r\n setErrorMessage('Invalid Site');\r\n return;\r\n }\r\n \r\n const result = await fineOtherTabLogin(emailRef.current);\r\n if(!result){\r\n setErrorMessage('Already logged in.');\r\n return;\r\n }\r\n let urlPrefix = window.location.host.substring(0, preIndex);\r\n\r\n const apiResult = await onLogin(emailRef.current, passwordRef.current, rememberRef.current, urlPrefix);\r\n if (apiResult && apiResult.success) {\r\n setErrorMessage('');\r\n return;\r\n }\r\n\r\n if (apiResult) {\r\n let msg = null;\r\n if(typeof apiResult.user?.errors === 'string'){\r\n msg = apiResult.user?.errors;\r\n }\r\n\r\n setErrorMessage(msg ?? apiResult.user?.errors.message ?? apiResult.errorMessage ?? '');\r\n }\r\n }\r\n\r\n function handleEmailChange(e: React.ChangeEvent) {\r\n setEmail(e.target.value);\r\n //setEmailDirty(true);\r\n }\r\n\r\n function handlePasswordChange(e: React.ChangeEvent) {\r\n setPassword(e.target.value);\r\n //setPasswordDirty(true);\r\n }\r\n\r\n //<240808.dwshin. Suntek Admin ID Pattern Update - 2FA Add\r\n function handleVerifycodeChange(e: React.ChangeEvent) {\r\n _setVerifycode(e.target.value);\r\n }\r\n function handleAuthcodeChange(e: React.ChangeEvent) {\r\n _setAuthcode(e.target.value);\r\n }\r\n //240808.dwshin.>\r\n\r\n\r\n function onEnter(): boolean {\r\n const email = document.getElementById('email')\r\n if (email && email === document.activeElement) {\r\n\r\n const password = document.getElementById('password') as HTMLInputElement;\r\n if (password) {\r\n password.focus();\r\n password.select();\r\n }\r\n } else {\r\n doLogin();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n async function on2FAActive() {\r\n setVeriftErrorMsg('');\r\n \r\n if (verifycode) {\r\n if(isNaN(parseInt(verifycode.replaceAll('-', '')))){\r\n setVeriftErrorMsg('Verification code is invalid.');\r\n }\r\n\r\n let errorMsg = await do2FAActive(emailRef.current, passwordRef.current, verifycode);\r\n if (errorMsg) {\r\n setVeriftErrorMsg(errorMsg);\r\n }\r\n }\r\n }\r\n \r\n async function onSuntekAdminAuth() {\r\n setAuthErrorMsg('');\r\n \r\n if (authcode) {\r\n if(isNaN(parseInt(authcode.replaceAll('-', '')))){\r\n setAuthErrorMsg('Verification code is invalid.');\r\n }\r\n\r\n let errorMsg = await doSuntekAdminAuth(emailRef.current, passwordRef.current, authcode);\r\n if (errorMsg) {\r\n setAuthErrorMsg(errorMsg);\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n var bgImage = bgImages[bgIndex];\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \"\"
    \r\n
    \r\n \r\n \r\n {/* {(emailDirty && !email) &&\r\n \r\n } */}\r\n
    \r\n
    \r\n \r\n e.target.removeAttribute('readonly')}\r\n //onBlur={onPwdBlur}\r\n />\r\n {/* {(passwordDirty && !password) &&\r\n \r\n } */}\r\n
    \r\n
    \r\n setRememberMe(e.target.checked)} />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n {/* */}\r\n Login to your Account\r\n
    \r\n\r\n
    \r\n \"Suntek\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n

    Your login is protected with two-factor authentication, \r\n please go through the following steps:

    \r\n
      \r\n
    1. \r\n

      \r\n Download a two-factor authenticator app like Microsoft Authenticator for \r\n Windows Phone, \r\n Android and \r\n iOS or\r\n Google Authenticator for \r\n Android and \r\n iOS.\r\n

      \r\n
    2. \r\n {suntekUser && suntekUser.authenticatorUri &&\r\n
    3. \r\n

      Scan the QR Code or enter this key {suntekUser.sharedKey} into your two factor authenticator app. Spaces and casing do not matter.

      \r\n \r\n
    4. \r\n }\r\n
    5. \r\n

      \r\n Once you have scanned the QR code or input the key above, your two factor authentication app will provide you\r\n with a unique code.
      \r\n Enter 6 digit OTP code in the confirmation box below.\r\n

      \r\n
      \r\n
      \r\n \r\n {\r\n if (e.keyCode === enter) {\r\n on2FAActive();\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }}\r\n autoComplete=\"off\"\r\n list=\"suntek-scm-login-verifycode\"\r\n />\r\n
      \r\n
      \r\n
    6. \r\n
    \r\n\r\n
    \r\n Verify\r\n {\r\n _setVerifycode('');\r\n on2FAActiveCancel();\r\n }} style={{margin: '0 0 0 8px'}} >\r\n Cancel\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n \r\n

    Your login is protected with an authenticator app.
    Enter your authenticator code below.

    \r\n
    \r\n
    \r\n \r\n {\r\n if (e.keyCode === enter) {\r\n onSuntekAdminAuth();\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }}\r\n autoComplete=\"off\"\r\n list=\"suntek-scm-login-verifycode\"\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n Login\r\n {\r\n _setAuthcode('');\r\n onSuntekAdminAuthCancel();\r\n }} style={{margin: '0 0 0 8px'}}>Cancel\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n
    \r\n );\r\n};\r\n\r\nLogin.propTypes = {\r\n onLogin: PropTypes.func.isRequired,\r\n};\r\nexport default Login;\r\n","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/job-switching-list.02b4d285.svg\";","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, {SyntheticEvent, useContext, useEffect, useRef, useState} from 'react';\r\nimport postal from 'postal';\r\n\r\nimport {useHistory} from 'react-router-dom';\r\nimport {useAppDispatch, useAppSelector} from '../app/hooks';\r\nimport {usePopper} from 'react-popper';\r\n\r\nimport {faFilter} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\n\r\nimport {NavigationType, openNewPage} from '../util/navigationHelpers';\r\nimport {getOperationKey, stringsEqualIgnoreCase} from '../util';\r\n\r\nimport useWindowSize from '../hooks/useWindowSize';\r\nimport Menu, {IfmsMenuItem} from '../ui/menu/Menu';\r\n\r\nimport {FilterStorageVersion, isFilterObjectEmpty} from '../filtering';\r\n\r\nimport {JobMenuItem} from '../features/jobMenuSlice';\r\nimport {moveScreenToTop} from '../features/screenStackSlice';\r\nimport constants from '../constants';\r\nimport {getOpByName} from \"../framework.core/JobNames\";\r\nimport useJobMenus from \"../hooks/useJobMenus\";\r\nimport JobSwitchingMenuContext from './jobSwitchingMenuContext';\r\nimport { IfmsSideMenuWidthNumber } from '../IfmsSideMenu';\r\nimport fastStorage from '../fastStorage';\r\nimport useGlobalYesNoDialog from '../hooks/useGlobalYesNoDialog';\r\nimport { formatDate } from '../dateUtils';\r\nimport TooltipButton, { TooltipButtonItem } from '../ui/TooltipButton';\r\nimport { clearStorage } from '../features/storageSlice';\r\nimport { changeOperation, changeSideMenu, clearOperation } from '../features/operationSlice';\r\nimport { resetListScreenSettings } from '../features/listScreenSettingsSlice';\r\nimport { clearLastSavedJobs } from '../features/lastSavedJobSlice';\r\nimport localforage from 'localforage';\r\nimport useFunction from '../hooks/useFunction';\r\nimport arrowRightBlueIcon from '../img/job-switching-arrow-right-blue.svg';\r\nimport arrowLeftBlueIcon from '../img/job-switching-arrow-left-blue.svg';\r\n// import arrowRightRedIcon from '../img/job-switching-arrow-right-red.svg';\r\n// import arrowLeftRedIcon from '../img/job-switching-arrow-left-red.svg';\r\nimport arrowLeftGrayIcon from '../img/job-switching-arrow-left-gray.svg';\r\nimport arrowRightGrayIcon from '../img/job-switching-arrow-right-gray.svg';\r\nimport tabListIcon from '../img/job-switching-list.svg';\r\nimport circleExitRed from '../img/circle-exit-red.svg';\r\nimport circleExitWhite from '../img/circle-exit-white.svg';\r\nimport ApplicationContext from '../ApplicationContext';\r\n\r\ninterface JobMenuItemWithIndex extends JobMenuItem {\r\n index: number,\r\n};\r\n\r\n// const IncludeSearchProperties = [\r\n// 'general1',\r\n// 'generalText1',\r\n// ];\r\n\r\nconst testJobMenu:Array = [\r\n { url: '/', label: 'Home', operationName: 'Home', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/1', label: 'Branch Code List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/2', label: 'New Branch Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/3', label: 'Edit Branch Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/4', label: 'View Branch Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/5', label: 'Company Type List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/6', label: 'User List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/7', label: 'New User', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/8', label: 'Edit User', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/9', label: 'View User', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/10', label: 'Payroll Group List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/11', label: 'New Payroll Group', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/12', label: 'Edit Payroll Group', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/15', label: 'Salesperson List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/16', label: 'New Salesperson', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/17', label: 'Edit Salesperson', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/18', label: 'Account Code List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/19', label: 'New Account Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/20', label: 'Edit Account Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/21', label: 'View Account Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/22', label: 'Account Sub Code List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/23', label: 'New Account Sub Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/24', label: 'Edit Account Sub Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/25', label: 'Billing Code List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/26', label: 'New Billing Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/27', label: 'Edit Billing Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/28', label: 'View Billing Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/29', label: 'Currency Code List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/30', label: 'New Currency Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/31', label: 'Edit Currency Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/32', label: 'View Currency Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/33', label: 'Airline Code List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/34', label: 'New Airline Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/35', label: 'Edit Airline Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/36', label: 'View Airline Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/37', label: 'Airport Code List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/38', label: 'New Airport Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/39', label: 'Edit Airport Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/40', label: 'B/L Type List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/41', label: 'New B/L Type', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/42', label: 'Edit B/L Type', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/43', label: 'Container Type List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/44', label: 'New Container Type', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/45', label: 'Edit Container Type', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/46', label: 'View Container Type', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/47', label: 'Move Type List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/48', label: 'New Move Type', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/49', label: 'Edit Move Type', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/50', label: 'Port Code(Sch D&K) List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/51', label: 'New Port Code(Sch D&K)', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/52', label: 'Edit Port Code(Sch D&K)', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/53', label: 'Vessel Name List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/54', label: 'New Vessel Name', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/55', label: 'Edit Vessel Name', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/56', label: 'SCAC Code List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/57', label: 'New SCAC Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/58', label: 'Edit SCAC Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/59', label: 'View SCAC Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/60', label: 'Country Code List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/61', label: 'New Country Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/62', label: 'Edit Country Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/63', label: 'State Code List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/64', label: 'New State Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/65', label: 'Edit State Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/66', label: 'UN Location Code List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/67', label: 'New UN Location Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/68', label: 'Edit UN Location Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/69', label: 'View UN Location Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/70', label: 'Export Info Code List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/71', label: 'New Export Info Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/72', label: 'Edit Export Info Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/73', label: 'Export License Code List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/74', label: 'New Export License Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/75', label: 'Edit Export License Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/76', label: 'Schedule B Code List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/77', label: 'New Schedule B Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/78', label: 'Edit Schedule B Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/79', label: 'A/N Title List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/80', label: 'New A/N Title', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/81', label: 'Edit A/N Title', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/82', label: 'Commodity Code List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/83', label: 'New Commodity Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/84', label: 'Edit Commodity Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/85', label: 'EDI315 Code List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/86', label: 'New EDI315 Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/87', label: 'Edit EDI315 Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/88', label: 'Line Code List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/89', label: 'New Line Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/91', label: 'Edit Line Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/92', label: 'View Line Code', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/93', label: 'Memo Title List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/94', label: 'New Memo Title', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/95', label: 'Edit Memo Title', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/96', label: 'Other Shipment Type List', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/97', label: 'New Other Shipment Type', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n { url: '/98', label: 'Edit Other Shipment Type', operationName: 'Ocean Import', parentUrl: null, closeOnLogout: false, metadata: null, counter: 0, noOperationSuffix: false },\r\n];\r\n\r\nconst buttonWidth = 165; // 160 px button + 5px space between\r\n\r\nfunction getActualWidths(renderingButtonCount: number, screenWidth: number, isHome: boolean) {\r\n const buttonCount = renderingButtonCount;\r\n\r\n const actualWidth = !isHome \r\n ? screenWidth - 60 // Calculate 20px padding left, 20px padding right and scrollbar 20px\r\n : screenWidth - 40; // Calculate 20px padding left, 20px padding right\r\n const scrollControlsWidth = 205;\r\n\r\n // let batchSize = Math.floor((actualWidth - scrollControlsWidth) / buttonWidth);\r\n\r\n // const showScrollbars = buttonCount > batchSize;\r\n\r\n // const maxScrollPositions = buttonCount - batchSize; // Buttons shown initially don't scroll\r\n\r\n return {\r\n buttonCount,\r\n actualWidth,\r\n buttonWidth,\r\n scrollControlsWidth,\r\n // batchSize,\r\n // showScrollbars,\r\n // maxScrollPositions\r\n };\r\n}\r\n\r\ntype JobSwitchingMenuProps = {\r\n testMode: boolean,\r\n resetJobMenuContextState: VoidFunction,\r\n};\r\n\r\nconst JobSwitchingMenu: React.FC = ({ testMode, resetJobMenuContextState }) => {\r\n const chkChannel = postal.channel('ifms');\r\n const channel = postal.channel('ajax');\r\n \r\n const context = useContext(JobSwitchingMenuContext);\r\n const appContext = useContext(ApplicationContext);\r\n\r\n const useDarkMode = appContext.useDarkMode;\r\n \r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n \r\n const history = useHistory();\r\n const dispatch = useAppDispatch();\r\n const { getSingleOpenedScreenInAnyOperationStartingWithUrl } = useJobMenus();\r\n\r\n const [referenceElement, setReferenceElement] = useState(null);\r\n const [popperElement, setPopperElement] = useState(null);\r\n const [arrowElement, setArrowElement] = useState(null);\r\n const { styles, attributes } = usePopper(referenceElement, popperElement, {\r\n modifiers: [{ name: 'arrow', options: { element: arrowElement } },],\r\n placement: 'bottom-end',\r\n });\r\n const [mouseOverBtnNum, setMouseOverBtnNum] = useState(-1);\r\n\r\n const [screenWidth] = useWindowSize();\r\n const [currentScrollPosition, setCurrentScrollPosition] = useState(0);\r\n const [menuHelperVisible, _setMenuHelperVisible] = useState(false);\r\n \r\n const [visibleWidth, setVisibleWidth] = useState(0);\r\n const [beforeActualWidth, setBeforeActualWidth] = useState(0);\r\n const [beforeTotalWidth, setBeforeTotalWidth] = useState(0);\r\n const [currentLeft, setCurrentLeft] = useState(0);\r\n const jobMenu = useAppSelector(state => state.jobMenu);\r\n const operationState = useAppSelector(state => state.operation);\r\n const operation = operationState.operation;\r\n const storage = useAppSelector(x => x.storage);\r\n\r\n const isStandaloneOperation = operation === constants.operations.standalone;\r\n // const isCustomerOperation = operation === constants.operations.customer;\r\n\r\n const {removeSingleJobMenu, goBackSingle} = useJobMenus();\r\n const getExternalFunctions = useFunction({\r\n callbacks: ['ifmsSettingsSave', 'ifmsSettingsCancel','ifmsReferenceFilesSave', 'ifmsReferenceFilesCancel']\r\n });\r\n \r\n let operationKey = getOperationKey(operation);\r\n if (!operationKey) {\r\n if (operation === 'Reference Files' || operation === 'Settings') {\r\n // if (operation === 'Reference Files' || operation === 'Settings' || operation === 'Utilities') {\r\n operationKey = getOperationKey('Standalone');\r\n }\r\n }\r\n /*const jobMenuItems = !!operationKey\r\n ? (isStandaloneOperation ? [jobMenu[operationKey][jobMenu[operationKey].length - 1]] : jobMenu[operationKey])\r\n : [];*/\r\n\r\n const jobMenuItems = !!operationKey\r\n ? Object.keys(jobMenu)\r\n .flatMap(opKey => jobMenu[opKey].map(item => {\r\n const op = getOpByName(opKey);\r\n let suffixlabel = '';\r\n if(op && !item.noOperationSuffix && item.jobType && !!item.addTypeSuffix){\r\n suffixlabel = `(${op} ${item.jobType})`;\r\n } else if (op && !item.noOperationSuffix){\r\n suffixlabel=`(${op})`;\r\n } else if (item.jobType && !!item.addTypeSuffix){\r\n suffixlabel = `(${item.jobType})`;\r\n }\r\n return {\r\n ...item,\r\n label: `${item.label} ${suffixlabel}`,\r\n };\r\n }))\r\n .sort((a, b) => {\r\n if (a?.timestamp === b?.timestamp) {\r\n return 0;\r\n } else {\r\n return a?.timestamp! > b?.timestamp! ? 1 : -1;\r\n }\r\n })\r\n : [];\r\n\r\n function isScreenDirty(urlParam: string): boolean {\r\n let result = false;\r\n\r\n //const url = !urlParam.includes('common/joblistview') ? getRoutePath(urlParam) : urlParam;\r\n\r\n _.mapKeys(fastStorage, (val, key) => {\r\n if (result) {\r\n return;\r\n }\r\n\r\n //if (!key.endsWith(url)) {\r\n if (!key.endsWith(urlParam)) {\r\n return;\r\n }\r\n\r\n if (val && val.isDirty !== undefined && val.isDirty === true) {\r\n result = true;\r\n }\r\n })\r\n\r\n return result;\r\n }\r\n\r\n async function checkStandaloneDirty() {\r\n if(operationState.operation !== 'Standalone') return;\r\n \r\n if (fastStorage['ifms-settings-haschanges']) {\r\n const doSave = await showGlobalYesNoDialog(\r\n
    \r\n There are unsaved changes. Do you want to save?\r\n
    \r\n ,false, 1, true, 'info');\r\n\r\n const externalFunctions = getExternalFunctions();\r\n if (doSave) {\r\n await externalFunctions.ifmsSettingsSave();\r\n } else {\r\n await externalFunctions.ifmsSettingsCancel();\r\n }\r\n }\r\n else if (fastStorage['ifms-referenceFiles-haschanges']) {\r\n const doSave = await showGlobalYesNoDialog(\r\n
    \r\n There are unsaved changes. Do you want to save?\r\n
    \r\n ,false, 1, true, 'info');\r\n\r\n const externalFunctions = getExternalFunctions();\r\n if (doSave) {\r\n await externalFunctions.ifmsReferenceFilesSave();\r\n } else {\r\n await externalFunctions.ifmsReferenceFilesCancel();\r\n }\r\n }\r\n }\r\n\r\n async function executeJobMenu(j: JobMenuItem) {\r\n await checkStandaloneDirty();\r\n\r\n resetJobMenuContextState();\r\n\r\n let afterScreenUrl = j.afterScreenUrl;\r\n if (j.url) {\r\n if (context.isHome) {\r\n dispatch(changeSideMenu('Home'));\r\n dispatch(changeOperation('Home'));\r\n }\r\n\r\n if (operationKey) {\r\n if (['invoice/view', 'bill/view', 'crdb/view', 'periodInvoice/view'].some(x=> j.url.indexOf(x) >= 0)) {\r\n const lastScreenQuery = getSingleOpenedScreenInAnyOperationStartingWithUrl(j.url);\r\n if (lastScreenQuery && lastScreenQuery.item) {\r\n afterScreenUrl = lastScreenQuery.operation;\r\n }\r\n }\r\n\r\n dispatch(moveScreenToTop({\r\n url: j.url,\r\n operation: afterScreenUrl??operationKey,\r\n }));\r\n }\r\n openNewPage(history, j.url, NavigationType.jobMenuSwitch, j.metadata, afterScreenUrl);\r\n }\r\n }\r\n\r\n const allItems:Array = testMode ? testJobMenu : jobMenuItems;\r\n // Hide home menu\r\n // const [/*homeJobMenu*/, ...renderingJobMenuItems] = allItems; // Home button is always first and should always be visible\r\n const [...renderingJobMenuItems] = allItems; // Home button is no longer visible\r\n const [menuItemCount, setMenuItemCount] = useState(renderingJobMenuItems.length); // [menu-tab-scroll]\r\n if (menuItemCount !== jobMenuItems.length)\r\n setMenuItemCount(jobMenuItems.length);\r\n\r\n // const width = screenWidth - buttonWidth; // Home button is by itself\r\n const width = !context.isHome ? screenWidth - IfmsSideMenuWidthNumber : screenWidth;\r\n\r\n const buttonsRef = useRef(null);\r\n const openRef = useRef(false);\r\n\r\n const menuContainerRef = useRef(null);\r\n const sizes = getActualWidths(renderingJobMenuItems.length, width, context.isHome);\r\n\r\n let visibleTabWidth = 0;\r\n let batchSize = 0;\r\n\r\n const btnList = document.getElementsByClassName('ifms-job-btn-container');\r\n\r\n for (let i = 0; i < btnList.length; i++) {\r\n visibleTabWidth += btnList[i].clientWidth + 5;\r\n\r\n if ((sizes.actualWidth - sizes.scrollControlsWidth) < visibleTabWidth) {\r\n batchSize = i;\r\n visibleTabWidth -= (btnList[i].clientWidth + 5);\r\n break;\r\n }\r\n }\r\n\r\n if (batchSize === 0 && sizes.actualWidth - sizes.scrollControlsWidth > 0) {\r\n batchSize = Math.floor((sizes.actualWidth - sizes.scrollControlsWidth) / buttonWidth);\r\n visibleTabWidth = buttonWidth * batchSize;\r\n // setVisibleWidth(visibleTabWidth);\r\n }\r\n\r\n const maxScrollPositions = renderingJobMenuItems.length - batchSize;\r\n\r\n useEffect(() => {\r\n setMouseOverBtnNum(-1);\r\n }, [history.location.pathname])\r\n\r\n if (isStandaloneOperation) {\r\n if (jobMenuItems.length > 0) {\r\n const standaloneTitle:string = jobMenuItems[0].label;\r\n chkChannel.publish('ifms.standalone-title', standaloneTitle);\r\n }\r\n }\r\n\r\n const activeIndexInView = allItems.findIndex(j => `${history.location.pathname}${history.location.search}` === j.url);\r\n\r\n useEffect(() => {\r\n if (activeIndexInView >= 0) {\r\n scrollJobMenuItemIntoView({\r\n ...renderingJobMenuItems[activeIndexInView],\r\n index: activeIndexInView\r\n });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [activeIndexInView, width, menuItemCount, screenWidth, buttonsRef.current]);\r\n\r\n function setMenuHelperVisible(v:boolean) {\r\n openRef.current = v;\r\n _setMenuHelperVisible(v);\r\n }\r\n\r\n function scrollJobMenuItemIntoView(j: JobMenuItemWithIndex) {\r\n if (!buttonsRef || !buttonsRef.current) {\r\n return;\r\n }\r\n \r\n const totalTabWidth = _.sumBy(btnList, function (b) { return b.clientWidth + 5; });\r\n\r\n const indexInScrollView = j.index;\r\n const visibleIndexFrom = currentScrollPosition;\r\n let visibleIndexTo = currentScrollPosition + batchSize - 1;\r\n\r\n if (beforeActualWidth === sizes.actualWidth && beforeTotalWidth === totalTabWidth && indexInScrollView >= visibleIndexFrom && indexInScrollView <= visibleIndexTo) {\r\n if(currentScrollPosition !== 0){\r\n buttonsRef.current.scrollTo({\r\n top: 0,\r\n left: currentLeft,\r\n behavior: 'smooth'\r\n });\r\n } \r\n else\r\n return;\r\n }\r\n\r\n if (beforeTotalWidth !== totalTabWidth) {\r\n setBeforeTotalWidth(totalTabWidth);\r\n }\r\n\r\n if (beforeActualWidth !== sizes.actualWidth) {\r\n setBeforeActualWidth(sizes.actualWidth);\r\n }\r\n\r\n visibleTabWidth = 0;\r\n let startIndex = 0;\r\n let scrollDelta = 0;\r\n\r\n for (let i = startIndex; i < btnList.length; i++) {\r\n visibleTabWidth += btnList[i].clientWidth + 5;\r\n\r\n if ((sizes.actualWidth - sizes.scrollControlsWidth) < visibleTabWidth) {\r\n if (indexInScrollView <= i - 1) {\r\n batchSize = i;\r\n visibleTabWidth = sizes.actualWidth - sizes.scrollControlsWidth;\r\n visibleIndexTo = currentScrollPosition + batchSize - 1;\r\n break;\r\n } else {\r\n i = startIndex++;\r\n visibleTabWidth = 0;\r\n if(startIndex > currentScrollPosition) scrollDelta++;\r\n }\r\n }\r\n }\r\n\r\n if (btnList.length - currentScrollPosition < batchSize) {\r\n let currentVisibleTabWidth = 0;\r\n\r\n for (let i = visibleIndexFrom; i < (visibleIndexTo > btnList.length ? btnList.length : visibleIndexTo); i++) {\r\n currentVisibleTabWidth += btnList[i].clientWidth + 5;\r\n }\r\n\r\n if (currentVisibleTabWidth <= (sizes.actualWidth - sizes.scrollControlsWidth)) {\r\n for (let i = (visibleIndexFrom - 1); i >= 0; i--) {\r\n currentVisibleTabWidth += btnList[i].clientWidth + 5;\r\n\r\n if (currentVisibleTabWidth <= (sizes.actualWidth - sizes.scrollControlsWidth)) {\r\n scrollDelta--;\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (indexInScrollView > visibleIndexTo) {//현재 보이는것보다 우측에 있을 경우\r\n scrollDelta = indexInScrollView - visibleIndexTo;\r\n } else if (indexInScrollView < visibleIndexFrom) { //현재 보이는 것보다 좌측에 있는 경우\r\n //음수로 만들어 계산식으로 하나로 통일\r\n scrollDelta = indexInScrollView - visibleIndexFrom;\r\n }\r\n\r\n const newScrollPosition = currentScrollPosition + scrollDelta;\r\n\r\n let newLeft = 0;\r\n\r\n for (let i = 0; i < newScrollPosition; i++) {\r\n newLeft += btnList[i].clientWidth + 5;\r\n }\r\n\r\n if (newLeft !== currentLeft) {\r\n buttonsRef.current.scrollTo({\r\n top: 0,\r\n left: newLeft,\r\n behavior: 'smooth'\r\n });\r\n\r\n setCurrentLeft(newLeft);\r\n }\r\n\r\n setVisibleWidth(visibleTabWidth);\r\n setCurrentScrollPosition(newScrollPosition);\r\n }\r\n\r\n function jobMenuSelectedFromHelperMenu(j:IfmsMenuItem) {\r\n setMenuHelperVisible(false);\r\n if (j && j.job) {\r\n executeJobMenu(j.job);\r\n }\r\n j.job.index = j.index;\r\n scrollJobMenuItemIntoView(j.job);\r\n }\r\n\r\n function scrollRight() {\r\n if (!buttonsRef || !buttonsRef.current) {\r\n return;\r\n }\r\n\r\n if (currentScrollPosition >= maxScrollPositions) {\r\n return;\r\n }\r\n\r\n let newLeft = 0;\r\n\r\n for (let i = 0; i < currentScrollPosition + 1; i++) {\r\n newLeft += btnList[i].clientWidth + 5;\r\n }\r\n\r\n const newScrollPosition = currentScrollPosition + 1;\r\n\r\n buttonsRef.current.scrollTo({\r\n top: 0,\r\n left: newLeft,\r\n // left: btnList[currentScrollPosition].clientWidth + 5,\r\n behavior: 'smooth'\r\n });\r\n setCurrentLeft(newLeft);\r\n setCurrentScrollPosition(newScrollPosition);\r\n }\r\n\r\n function scrollLeft() {\r\n if (!buttonsRef || !buttonsRef.current) {\r\n return;\r\n }\r\n\r\n if (currentScrollPosition <= 0) {\r\n return;\r\n }\r\n\r\n let newLeft = 0;\r\n\r\n for (let i = 0; i < currentScrollPosition - 1; i++) {\r\n newLeft += btnList[i].clientWidth + 5;\r\n }\r\n\r\n const newScrollPosition = currentScrollPosition - 1;\r\n\r\n buttonsRef.current.scrollTo({\r\n top: 0,\r\n left: newLeft,\r\n behavior: 'smooth'\r\n });\r\n setCurrentLeft(newLeft);\r\n setCurrentScrollPosition(newScrollPosition);\r\n\r\n const totalTabWidth = _.sumBy(btnList, function (b) { return b.clientWidth + 5; });\r\n if(totalTabWidth > visibleWidth) {\r\n setVisibleWidth(sizes.actualWidth - sizes.scrollControlsWidth);\r\n }\r\n }\r\n \r\n async function purgeLocalStorage() {\r\n const keys = await localforage.keys();\r\n const toDelete = keys.filter(k => k.startsWith('filter-'));\r\n\r\n for (const key of toDelete) {\r\n await localforage.removeItem(key);\r\n }\r\n\r\n const keysToRemove = Object.keys(fastStorage).filter(k => (\r\n k.startsWith('filter-') || \r\n k.startsWith('ifms-list-data-') ||\r\n k.includes('referenceFiles') ||\r\n k.includes('settings')\r\n ));\r\n \r\n keysToRemove.forEach(k => delete fastStorage[k]);\r\n }\r\n\r\n async function resetScreens(e: SyntheticEvent) {\r\n function distinct(value:JobMenuItem, index:number, self:Array) {\r\n return self.findIndex(x => stringsEqualIgnoreCase(x.url, value.url)) === index;\r\n }\r\n\r\n const allJobMenuItems = [\r\n ...jobMenu.home,\r\n ...jobMenu.oceanImport,\r\n ...jobMenu.oceanExport,\r\n ...jobMenu.airImport,\r\n ...jobMenu.airExport,\r\n ...jobMenu.otherShipment,\r\n ...jobMenu.whReceipt,\r\n ...jobMenu.accounting,\r\n ...jobMenu.warehousing,\r\n ...jobMenu.opReport,\r\n ...jobMenu.customer,\r\n ...jobMenu.standalone,\r\n ...jobMenu.utility,\r\n ...jobMenu.billings,\r\n ...jobMenu.myEvent,\r\n ...jobMenu.businessIntell,\r\n ].filter(x => !stringsEqualIgnoreCase('Home', x.label)).filter(distinct)\r\n\r\n const jobMenuItemsToClose = allJobMenuItems.filter(x => !x.jobMode || x.jobMode === 'view');\r\n let doClose = false;\r\n\r\n if (jobMenuItemsToClose.length > 0) {\r\n doClose = await showGlobalYesNoDialog(\r\n
    \r\n

    Are you sure you want to close all tabs except edit and new view?

    \r\n\r\n {/* There are opened screens:\r\n
    \r\n
    \r\n {jobMenuItemsToClose.map((x, i) => (\r\n
  • {x.label}
  • \r\n ))} */}\r\n
    \r\n ,false, 0, true);\r\n }\r\n\r\n if (doClose) {\r\n channel.publish('ajax.loadingstart', {});\r\n await purgeLocalStorage();\r\n\r\n jobMenuItemsToClose.forEach(async x => {\r\n setCurrentScrollPosition(0);\r\n await closeJobMenuTab(e, x.url, x.operationName || '', false);\r\n });\r\n const exceptedJobMenuItems = allJobMenuItems\r\n .filter(x => x.jobMode && x.jobMode !== 'view')\r\n .sort((a, b) => {\r\n const timeA = new Date(a.timestamp ?? '').getTime();\r\n const timeB = new Date(b.timestamp ?? '').getTime();\r\n return timeA - timeB;\r\n });\r\n\r\n if (exceptedJobMenuItems.length > 0)\r\n executeJobMenu(exceptedJobMenuItems[exceptedJobMenuItems.length - 1])\r\n else {\r\n dispatch(clearStorage());\r\n dispatch(clearOperation());\r\n dispatch(resetListScreenSettings());\r\n dispatch(clearLastSavedJobs());\r\n history.push('/');\r\n openNewPage(history, '/home/home', NavigationType.newPage);\r\n }\r\n channel.publish('ajax.loadingend', {});\r\n }\r\n }\r\n\r\n function getJobMenuLabel(j:JobMenuItem, index:number) {\r\n if (!j || !j.url) return;\r\n // In case job menu represents list screen, and list screen has filtering applied, add additional icon to the label\r\n // In case filter is external set (F6 for example MBL -> HBL), treat it as no filter\r\n let filter = <>;\r\n \r\n const otherStorageKey = `filter-${FilterStorageVersion}-${j.url}`;\r\n const screenFilter = storage[otherStorageKey];\r\n\r\n // operationKey가 'standalone'인 경우 Filter 버튼은 내부 Tab 별로 그려줌\r\n if ((!isFilterObjectEmpty(screenFilter) || screenFilter?.isSearchByReport) && j.operationName !== 'Standalone') {\r\n filter =
    \r\n \r\n \r\n
    ;\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {j.label}\r\n
    \r\n {filter}\r\n\r\n {j.url !== '/home/home' && (\r\n
    closeJobMenuTab(e, j.url, j.operationName || '', true, j.jobMode)}>\r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n }\r\n \r\n function getJobMenuInactiveClass(j:JobMenuItem) {\r\n return !!j.operationName ? `${!useDarkMode ? 'e-job-btn-inactive' : 'e-job-btn-inactive-darkmode'}` : 'e-job-btn-common-inactive';\r\n }\r\n\r\n function getJobMenuActiveClass(j:JobMenuItem) {\r\n return !!j.operationName ? `${!useDarkMode ? 'e-job-btn-active' : 'e-job-btn-active-darkmode'}` : 'e-job-btn-common-active';\r\n }\r\n \r\n function getJobMenuClass(j:JobMenuItem) {\r\n return `e-ifms-jsmbtn e-job-btn ${`${history.location.pathname}${history.location.search}` !== j.url ? getJobMenuInactiveClass(j) : getJobMenuActiveClass(j)}`;\r\n }\r\n\r\n const appliedPopperStyles:React.CSSProperties = {\r\n ...styles.popper,\r\n minWidth: '150px',\r\n paddingTop: 10,\r\n };\r\n\r\n // if (sizes.actualWidth < (sizes.buttonWidth + sizes.scrollControlsWidth)) {\r\n if (sizes.actualWidth < (btnList[0]?.clientWidth + sizes.scrollControlsWidth)) {\r\n // There is not enough space for this control. Don't render it\r\n return null;\r\n }\r\n\r\n const closeJobMenuTab = async (e: SyntheticEvent, url: string, urlOperation: string, needGoBack: boolean = true, jobMode: string = '') => {\r\n e.stopPropagation();\r\n if(!jobMode || jobMode !=='view' ){\r\n if (isScreenDirty(url) ) {\r\n const doClose = await showGlobalYesNoDialog(\r\n
    \r\n

    Confirm to Close without saving?

    \r\n
    \r\n , false, 0, true);\r\n \r\n if (!doClose) {\r\n return;\r\n }\r\n }\r\n }\r\n // appContext.setJournalType(0);\r\n \r\n resetJobMenuContextState();\r\n\r\n if(url === `${history.location.pathname}${history.location.search}` && needGoBack) {\r\n await goBackSingle(url, urlOperation)\r\n }else{\r\n removeSingleJobMenu(url, urlOperation);\r\n }\r\n }\r\n\r\n // const isHomeLocation = `${history.location.pathname}${history.location.search}` === '/home/home';\r\n\r\n // if (context.isHome) {\r\n // // Return empty\r\n // return null;\r\n // }\r\n\r\n const disableJobSwitcgRightBtn = currentScrollPosition >= maxScrollPositions;\r\n const disableJobSwitcgLeftBtn = currentScrollPosition <= 0;\r\n\r\n let jobSwitchingMenuClassName = !useDarkMode ? 'ifms-job-switching-menu' : 'ifms-job-switching-menu-darkmode';\r\n if(context.isHome) jobSwitchingMenuClassName += ' ifms-job-switching-homemenu';\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n\r\n {/* {sizes.showScrollbars && */}\r\n {/*
    */}\r\n {/* Total width of scroll buttons = 5(left padding) + 30(left arrow) + 30 (right arrow) + 25(tab list) => 90 */}\r\n
    \r\n {/* { resetScreens(e) }} height=\"25px\" width='40px' src={closeAllTabIcon} alt=\"Close All Tabs\" data-tooltip=\"Close All Tabs\" style={{ cursor: 'pointer'}} /> */}\r\n { resetScreens(e) }} height=\"25px\" width='40px' src={circleExitRed} alt=\"Close All Tabs\" data-tooltip=\"Close All Tabs\" style={{ cursor: 'pointer'}} />\r\n \r\n \r\n {/* \r\n \r\n */}\r\n\r\n {/* <250212 jhlee - 스크롤이 필요한 버튼만 표시되도록 변경, src는 투명한 1x1픽셀 이미지 /> */}\r\n {/* <250226 jhchoi - \"<<\", \">>\" 아이콘 제거 */}\r\n {/* {disableJobSwitcgLeftBtn ?\r\n \r\n :\r\n \r\n } */}\r\n\r\n {/* */}\r\n {/* = sizes.maxScrollPositions} style={{marginRight: '5px', width: '25px'}}> */}\r\n {/* = maxScrollPositions} style={{ marginRight: '5px', width: '25px' }}>\r\n \r\n */}\r\n\r\n {/* <250226 jhchoi - \"<<\", \">>\" 아이콘 제거 */}\r\n {/* {disableJobSwitcgRightBtn ?\r\n \r\n :\r\n \r\n } */}\r\n\r\n {/* */}\r\n {/* setMenuHelperVisible(true)}\r\n onMouseLeave={() => setMenuHelperVisible(false)}\r\n size=\"small\"\r\n onClick={() => setMenuHelperVisible(!menuHelperVisible)}\r\n style={{ width: '25px', paddingLeft: '0', paddingRight: '0' }}>\r\n \r\n */}\r\n <>\r\n {/* setMenuHelperVisible(true)}\r\n onMouseLeave={() => setMenuHelperVisible(false)}\r\n onClick={() => setMenuHelperVisible(!menuHelperVisible)}\r\n style={{ cursor: 'pointer', paddingTop: '4px', marginBottom: '1px'}}\r\n size='lg'\r\n color='#0079A4'\r\n icon={faListUl}\r\n /> */}\r\n setMenuHelperVisible(false)}\r\n onMouseEnter={() => setMenuHelperVisible(true)}\r\n onClick={scrollRight}\r\n height=\"26px\"\r\n width='40px'\r\n src={tabListIcon}\r\n style={{ cursor: 'pointer',marginTop:'-1px', }}\r\n alt=\"\"\r\n />\r\n \r\n \r\n \r\n {menuHelperVisible &&\r\n { e.stopPropagation() }}\r\n onMouseEnter={() => setMenuHelperVisible(true)}\r\n onMouseLeave={() => setMenuHelperVisible(false)}\r\n ref={setPopperElement} style={appliedPopperStyles} {...attributes.popper}>\r\n
    \r\n ({\r\n text: `${index+1}. ${j.label}`,\r\n job: j,\r\n selected: `${history.location.pathname}${history.location.search}` === j.url,\r\n index,\r\n }))]]}\r\n // variant='highlight'\r\n mode=\"vertical\"\r\n onMenuItemSelected={jobMenuSelectedFromHelperMenu}\r\n subMenuStyle={{\r\n minWidth: 210\r\n }}\r\n menuStyle={(i: number) => ({\r\n maxHeight: 500,\r\n zIndex: 214748364,\r\n padding: 0,\r\n overflowY: 'auto',\r\n // border:'1px solid #595959',\r\n border: useDarkMode ? '3px solid #6C747E' : '3px solid #7DBBFE',\r\n borderRadius: '5px',\r\n backgroundColor: useDarkMode ? '#141414' : '#E0FFFF',\r\n })}\r\n />\r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n {/* } */}\r\n\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nJobSwitchingMenu.defaultProps = {\r\n testMode: false,\r\n};\r\n\r\nJobSwitchingMenu.propTypes = {\r\n testMode: PropTypes.bool.isRequired,\r\n resetJobMenuContextState: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default React.memo(JobSwitchingMenu);\r\n","export default __webpack_public_path__ + \"static/media/customer_not-selected_skyblue.536154e4.svg\";","export default __webpack_public_path__ + \"static/media/customer-not-selected.b413efd0.svg\";","import _ from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport React, {useContext, useEffect, useState} from 'react';\r\n\r\nimport './dashboardMenu.css';\r\n\r\nimport Menu, {Item as MenuItem, SubMenu} from 'rc-menu';\r\n\r\nimport {faAngleDown} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\n\r\nimport {IfmsConfigMenuItem} from '../../../config/types';\r\nimport {faAngleUp} from \"@fortawesome/free-solid-svg-icons/faAngleUp\";\r\n\r\nimport ApplicationContext from '../../../ApplicationContext';\r\n\r\nfunction MenuItemText({\r\n item,\r\n selectedOperation,\r\n currentUrl,\r\n useDarkMode,\r\n}: {\r\n item:IfmsConfigMenuItem,\r\n selectedOperation: string|undefined|null,\r\n currentUrl: string|undefined\r\n useDarkMode:boolean|undefined,\r\n}) {\r\n const itemIcon = useDarkMode && item.darkModeIcon ? item.darkModeIcon : item.icon;\r\n const [displayIcon, setDisplayIcon] = useState(item.disable && item.disableIcon ? item.disableIcon : item.selectedIcon && item.isSelected && item.isSelected(selectedOperation, currentUrl ?? null) ? item.selectedIcon : itemIcon);\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n useEffect(() => {\r\n setDisplayIcon(item.disable && item.disableIcon ? item.disableIcon : item.selectedIcon && item.isSelected && item.isSelected(selectedOperation, currentUrl ?? null) ? item.selectedIcon : itemIcon);\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [itemIcon]\r\n );\r\n\r\n function onMouseEnter() {\r\n setIsHovered(true);\r\n // if (item.hoverIcon) {\r\n // setDisplayIcon(useDarkMode ? item.darkModeIcon : item.hoverIcon);\r\n // }\r\n }\r\n\r\n function onMouseLeave() {\r\n setIsHovered(false);\r\n setDisplayIcon(item.disable && item.disableIcon ? item.disableIcon : item.selectedIcon && item.isSelected && item.isSelected(selectedOperation, currentUrl ?? null) ? item.selectedIcon : itemIcon);\r\n }\r\n\r\n const containerStyle: React.CSSProperties = {\r\n height:'32px',\r\n borderBottom: isHovered ? !useDarkMode ? '3px solid #0079A4' : '3px solid #ffffff' : '',\r\n cursor: `url('data:image/svg+xml;utf8,') 7.5 7.5, auto`,\r\n };\r\n\r\n const commonTextStyle: React.CSSProperties = {\r\n verticalAlign: 'middle',\r\n color: item.disable ? 'gray' : useDarkMode ? 'white' : 'black',\r\n lineHeight: '32px',\r\n fontWeight:'bold',\r\n };\r\n\r\n return (\r\n \r\n {displayIcon && displayIcon}\r\n  \r\n \r\n {item.text}\r\n \r\n
    \r\n );\r\n}\r\n\r\nfunction isSubmenuSelected(item:IfmsConfigMenuItem, selectedOperation:string|null|undefined, currentUrl:string) {\r\n return !!item.isSelected && item.isSelected(selectedOperation, currentUrl);\r\n}\r\n\r\ntype MenuItemFactoryProps = {\r\n item: IfmsConfigMenuItem,\r\n customSubmenuArrow?: boolean,\r\n selectedOperation?: string|null,\r\n currentUrl?: string,\r\n customMenuClass?: string|undefined,\r\n customPopupClass?: string|undefined,\r\n topLineColor?: string,\r\n useDarkMode?: boolean,\r\n};\r\n\r\ntype DashboardMenuProps = {\r\n onMenuItemSelected: (menuItem:IfmsConfigMenuItem) => void,\r\n items: Array,\r\n menuStyle?: React.CSSProperties|undefined,\r\n selectedOperation?: string|null,\r\n currentUrl?: string,\r\n customMenuClass?: string|undefined,\r\n customPopupClass?: string|undefined,\r\n};\r\n\r\ninterface MenuItemMap {\r\n [indexer: string] : IfmsConfigMenuItem\r\n};\r\n\r\nconst MenuItemFactory:React.FC = ({ item, customMenuClass, customSubmenuArrow, selectedOperation, currentUrl, customPopupClass, topLineColor, useDarkMode, ...other }) => {\r\n const [isHovered, setIsHovered] = useState(false);\r\n\r\n if (!item.items || item.items.length <= 0) {\r\n if (item.level === 0) {\r\n return \r\n
    \r\n \r\n
    \r\n
    ;\r\n } else {\r\n return <>\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n ;\r\n }\r\n }\r\n\r\n const carretIcon = item.hideCaret ? null : ;\r\n\r\n const submenuContent = customSubmenuArrow\r\n ?
    \r\n  {carretIcon}\r\n
    \r\n :
    \r\n  {carretIcon}\r\n
    ;\r\n \r\n return (\r\n setIsHovered(true)} onMouseLeave={() => setIsHovered(false)} key={item.menuId} popupClassName={`${customPopupClass || ''} ifms-dashboard-menu`} className={customMenuClass} title={submenuContent} {...other} data-submenuselected={isSubmenuSelected(item, selectedOperation, currentUrl ?? '') ? 'true' : 'false'}>\r\n {item.items.map(si => (\r\n \r\n ))}\r\n \r\n );\r\n}\r\n\r\nfunction withMenuId(items:Array, menuItemMap:MenuItemMap, selectedKeys:Array, selectedOperation:string, currentUrl:string):Array {\r\n return items.map(x => {\r\n const menuId = x.customId || _.uniqueId();\r\n if (!!x.isSelected && x.isSelected(selectedOperation, currentUrl)) {\r\n selectedKeys.push(menuId);\r\n }\r\n\r\n const result:IfmsConfigMenuItem = {\r\n menuId,\r\n ...x,\r\n items: x.items ? withMenuId(x.items, menuItemMap, selectedKeys, selectedOperation, currentUrl) : [],\r\n };\r\n\r\n menuItemMap[menuId] = result;\r\n\r\n return result;\r\n });\r\n}\r\n\r\nconst DashboardMenu: React.FC = ({ items, onMenuItemSelected, menuStyle, selectedOperation, currentUrl, customMenuClass, customPopupClass, ...other }) => {\r\n const appContext = useContext(ApplicationContext);\r\n const useDarkMode = appContext.useDarkMode;\r\n\r\n let tempCustomMenuClass = customMenuClass ? `${customMenuClass} ` : '';\r\n tempCustomMenuClass += useDarkMode ? 'ifms-dashboard-menu-darkmode' : 'ifms-dashboard-menu';\r\n\r\n const menuItemMap:MenuItemMap = {};\r\n\r\n const selectedKeys:Array=[];\r\n const menuItems = withMenuId(items, menuItemMap, selectedKeys, selectedOperation ?? '', currentUrl ?? '');\r\n\r\n function procesMenuSelection(e:any) {\r\n const menuKey:string = e.key as string;\r\n\r\n if (menuItemMap[menuKey]) {\r\n onMenuItemSelected(menuItemMap[menuKey]);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {menuItems.map(item => {\r\n return (\r\n \r\n )\r\n })}\r\n \r\n );\r\n};\r\n\r\nDashboardMenu.defaultProps = {\r\n onMenuItemSelected: () => {},\r\n items: [],\r\n};\r\n\r\nDashboardMenu.propTypes = {\r\n onMenuItemSelected: PropTypes.func.isRequired,\r\n items: PropTypes.array.isRequired,\r\n menuStyle: PropTypes.object,\r\n customMenuClass: PropTypes.string,\r\n};\r\n\r\n\r\nexport default React.memo(DashboardMenu);","export default __webpack_public_path__ + \"static/media/ifms-logo_White.98b6bb28.svg\";","export default __webpack_public_path__ + \"static/media/reference-not-selected2_skyblue.12ace46c.svg\";","export default __webpack_public_path__ + \"static/media/settings-not-selected_skyblue.384bb858.svg\";","export default __webpack_public_path__ + \"static/media/container_tracking.1b05ae73.svg\";","export default __webpack_public_path__ + \"static/media/container_tracking-skyblue.c916fe9c.svg\";","export default __webpack_public_path__ + \"static/media/Inbond_B.41cd252c.svg\";","export default __webpack_public_path__ + \"static/media/Inbond_D.31a95ca0.svg\";","export default __webpack_public_path__ + \"static/media/user.dfe98d18.svg\";","export default __webpack_public_path__ + \"static/media/user_selected.92d0edd0.svg\";","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport IfmsButton, { IfmsButtonProps } from './IfmsButton';\r\n\r\nconst DashboardCustomButton = React.forwardRef(({children, ...other}, ref) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\nDashboardCustomButton.defaultProps = {\r\n};\r\n\r\nDashboardCustomButton.propTypes = {\r\n size: PropTypes.oneOf(['regular', 'small', 'large']),\r\n};\r\n\r\nexport default React.memo(DashboardCustomButton);\r\n\r\n","import './buttons.css';\r\nimport {Portal} from 'react-portal';\r\nimport PropTypes from 'prop-types';\r\nimport React, {ReactElement, useContext, useEffect, useMemo, useRef, useState} from 'react';\r\nimport {usePopper} from 'react-popper';\r\n\r\nimport userImage from '../img/user.svg';\r\nimport userImageSelected from '../img/user_selected.svg';\r\n\r\nimport Menu, {IfmsMenuItem} from './menu/Menu';\r\nimport DashboardCustomButton from './DashboardCustomButton';\r\nimport ApplicationContext from '../ApplicationContext';\r\nimport config from '../config';\r\nimport { useAppDispatch, useAppSelector } from '../app/hooks';\r\nimport { changeUserIconUrl } from '../features/loginSlice';\r\nimport { User } from '../ifmsTypes';\r\n\r\nexport interface UserButtonItem {\r\n label: React.ReactNode|string|undefined,\r\n separator?: boolean,\r\n newCol?: boolean,\r\n popupComponent?: ReactElement,\r\n popupWidth?: number,\r\n popupLabel?: React.ReactNode|string|undefined,\r\n [x:string]: any,\r\n hidden?: boolean,\r\n link?: string,\r\n disabeld? : boolean\r\n};\r\nexport const borderColors = ['#0079A4', '#B5038F', '#FF3300', '#89C064', '#00B0F0', '#007BFF'];\r\n\r\nexport function splitMenuItemsIntoSections(actionButtonItems: UserButtonItem[]): IfmsMenuItem[][][] {\r\n const result: IfmsMenuItem[][][] = [[[]]]\r\n actionButtonItems.forEach((item, index) => {\r\n if (item.hidden) return\r\n result[result.length - 1][result[result.length - 1].length - 1].push({\r\n text: item.label,\r\n // separator: item.separator,\r\n separator: false,\r\n selected: false,\r\n index,\r\n disabled:item?.disabeld ?? false,\r\n icon:item?.icon ?? null,\r\n icon2:item?.icon2 ?? null\r\n });\r\n\r\n if(item.newCol && index !== actionButtonItems.length - 1) {\r\n result.push([]);\r\n }\r\n if(item.separator && index !== actionButtonItems.length - 1) {\r\n result[result.length - 1].push([]);\r\n }\r\n })\r\n return result;\r\n} \r\n\r\nfunction ActionButton({\r\n items = [],\r\n action = 'click',\r\n children = undefined,\r\n onItemSelected = () => {},\r\n height = undefined,\r\n variant = 'plain',\r\n user\r\n}: {\r\n items?: Array,\r\n action?: 'click'|'hover'|'rightClick',\r\n hideCaret?: boolean,\r\n onItemSelected?: (x:UserButtonItem) => void,\r\n children?: React.ReactChild|React.ReactNode|string|null|undefined,\r\n height?: string|undefined,\r\n variant?: 'plain'|'highlight',\r\n user: User|null,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const [menuVisible, _setMenuVisible] = useState(false);\r\n const [referenceElement, setReferenceElement] = useState(null);\r\n const [popperElement, setPopperElement] = useState(null);\r\n const [arrowElement, setArrowElement] = useState(null);\r\n const { styles, attributes } = usePopper(referenceElement, popperElement, {\r\n modifiers: [\r\n {\r\n name: 'arrow',\r\n options: {\r\n element: arrowElement,\r\n }\r\n }],\r\n });\r\n\r\n const menuContainerRef = useRef(null);\r\n const buttonRef = useRef(null);\r\n const openRef = useRef(false);\r\n const clickForMenuCloseRef = useRef(false);\r\n const userState = useAppSelector(state => state.user);\r\n const dispatch = useAppDispatch();\r\n \r\n useEffect(() => {\r\n async function executeAsyncFunc(){\r\n await getUserIcon(appContext.user?.id ?? '');\r\n }\r\n executeAsyncFunc();\r\n\r\n document.addEventListener('click', handleClickOutsideMenu, true);\r\n //document.addEventListener('mousemove', mouseMove, true);\r\n return () => {\r\n document.removeEventListener('click', handleClickOutsideMenu, true);\r\n //document.removeEventListener('mousemove', mouseMove, true);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n async function getUserIcon(userID: string) {\r\n if (!userID) return;\r\n\r\n const userToken = appContext.user ? appContext.user.accessToken ?? '' : '';\r\n \r\n fetch(`${config.serverUrl}user/signDownload?userID=${userID}&isGetIcon=true`,\r\n { method: 'GET',\r\n headers: {\r\n 'Authorization': `Bearer ${userToken}` \r\n }\r\n }\r\n )\r\n .then(response => {\r\n if (response.ok) {\r\n response.blob().then(blob => {\r\n if (blob.size > 0) {\r\n const url = window.URL.createObjectURL(blob);\r\n dispatch(changeUserIconUrl({url}));\r\n }\r\n });\r\n }\r\n })\r\n .catch(error => {});\r\n }\r\n\r\n //function mouseMove(e:MouseEvent) {\r\n // if (action !== 'hover') {\r\n // return;\r\n // }\r\n\r\n // const mX = e.clientX;\r\n // const mY = e.clientY;\r\n\r\n // let overButton = false;\r\n // let overMenu = false;\r\n\r\n // if (buttonRef && buttonRef.current) {\r\n // const bc = buttonRef.current.getBoundingClientRect();\r\n // overButton = mX >= bc.x && mX <= bc.right && mY >= bc.top && mY <= bc.bottom;\r\n // }\r\n\r\n // if (menuContainerRef && menuContainerRef.current) {\r\n // const mc = menuContainerRef.current.getBoundingClientRect();\r\n // overMenu = mX >= mc.x && mX <= mc.right && mY >= mc.top - 10 && mY <= mc.bottom;\r\n // }\r\n\r\n // const showMenu = overButton || overMenu;\r\n // if (showMenu !== openRef.current) {\r\n // setMenuVisible(showMenu);\r\n // }\r\n //}\r\n\r\n function handleClickOutsideMenu(e:MouseEvent) {\r\n // if (action === 'hover') {\r\n // return;\r\n // }\r\n clickForMenuCloseRef.current = false;\r\n\r\n if (openRef.current && menuContainerRef && menuContainerRef.current) {\r\n const target = e.target as HTMLElement;\r\n const shouldClose = !menuContainerRef.current.contains(target);\r\n\r\n if (shouldClose) {\r\n setMenuVisible(false);\r\n clickForMenuCloseRef.current = true;\r\n }\r\n }\r\n }\r\n\r\n function setMenuVisible(v:boolean) {\r\n openRef.current = v;\r\n _setMenuVisible(v);\r\n }\r\n\r\n function onMenuItemSelected(item:IfmsMenuItem) {\r\n if (item.index !== undefined && item.index >= 0 && item.index <= items.length) {\r\n onItemSelected(items[item.index]);\r\n }\r\n\r\n setMenuVisible(false);\r\n }\r\n\r\n const appliedPopperStyles = {\r\n ...styles.popper,\r\n marginLeft: '60px', //'35px',\r\n /*paddingTop: 10*/\r\n marginTop: 7,\r\n\r\n };\r\n\r\n function buttonClick() {\r\n if (!clickForMenuCloseRef.current)\r\n setMenuVisible(!menuVisible);\r\n\r\n deleteAllTooltipsFromDom();\r\n }\r\n\r\n // const onActionButtonClick = action === 'click'\r\n // ? () => setMenuVisible(!menuVisible)\r\n // : undefined;\r\n\r\n //onContextMenu?\r\n // const onActionButtonRightClick = action === 'rightClick'\r\n // ? (e:MouseEvent) => {\r\n // setMenuVisible(!menuVisible);\r\n // e.stopPropagation();\r\n // e.preventDefault();\r\n // }\r\n // : undefined;\r\n\r\n /* reformat array by separator. This is done because of avoiding changes in tons of files. */\r\n const formatterItems = useMemo(() => splitMenuItemsIntoSections(items), [items])\r\n\r\n // let userEmail = '';\r\n // if (user) {\r\n // if (user.department) {\r\n // userEmail = `${user.email} - ${user.departmentName}`;\r\n // } else {\r\n // userEmail = user.email ?? '';\r\n // }\r\n // }\r\n\r\n const userEmail = appContext.user ? appContext.user.id ?? '' : '';\r\n\r\n function deleteAllTooltipsFromDom() {\r\n const visibleTooltips = document.querySelectorAll('.ifms-tooltip');\r\n if (visibleTooltips && visibleTooltips.length > 0) {\r\n for (let i = 0; i < visibleTooltips.length; ++i) {\r\n const t = visibleTooltips[i];\r\n if (t.parentElement) {\r\n t.parentElement.removeChild(t);\r\n }\r\n }\r\n }\r\n }\r\n function getDbNameWithSuntekId() {\r\n //{user.defaultDatabase?.toUpperCase()??''}
    ({user.suntekId})

    ;\r\n //pt231216>\r\n }\r\n\r\n return (\r\n
    \r\n \r\n {/* */}\r\n {!!userState.user?.userIcon\r\n ?\r\n
    \r\n \r\n
    \r\n :\r\n \r\n }\r\n \r\n
    \r\n
    \r\n {getDbNameWithSuntekId()}\r\n
    \r\n \r\n {menuVisible &&\r\n {e.stopPropagation()}}\r\n ref={setPopperElement} style={appliedPopperStyles} {...attributes.popper}>\r\n
    \r\n ({\r\n //overflowY: 'hidden',\r\n //padding: 0,\r\n //borderTop: `3px solid ${borderColors[i % borderColors.length]}`,\r\n //paddingTop: 10,\r\n marginTop: -11,\r\n marginBottom: -12,\r\n })}\r\n />\r\n
    \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n );\r\n}\r\n\r\nActionButton.defaultProps = {\r\n action: 'hover',\r\n onItemSelected: () => {},\r\n variant: 'plain',\r\n};\r\n\r\nActionButton.propTypes = {\r\n items: PropTypes.arrayOf(PropTypes.shape({\r\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\r\n separator: PropTypes.bool,\r\n })),\r\n action: PropTypes.oneOf(['click', 'hover', 'rightClick']).isRequired,\r\n onItemSelected: PropTypes.func.isRequired,\r\n height: PropTypes.string,\r\n variant: PropTypes.oneOf(['plain', 'highlight']).isRequired,\r\n};\r\n\r\nexport default React.memo(ActionButton);\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport React from \"react\";\r\n\r\nexport enum YesNoCancelResult {\r\n Yes = 1,\r\n No = 2,\r\n Cancel = 3\r\n};\r\n\r\nexport interface GlobalYesNoCancelDialogState {\r\n show: boolean,\r\n resolve: ((value: YesNoCancelResult | PromiseLike) => void)|null,\r\n content: React.ReactNode | null,\r\n};\r\n\r\nexport interface GlobalYesNoCancelDialogData {\r\n resolve: ((value: YesNoCancelResult | PromiseLike) => void)|null,\r\n content: React.ReactNode | null,\r\n};\r\n\r\nconst initialState:GlobalYesNoCancelDialogState = {\r\n show: false,\r\n resolve: null,\r\n content: null,\r\n};\r\n\r\n/**\r\n * Slice for controlling Global Yes No Dialog\r\n */\r\nconst globalYesNoCancelDialogSlice = createSlice({\r\n name: 'globalYesNoCancelDialog',\r\n initialState,\r\n reducers: {\r\n showGlobalYesNoCancelDialog: (state, action: PayloadAction) => {\r\n state.show = true;\r\n state.resolve = action.payload.resolve;\r\n state.content = action.payload.content;\r\n },\r\n hideGlobalYesNoCancelDialog: (state) => {\r\n state.show = false;\r\n state.resolve = null;\r\n state.content = null;\r\n },\r\n }\r\n});\r\n\r\nexport default globalYesNoCancelDialogSlice.reducer;\r\n\r\nexport const { showGlobalYesNoCancelDialog, hideGlobalYesNoCancelDialog } = globalYesNoCancelDialogSlice.actions;\r\n","export default __webpack_public_path__ + \"static/media/eSupport-not-selected.55150bb7.svg\";","export default __webpack_public_path__ + \"static/media/eSupport-not-selected_skyblue.03e597ea.svg\";","export default __webpack_public_path__ + \"static/media/accounting-not-selected.9e97f9b4.png\";","export default __webpack_public_path__ + \"static/media/warehousing-not-selected.1db4cde4.png\";","export default __webpack_public_path__ + \"static/media/air-import-not-selected.8542f6a9.svg\";","export default __webpack_public_path__ + \"static/media/air-export-not-selected.d2f7a837.svg\";","export default __webpack_public_path__ + \"static/media/freight-receipt-not-selected.d22d49be.svg\";","export default __webpack_public_path__ + \"static/media/utilities-not-selected.19f70224.svg\";","export default __webpack_public_path__ + \"static/media/runner.2dd99e16.svg\";","export default __webpack_public_path__ + \"static/media/exit.c28aa74c.svg\";","export default __webpack_public_path__ + \"static/media/ocean-import-not-selected_skyblue.479e7321.svg\";","export default __webpack_public_path__ + \"static/media/ocean-export-not-selected_skyblue.b88bcbee.svg\";","export default __webpack_public_path__ + \"static/media/air-import-not-selected_skyblue.a5ceaf07.svg\";","export default __webpack_public_path__ + \"static/media/air-export-not-selected_skyblue.29e31e8d.svg\";","export default __webpack_public_path__ + \"static/media/trucking-others-not-selected_skyblue.b0987ca2.svg\";","export default __webpack_public_path__ + \"static/media/freight-receipt-not-selected_skyblue.d477fe6d.svg\";","export default __webpack_public_path__ + \"static/media/warehousing-not-selected_skyblue.3dfcf0d7.svg\";","export default __webpack_public_path__ + \"static/media/report-manager-not-selected_skyblue.0a0ec137.svg\";","export default __webpack_public_path__ + \"static/media/billings-not-selected_skyblue.b81ebae7.svg\";","export default __webpack_public_path__ + \"static/media/accounting-not-selected_skyblue.e36eebf9.svg\";","export default __webpack_public_path__ + \"static/media/utilities-not-selected_skyblue.81ff59e8.svg\";","export default __webpack_public_path__ + \"static/media/billings-not-selected.b37ba685.svg\";","export default __webpack_public_path__ + \"static/media/my-job-not-select.7105cd36.svg\";","export default __webpack_public_path__ + \"static/media/my-job-not-select-skyblue.d7344053.svg\";","export default __webpack_public_path__ + \"static/media/bell.fc8f1cdd.svg\";","export default __webpack_public_path__ + \"static/media/bi.1162f2ac.svg\";","export default __webpack_public_path__ + \"static/media/bi_D.8e8e733d.svg\";","export default __webpack_public_path__ + \"static/media/AMS_B.f981e30f.svg\";","export default __webpack_public_path__ + \"static/media/AMS_D.03ec3852.svg\";","export default __webpack_public_path__ + \"static/media/AES_B.a79aa582.svg\";","export default __webpack_public_path__ + \"static/media/AES_D.a82307aa.svg\";","export default __webpack_public_path__ + \"static/media/ISF_B.bf116a20.svg\";","export default __webpack_public_path__ + \"static/media/ISF_D.d118ea35.svg\";","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport postal from 'postal';\r\nimport CustomerListSkyBlue from \"../img/customer_not-selected_skyblue.svg\";\r\nimport CustomerListNotSelectedIcon from \"../img/customer-not-selected.svg\";\r\nimport DashboardMenu from '../ui/dashboard/menu/DashboardMenu';\r\nimport ifmsLogo from '../img/ifms-logo-black.png';\r\nimport ifmsLogoWhite from '../img/ifms-logo_White.svg';\r\nimport { IfmsConfigMenuItem, IfmsConfigOperationMenu } from '../config/types';\r\nimport { SystemSettings, User } from '../ifmsTypes';\r\nimport { MenuFilterGrents } from '../util';\r\nimport constants from '../constants';\r\nimport ReferenceFilesNotSelectedIcon from '../img/reference-not-selected2.png';\r\nimport ReferenceFilesNotSelectedIconSkyBlue from '../img/reference-not-selected2_skyblue.svg';\r\nimport SettingsNotSelectedIcon from '../img/settings-not-selected.png';\r\nimport SettingsNotSelectedIconSkyBlue from '../img/settings-not-selected_skyblue.svg';\r\nimport ContainerTrackingIcon from \"../img/container_tracking.svg\";\r\nimport ContainerTrackIconSkyBlue from \"../img/container_tracking-skyblue.svg\";\r\nimport ExpressSearchIcon from \"../img/magnifying-glass-orange3.svg\";\r\nimport ExpressSearchIconDark from \"../img/magnifying-glass-dark.svg\";\r\nimport inbondMenuIconBlue from \"../img/Inbond_B.svg\";\r\nimport inbondMenuIconSkyBlue from \"../img/Inbond_D.svg\";\r\nimport { getFmsGlobal } from '../globals';\r\nimport UserButton, { UserButtonItem } from '../ui/UserButton';\r\nimport ApplicationContext from '../ApplicationContext';\r\nimport { FmsSecTask } from '../fms.core/constants';\r\nimport supportIcon from '../img/eSupport-not-selected.svg';\r\nimport supportIconSkyBlue from '../img/eSupport-not-selected_skyblue.svg';\r\nimport { changeOperation } from '../features/operationSlice';\r\nimport { useAppDispatch } from '../app/hooks';\r\nimport config from '../config';\r\nimport AccountingNotSelected from '../img/accounting-not-selected.png';\r\nimport WarehousingNotSelected from '../img/warehousing-not-selected.png';\r\nimport OceanImportNotSelected from '../img/ocean-import-not-selected.png';\r\nimport OceanExportNotSelected from '../img/ocean-export-not-selected.png';\r\nimport AirImportNotSelected from '../img/air-import-not-selected.svg';\r\nimport AirExportNotSelected from '../img/air-export-not-selected.svg';\r\nimport TruckingOthersNotSelected from '../img/trucking-others-not-selected.png';\r\nimport FreightReceiptNotSelected from '../img/freight-receipt-not-selected.svg';\r\nimport utilitiesIcon from '../img/utilities-not-selected.svg';\r\nimport ReportManagerNotSelected from '../img/report-manager-not-selected.png';\r\nimport RunnerIcon from '../img/runner.svg';\r\nimport ExitIcon from '../img/exit.svg';\r\n\r\nimport OceanImportNotSelectedSkyBlue from '../img/ocean-import-not-selected_skyblue.svg';\r\nimport OceanExportNotSelectedSkyBlue from '../img/ocean-export-not-selected_skyblue.svg';\r\nimport AirImportNotSelectedSkyBlue from '../img/air-import-not-selected_skyblue.svg';\r\nimport AirExportNotSelectedSkyBlue from '../img/air-export-not-selected_skyblue.svg';\r\nimport TruckingOthersNotSelectedSkyBlue from '../img/trucking-others-not-selected_skyblue.svg';\r\nimport FreightReceiptNotSelectedSkyBlue from '../img/freight-receipt-not-selected_skyblue.svg';\r\nimport WarehousingNotSelectedSkyBlue from '../img/warehousing-not-selected_skyblue.svg';\r\nimport ReportManagerNotSelectedSkyBlue from '../img/report-manager-not-selected_skyblue.svg';\r\nimport BillingsNotSelectedSkyBlue from '../img/billings-not-selected_skyblue.svg';\r\nimport AccountingNotSelectedSkyBlue from '../img/accounting-not-selected_skyblue.svg';\r\nimport utilitiesIconSkyBlue from '../img/utilities-not-selected_skyblue.svg';\r\n\r\nimport BillingsNotSelected from '../img/billings-not-selected.svg';\r\n\r\nimport myjobNotSelected from '../img/my-job-not-select.svg';\r\nimport myjobNotSelectedSkyBlue from '../img/my-job-not-select-skyblue.svg';\r\n\r\nimport taskReminderIcon from '../img/bell.svg';\r\nimport _ from 'lodash';\r\nimport Select from '../ui/Select';\r\nimport TextBoxUncontrolled from '../ui/TextBoxUncontrolled';\r\nimport { getJobNameByTbName, getOpTypeConstant, JobNames } from '../framework.core/JobNames';\r\nimport useExternalScreenFilter from '../hooks/useExternalScreenFilter';\r\nimport { useHistory } from 'react-router';\r\nimport { SearchModelBase } from '../fms.data/models/SearchModelBase';\r\nimport { moveJobToOperation } from '../features/jobMenuSlice';\r\nimport { moveScreenToOperation, moveScreenToTop } from '../features/screenStackSlice';\r\nimport { NavigationType, openNewPage as NavOpenNewPage } from '../util/navigationHelpers';\r\nimport useJobMenus from '../hooks/useJobMenus';\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport TextBox from '../ui/TextBox';\r\nimport businessIntelligenceNotSelected from '../img/bi.svg';\r\nimport businessIntelligenceNotSelectedSkyBlue from '../img/bi_D.svg';\r\n\r\nimport amsNotSelected from '../img/AMS_B.svg';\r\nimport amsNotSelectedSkyBlue from '../img/AMS_D.svg';\r\nimport aesNotSelected from '../img/AES_B.svg';\r\nimport aesNotSelectedSkyBlue from '../img/AES_D.svg';\r\nimport isfNotSelected from '../img/ISF_B.svg';\r\nimport isfNotSelectedSkyBlue from '../img/ISF_D.svg';\r\n\r\nconst createMenuItem = (\r\n text: string,\r\n menuOp: string,\r\n icon: string,\r\n darkModeIcon: string,\r\n //hoverIcon: string,\r\n link: string,\r\n name: string,\r\n disable:boolean,\r\n disableIcon?: string,\r\n): IfmsConfigMenuItem => ({\r\n text,\r\n menuOp,\r\n level: 0,\r\n icon: !_.isEmpty(icon) ? \"\" : '',\r\n darkModeIcon: !_.isEmpty(darkModeIcon) ? \"\" : '',\r\n disableIcon: !_.isEmpty(disableIcon) ? \"\" : '',\r\n //hoverIcon: \"\",\r\n isSelected: (o: string) => o === text,\r\n link,\r\n changeOperation: text,\r\n customId: text,\r\n changeSideMenu: text,\r\n name,\r\n disable,\r\n});\r\n\r\nconst getIconStyle = (text: string): { height: number; width: number; } => {\r\n const defaultStyle: { height: number; width: number; } = { height: 14, width: 14 };\r\n const specialStyles: { [key: string]: { height: number; width: number; } } = {\r\n 'Air Import': { height: 17, width: 17 },\r\n 'Air Export': { height: 17, width: 17 },\r\n 'Other Shipment': { height: 17, width: 17 },\r\n 'Freight Receipt': { height: 15, width: 15 },\r\n 'Warehousing': { height: 15, width: 15 },\r\n 'Accounting': { height: 15, width: 15 },\r\n 'OP Report': { height: 18, width: 15 },\r\n 'Billings': { height: 16, width: 16 },\r\n 'Util': { height: 17, width: 17 },\r\n 'Customer List': { height: 18, width: 18 },\r\n 'Reference Files': { height: 18, width: 18 },\r\n 'Container Tracking': { height: 20, width: 20 },\r\n 'eSupport': { height: 18, width: 18 },\r\n 'Settings': { height: 18, width: 18 },\r\n //'My CFS': { height: 20, width: 17 },\r\n //'Brokerage Trucking': { height: 20, width: 17 },\r\n //'My Event': { height: 20, width: 17 },\r\n 'In-bond': { height: 18, width: 18 },\r\n 'Business Intelligence': { height: 20, width: 17 },\r\n 'AMS': { height: 20, width: 17 },\r\n 'AES': { height: 20, width: 17 },\r\n 'ISF': { height: 20, width: 17 },\r\n };\r\n return specialStyles[text] || defaultStyle;\r\n};\r\n\r\nconst OceanImportMenu: Array = [\r\n createMenuItem(\r\n 'Ocean Import',\r\n constants.operations.oceanImport,\r\n OceanImportNotSelected,\r\n OceanImportNotSelectedSkyBlue,\r\n //OceanImportHover,\r\n '/common/joblistview/mbl/oceanImport',\r\n 'op-oceanImport',\r\n false\r\n ),\r\n];\r\n\r\nconst OceanExportMenu: Array = [\r\n createMenuItem(\r\n 'Ocean Export',\r\n constants.operations.oceanExport,\r\n OceanExportNotSelected,\r\n OceanExportNotSelectedSkyBlue,\r\n //OceanExportHover,\r\n '/common/joblistview/oeBooking/oceanExport',\r\n 'opmenu-oceanExport',\r\n false\r\n ),\r\n];\r\n\r\nconst AirImportMenu: Array = [\r\n createMenuItem(\r\n 'Air Import',\r\n constants.operations.airImport,\r\n AirImportNotSelected,\r\n AirImportNotSelectedSkyBlue,\r\n //AirImportHover,\r\n '/common/joblistview/aiMawb/airImport',\r\n 'opmenu-airImport',\r\n false\r\n ),\r\n];\r\n\r\nconst AirExportMenu: Array = [\r\n createMenuItem(\r\n 'Air Export',\r\n constants.operations.airExport,\r\n AirExportNotSelected,\r\n AirExportNotSelectedSkyBlue,\r\n //AirExportHover,\r\n '/common/joblistview/aeMawb/airExport',\r\n 'opmenu-airExport',\r\n false\r\n ),\r\n];\r\n\r\nconst OtherShipmentMenu: Array = [\r\n createMenuItem(\r\n 'Other Shipment',\r\n constants.operations.otherShipment,\r\n TruckingOthersNotSelected,\r\n TruckingOthersNotSelectedSkyBlue,\r\n //TruckingOthersHover,\r\n '/common/joblistview/otherShipment/otherShipment',\r\n 'opmenu-otherShipment',\r\n false\r\n ),\r\n];\r\n\r\nconst FreightReceiptMenu: Array = [\r\n createMenuItem(\r\n 'Freight Receipt',\r\n constants.operations.whReceipt,\r\n FreightReceiptNotSelected,\r\n FreightReceiptNotSelectedSkyBlue,\r\n //FreightReceiptSelected,\r\n '/common/joblistview/whReceipt/whReceipt',\r\n 'opmenu-whReceipt',\r\n false\r\n ),\r\n];\r\n\r\nconst WarehousingMenu: Array = [\r\n createMenuItem(\r\n 'Warehouse', //Change name Warehousing -> Warehouse\r\n constants.operations.warehousing,\r\n WarehousingNotSelected,\r\n WarehousingNotSelectedSkyBlue,\r\n //WarehousingHover,\r\n '/common/joblistview/whReceiving/warehousing',\r\n 'opmenu-warehousing',\r\n false\r\n ),\r\n];\r\n\r\n// const MyCFSMenu: Array = [\r\n// createMenuItem(\r\n// 'My CFS',\r\n// '',\r\n// mycfsNotSelected,\r\n// mycfsIconNotSelectedSkyBlue,\r\n// //'',\r\n// '',\r\n// 'opmenu-utilities',\r\n// false,\r\n// mycfsIconNotSelectedGray,\r\n// )\r\n// ];\r\n\r\n// const BrokerageTruckingMenu: Array = [\r\n// createMenuItem(\r\n// 'Brokerage Trucking',\r\n// '',\r\n// brokerageTruckingNotSelected,\r\n// brokerageTruckingNotSelectedSkyBlue,\r\n// //'',\r\n// '',\r\n// '',\r\n// false,\r\n// brokerageTruckingNotSelectedGray,\r\n// )\r\n// ];\r\n\r\n\r\n\r\nconst OPReportMenu: Array = [\r\n createMenuItem(\r\n 'Operation Report',\r\n constants.operations.opReport,\r\n ReportManagerNotSelected,\r\n ReportManagerNotSelectedSkyBlue,\r\n //ReportManagerHover,\r\n '/opReport/estProfit?docType=705&isManagerReport=true&opType=oceanImport',\r\n 'opmenu-opReport',\r\n false\r\n )\r\n];\r\n\r\nconst BillingsMenu: Array = [\r\n createMenuItem(\r\n 'Billings',\r\n constants.operations.billings,\r\n BillingsNotSelected,\r\n BillingsNotSelectedSkyBlue,\r\n //BillingsHover,\r\n '/common/joblistview/invoice/accounting?parentOp=billings',\r\n 'opmenu-billings',\r\n false\r\n ),\r\n];\r\n\r\nconst AccountingMenu: Array = [\r\n createMenuItem(\r\n 'Accounting',\r\n constants.operations.accounting,\r\n AccountingNotSelected,\r\n AccountingNotSelectedSkyBlue,\r\n //AccountingHover,\r\n '/accounting/acBankBalanceView',\r\n 'opmenu-accounting',\r\n false\r\n )\r\n];\r\n\r\nconst customerListMenu: Array = [\r\n createMenuItem(\r\n 'Customer List',\r\n 'Customer List',\r\n CustomerListNotSelectedIcon,\r\n CustomerListSkyBlue,\r\n //CustomerListSelectedIcon,\r\n '/common/joblistview/company/customer',\r\n 'opmenu-customerList',\r\n false\r\n )\r\n];\r\n\r\nconst referenceFilesMenu: Array = [\r\n createMenuItem(\r\n 'Reference Files',\r\n 'Reference Codes',\r\n ReferenceFilesNotSelectedIcon,\r\n ReferenceFilesNotSelectedIconSkyBlue,\r\n //ReferenceFilesHoverIcon,\r\n '/referenceFiles',\r\n 'opmenu-referenceFiles',\r\n false\r\n )\r\n];\r\n\r\nconst continerTrackingTxt = 'Container Tracking';\r\nconst ContainerTrackingItems: Array = [\r\n createMenuItem(\r\n continerTrackingTxt,\r\n '',\r\n ContainerTrackingIcon,\r\n ContainerTrackIconSkyBlue,\r\n //ContainerTrackIconWhite,\r\n '',\r\n 'opmenu-containerTracking',\r\n false\r\n )\r\n];\r\n\r\nconst UtilMenu: Array = [\r\n createMenuItem(\r\n 'Util',\r\n constants.operations.utility,\r\n utilitiesIcon,\r\n utilitiesIconSkyBlue,\r\n //utilitiesHoverIcon,\r\n '/common/joblistview/utCommunication/utility',\r\n 'opmenu-utilities',\r\n false\r\n )\r\n];\r\n\r\nconst SetupMenuItems: Array = [\r\n createMenuItem(\r\n 'Settings',\r\n 'Settings',\r\n SettingsNotSelectedIcon,\r\n SettingsNotSelectedIconSkyBlue,\r\n //SettingsHoverIcon,\r\n '/settings',\r\n 'opmenu-settings',\r\n false\r\n )\r\n];\r\n\r\nconst InbondMenu: Array = [\r\n createMenuItem(\r\n 'In-bond',\r\n '',\r\n inbondMenuIconBlue,\r\n inbondMenuIconSkyBlue,\r\n //utilitiesHoverIcon,\r\n '',\r\n 'opmenu-in-bond',\r\n false\r\n )\r\n];\r\n\r\nconst supportMenu: Array = [\r\n createMenuItem(\r\n 'eSupport',\r\n '',\r\n supportIcon,\r\n supportIconSkyBlue,\r\n //supportHoverIcon,\r\n '',\r\n 'opmenu-eSupport',\r\n false\r\n )\r\n];\r\n\r\nconst BusinessIntelligenceMenu: Array = [\r\n createMenuItem(\r\n 'Business Intelligence',\r\n 'Business Intelligence',\r\n businessIntelligenceNotSelected,\r\n businessIntelligenceNotSelectedSkyBlue,\r\n //'',\r\n '/accounting/acBusinessIntelligence',\r\n 'opmenu-bisunessIntenlligence',\r\n false,\r\n )\r\n];\r\n\r\nconst AMSMenu: Array = [\r\n createMenuItem(\r\n 'AMS',\r\n '',\r\n amsNotSelected,\r\n amsNotSelectedSkyBlue,\r\n //utilitiesHoverIcon,\r\n '',\r\n 'opmenu-ams',\r\n false\r\n )\r\n];\r\n\r\nconst AESMenu: Array = [\r\n createMenuItem(\r\n 'AES',\r\n '',\r\n aesNotSelected,\r\n aesNotSelectedSkyBlue,\r\n //utilitiesHoverIcon,\r\n '',\r\n 'opmenu-aes',\r\n false\r\n )\r\n];\r\n\r\nconst ISFMenu: Array = [\r\n createMenuItem(\r\n 'ISF',\r\n '',\r\n isfNotSelected,\r\n isfNotSelectedSkyBlue,\r\n //utilitiesHoverIcon,\r\n '',\r\n 'opmenu-isf',\r\n false\r\n )\r\n];\r\n// const memoListMenu: Array = [\r\n// {\r\n// text: 'Memo & Log List',\r\n// level: 0,\r\n// icon: \"\",\r\n// hoverIcon: \"\",\r\n// link: '/memoList',\r\n// isSelected: (_,c) => c === '/memoList',\r\n// width: '110px',\r\n// }\r\n// ];\r\n\r\ntype IfmsTopBarProps = {\r\n onMenuItemClicked: (menuItem: IfmsConfigMenuItem) => void,\r\n systemSettings: SystemSettings | null,\r\n user: User | null,\r\n homeMenu?: Array | null | undefined,\r\n selectedOperation: string,\r\n menus: IfmsConfigOperationMenu | null | undefined,\r\n currentUrl: string,\r\n openNewPage: (link: string) => void,\r\n logout: () => Promise,\r\n isLicenseeList?: boolean,\r\n showMainPop: boolean,\r\n setShowMainPop: React.Dispatch>,\r\n};\r\n\r\nlet observer: MutationObserver | null = null;\r\n\r\nconst IfmsTopBar: React.FC = ({\r\n onMenuItemClicked,\r\n systemSettings,\r\n homeMenu,\r\n selectedOperation,\r\n menus,\r\n currentUrl,\r\n openNewPage,\r\n logout,\r\n user,\r\n isLicenseeList,\r\n showMainPop,\r\n setShowMainPop\r\n}) => {\r\n const dispatch = useAppDispatch();\r\n const [displayOperation, setDisplayOperation] = useState(selectedOperation);\r\n let standaloneTitleChangeSubscription = useRef | null>(null);\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n const [searchType, setSearchType] = useState('BL');\r\n const [searchText, setSearchText] = useState(''); \r\n const [isHoverSearchInput, setIsHoverSearchInput] = useState(false);\r\n const [isFocusSearchInput, setIsFocusSearchInput] = useState(false);\r\n const versionCount = useRef(1); \r\n\r\n //const lastHomeClickedFrom = useRef('');\r\n\r\n const appContext = useContext(ApplicationContext);\r\n let grents = appContext.securityGrants;\r\n const configMenu = _.cloneDeep(config.menus);\r\n //const sSetupSec = appContext.securityGrants?.find(x=>x.securityTaskCode == FmsSecTask.SystemSetup);\r\n const compSec = appContext.securityGrants?.find(x => x.securityTaskCode === FmsSecTask.CodeCompany);\r\n const myEventSec = appContext.securityGrants?.find(x => x.securityTaskCode === FmsSecTask.MyEvent);\r\n const businessIntelligenceSec = appContext.securityGrants?.find(x => x.securityTaskCode === FmsSecTask.BusinessIntelligence);\r\n const enableMyEvent = appContext.suntekSettings?.general?.enableMyEvent?? false;\r\n const homeUrls = ['/', '/home', '/home/home'];\r\n const useDarkMode = appContext.useDarkMode;\r\n const { getSingleOpenedScreenInAnyOperationStartingWithUrl } = useJobMenus();\r\n const {setFilterForScreenExternally} = useExternalScreenFilter();\r\n\r\n // const MyEventMenu: Array = [\r\n // createMenuItem(\r\n // 'My Event',\r\n // constants.operations.myEvent,\r\n // myjobNotSelected,\r\n // myjobNotSelectedSkyBlue,\r\n // '/common/joblistview/MYEVT/myEvent',\r\n // 'opmenu-myEvent',\r\n // !enableMyEvent,\r\n // myjobNotSelectedGray,\r\n // )\r\n // ];\r\n\r\n const MyTaskMenu: Array = [\r\n createMenuItem(\r\n 'My Task',\r\n '',\r\n myjobNotSelected,\r\n myjobNotSelectedSkyBlue,\r\n '',\r\n 'opmenu-myTask',\r\n false,\r\n )\r\n ];\r\n\r\n //const goToHomeIconVisible = homeUrls.includes(currentUrl) && !homeUrls.includes(lastHomeClickedFrom.current) && !_.isEmpty(lastHomeClickedFrom.current);\r\n useEffect(() => {\r\n // alignReportMenus();\r\n\r\n let dopr = selectedOperation !== constants.operations.standalone\r\n ? selectedOperation\r\n : '';\r\n\r\n if (dopr !== displayOperation) {\r\n setDisplayOperation(dopr);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [selectedOperation]);\r\n\r\n useEffect(() => {\r\n initialize();\r\n\r\n return uninitialize;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n function doLogout() {\r\n setSelectedPopupMenuItem(null);\r\n logout();\r\n }\r\n\r\n async function goToInbond() {\r\n var apiResult = await appContext.api.getInbondLink()\r\n\r\n if (apiResult && apiResult.success) {\r\n window.open('https://inbond.suntekscm.com/Account/AutoLoginInBondFms?args=' + apiResult.result);\r\n }\r\n }\r\n\r\n async function goToSupport() {\r\n var apiResult = await appContext.api.getInbondLink()\r\n\r\n if (apiResult && apiResult.success) {\r\n window.open('http://bbs.suntekscm.com/Login.aspx?loginInfo=' + apiResult.result);\r\n }\r\n }\r\n\r\n function goToTaskReminderList(){\r\n if(appContext.systemSettings?.reminderStatus && !showMainPop) {setShowMainPop(true);}\r\n }\r\n\r\n async function goToAMS() {\r\n const isAmsEnable = appContext.suntekSettings?.compliance?.amsEnable;\r\n var apiResult = await appContext.api.getAmsLink();\r\n\r\n if (apiResult && apiResult.success) {\r\n if (isAmsEnable) {\r\n window.open('https://ams1.suntekscm.com/login_auto.aspx?' + apiResult.result);\r\n } else {\r\n window.open('https://ams1.suntekscm.com/login_2017.aspx');\r\n }\r\n }\r\n }\r\n\r\n async function goToAES() {\r\n var apiResult = await appContext.api.getAesLink();\r\n\r\n if (apiResult && apiResult.success) {\r\n window.open('https://aes.suntekscm.com/home/loginrequest/' + apiResult.result);\r\n }\r\n }\r\n\r\n async function goToISF() {\r\n const apiResult = await appContext.api.getIsfLink();\r\n const isIsfEnable = appContext.suntekSettings?.compliance?.isfEnable;\r\n\r\n if (apiResult && apiResult.success) {\r\n if (isIsfEnable) {\r\n window.open('https://imanifest.suntekscm.com/Home/AutoLoginFms?args=' + apiResult.result);\r\n } else {\r\n window.open('https://imanifest.suntekscm.com/Home/Login');\r\n }\r\n }\r\n }\r\n\r\n\r\n function subscribeChannels() {\r\n standaloneTitleChangeSubscription.current = postal.subscribe({\r\n channel: 'ifms',\r\n topic: 'ifms.standalone-title',\r\n callback: (title: string) => {\r\n setTimeout(() => {\r\n setDisplayOperation(title);\r\n }, 50);\r\n },\r\n });\r\n }\r\n\r\n function unsubscribeChannels() {\r\n if (standaloneTitleChangeSubscription.current) {\r\n postal.unsubscribe(standaloneTitleChangeSubscription.current);\r\n }\r\n }\r\n\r\n function initialize() {\r\n subscribeChannels();\r\n\r\n const targetNode = document.getElementById('ifms-top-bar');\r\n if (targetNode) {\r\n\r\n if (!observer) {\r\n const observerConfig = {\r\n attributes: true,\r\n childList: true,\r\n subtree: true,\r\n };\r\n\r\n observer = new MutationObserver(observe);\r\n observer.observe(targetNode, observerConfig);\r\n }\r\n\r\n /*if (!resizeObserver) {\r\n resizeObserver = new ResizeObserver(alignReportMenus);\r\n resizeObserver.observe(targetNode);\r\n }*/\r\n }\r\n }\r\n\r\n function uninitialize() {\r\n unsubscribeChannels();\r\n\r\n if (observer) {\r\n observer.disconnect();\r\n observer = null;\r\n }\r\n\r\n /*if (resizeObserver) {\r\n resizeObserver.disconnect();\r\n }*/\r\n }\r\n\r\n function observe() {\r\n const topMenus = document.querySelectorAll('[data-submenuselected]');\r\n if (topMenus) {\r\n for (let i = 0; i < topMenus.length; i++) {\r\n const el = topMenus[i];\r\n if (el instanceof HTMLElement) {\r\n const selectedAttr = el.dataset.submenuselected;\r\n if (selectedAttr === 'true') {\r\n if (!el.classList.contains('rc-menu-submenu-selected')) {\r\n el.classList.add('rc-menu-submenu-selected');\r\n }\r\n } else {\r\n if (el.classList.contains('rc-menu-submenu-selected')) {\r\n el.classList.remove('rc-menu-submenu-selected');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // const hasJob = !!menus && !!menus.job && menus.job.length > 0;\r\n // const hasDownload = !!menus && !!menus.download && menus.download.length > 0;\r\n // const hasReport = !!menus && !!menus.report && menus.report.length > 0;\r\n // const hasPreReport = !!menus && !!menus.preReport && menus.preReport.length > 0;\r\n // const hasAfterReport = !!menus && !!menus.afterReport && menus.afterReport.length > 0;\r\n // const hasOperationReport = !!menus && !!menus.operationReport && menus.operationReport.length > 0;\r\n\r\n // let userEmail = '';\r\n // if (user) {\r\n // if (user.department) {\r\n // userEmail = `${user.email} - ${user.departmentName}`;\r\n // } else {\r\n // userEmail = user.email ?? '';\r\n // }\r\n // }\r\n\r\n function goToHome(callByLogo: boolean) {\r\n // if (goToHomeIconVisible) {\r\n // if (!callByLogo) {\r\n // let nextUrl = lastHomeClickedFrom.current;\r\n // lastHomeClickedFrom.current = '';\r\n // openNewPage(nextUrl);\r\n // }\r\n // } else {\r\n // lastHomeClickedFrom.current = currentUrl;\r\n dispatch(changeOperation('Home'));\r\n openNewPage('/home/home');\r\n // }\r\n }\r\n\r\n\r\n // function getDbNameWithSuntekId() {\r\n // //{user.defaultDatabase?.toUpperCase()??''}
    ({user.suntekId})

    ;\r\n // //pt231216>\r\n // }\r\n\r\n // const afterReport = config.reportManagerMenu;\r\n\r\n /*\r\n const onLinkClick = (link: string) => {\r\n setSelectedPopupMenuItem(null);\r\n \r\n if (link.includes('http'))\r\n window.open(link);\r\n else\r\n openNewPage(link)\r\n }\r\n \r\n function changeButton(_button: ButtonItem) {\r\n const newButton: IfmsConfigMenuItem =\r\n {\r\n text: _button.label,\r\n level: 0,\r\n metadata: _button.metadata,\r\n link: _button.link,\r\n changeOperation:'Utility',\r\n changeSideMenu:'Utility'\r\n }\r\n return newButton;\r\n }\r\n \r\n async function checkFileServer() {\r\n const apiResult2: ApiResult = await appContext.api.checkfileserver();\r\n if (apiResult2 && apiResult2.success)\r\n await showGlobalOkDialog(

    File Server is working!

    );\r\n else\r\n await showGlobalOkDialog(

    File Server is not working!

    );\r\n }\r\n \r\n async function setMilestoneOption(jobName:string){\r\n if(jobName === 'OIH'){\r\n if(hasOpenedScreenStartingWithUrl('/common/joblistview/hbl/oceanImport')){\r\n await showGlobalOkDialog(

    Please close HBL List (OI)

    );\r\n return;\r\n }\r\n appContext.setSystemSettings({\r\n ...appContext.systemSettings,\r\n showMilestoneInOihList:!appContext.systemSettings?.showMilestoneInOihList,\r\n });\r\n }\r\n else{\r\n if(hasOpenedScreenStartingWithUrl('/common/joblistview/aiHawb/airImport')){\r\n await showGlobalOkDialog(

    Please close HAWB List (AI)

    );\r\n return;\r\n }\r\n appContext.setSystemSettings({\r\n ...appContext.systemSettings,\r\n showMilestoneInAihList:!appContext.systemSettings?.showMilestoneInAihList,\r\n });\r\n }\r\n }\r\n \r\n async function openESupportPage(){\r\n const openURL:string = await appContext.api.getESupportURL(fmsGlobal.AcmeID)\r\n window.open(openURL);\r\n }\r\n */\r\n\r\n // async function searchData(searchType: string, searchText: string){\r\n async function searchData(searchText: string){\r\n // const apiResult = await appContext.api.getSearchAllTable(searchType, searchText);\r\n const apiResult = await appContext.api.getSearchAllTable(searchText);\r\n if(apiResult && apiResult.success && apiResult.result){\r\n const searchType = apiResult.result.searchType;\r\n const tbName = apiResult.result.tbName;\r\n const tbId = apiResult.result.tbId;\r\n const showList = apiResult.result.showList;\r\n const hdType = apiResult.result.hdType;\r\n const id = apiResult.result.id;\r\n const refNo = apiResult.result.refNo;\r\n let detailUrl = '';\r\n let jobName = getJobNameByTbName(tbName);\r\n\r\n if(searchType === 'ACCT'){\r\n switch(hdType){\r\n case \"T_INVOHD\":\r\n if(tbName) jobName = JobNames.Invoice;\r\n else jobName = JobNames.GInvo;\r\n break;\r\n case \"T_APHD\":\r\n if(tbName) jobName = JobNames.Bill;\r\n else jobName = JobNames.GBill;\r\n break;\r\n case \"T_CRDBHD\": \r\n jobName = JobNames.CrDb;\r\n break;\r\n }\r\n }\r\n if(showList){\r\n switchToList(jobName, searchText, searchType, showList, id, refNo);\r\n }else{\r\n detailUrl = getDetailUrlByJobName(jobName, tbId, tbName, id);\r\n\r\n let opType = getOpTypeConstant(jobName);\r\n\r\n const lastScreenQuery = getSingleOpenedScreenInAnyOperationStartingWithUrl(detailUrl);\r\n if (lastScreenQuery && lastScreenQuery.item) {\r\n // opertaion location update\r\n if (!opType) {\r\n opType = lastScreenQuery.operation;\r\n }\r\n\r\n // screen open\r\n dispatch(moveScreenToTop({\r\n url: detailUrl,\r\n operation: opType,\r\n }));\r\n \r\n // open page.\r\n NavOpenNewPage(history, detailUrl, NavigationType.jobMenuSwitch, \r\n lastScreenQuery.item.metadata, \r\n opType??lastScreenQuery.item.afterScreenUrl);\r\n return;\r\n }\r\n \r\n openNewPage(detailUrl);\r\n }\r\n }else{\r\n setSearchText(\"No Found Data\");\r\n setTimeout(() => {\r\n const focusElement = document.getElementById(\"ifms-search-text\") as HTMLInputElement;\r\n if (focusElement) {\r\n focusElement.focus();\r\n focusElement.select();\r\n }\r\n }, 100);\r\n }\r\n }\r\n\r\n function getDetailUrlByJobName(jobName: string, tbId: number, tbName: string = '', id: number = 0){\r\n switch(jobName){\r\n case JobNames.OIMbl: return `/oceanImport/mbl/view/${tbId}`;\r\n case JobNames.OIHbl: return `/oceanImport/hbl/view/${tbId}`;\r\n case JobNames.OEMbl: return `/oceanExport/mbl/view/${tbId}`;\r\n case JobNames.OEHbl: return `/oceanExport/hbl/view/${tbId}`;\r\n\r\n case JobNames.AIMbl: return `/airImport/mawb/view/${tbId}`;\r\n case JobNames.AIHbl: return `/airImport/hawb/view/${tbId}`;\r\n case JobNames.AEMbl: return `/airExport/mawb/view/${tbId}`;\r\n case JobNames.AEHbl: return `/airExport/hawb/view/${tbId}`;\r\n case JobNames.OtherOP: return `/otherShipment/otherShipment/view/${tbId}`;\r\n case JobNames.WHRcv: return `/warehousing/receiving/view/${tbId}`;\r\n case JobNames.WHShip: return `/warehousing/shipping/view/${tbId}`;\r\n \r\n case JobNames.Invoice: return `/accounting/invoice/view/${getJobNameByTbName(tbName)}/${tbId}/${id}`;\r\n case JobNames.GInvo: return `/accounting/acGeneralInvoice/view/${id}`;\r\n case JobNames.CrDb: return `/accounting/crdb/view/${getJobNameByTbName(tbName)}/${tbId}/${id}`;\r\n case JobNames.Bill: return `/accounting/bill/view/${getJobNameByTbName(tbName)}/${tbId}/${id}`;\r\n case JobNames.GBill: return `/accounting/acGeneralBill/view/${id}`;\r\n \r\n default : return '';\r\n }\r\n }\r\n\r\n \r\n const history = useHistory();\r\n\r\n function switchToList(jobName: JobNames, searchText: string, searchType: string, showList: boolean, id:number , refNo: string) {\r\n let blType = '';\r\n let columnLabel = '';\r\n let columnId = '';\r\n let text = '';\r\n let columnIdEx: string | null = null;\r\n let textEx: string | null = null;\r\n let parentOp = false;\r\n let expressSearchCol = 'createdAt';\r\n switch(jobName) {\r\n case JobNames.OIMbl:\r\n blType = 'mbl';\r\n columnLabel = searchType === \"CNTR\" ? 'Container': 'MBL';\r\n columnId = searchType === \"CNTR\" ? 'containerNo' : 'mblNo';\r\n text= searchText;\r\n break;\r\n case JobNames.OIHbl:\r\n blType = 'hbl';\r\n if(searchType === \"CNTR\"){\r\n columnId = showList ? 'oiMblId' : 'cntrNo';\r\n columnLabel = showList ? 'Ref. #' : 'Container';\r\n columnIdEx = showList ? 'refNo' : null;\r\n text = showList ? id.toString() : searchText;\r\n textEx = showList ? refNo : null;\r\n }else{\r\n columnId = 'hblNo';\r\n columnLabel = 'HBL';\r\n text= searchText;\r\n } \r\n\r\n break;\r\n case JobNames.OEMbl:\r\n blType = 'oeMbl';\r\n columnLabel = searchType == \"CNTR\" ? 'Container':'MBL';\r\n columnId = searchType == \"CNTR\" ? 'containerNo' :'mblNo';\r\n text= searchText;\r\n break;\r\n case JobNames.OEHbl:\r\n blType = 'oeHbl';\r\n if(searchType === \"CNTR\"){\r\n columnId = showList ? 'oeMblId' : 'containerNo';\r\n columnLabel = showList ? 'Ref. #' : 'Container';\r\n columnIdEx = showList ? 'refNo' : null;\r\n text = showList ? id.toString() : searchText;\r\n textEx = showList ? refNo : null;\r\n }else{\r\n columnId = 'hblNo';\r\n columnLabel = 'HBL';\r\n text= searchText;\r\n } \r\n break;\r\n case JobNames.AIMbl:\r\n blType = 'aiMawb';\r\n columnLabel = 'MAWB';\r\n columnId = 'mawbNo';\r\n text= searchText;\r\n break;\r\n case JobNames.AIHbl:\r\n blType = 'aiHawb';\r\n columnLabel = 'HAWB';\r\n columnId = 'hawbNo';\r\n text= searchText;\r\n break;\r\n case JobNames.AEMbl:\r\n blType = 'aeMawb';\r\n columnLabel = 'MAWB';\r\n columnId = 'mawbNo';\r\n text= searchText;\r\n break;\r\n case JobNames.AEHbl:\r\n blType = 'aeHawb';\r\n columnLabel = 'HAWB';\r\n columnId = 'hawbNo';\r\n expressSearchCol = 'u1Date';\r\n text= searchText;\r\n break;\r\n case JobNames.OtherOP:\r\n blType = 'otherShipment';\r\n if(searchType === \"CNTR\"){\r\n columnLabel = 'Container';\r\n columnId = 'container';\r\n }\r\n else{\r\n columnLabel = 'Ref.';\r\n columnId = 'refNo';\r\n }\r\n text= searchText;\r\n break;\r\n case JobNames.WHRcv:\r\n blType = 'whReceiving';\r\n columnLabel = 'Receiving ID';\r\n columnId = 'receiveNo';\r\n text= searchText;\r\n break;\r\n case JobNames.WHShip:\r\n blType = 'whShipping';\r\n columnLabel = 'Shipping ID';\r\n columnId = 'shipNo';\r\n text= searchText;\r\n break;\r\n case JobNames.Invoice:\r\n blType = 'invoice';\r\n columnLabel='Invoice #';\r\n columnId ='invoiceNo';\r\n parentOp = true;\r\n text= searchText;\r\n break;\r\n case JobNames.GInvo:\r\n blType = 'acGeneralInvoice';\r\n columnLabel='G.Invoice #';\r\n columnId ='invoiceNo';\r\n text= searchText;\r\n break;\r\n case JobNames.Bill:\r\n blType = 'bill';\r\n columnLabel='Bill #';\r\n columnId ='billNo';\r\n expressSearchCol = 'createdDate';\r\n parentOp = true;\r\n text= searchText;\r\n break;\r\n case JobNames.GBill:\r\n blType = 'acGeneralBill';\r\n columnLabel='G.Bill #';\r\n columnId ='billNo';\r\n expressSearchCol = 'createdDate';\r\n text= searchText;\r\n break;\r\n case JobNames.CrDb: \r\n blType = 'crdb';\r\n columnLabel='Crdb #';\r\n columnId ='crDbNo';\r\n parentOp = true;\r\n expressSearchCol = 'u1Date';\r\n text= searchText;\r\n break;\r\n default:\r\n break; \r\n }\r\n const opType = getOpTypeConstant(jobName);\r\n\r\n let model = new SearchModelBase();\r\n model.isExpressSearch = true;\r\n model.version = versionCount.current; // Update version\r\n model.expressSearchCol = expressSearchCol;\r\n\r\n const link =`/common/joblistview/${blType}/${opType ? opType : 'accounting'}${parentOp ? '?parentOp=accounting': ''}`;\r\n setFilterForScreenExternally(\r\n link,\r\n columnId,\r\n columnLabel,\r\n text.toString(),\r\n 'update',\r\n false,\r\n true,\r\n model,\r\n columnIdEx,\r\n textEx,\r\n true,\r\n true\r\n );\r\n\r\n versionCount.current += 1;\r\n\r\n openNewPage(link);\r\n }\r\n\r\n\r\n const OperationMenus: Array = [\r\n ...OceanImportMenu,\r\n ...OceanExportMenu,\r\n ...AirImportMenu,\r\n ...AirExportMenu,\r\n ...OtherShipmentMenu,\r\n ...FreightReceiptMenu,\r\n ...WarehousingMenu,\r\n //...MyCFSMenu,\r\n //...BrokerageTruckingMenu,\r\n ...OPReportMenu,\r\n ...BillingsMenu,\r\n ...AccountingMenu,\r\n ...customerListMenu,\r\n ...referenceFilesMenu,\r\n ...ContainerTrackingItems,\r\n ...SetupMenuItems,\r\n ...UtilMenu,\r\n ...InbondMenu,\r\n ...supportMenu,\r\n ];\r\n\r\n\r\n // for tabbar menu link setting.\r\n const filterMenuItems = (menuItems:IfmsConfigMenuItem[]) => {\r\n return _.cloneDeep(menuItems).filter(op => {\r\n let opSide = configMenu.find(cm => cm.operation === op.menuOp);\r\n if (opSide) {\r\n opSide.job = MenuFilterGrents(opSide.job, grents, appContext);\r\n if (opSide.job.length > 0) {\r\n if (opSide.job.find(x => x.link === op.link)) {\r\n return true;\r\n } else {\r\n op.link = opSide.job[0]?.link;\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n });\r\n };\r\n\r\n const filteredOceanImportMenu = filterMenuItems(OceanImportMenu);\r\n const filteredOceanExportMenu = filterMenuItems(OceanExportMenu);\r\n const filteredAirImportMenu = filterMenuItems(AirImportMenu);\r\n const filteredAirExportMenu = filterMenuItems(AirExportMenu);\r\n const filteredOtherShipmentMenu = filterMenuItems(OtherShipmentMenu);\r\n const filteredFreightReceiptMenu = filterMenuItems(FreightReceiptMenu);\r\n const filteredWarehousingMenu = filterMenuItems(WarehousingMenu);\r\n const filteredOPReportMenu = filterMenuItems(OPReportMenu);\r\n const filteredBillingsMenu = filterMenuItems(BillingsMenu);\r\n const filteredAccountingMenu = filterMenuItems(AccountingMenu);\r\n const filteredUtilMenu = filterMenuItems(UtilMenu);\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n
    \r\n
    \r\n {/* */}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n { }} selectedOperation={selectedOperation} currentUrl={currentUrl} /> \r\n
    */}\r\n {/* {(user?.isSuntekAdmin || myEventSec?.grantRead) && */}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    */}\r\n {/* */}\r\n {/* { }} selectedOperation={selectedOperation} currentUrl={currentUrl} /> */}\r\n {/*
    */}\r\n {/* Old Style */}\r\n {/*
    \r\n
    \r\n express-search\r\n
    \r\n
    \r\n { setSearchType(e.target.value) }}\r\n items={[{\r\n value: 'BL', label: 'B/L No',\r\n }, {\r\n value: 'CNTR', label: 'CNTR No'\r\n }, {\r\n value: 'ACCT', label: 'Billing No'\r\n }]}\r\n />\r\n
    \r\n
    \r\n { await searchData(searchText) }}\r\n onChange={(e: any) => { setSearchText(e.target.value) }}\r\n placeholder={\"Express Search\"}\r\n isExsearch = {true}\r\n />\r\n
    \r\n
    */}\r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {(user?.isSuntekAdmin || compSec?.grantRead) &&\r\n
    \r\n \r\n
    \r\n }\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n {(user?.isSuntekAdmin || businessIntelligenceSec?.grantRead) &&\r\n }\r\n
    \r\n
    \r\n \r\n {[\"R\", \"Y\", \"G\"].includes(appContext.systemSettings?.reminderStatus ?? '') && }\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {/*
    */}\r\n {/* */}\r\n {/*
    */}\r\n
    \r\n
    \r\n\r\n setIsHoverSearchInput(true)}\r\n onMouseLeave={() => setIsHoverSearchInput(false)}\r\n onEnter={async () => await searchData(searchText) }\r\n onChange={(e: any) => { setSearchText(e.target.value) }}\r\n onFocus={() => setIsFocusSearchInput(true)}\r\n onBlur={() => setIsFocusSearchInput(false)}\r\n placeholder={isFocusSearchInput ? '' : 'Enter Ref. #, B/L #, CNTR #, Billing #'}\r\n />\r\n await searchData(searchText) } \r\n icon={faSearch} size={'1x'} \r\n style={{position: 'relative', cursor: 'pointer', right: '28px'}} \r\n />\r\n\r\n
    \r\n , \r\n icon2: \"\", \r\n separator: false\r\n }\r\n ]}\r\n onItemSelected={(event) => setSelectedPopupMenuItem(event)}\r\n user={user}\r\n >\r\n \r\n {!!selectedPopupMenuItem && selectedPopupMenuItem.label === 'Logout' ? doLogout() : null}\r\n
    \r\n {systemSettings?.enableBranch && user?.branch &&\r\n {user?.branch ?? ''}\r\n }\r\n
    \r\n \r\n );\r\n};\r\n\r\n\r\nexport default IfmsTopBar;\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdgAAAGhCAYAAADC9KWQAAAACXBIWXMAAC4jAAAuIwF4pT92AAAHJ2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMi0wMy0xMFQxOToyMzo0NSswMTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjItMDUtMTlUMTM6NDU6NDMrMDI6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjItMDUtMTlUMTM6NDU6NDMrMDI6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODdhZGEzODQtMzdmZS0xZjQzLWEyNGItNTM1ZDk1YjgxZTAxIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6YmNlMGM2YWEtNGU0Zi1hZjQ2LWIzZjUtMmUwZTFhMTgzNzc4IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YmJhMWFlMzAtMGUxNC1kYjRjLWEzYmMtNjhlNzI3OWU2NmY0Ij4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiYmExYWUzMC0wZTE0LWRiNGMtYTNiYy02OGU3Mjc5ZTY2ZjQiIHN0RXZ0OndoZW49IjIwMjItMDMtMTBUMTk6MjM6NDUrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMy4wIChXaW5kb3dzKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpjNTUzOGY1NS1kNDk4LTNhNGQtYmVmMC1jYmJjYTkyNTAxM2IiIHN0RXZ0OndoZW49IjIwMjItMDUtMThUMTM6NTM6NTIrMDI6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMy4wIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ODdhZGEzODQtMzdmZS0xZjQzLWEyNGItNTM1ZDk1YjgxZTAxIiBzdEV2dDp3aGVuPSIyMDIyLTA1LTE5VDEzOjQ1OjQzKzAyOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjMuMCAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8i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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdgAAAGhCAYAAADC9KWQAAAACXBIWXMAAC4jAAAuIwF4pT92AAAHJ2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMi0wMy0xMFQxOToyMzo0NSswMTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjItMDUtMTlUMTM6NDQ6NTErMDI6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjItMDUtMTlUMTM6NDQ6NTErMDI6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6YmYwMDNkZjAtZmY5MC03ZTQxLWE5ZGYtODIwMjgzMGE0Yjg3IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6NGNjOTZmYTYtNWI2Ni1mZjRiLTliN2YtYmMxYmRlNTQyZjI4IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MmYxOWQzM2UtOTFhMS0yMzRlLTkxMzgtY2ZiMTEwMDlmNDZlIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDoyZjE5ZDMzZS05MWExLTIzNGUtOTEzOC1jZmIxMTAwOWY0NmUiIHN0RXZ0OndoZW49IjIwMjItMDMtMTBUMTk6MjM6NDUrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMy4wIChXaW5kb3dzKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo5MGZhM2MyOS1jMTFjLTE0NGMtOTc1Ni1jZDJiNTg3OWJlN2YiIHN0RXZ0OndoZW49IjIwMjItMDUtMThUMTM6NTc6MTYrMDI6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMy4wIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YmYwMDNkZjAtZmY5MC03ZTQxLWE5ZGYtODIwMjgzMGE0Yjg3IiBzdEV2dDp3aGVuPSIyMDIyLTA1LTE5VDEzOjQ0OjUxKzAyOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjMuMCAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8i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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALEAAACxCAYAAACLKVzFAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AYht+makUrDhYUcchQnSyIijhKFYtgobQVWnUwufQPmjQkKS6OgmvBwZ/FqoOLs64OroIg+APi6OSk6CIlfpcUWsR4cNzDe/e+9913gFAvM9XsmABUzTKSsaiYya6KgVd0YRC9AHwSM/V4ajENz/F1Dx9f7yI8y/vcn6NPyZmMrhGJ55huWMQbxDObls55nzjEipJCfE48blCBxI9cl11+41xwWOCZISOdnCcOEYuFNpbbmBUNlXiaOKyoGuULGZcVzluc1XKVNevkLwzmtJUU12mOIIYlxJGACBlVlFCGhQitGikmkrQf9fAPO/4EuWRylcDIsYAKVEiOH/wPfvfWzE9NuknBKND5Ytsfo0BgF2jUbPv72LYbJ4D/GbjSWv5KHZj9JL3W0sJHQP82cHHd0uQ94HIHGHrSJUNyJD9NIZ8H3s/om7LAwC3Qs+b2rbmP0wcgTb1avgEODoGxAmWve7y7u71v/55p9u8H9hpydfoxDJcAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmBhcLKyLhApvVAAAOdElEQVR42u2deVRWZR7Hn3vf+26AgCwSMIhLo2PqhOM2kE5RkzaYZiY6SbmQeU6ZK0ITM7Joo0nEmfHY5NhoWjm5/FE5SuSoUWLkQGMGWrmUIaUoKMsL73aX+WNE0WR5l7t/P+d4jui93Gf53N/9Pfc+97mEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAV1BKKxCTvV1I+uS1Pznd7sDPH1j8ArrI/yx2fF7AsizT2tr62ubNm89AYj9IC62UA7smjYLEkBcya11iyAuZVSsx5IXIqpYYAkNmMaHFPkBOTs5T6H5toNRgJKrEmZmZczdtev1FdD9EVmU6gRQCaYVm0gmAaKzKSIwojIis6kgMgYGqIzEERjSWJb1RcgMN21dQ2q//AM5kMv6knIIgGHieZ9xut0sQBL+cPGaz2UTTtKvHlzGapk0mk4Gmaa6r7TiOMxNCiMvlcnhbVo7jKJfLdX1ft9tNu1w3iupwOBiWZYnD4TCyLEs7nS7ztW0sLZMWRTqj4oMQiWWIxGqcjKLHgZnc/UQprWEgrvqElrvPFHOLjV2TRkFg/d5h0ITEQL0iyz2gpxENgNr7wC8S+3ImQmCAdALoPhpDYuC7RE47V15e/ludSiycgwLqJ7T471coihqgS4mHFReOgAJA1RJHRERgroUG4CL7Giiep3QpcVBQEO5MAHVL3KdPH0RioG6Jw8LCcHdEC+lESCRDKEqf6YTZbEY6AXyGUXXhb/OkMGJLxv0dfw4NDQ0yGAzXTxaTyWRiGMbScRvj/7F4VQaGsTIMY3Q4HC2EEI/TI0EQeLvd3nrLv3G3/ltLS0uby+W6Pm+5ZUrGeGdETH7HbeR8WMHLuSSaFsTtSH36K4du+llPEalD20gsNKZi+ktgcHNbSdVeXGAoDYkhsDjh0eX4UrJj6XVgB8Rl4Psvv6WHekJiDRPQK7C/FMdxh0ebiF6f2AFxMRjoYERioG6JadoKiYG6B3Y0HSDZsWS8zQaJtQ2HSAxUjcBxbVIdi9fjLTamucEJzUQOwwKxSyKwJcBA9JhO0Hab25Pt8Va057hcbomeulP6XHfCdPl8GzQTl5amprOSSORo5YkXk59UL7Ghqd4NzcSlZtbqv0kmkp9WJlWVxMZvjtihmbjoJQWTbSomTXueR7V3SsfJQH22Zh42MgyjJzlDe/fm7XY7cTocNCGE9A4L48PDw6iPxz6VJIfAxoYLLkHGdEK2zqcoivdHhBk2YUIcz/NGPUmckJAg1NXVkQsXLlDtPw8dOpQ5OC/ttCypYWujrPejVR/B9u/ff15vacKBAwe6/FmmS6v+cmKgHQxNl1lBjwM7ImMOBfws8eUaWdMJ2SSmKFwEgOolRiTWCmZbnZMQ4tadxECZePPtFIvZ7KYoyqk7iSmKQiTWiMwms8UtCIJLrrIy6C5lkpubSw8aFBWyc2eJaeHChc9wHMeXlJQwe/bsba2dtfql9u2ea6vIMxqN9n79+sW0tbXtyczMPORvmQnp+m1zi9nE0oLghMSAdJRlx47V65OSEu8uHjbz3uKPr01GCxpLyKyxN22/IWB0HiGEkB8IISR0CZO9vVMRfZW5M5EtVivLy5hOyPnEDulEFxHu7GMrF58V4Ri+CN1ZVLaYTRxN03qMxPqWWK7FYPwh9K1R2WyxsDzP629gR9OUbuVVympGvpSl4wlgtVh4OSOx6m+xJSYmWidPnhwAeaUvW7vId0THntLr3QnBl0Zv/3vD7rzic+fO9WGyt48Su8DeXH7VtIZce1k9qSe7Jo2aV1bWl6OoVj0O7PySR36bmpciZjkH7l61MTo2ellpaalDq/LeruyeiDxq3LgaOcurqglAce/kzJGygPcc2fSB3gRWQ/qj6pz4/vvuu0uqY40pffXjZcuWrdCjwGqrj6pmsQ0ePDhOqvLV1tamT5069WRPt6+srAyJj++/imgQpYusqllsQcFBQVKVr6am5tuebnv40KGxq/Lzt/2Q9uJKolGULLKcE4A83sdiMkmyyqMng5qSkpKHXly3rrB4+O8fIRonISFhCZH5+xyqH9gZTSajkgTeu3fvyMLCwtyDI2ePIzqgOiXzL0MGDVoKiX3A7XIpZsGVoqKisLVr1xaVjpn3a6IjTk/PLVJaaiFnTuwxDpdL1AVXPInCWfVRDUfvffY3RKcoSWRVTcW0NdtshITILrCcHXjX3nVvRUVFOQmhSWNjPXPsweVzrTVffzv6xyO26gst0VceXRoppchKWGVIVY+dvz51qobcEavLCNQuy0++6VWRNu/DTz8No6iUX23ZsoW8Qci/dXdVkPHYHp/BpQcPnSZpybJFYSkF9iTCJSUlXSGEXFtB5XVKyvIqIRrLJrE3S23UpK3eLKcsShLXk98ntsxyi6yqSNyxU2hH2zezm8svNjW1UO/+fKroAyyxRRBTAqlk1t3dCV875YVetXclJ496NCkp6RGxxRGz8715RV6JJ4qcJ4iM6YRvdc7Pz+cJIVe9jepaTB/kjspypRW0fBKrQzx/d/Y9RzaVTPhie7TcubiWFuCWUWKe6I0JX2z/IC8v75ni4uKLWr0SyJFWYN0JCTtk/vz5c5OTky8pMaVR86BPzoGd7l53njZt2iWc/JpKJ/S17ITSc1A158iIxBJEE3xIUrsSAw1HYylTCtkk5nkBYqC8ao/EgmIby19RBGmE9gd26GCNR2OpUgrkxLgsIxIDnIRIJzSaDwNEYtlYzh5fj1RCXcg2d4LneZ87umPUjHoja43RbL7tOsVut9uemZlxdunSpd2+GRIUFBBMHBCj/WT09cokxfRM1U0A6qxR6+YVZHe1X339V6/05Pdv3LipL5n7stfle/z8/j+/Bf91k054fHZmZGQ87u3BXuKHZHS3TW5uLhMXFxfqS6VGjhyBOI6cuHPi4uKne7tv/M6cbleSj4mJoXz9qlP2KXIUWt1g7sWPNuHuRAc4jvP6a+6pqand1nXBggVsbW1thC/1+uuIwC+h7g0G/2JQX6QTN0ss6usgFEUJF2evi/f6SvHOyjNak3Cp61i6L/vXnP/BoVmJ2dBYjweVJh9WxWxqahL9fSiLxeLUmsRms9kYte35094HBt6iWYm5yHiT5xIzJm+P93rvcZWi14njDFpMCRqmZvVVcvnkkzgkwmMhGYYxKrkxbTZbgNYELisrs7Mh4WZv97daA+yaldgVGefxqu+CD5OQn2uryOlum9zcXHpYcaHXA7NLcwv6Hj2qrZsTR+5Z8KYv+0dGRgZoVmI2tI/HuRLvw3v+0dFRA7vbZujQoYzVamZ9qRfDMPEEXKekZH+lZiXmzVaPB3ZOp9vrke6PP15q6m6b1NRUt83W6tMAcPjw4bOg7g1Kx8z5o2Yl9oba2vN13u77auCoxd2PpCnhq8l/8Onzus9XXkmEujoZ2HnDe++9f0LsY+Raz77ty/6O6AFjoBUk7pRzM3I3iH2Mkye/OgAtruX3Ps5g+2VJ4fH8wHMjIHHHwWCHZVAttadO3P1h0Wee7J+dnR3V3Ta7+z+8Ve7O1wqCQOqjoqKuin6yqbFx2DVp1LNZWb2McQ8NPmFrns0GBi+iWFfFqMOb1oaHh0cwDMMYDAYLy7IuiqL45ubmxoaGhitk0iS6J78bEvqHqt+teGD+/LTvIXEnFBQUtBBCKq/9WUwIIeXd7HP8+HGYpcGrCV5PggQY2AGcgF2lZpBYxpwb0RiRGKhUZDWeeJAYiCKwlMsWyCqxFBPVldAJaohu+NyBlzQ2NiLKYUyhbolbW1t1NfBJTU21Kq1MgiDQU6ZMScXAzksuX76sq+9YVFVV7crIyIhQksAbN24sKh42cxck9pKamhpdReIz01Y+vJ4e+p1SUotx4+5dvuh88BK1p06y3w9Vw+J7YnWKXHWXSjI87NDBQEWWr29KeEysFK+juxZSdbZWTxqkEwrrEK18b1nKvlbEDX2I7P82Uep9aTH6WhESp1TvDN6zZ08LJO6cLHJi5MCBA80URTWlp6efJISQsrKyXiaKGkEIsR/85BN+ZUvfSjW0ob9FVsSkeIvF8nZ5efmSxMTEc2roADlE3rVr9464uJ9daWxsZJjs7SMJIeTJJ58su/POOwPDe/d2VHz+31gyM181VzN/iqyY+QHxO3P+8f3MVfPVklrMmTNn9vbYCdswNJU/IlP+PsOUPgjwX2TcZfjss/+8tt4y4mnoKG8/K/YdOyUMTLpq4BkzZnDHPvooi3/v/eANgaNnQkf5oJV2VqmJEcnJjY9Nf+yZFVzVVqgkny942NEF/foNyM3Lywvqapvx48dfnfjQxKcfPPbPxWgxedDM41SxmHh8x7YhQwYvLCwsbNVTvdUShSFxD+mzNXPbpbkvz+lJw2ut7rfW2R/183faKVoOq9WopCeRO6urr/VTjcSEEDJp0qTUg/0nvskGh1v0JrLaZe6ujt7WTdGPnTsjLS3tiZ3xKZr7UqwnnaEmmcWsl+InAHVFbGzs3XVzCr6AyNobaPW0XmLefpXsvq6WR+5qllmK1Y7Efn4g+cMJPQ/4lNQWUs1bluIBmGxP2CCz+G1h/a76qr3/sN5SCpWQkBAaFBDwgiAIziPl5TlStLnsj4khc/dtsqDxyGGe44Sq6mqa4zi68v5FSe3/l3h4YxnP83x0dDR15syZuuqUzOmEEDL11LtPpKSk1Kenp39INI6i5jq0d17kG88/kZW5fGZV9Ulbc3NTl1+z5DieY1n39W8q07SBMRpv//lco5GxUBTl9adraZrmaZp28TzvNhgMPE3TLo7jHQxjEAghLW6322YwGJwGg6ExJCTkX0VFRed9bRNBEOiKiop+TqeT7Nu3jzgcDrIhYPTZ9v9fwVcNDAwMFGJiYiiHw3Fp4cKFNgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA64X9Gwy6jg6RNYwAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9ba1UqHewg4pChOlmQKuIoVSyChdJWaNXB5NIvaNKQpLg4Cq4FBz8Wqw4uzro6uAqC4AeIo5OToouU+L+k0CLGg+N+vLv3uHsHeJtVphg9k4Cimno6ERdy+VUh8Ip++NGLEGIiM7RkZjEL1/F1Dw9f76I8y/3cn2NQLhgM8AjEc0zTTeIN4plNU+O8TxxmZVEmPiee0OmCxI9clxx+41yy2cszw3o2PU8cJhZKXSx1MSvrCvE0cURWVMr35hyWOW9xVqp11r4nf2GwoK5kuE5zFAksIYkUBEioo4IqTERpVUkxkKb9uIt/xPanyCWRqwJGjgXUoEC0/eB/8LtbozgVc5KCccD/YlkfY0BgF2g1LOv72LJaJ4DvGbhSO/5aE5j9JL3R0SJHQGgbuLjuaNIecLkDDD9poi7ako+mt1gE3s/om/LA0C0wsOb01t7H6QOQpa6Wb4CDQ2C8RNnrLu/u6+7t3zPt/n4AY1tyoTNSHYwAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfmCQUGFTgtPeJEAAABNklEQVQ4y63UsUoDQRDG8f93udhaCCKIYCcSsBI7BYloIbYWOZ9DkpyWawTBB7DVxCewCkGxsAhYiFgIKcSATQofwMuNTSIxJCEXst0sy293ZnYXpjQE4IflLWI2JhI86pELHv2Ot4/seCLI7ALoQn+zzuS9jZWKxRlQ2I37IO7bLlcbB/KLN1lgKNSzsPwCLP2dFb4lKpELTgeXangXZjG+JPIyFSQaGCd+4Xpz4MajO2LNH3d01UmlAdo1eYuJITOt+MXyOcgH9oQ1I0vXEkOCOcQOsc0gVg0eKB22EtWo0+OnyAXrUSlYA7sEsuRvl5NDvab0CZBOtRcSpWbi1WJ99NTrHdlzHHvJoMgFB//is1wVqA69d33xdiqszI/3xuLMCEihzJJ8HP2Q3WG0JvtGVGea4xe/oWIGEmHg/AAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALEAAACxCAYAAACLKVzFAAAACXBIWXMAAC4jAAAuIwF4pT92AAAHJ2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMi0wMy0xNFQyMDoxNDo1NCswMTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjItMDUtMTlUMTM6NTM6NDgrMDI6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjItMDUtMTlUMTM6NTM6NDgrMDI6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Mjg5NGNkYzAtM2ZjNS04MjQ0LWFkZGYtY2JkZWY1NTFiYzhmIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6N2QyYmI0MWQtMGE3NC1lMDRiLWI1NGQtZGFiYTk3YzA0NGM3IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZTkyNDJjYzYtZWE5OC0xZTQyLTk4MjEtODU5MzZmOTdkYjdmIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplOTI0MmNjNi1lYTk4LTFlNDItOTgyMS04NTkzNmY5N2RiN2YiIHN0RXZ0OndoZW49IjIwMjItMDMtMTRUMjA6MTQ6NTQrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMy4wIChXaW5kb3dzKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDozZjgyMmMyYS0yMTljLWNlNDItYjFiZS1iZWEyMzM0YjkwZTIiIHN0RXZ0OndoZW49IjIwMjItMDUtMThUMTQ6MDc6NTUrMDI6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMy4wIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6Mjg5NGNkYzAtM2ZjNS04MjQ0LWFkZGYtY2JkZWY1NTFiYzhmIiBzdEV2dDp3aGVuPSIyMDIyLTA1LTE5VDEzOjUzOjQ4KzAyOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjMuMCAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8i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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOQAAABOCAYAAAAw0LoFAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5QcSCyszB5gQCwAAAp5JREFUeNrt3c1xE0EQBtBulQNwFTedCAEygAhwCIRABpQjIBUygAxwCJy4qUoZDBcfXMYSkqXd+XvvKMu7q9n5tntWlhwBAAAAAAAAAAAAAAAAAABwojQEVFTM08ov9E+8uY2IbxFxFxG3EfE9Iu63sXtY6eS2MH6l0jkqDcyN0viY54HfyVED+Ssi3j17eB8R77ex+y2Qi56nmoEslcf+Na999UBuVg7j5xfCGI+V8qsObti2tCy03XMDnM+ClUeCVuMCv24gI+LtkZ/dmbtNrNd62mcZ7SRtGjqWvcwMNfFKx/spswTy2Brxp9wxe6WscVPnR0R8ePbwQ0R83MZu39lJyRWPNVcem7X2lyts59B284z9jHmX9TGUXyLi05Mw3l8YxlMGtaX3sgTydQG61jZPDWS+8NzxAllpkvceyJEqclYOebOBvLH8sL7qZH95xW3nGUFe9UK+MV/p6L5FVroYrKZGhSyTtNBLjZ0xGpgKOW+7mg0e0/SsIemt0g/dIaiQY1W9ntaIKqVAdmOWdWIRTC2rStpe4EvDxyaQHbR67nT+f3zKlc7TVGOtZe2zbZ2pzSsztbYCqV3taR08fDgFkqVDueR38/iAMkOuiXuslkO27wI53kRu9e7q0tVSIOGCYKZQ/utmsokwYtuaA52TMvl4qJAuJFNUTxWSahVzlGDniGtEFZLZuoSuw6tC9jMhSwfrpiW/1yhjgkqpQmpXracFEhDIOauj4xRIGmrXsoNjRCBRJQUSLgllM/+DQyDpZbIt8SVX03xA2fuQAtxSpbz0r3NSIOHlYJQrBNQaElXPuAgk401Qb7cIJBNeFIbqGKwhWSswRRBVyFkrTzZ6zNnQdqwz4IBifgIAAAAAAAAAAAAAAAAA9OEvvj2Di8y1B6AAAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/notice_inform_blue.891f5871.svg\";","export default __webpack_public_path__ + \"static/media/notice_inform_YesNo.32b31fcc.svg\";","export default __webpack_public_path__ + \"static/media/notice_error.37e1cdf3.svg\";","import { round } from 'lodash';\r\nimport React from 'react';import PrimaryButton from '../ui/PrimaryButton';\r\n\r\nfunction createFragment(htmlStr:string) {\r\n const frag = document.createDocumentFragment();\r\n const temp = document.createElement('div');\r\n\r\n temp.innerHTML = htmlStr;\r\n\r\n while (temp.firstChild) {\r\n frag.appendChild(temp.firstChild);\r\n }\r\n\r\n return frag;\r\n}\r\n\r\nfunction TableHeaderSizeDisplay() {\r\n function createTooltipWithSize(h: HTMLDivElement) {\r\n const r = h.getBoundingClientRect();\r\n const w = round(r.width, 2);\r\n\r\n const tooltip = document.getElementById(`${h.id}-size-tooltip`);\r\n if (tooltip) {\r\n return;\r\n }\r\n\r\n const fragment = createFragment(`
    ${w}
    `);\r\n\r\n const firstChildNode = fragment.childNodes[0];\r\n if (!(firstChildNode instanceof HTMLElement)) {\r\n return;\r\n }\r\n\r\n firstChildNode.style.left = `${r.left}px`;\r\n firstChildNode.style.top = `${r.top - 20}px`;\r\n\r\n document.body.appendChild(fragment.childNodes[0]);\r\n }\r\n\r\n function show() {\r\n const sizes = document.querySelectorAll('.ifms-tooltip-tb-header');\r\n if (sizes.length > 0) {\r\n for (let i = 0; i < sizes.length; ++i) {\r\n const t = sizes[i];\r\n if (t.parentElement) {\r\n t.parentElement.removeChild(t);\r\n }\r\n }\r\n\r\n return;\r\n }\r\n const headers = document.querySelectorAll('div[role=\"columnheader\"]') as NodeListOf;\r\n\r\n headers.forEach(createTooltipWithSize);\r\n }\r\n\r\n return (\r\n \r\n Show/Hide\r\n \r\n );\r\n}\r\n\r\nexport default React.memo(TableHeaderSizeDisplay);","import React, { useContext, useEffect, useState } from 'react';\r\nimport { useTypedFastStorage } from '../../hooks/useFastStorage';\r\nimport SecondaryButton from \"../../ui/SecondaryButton\";\r\nimport { ApplicableTableSettings } from \"../../tableSettings\";\r\nimport SmartTable from \"../../uiControls/SmartTable\";\r\nimport { myMemoTable } from \"./tableSettings\";\r\nimport { TaskReminder, TaskReminderList } from '../../fms.core/TaskReminder';\r\nimport ApplicationContext from '../../ApplicationContext';\r\nimport useGlobalOkDialog from '../../hooks/useGlobalOkDialog';\r\nimport { DateTimeRenderer, NumberedIndicatorRenderer, TextAlignLeftRenderer } from '../../uiControls/SmartTableRenderers';\r\nimport IfmsModal from '../../ui/IfmsModal';\r\nimport InlineInputControlRow from '../../ui/layout/InlineInputControlRow';\r\nimport TextBox from '../../ui/TextBox';\r\nimport LeftRightSplit from '../../ui/LeftRightSplit';\r\nimport MultilineTextBox from '../../ui/MultilineTextBox';\r\nimport { ListResult } from '../../framework.core/data/ListResult';\r\nimport Number from '../../ui/Number';\r\nimport PrimaryInverseButton from '../../ui/PrimaryInverseButton';\r\nimport { compareIso, now } from '../../dateUtils';\r\nimport _ from 'lodash';\r\nimport useDirtyCheck from '../../hooks/useDirtyCheck2';\r\n\r\n\r\ninterface MyMemoStorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\ninterface MyMemoParams {\r\n onClickEdit?: (tbName:string, tbId:number, acctTbName: string) => void,\r\n showMainPop: boolean,\r\n setShowMainPop: React.Dispatch>\r\n};\r\n\r\ninterface MyMemoLoadedParams {\r\n taskReminder: TaskReminder[],\r\n onClickEdit?: (tbName:string, tbId:number, acctTbName: string) => void,\r\n showMainPop: boolean,\r\n setShowMainPop: React.Dispatch>,\r\n reload : (x : boolean) => Promise\r\n};\r\n\r\ninterface EditRendererParam {\r\n data: TaskReminder[],\r\n row: any,\r\n cell: any,\r\n}\r\n\r\nfunction getMyMemoStorageKeys(): MyMemoStorageKeys {\r\n return { modelStorage: 'reminder-memo-view' }\r\n}\r\n\r\nfunction MyMemoImpl(params: MyMemoParams) {\r\n const appContext = useContext(ApplicationContext);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n const { modelStorage } = getMyMemoStorageKeys();\r\n const { setShowMainPop, showMainPop } = params;\r\n\r\n const [inStorage, setInStorage, , ] = useTypedFastStorage(modelStorage, null);\r\n const { setCleanState} = useDirtyCheck(modelStorage, ['remindDate']);\r\n \r\n useEffect(() => {\r\n initialize();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n []);\r\n\r\n async function loadExisting() {\r\n const apiResult: ListResult | null = await appContext.api.getTaskReminder(true, appContext.user ? appContext.user.id ?? '' : '');\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(apiResult?.message || 'Cannot load data');\r\n return [];\r\n }\r\n return apiResult?.entities ?? [];\r\n }\r\n\r\n async function initialize() {\r\n const data = await loadExisting();\r\n setCleanState(data);\r\n setInStorage({taskReminderList : data})\r\n }\r\n\r\n async function reload(showAll: boolean = true) {\r\n setCleanState(_.cloneDeep(inStorage ?? []));\r\n const apiResult: ListResult | null = await appContext.api.getTaskReminder(showAll, appContext.user ? appContext.user.id ?? '' : '');\r\n if (!apiResult || !apiResult.success) {\r\n return;\r\n }\r\n const data: TaskReminder[] = apiResult?.entities;\r\n setCleanState(data);\r\n\r\n if (showAll) {\r\n setInStorage({taskReminderList : _.cloneDeep(data)});\r\n }\r\n else {\r\n const dueData: TaskReminder[] = data.filter((x: TaskReminder) => (compareIso(x.dueDate, now()) < 0));\r\n setInStorage({taskReminderList : _.cloneDeep(dueData)})\r\n }\r\n }\r\n\r\n if (!inStorage) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction MyMemoInitializedImpl({\r\n taskReminder,\r\n onClickEdit,\r\n showMainPop,\r\n setShowMainPop,\r\n reload\r\n}: MyMemoLoadedParams) {\r\n const appContext = useContext(ApplicationContext);\r\n const [selectedRow, setSelectedRow] = useState(0);\r\n const [snooze, setSnooze] = useState(false);\r\n const [showAll, setshowAll] = useState(true);\r\n let enterTime = 30;\r\n const tableOptions: ApplicableTableSettings = {\r\n ...myMemoTable,\r\n selectable: true,\r\n height: '160px',\r\n selectedRowIndex: selectedRow,\r\n tableName: 'MyMemoTable',\r\n rowProps: (row: any) => ({ onClick: () => setSelectedRow(row.index) }),\r\n data: taskReminder.map(x => ({ ...x })),\r\n rowRenderers: [\r\n { accessor: 'indicator', Cell: NumberedIndicatorRenderer },\r\n { accessor: 'editParam', Cell: EditRenderer },\r\n { accessor: 'remindDate', Cell: DateTimeRenderer },\r\n { accessor: 'dueDate', Cell: DateTimeRenderer },\r\n { accessor: 'opType', Cell: TextAlignLeftRenderer },\r\n { accessor: 'refNo', Cell: TextAlignLeftRenderer },\r\n { accessor: 'mTitle', Cell: TextAlignLeftRenderer },\r\n { accessor: 'mU1ID', Cell: TextAlignLeftRenderer },\r\n { accessor: 'mU1Date', Cell: DateTimeRenderer },\r\n ],\r\n };\r\n\r\n function EditRenderer({ data, row, cell }: EditRendererParam) {\r\n return {\r\n if (onClickEdit)\r\n onClickEdit(data[row.index].mTbName, data[row.index].mTbId, data[row.index].acctTbName);\r\n appContext.setAppInfoAreaContent('memo');\r\n appContext.setMyMemoTaskReminder(true);\r\n appContext.setMyMemoId(data[row.index].mId??0);\r\n setShowMainPop(false);\r\n }} style={{ width: '100%', color: 'blue', fontWeight: 'bold', fontSize: '10px', padding: '0 !important' }}>Edit\r\n }\r\n\r\n function close() {\r\n setShowMainPop(false);\r\n appContext.setMyMemoTaskReminder(false);\r\n appContext.setAppInfoAreaContent(appContext.appInfoAreaContent);\r\n }\r\n\r\n return (\r\n { close()}}\r\n draggable\r\n width={`${1000}px`}>\r\n {\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n }\r\n right={\r\n
    \r\n \r\n
    \r\n }\r\n />\r\n
    \r\n
    \r\n
    \r\n { }} />\r\n
    \r\n
    \r\n {\r\n setshowAll(!showAll);\r\n await reload(!showAll);\r\n setSelectedRow(0);\r\n }}>\r\n {showAll ? 'Show Over Due Only' : 'Show All'}\r\n \r\n { setSnooze(true) }}>\r\n Snooze\r\n \r\n {close()}}>\r\n Exit\r\n \r\n
    \r\n
    \r\n }\r\n {snooze &&\r\n { setSnooze(false) }}\r\n draggable\r\n isOpen={true}\r\n width={`${300}px`}\r\n title={'Snooze Reminder'}>\r\n {\r\n
    \r\n
    \r\n \r\n { enterTime = e ?? 0 }}\r\n max={999}\r\n min={0}\r\n />\r\n \r\n
    \r\n
    \r\n {\r\n //const apiResult = \r\n await appContext.api.saveMinutes(enterTime.toString(), appContext.user ? appContext.user.id ?? '' : '');\r\n enterTime = 30;\r\n setSnooze(false);\r\n setShowMainPop(false);\r\n appContext.setMyMemoTaskReminder(false);\r\n appContext.setUseCheckReminder(!appContext.useCheckReminder);\r\n }}>\r\n OK\r\n \r\n { setSnooze(false) }}>\r\n Cancel\r\n \r\n
    \r\n
    \r\n }\r\n \r\n }\r\n \r\n\r\n );\r\n}\r\n\r\nconst MyMemoDetails = ({\r\n onClickEdit,\r\n setShowMainPop,\r\n showMainPop\r\n}: { onClickEdit?: (tbName:string, tbId:number, acctTbName: string) => void, setShowMainPop: React.Dispatch>, showMainPop: boolean }) => {\r\n /**\r\n * Implementation note:\r\n * key is important in this case in order to force full List view rerender for different parameters.\r\n */\r\n\r\n return (\r\n \r\n );\r\n};\r\nexport default MyMemoDetails;\r\n","import { useContext, useEffect, useMemo, useState } from \"react\";\r\nimport SecondaryButton from \"../../ui/SecondaryButton\";\r\nimport ApplicationContext from \"../../ApplicationContext\";\r\nimport useTableStorage from \"../../hooks/useTableStorage\";\r\nimport useGlobalOkDialog from \"../../hooks/useGlobalOkDialog\";\r\nimport { ApplicableTableSettings } from \"../../tableSettings\";\r\nimport { volumeByCargoTypeYearsTable } from \"./tableSettings\";\r\nimport SmartTable from \"../../uiControls/SmartTable\";\r\nimport numeral from \"numeral\";\r\nimport { JobNames } from \"../../framework.core/JobNames\";\r\n\r\nexport interface VolumebyCargoTypeYearsModel {\r\n // CBM Model\r\n CargoType: string,\r\n\r\n FreeCbm5: number,\r\n FreeCbm4: number,\r\n FreeCbm3: number,\r\n FreeCbm2: number,\r\n FreeCbm1: number,\r\n\r\n NomiCbm5: number,\r\n NomiCbm4: number,\r\n NomiCbm3: number,\r\n NomiCbm2: number,\r\n NomiCbm1: number,\r\n\r\n ColoadCbm5: number,\r\n ColoadCbm4: number,\r\n ColoadCbm3: number,\r\n ColoadCbm2: number,\r\n ColoadCbm1: number,\r\n\r\n // TEU Model\r\n Teu20_5: number,\r\n Teu20_4: number,\r\n Teu20_3: number,\r\n Teu20_2: number,\r\n Teu20_1: number,\r\n\r\n Teu40_5: number,\r\n Teu40_4: number,\r\n Teu40_3: number,\r\n Teu40_2: number,\r\n Teu40_1: number,\r\n\r\n Teu45_5: number,\r\n Teu45_4: number,\r\n Teu45_3: number,\r\n Teu45_2: number,\r\n Teu45_1: number,\r\n\r\n TeuHQ_5: number,\r\n TeuHQ_4: number,\r\n TeuHQ_3: number,\r\n TeuHQ_2: number,\r\n TeuHQ_1: number,\r\n}\r\n\r\nexport interface IVolumeCargoTypeYearsTable {\r\n group: string,\r\n type: string,\r\n amount5: number,\r\n amount4: number,\r\n amount3: number,\r\n amount2: number,\r\n amount1: number,\r\n}\r\n\r\nfunction TypeRenderer({ cell, data, row }: any) {\r\n const l = data[row.index];\r\n \r\n return (\r\n
    \r\n {l.type}\r\n
    \r\n );\r\n}\r\n\r\nfunction AmountRenderer(label: string) {\r\n return ({ data, row }: any) => {\r\n const l = data[row.index];\r\n\r\n let amount = '';\r\n const cellValue = l[label];\r\n\r\n if (cellValue !== null && cellValue !== undefined && cellValue !== '') {\r\n const format = `0,0.${'0'.repeat(2)}`;\r\n amount = numeral(cellValue).format(format);\r\n }\r\n return (\r\n
    {parseFloat(amount) === 0 ? null : amount}
    \r\n );\r\n \r\n };\r\n}\r\n\r\nfunction VolumebyCargoTypeYearsImpl({\r\n onPopupClose,\r\n jobName,\r\n toDate,\r\n unit,\r\n} : {\r\n onPopupClose: () => void,\r\n jobName: string,\r\n toDate: string,\r\n unit: string,\r\n}) {\r\n const appContext = useContext(ApplicationContext);\r\n const tableStorage = useTableStorage();\r\n const [initialized, setInitialized] = useState(false);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [volumeCargoTypeData] = useState([]);\r\n const year = new Date(toDate).getFullYear();\r\n\r\n async function loadData() {\r\n const apiResult = await appContext.api.getVolumebyCargoTypeYears(jobName, unit, toDate);\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    Fail load data.

    , false);\r\n } else {\r\n (apiResult?.result as VolumebyCargoTypeYearsModel[]).forEach(x => {\r\n createTable(x);\r\n });\r\n\r\n setInitialized(true);\r\n }\r\n }\r\n\r\n function createTable(data: VolumebyCargoTypeYearsModel) {\r\n if (unit === \"TEU\") {\r\n volumeCargoTypeData.push({ group: \"line\", type: \"\\u00A0 \\u00A0 \\u00A0 \\u00A0 \\u00A0 \\u00A0 \\u00A020\", amount5: data.Teu20_5, amount4: data.Teu20_4, amount3: data.Teu20_3, amount2: data.Teu20_2, amount1: data.Teu20_1 });\r\n volumeCargoTypeData.push({ group: \"line\", type: \"\\u00A0 \\u00A0 \\u00A0 \\u00A0 \\u00A0 \\u00A0 \\u00A040\", amount5: data.Teu40_5, amount4: data.Teu40_4, amount3: data.Teu40_3, amount2: data.Teu40_2, amount1: data.Teu40_1 });\r\n volumeCargoTypeData.push({ group: \"line\", type: \"\\u00A0 \\u00A0 \\u00A0 \\u00A0 \\u00A0 \\u00A0 \\u00A045\", amount5: data.Teu45_5, amount4: data.Teu45_4, amount3: data.Teu45_3, amount2: data.Teu45_2, amount1: data.Teu45_1 });\r\n volumeCargoTypeData.push({ group: \"line\", type: \"\\u00A0 \\u00A0 \\u00A0 \\u00A0 \\u00A0 \\u00A0 \\u00A0HQ\", amount5: data.TeuHQ_5, amount4: data.TeuHQ_4, amount3: data.TeuHQ_3, amount2: data.TeuHQ_2, amount1: data.TeuHQ_1 });\r\n } else {\r\n let type = \"\";\r\n\r\n switch (data.CargoType) {\r\n case \"F\": type = \"FCL\"; break;\r\n case \"L\": type = \"LCL\"; break;\r\n case \"C\": type = \"Consol/FAK\"; break;\r\n }\r\n \r\n if (type) volumeCargoTypeData.push({ group: \"gh\", type: type, amount5: 0, amount4: 0, amount3: 0, amount2: 0, amount1: 0 });\r\n \r\n volumeCargoTypeData.push({ group: \"line\", type: \"\\u00A0 \\u00A0 \\u00A0 \\u00A0 \\u00A0Free\", amount5: data.FreeCbm5, amount4: data.FreeCbm4, amount3: data.FreeCbm3, amount2: data.FreeCbm2, amount1: data.FreeCbm1, });\r\n volumeCargoTypeData.push({ group: \"line\", type: \"\\u00A0 \\u00A0 \\u00A0 \\u00A0 \\u00A0Nomi\", amount5: data.NomiCbm5, amount4: data.NomiCbm4, amount3: data.NomiCbm3, amount2: data.NomiCbm2, amount1: data.NomiCbm1, });\r\n volumeCargoTypeData.push({ group: \"line\", type: \"\\u00A0 \\u00A0 \\u00A0 \\u00A0 \\u00A0Co-Load\", amount5: data.ColoadCbm5, amount4: data.ColoadCbm4, amount3: data.ColoadCbm3, amount2: data.ColoadCbm2, amount1: data.ColoadCbm1, });\r\n }\r\n }\r\n\r\n const labels = useMemo(() => {\r\n switch (jobName) {\r\n case JobNames.OIMbl:\r\n case JobNames.OEMbl:\r\n return {\r\n typeColumn: unit,\r\n gridHeight: unit === \"TEU\" ? '102px' : '262px'\r\n }\r\n case JobNames.AIMbl:\r\n case JobNames.AEMbl:\r\n return {\r\n typeColumn: unit === \"GW\" ? \"Gross Weight\" : \"Chargeable Weight\",\r\n gridHeight: '82px'\r\n }\r\n default:\r\n return {\r\n typeColumn: \"\",\r\n gridHeight: '262px'\r\n }\r\n }\r\n }, [jobName, unit]);\r\n\r\n useEffect(() => {\r\n if (!initialized) {\r\n loadData();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [jobName, unit]);\r\n\r\n if (!initialized) {\r\n return (\r\n
    \r\n );\r\n }\r\n\r\n const tableOptions: ApplicableTableSettings = {\r\n tableName: `volumebyCargoTypeYears-${jobName}-${unit}`,\r\n ...volumeByCargoTypeYearsTable,\r\n height: labels.gridHeight,\r\n data: volumeCargoTypeData,\r\n rowRenderers: [\r\n { accessor: 'type', Cell: TypeRenderer, Header: () => {labels.typeColumn} },\r\n { accessor: 'amount5', Cell: AmountRenderer('amount5'), Header: () => {year} },\r\n { accessor: 'amount4', Cell: AmountRenderer('amount4'), Header: () => {year-1} },\r\n { accessor: 'amount3', Cell: AmountRenderer('amount3'), Header: () => {year-2} },\r\n { accessor: 'amount2', Cell: AmountRenderer('amount2'), Header: () => {year-3} },\r\n { accessor: 'amount1', Cell: AmountRenderer('amount1'), Header: () => {year-4} },\r\n ],\r\n customStorage: tableStorage,\r\n // getCustomCellProps: (currentProps: any, cell: any, rowIndex: any) => {\r\n // if (cell.row.original.group === \"gh\") {\r\n // currentProps.style.fontWeight = 'bold';\r\n // }\r\n // return currentProps;\r\n // }\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n CLOSE\r\n \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nconst VolumebyCargoTypeYears = ({\r\n onPopupClose,\r\n jobName,\r\n toDate,\r\n unit\r\n} : {\r\n onPopupClose: () => void,\r\n jobName: string,\r\n toDate: string,\r\n unit: string,\r\n}) => {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default VolumebyCargoTypeYears;","import { AotherTemp, AutoBillingDetail, AutoInvoiceDetailList } from \"./AutoBillingDetail\";\r\nimport { TrackableEntity } from \"./data/ChangeTrackable\";\r\n\r\nexport class AutoBillingHD {\r\n\r\n search: string = '';\r\n invoiceRemarks: string = '';\r\n invoiceDate: string | null = null;\r\n invoiceNo: string = '';\r\n group:string ='';\r\n\r\n\r\n billingDetailList: AutoBillingDetail[] = [];\r\n invoiceDetailList: AutoInvoiceDetailList[] = [];\r\n aotherTempList: AotherTemp[] = [];\r\n}\r\n\r\n","import React, { MutableRefObject, useContext, useEffect, useRef, useState } from 'react';\r\nimport { useTypedFastStorage } from '../../../../hooks/useFastStorage';\r\nimport SecondaryButton from \"../../../../ui/SecondaryButton\";\r\nimport DateControl from \"../../../../ui/Date\";\r\nimport _ from \"lodash\";\r\nimport Label from '../../../../ui/Label';\r\nimport ApplicationContext, { IApplicationContext } from '../../../../ApplicationContext';\r\nimport { addDays, addMonths, getDate, now } from '../../../../dateUtils';\r\nimport useGlobalOkDialog from '../../../../hooks/useGlobalOkDialog';\r\nimport { historyUpdate } from '../../../../fms.data/modules/FmsModFunc';\r\nimport useGlobalYesNoDialog from '../../../../hooks/useGlobalYesNoDialog';\r\nimport { SQLField, SQLInfo, SQLType } from '../../../../framework.core/data/SQLInfo';\r\nimport { SaveNewJournalByTask } from '../../../../fms.data/modules/FmsModAccount';\r\nimport { JobNames } from '../../../../framework.core/JobNames';\r\nimport useFunctionKeys from '../../../../hooks/useFunctionKeys';\r\nimport useSystemSettings from '../../../../hooks/useSystemSettings';\r\nimport { AutoBillingHD } from '../../../../fms.core/AutoBillingHD';\r\nimport InlineInputControlRow from '../../../../ui/layout/InlineInputControlRow';\r\nimport TextBox from '../../../../ui/TextBox';\r\nimport MultilineTextBox from '../../../../ui/MultilineTextBox';\r\nimport PrimaryButton from '../../../../ui/PrimaryButton';\r\nimport { ApplicableTableSettings } from '../../../../tableSettings';\r\nimport { autoBillingDetailTable, autoInvoiceDetailTable } from '../../tableSettings';\r\nimport { AotherTemp, AutoBillingDetail, AutoInvoiceDetailList } from '../../../../fms.core/AutoBillingDetail';\r\nimport { FloatRenderer, IndicatorRenderer, TextAlignLeftRenderer, TextAlignRightRenderer } from '../../../../uiControls/SmartTableRenderers';\r\nimport SmartTable from '../../../../uiControls/SmartTable';\r\nimport { FmsAutoNumberType } from '../../../../fms.core/constants';\r\nimport { getFmsGlobal } from '../../../../globals';\r\nimport { saveAcctHistory } from '../../../../fms.data/modules/FmsModEdi';\r\nimport useSetEditedId from '../../../../hooks/useSetEditedId';\r\nimport { ApiResult, InsertResultsWithData } from '../../../../framework.core/data/ApiResult';\r\nimport Float from '../../../../ui/Float';\r\nimport EditableTable, { CellData, TableCellAligns, TableCellTypes } from '../../../../ui/tables/editing/EditableTable';\r\n\r\n\r\ninterface ICntrListItem extends AutoBillingDetail {\r\n changeLineItem: (change: Partial, index: number) => void,\r\n\r\n [key: string]: any\r\n}\r\n\r\ninterface AutoBillingStorageKeys {\r\n modelStorage: string,\r\n};\r\n\r\n\r\n\r\ninterface AutoBillingLoadDetailViewParams {\r\n onPopupClose: () => void,\r\n};\r\n\r\ninterface AutoBillingLoadedDetailsViewParams {\r\n appContext: IApplicationContext,\r\n onPopupClose: () => void,\r\n autoBilling: AutoBillingHD,\r\n autoBillingRef: MutableRefObject,\r\n setAutoBilling: (x: Partial) => void,\r\n};\r\n\r\n\r\n\r\nfunction getAutoBillinStorageKeys(): AutoBillingStorageKeys {\r\n return { modelStorage: 'newAutoBilling' }\r\n}\r\n\r\n\r\n\r\nfunction AutoBillingImpl(params: AutoBillingLoadDetailViewParams) {\r\n const { modelStorage } = getAutoBillinStorageKeys();\r\n const [inStorage, setInStorage, removeInStorage, autoBillingRef] = useTypedFastStorage(modelStorage, null);\r\n const [initialized, setInitialized] = useState(false);\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const appContext = useContext(ApplicationContext);\r\n\r\n useEffect(() => {\r\n initialize();\r\n },\r\n []\r\n );\r\n\r\n const newAutoBillingHD = new AutoBillingHD();\r\n\r\n\r\n async function initialize() {\r\n if (!inStorage) {\r\n await loadExisting();\r\n }\r\n setInitialized(true);\r\n }\r\n\r\n async function loadExisting() {\r\n\r\n const entity = _.cloneDeep(newAutoBillingHD);\r\n entity.invoiceDate = now();\r\n\r\n setInStorage(entity);\r\n }\r\n\r\n\r\n if (!initialized || !inStorage) return null;\r\n\r\n function close() {\r\n removeInStorage();\r\n params.onPopupClose();\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction calculateAmount(rate: number | null, qty: number | null) {\r\n if (rate === null || qty === null) {\r\n return 0;\r\n }\r\n\r\n return rate * qty;\r\n}\r\n\r\n\r\nfunction QtyRenderer({ data, row }: any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const isView = data[0].isView;\r\n const l = data[row.index];\r\n return (\r\n changeLineItem(row.index, { qty: qty, amount: calculateAmount(l.rate, qty) })}\r\n min={0}\r\n max={999999.999}\r\n decimals={2}\r\n disabled={isView} />\r\n );\r\n}\r\n\r\n\r\n\r\nfunction RateRenderer({ data, row }: any) {\r\n const changeLineItem = data[0].changeLineItem;\r\n const isView = data[0].isView;\r\n const l = data[row.index];\r\n return (\r\n {\r\n if (!!rate && l.qty === 0) {\r\n changeLineItem(row.index, { rate: rate, qty: 1, amount: calculateAmount(rate, l.qty) })\r\n }\r\n changeLineItem(row.index, { rate: rate, amount: calculateAmount(rate, l.qty) })\r\n\r\n }}\r\n decimals={2}\r\n min={0}\r\n max={999999.999}\r\n disabled={isView} />\r\n );\r\n}\r\n\r\n\r\nfunction AutoBillingInitializedImpl({\r\n autoBilling,\r\n autoBillingRef,\r\n setAutoBilling,\r\n onPopupClose,\r\n}: AutoBillingLoadedDetailsViewParams) {\r\n const progressRef = useRef(false);\r\n const appContext = useContext(ApplicationContext);\r\n const systemSettings = useSystemSettings();\r\n\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n\r\n const fmsGlobal = getFmsGlobal();\r\n const primaryCurrency = systemSettings.primaryCurrency ?? 'USD';\r\n const setSavedEntity = useSetEditedId([JobNames.GInvo]);\r\n var issueBillingDisable = (autoBilling.invoiceDetailList.length <= 0 || autoBilling.invoiceDate === null || autoBilling.invoiceDate === \"\");\r\n\r\n function subInvoList() {\r\n\r\n let nSeqNo = 0, nPrevComId = 0;\r\n\r\n\r\n autoBilling.invoiceDetailList.length = 0; //clear\r\n\r\n //Clear 버튼을 누르면 billingDetailList에 inv.seq 값이 0으로 바뀌어서 추가 \r\n const originalInvoiceSeq = autoBilling.billingDetailList.map(data => ({\r\n id: data.id,\r\n invoiceSeq: data.invoiceSeq\r\n }));\r\n\r\n autoBilling.billingDetailList.forEach(data => {\r\n data.invoiceSeq = 0;\r\n });\r\n\r\n autoBilling.billingDetailList\r\n .filter(data => data.selected)\r\n .forEach(data => {\r\n\r\n\r\n if (data.tbId !== nPrevComId) {\r\n nSeqNo++;\r\n nPrevComId = data.tbId;\r\n }\r\n\r\n if (data.amount > 0) {\r\n data.issue = \"\";\r\n data.invoiceSeq = nSeqNo;\r\n } else {\r\n data.issue = \"N\";\r\n }\r\n });\r\n\r\n\r\n autoBilling.billingDetailList\r\n .filter(data => data.selected)\r\n .forEach(data => {\r\n\r\n\r\n if (data.issue == '') {\r\n\r\n const detailIds: string[] = [];\r\n\r\n const totalAmount = autoBilling.billingDetailList\r\n .filter(w => w.selected && w.tbId === data.tbId && w.invoiceSeq === data.invoiceSeq)\r\n .reduce((sum, s) => sum + s.amount, 0);\r\n\r\n autoBilling.billingDetailList\r\n .filter(w => w.selected && w.tbId === data.tbId && w.invoiceSeq === data.invoiceSeq)\r\n .forEach(issuedRow => {\r\n issuedRow.issue = \"Y\";\r\n detailIds.push(issuedRow.id.toString());\r\n });\r\n\r\n\r\n const invoiceDetail: AutoInvoiceDetailList = {\r\n companyName: data.companyName,\r\n invoiceSeq: data.invoiceSeq,\r\n amount: totalAmount,\r\n customer: data.tbId,\r\n ids: detailIds.join(\",\"),\r\n terms: data.terms,\r\n hdId: 0\r\n };\r\n\r\n autoBilling.invoiceDetailList.push(invoiceDetail)\r\n\r\n }\r\n\r\n });\r\n\r\n originalInvoiceSeq.forEach(item => {\r\n const billingItem = autoBilling.billingDetailList.find(data => data.id === item.id);\r\n if (billingItem) {\r\n billingItem.invoiceSeq = item.invoiceSeq;\r\n }\r\n });\r\n\r\n\r\n setAutoBilling({ invoiceDetailList: autoBilling.invoiceDetailList });\r\n\r\n\r\n issueBillingDisable = (autoBilling.invoiceDetailList.length <= 0 || autoBilling.invoiceDate === null || autoBilling.invoiceDate === \"\")\r\n\r\n }\r\n\r\n\r\n function toggleSelection(i: number) {\r\n const _list = _.cloneDeep(autoBilling.billingDetailList);\r\n\r\n _list[i].selected = !_list[i].selected;\r\n\r\n setAutoBilling({ billingDetailList: _list });\r\n subInvoList();\r\n }\r\n\r\n\r\n\r\n function changeLineItem(index: number, change: Partial) {\r\n autoBilling.billingDetailList[index] = _.merge(autoBilling.billingDetailList[index], change);\r\n setAutoBilling({ billingDetailList: autoBilling.billingDetailList });\r\n subInvoList();\r\n }\r\n\r\n const totalAmount = autoBilling.invoiceDetailList.reduce((sum, item) => sum + item.amount, 0)\r\n\r\n function TotalLabelRenderer() {\r\n return
    \r\n Total\r\n
    ;\r\n }\r\n\r\n function TotalAmountRenderer() {\r\n return
    ;\r\n }\r\n\r\n function cellValueChanged(rowIndex: number, accessor: string) {\r\n switch (accessor) {\r\n case 'selected':\r\n toggleSelection(rowIndex);\r\n break;\r\n }\r\n }\r\n\r\n\r\n\r\n const autoBillingDetailTableOptions: ApplicableTableSettings = {\r\n tableName: 'autoBillingDetailTable',\r\n ...autoBillingDetailTable,\r\n showNewRowPlaceholder: false,\r\n data: autoBilling?.billingDetailList.map((x, i) => ({ ...x, i, toggleSelection, changeLineItem })),\r\n useEditControls: false,\r\n rowRenderers: [\r\n { accessor: 'selected' },\r\n { accessor: 'companyName' },\r\n { accessor: 'billingCode' },\r\n { accessor: 'rate', EditCell: RateRenderer },\r\n { accessor: 'qty', EditCell: QtyRenderer },\r\n { accessor: 'amount' },\r\n { accessor: 'lastAmount' },\r\n { accessor: 'ar' },\r\n { accessor: 'invoiceSeq' },\r\n ]\r\n\r\n , getCellData: (accessor: any, rowData: any, rowIndex: number): CellData | undefined => {\r\n const curRowData = rowData as AutoBillingDetail;\r\n if (accessor === 'selected')\r\n return { type: TableCellTypes.Checkbox, value: curRowData.selected, onChangeFunc: (selected: boolean) => cellValueChanged(rowIndex, accessor) };\r\n else if (accessor === 'companyName')\r\n return { type: TableCellTypes.Text, value: curRowData.companyName };\r\n else if (accessor === 'billingCode')\r\n return { type: TableCellTypes.Text, value: curRowData.billingCode };\r\n else if (accessor === 'rate')\r\n return { type: TableCellTypes.Number, value: curRowData.rate, decimal: 2 };\r\n else if (accessor === 'qty')\r\n return { type: TableCellTypes.Number, value: curRowData.qty, decimal: 2 };\r\n else if (accessor === 'amount')\r\n return { type: TableCellTypes.Number, value: curRowData.amount, decimal: 2 };\r\n else if (accessor === 'lastAmount')\r\n return { type: TableCellTypes.Number, value: curRowData.lastAmount, decimal: 2 };\r\n else if (accessor === 'ar')\r\n return { type: TableCellTypes.Number, value: curRowData.ar, decimal: 2 };\r\n else if (accessor === 'invoiceSeq')\r\n return { type: TableCellTypes.Text, value: curRowData.invoiceSeq, align: TableCellAligns.Right };\r\n else\r\n return undefined;\r\n },\r\n isCellLock: (accessor: string, rowData: any): boolean => {\r\n if (accessor === 'billingCode' || accessor === 'companyName' || accessor === 'amount' || accessor === 'lastAmount' || accessor === 'ar' || accessor === 'invoiceSeq') return true;\r\n\r\n return false;\r\n },\r\n getCustomCellProps: (currentProps: any, cell: any) => {\r\n const l = autoBilling?.billingDetailList[cell.row.index];\r\n if (cell.column.id === 'lastAmount') {\r\n if (l.lastAmount !== l.amount) {\r\n currentProps.style.color = 'red';\r\n }\r\n else\r\n currentProps.style.color = 'black';\r\n\r\n }\r\n return currentProps;\r\n },\r\n };\r\n\r\n\r\n\r\n\r\n\r\n function IndicatorRenderer({ row }: any) {\r\n return
    {row.index + 1}
    ;\r\n }\r\n\r\n\r\n const autoInvoiceDetailTableOptions: ApplicableTableSettings = {\r\n tableName: 'autoInvoiceDetailTable',\r\n ...autoInvoiceDetailTable,\r\n showNewRowPlaceholder: false,\r\n data: autoBilling?.invoiceDetailList.map((x, i) => ({ ...x, i, toggleSelection })),\r\n rowRenderers: [\r\n { accessor: 'indicator', Cell: IndicatorRenderer },\r\n { accessor: 'companyName', Cell: TextAlignLeftRenderer },\r\n { accessor: 'invoiceSeq', Cell: TextAlignRightRenderer },\r\n { accessor: 'amount', Cell: FloatRenderer },\r\n ],\r\n footerRow: [\r\n {\r\n colspan: 3,\r\n renderer: TotalLabelRenderer\r\n },\r\n {\r\n colspan: 1,\r\n renderer: TotalAmountRenderer\r\n },\r\n ],\r\n };\r\n\r\n\r\n\r\n\r\n async function setNextCheckNo() {\r\n const checkNo = await appContext.api.getAutoNo(FmsAutoNumberType.GeneralInvoNo, appContext.user?.branch);\r\n setAutoBilling({ invoiceNo: checkNo });\r\n }\r\n\r\n\r\n\r\n async function searchList() {\r\n\r\n let searchValue = autoBilling.search?.toUpperCase() ?? autoBilling.search;\r\n\r\n if (searchValue === null || searchValue === \"\") {\r\n await showGlobalOkDialog(

    Please check the Company Name.

    );\r\n return false;\r\n }\r\n\r\n if (autoBilling.billingDetailList?.length <= 0) {\r\n await showGlobalOkDialog(

    There is no line items

    );\r\n return false;\r\n }\r\n\r\n const filteredList = autoBilling.billingDetailList.filter(w =>\r\n w.companyName.toUpperCase().includes(searchValue)\r\n );\r\n\r\n autoBilling.billingDetailList.length = 0; //clear\r\n\r\n filteredList.forEach(detail => {\r\n const billingDetail = {\r\n companyName: detail.companyName,\r\n id: detail.id,\r\n hdId: detail.hdId,\r\n tbId: detail.tbId,\r\n billingCode: detail.billingCode,\r\n rate: detail.rate,\r\n qty: detail.qty,\r\n amount: detail.amount,\r\n lastAmount: detail.lastAmount,\r\n ar: detail.ar,\r\n invoiceSeq: detail.invoiceSeq,\r\n issue: detail.issue,\r\n terms: detail.terms,\r\n selected: detail.selected\r\n };\r\n autoBilling.billingDetailList.push(billingDetail);\r\n });\r\n\r\n\r\n subInvoList();\r\n }\r\n\r\n\r\n\r\n\r\n function selectAllInTable() {\r\n const _list = _.cloneDeep(autoBilling.billingDetailList);\r\n _list.forEach(item => item.selected = true);\r\n setAutoBilling({ billingDetailList: _list });\r\n subInvoList();\r\n }\r\n\r\n function clearTable() {\r\n const _list = _.cloneDeep(autoBilling.billingDetailList);\r\n _list.forEach(item => item.selected = false);\r\n setAutoBilling({ billingDetailList: _list });\r\n subInvoList();\r\n }\r\n\r\n\r\n\r\n useFunctionKeys({ onEsc: cancel });\r\n\r\n async function getList() {\r\n\r\n const getInvoiceDate = addMonths(getDate(autoBilling.invoiceDate) ?? \"\", -1);\r\n const year = parseInt(getInvoiceDate?.substring(0, 4) ?? \"\");\r\n const month = parseInt(getInvoiceDate?.substring(5, 7) ?? \"\");\r\n\r\n const result = await appContext.api.abinvDetailSelect(year, month, autoBilling.group);\r\n\r\n\r\n if (autoBilling.invoiceDate === null || autoBilling.invoiceDate === \"\") {\r\n await showGlobalOkDialog(

    Please check the Invoice date

    );\r\n }\r\n\r\n\r\n if (result) {\r\n setAutoBilling({ billingDetailList: result.result });\r\n }\r\n\r\n subInvoList();\r\n }\r\n\r\n function cancel() {\r\n const modals = document.querySelectorAll('[class^=\"ReactModal__Content\"]');\r\n if (modals.length > 0) {\r\n return false;\r\n }\r\n\r\n onPopupClose();\r\n return true;\r\n }\r\n\r\n\r\n\r\n async function setIssueBilling() {\r\n\r\n const ok = await appContext.api.checkSettingAutoNo(FmsAutoNumberType.GeneralInvoNo,\r\n (fmsGlobal.UseBranch ? (appContext.suntekSettings?.company?.defaultBranch === null ? \"HQ\" : appContext.suntekSettings?.company?.defaultBranch) : \"\"))\r\n\r\n if (!ok) {\r\n await showGlobalOkDialog(

    Please enter General Invoice No or setup Auto No in Options {'>'} Auto Numbers

    );\r\n return;\r\n }\r\n\r\n if (autoBilling.invoiceDate === null || autoBilling.invoiceDate === \"\") {\r\n await showGlobalOkDialog(

    Please check the Invoice date

    );\r\n }\r\n\r\n if (await subSaveAutoBilling()) {\r\n if (onPopupClose) {\r\n onPopupClose();\r\n }\r\n\r\n } else {\r\n await showGlobalOkDialog(

    failed

    );\r\n }\r\n\r\n\r\n return true;\r\n\r\n }\r\n\r\n\r\n async function subSaveAutoBilling() {\r\n let sqlInfos: SQLInfo[] = [];\r\n\r\n try {\r\n\r\n if (autoBilling.billingDetailList.length === 0) {\r\n return true;\r\n }\r\n\r\n autoBilling.billingDetailList.filter(w => w.selected).forEach(billingDetailList => {\r\n sqlInfos.push(new SQLInfo({\r\n tableName: \"T_AOTHERINFO\",\r\n type: SQLType.Update,\r\n fields: [\r\n new SQLField({ fieldName: 'F_F1', propertyName: 'F1', value: billingDetailList.rate }),\r\n new SQLField({ fieldName: 'F_F2', propertyName: 'F2', value: billingDetailList.qty }),\r\n new SQLField({ fieldName: \"F_F3\", propertyName: \"F3\", value: billingDetailList.amount }),\r\n ],\r\n key: new SQLField({ fieldName: \"F_Id\", propertyName: \"Id\", value: billingDetailList.id }),\r\n }));\r\n });\r\n\r\n\r\n\r\n const apiResult = await appContext.api.saveBillingDetailList(sqlInfos);\r\n if (!apiResult || !apiResult.success) {\r\n await showGlobalOkDialog(

    Failed !

    );\r\n return false;\r\n }\r\n\r\n\r\n const allIds = autoBilling.invoiceDetailList.flatMap(detail => detail.ids).join(',');\r\n\r\n const apiResult2 = await appContext.api.selectAotherTemp(allIds);\r\n if (apiResult2 === null || !apiResult2.result) {\r\n showGlobalOkDialog(

    Failed !

    );\r\n return false;\r\n }\r\n const aotherTemp: AotherTemp[] = apiResult2.result;\r\n\r\n let invoInsertId = -1;\r\n\r\n autoBilling.invoiceDetailList.forEach(invoiceDetailList => {\r\n\r\n let invoDetailIds = invoiceDetailList.ids.split(',').map(x => parseInt(x));\r\n let curAotherTemp = aotherTemp.filter(x => invoDetailIds.indexOf(x.id) > -1);\r\n console.log(curAotherTemp);\r\n\r\n sqlInfos.push(new SQLInfo({\r\n tableName: \"T_INVOHD\",\r\n type: SQLType.Insert,\r\n fields: [\r\n new SQLField({ fieldName: 'F_Billto', propertyName: 'Billto', value: invoiceDetailList.customer }),\r\n new SQLField({ fieldName: 'F_shipto', propertyName: 'Shipto', value: invoiceDetailList.customer }),\r\n new SQLField({ fieldName: \"F_Terms\", propertyName: \"Terms\", value: invoiceDetailList.terms }),\r\n\r\n new SQLField({ fieldName: \"F_Currency\", propertyName: \"Currency\", value: primaryCurrency }),\r\n new SQLField({ fieldName: \"F_InvoiceNo\", propertyName: \"InvoiceNo\", value: '' }),\r\n new SQLField({ fieldName: \"F_InvoiceAmt\", propertyName: \"InvoiceAmt\", value: invoiceDetailList.amount }),\r\n\r\n new SQLField({ fieldName: 'F_DueDate', propertyName: 'DueDate', value: addDays(getDate(autoBilling.invoiceDate) ?? \"\", invoiceDetailList.terms) }),\r\n new SQLField({ fieldName: 'F_PostDate', propertyName: 'PostDate', value: autoBilling.invoiceDate }),\r\n new SQLField({ fieldName: \"F_InvoiceDate\", propertyName: \"InvoiceDate\", value: autoBilling.invoiceDate }),\r\n\r\n new SQLField({ fieldName: 'F_TLAMOUNT', propertyName: 'TLAMOUNT', value: invoiceDetailList.amount }),\r\n new SQLField({ fieldName: 'F_RCVGLNO', propertyName: 'RCVGLNO', value: fmsGlobal.ARGLNo }),\r\n new SQLField({ fieldName: \"F_U1ID\", propertyName: \"U1ID\", value: systemSettings.userId ?? '' }),\r\n\r\n new SQLField({ fieldName: 'F_U1DATE', propertyName: 'U1DATE', value: \"GetDate()\" }),\r\n new SQLField({ fieldName: 'F_U2ID', propertyName: 'U2ID', value: systemSettings.userId ?? '' }),\r\n new SQLField({ fieldName: \"F_U2DATE\", propertyName: \"U2DATE\", value: \"GetDate()\" }),\r\n\r\n ],\r\n key: new SQLField({ fieldName: \"F_Id\", propertyName: \"Id\", value: invoInsertId }),\r\n }));\r\n\r\n\r\n sqlInfos.push(new SQLInfo({\r\n tableName: \"T_AOTHERLOCAL\",\r\n type: SQLType.Insert,\r\n fields: [\r\n new SQLField({ fieldName: 'F_TBNAME', propertyName: 'TBNAME', value: \"T_INVOHD\" }),\r\n new SQLField({ fieldName: 'F_TBID', propertyName: 'TBID', value: invoInsertId }),\r\n new SQLField({ fieldName: \"F_C1\", propertyName: \"C1\", value: autoBilling.invoiceRemarks }),\r\n new SQLField({ fieldName: \"F_TYPE\", propertyName: \"TYPE\", value: 1 }),\r\n ],\r\n }));\r\n\r\n\r\n curAotherTemp.forEach(aothertemp => {\r\n sqlInfos.push(new SQLInfo({\r\n tableName: \"T_INVODETAIL\",\r\n type: SQLType.Insert,\r\n fields: [\r\n new SQLField({ fieldName: 'F_INVOHDID', propertyName: 'INVOHDID', value: invoInsertId }),\r\n new SQLField({ fieldName: 'F_BILLINGCODE', propertyName: 'BILLINGCODE', value: aothertemp.c1 }),\r\n new SQLField({ fieldName: \"F_Description\", propertyName: \"F3\", value: aothertemp.c2 }),\r\n\r\n new SQLField({ fieldName: 'F_RATE', propertyName: 'RATE', value: aothertemp.f1 }),\r\n new SQLField({ fieldName: 'F_QTY', propertyName: 'QTY', value: aothertemp.f2 }),\r\n new SQLField({ fieldName: \"F_Amount\", propertyName: \"Amount\", value: aothertemp.f3 }),\r\n\r\n new SQLField({ fieldName: 'F_LAMOUNT', propertyName: 'LAmount', value: aothertemp.f3 }),\r\n new SQLField({ fieldName: 'F_CUR', propertyName: 'CUR', value: primaryCurrency }),\r\n new SQLField({ fieldName: \"F_CURAMOUNT\", propertyName: \"CURAMOUNT\", value: aothertemp.f3 }),\r\n\r\n new SQLField({ fieldName: 'F_CHGTYPE', propertyName: 'CHGTYPE', value: '9' }),\r\n new SQLField({ fieldName: 'F_EXRATE', propertyName: 'EXRATE', value: '1' }),\r\n\r\n ],\r\n }));\r\n });\r\n\r\n\r\n function addNonNull(array: SQLInfo[], item: SQLInfo | null): void {\r\n if (item !== null) {\r\n array.push(item);\r\n }\r\n }\r\n\r\n addNonNull(sqlInfos, historyUpdate(\"T_INVOHD\", invoInsertId, systemSettings.userId ?? '', 'Auto Billing'));\r\n addNonNull(sqlInfos, saveAcctHistory(invoInsertId, 'I', 0));\r\n addNonNull(sqlInfos, SaveNewJournalByTask(JobNames.Invoice, invoInsertId, systemSettings.userId ?? ''));\r\n\r\n invoInsertId--;\r\n\r\n });\r\n\r\n sqlInfos.push(new SQLInfo({\r\n tableName: \"T_AOTHERINFO\",\r\n type: SQLType.Update,\r\n fields: [\r\n new SQLField({ fieldName: 'F_C10', propertyName: 'C10', value: \"\" }),\r\n ],\r\n where: \"F_TBNAME = 'T_company' AND F_TYPE= 1 AND F_C10 <> ''\"\r\n }));\r\n\r\n\r\n const apiSaveResult: ApiResult = await appContext.api.saveJobDetail(\r\n JobNames.AutoBillingInvoice,\r\n sqlInfos\r\n );\r\n\r\n if (!apiSaveResult || !apiSaveResult.success) {\r\n await showGlobalOkDialog(

    Failed !

    );\r\n return false;\r\n }\r\n\r\n\r\n const insertResult = apiSaveResult.result.insertList.find(x => x.model === 'InvoHd');\r\n if (insertResult) {\r\n invoInsertId = insertResult.newId;\r\n }\r\n\r\n setSavedEntity(invoInsertId.toString(), false, false, true);\r\n\r\n\r\n } catch (error) {\r\n await showGlobalYesNoDialog(\r\n
    \r\n

    Error

    \r\n
    \r\n );\r\n }\r\n\r\n return true;\r\n\r\n }\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n setAutoBilling({ search: e.target.value })} />\r\n
    \r\n
    \r\n Search\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n setAutoBilling({ invoiceRemarks: e.target.value })}\r\n />\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n setAutoBilling({ invoiceDate })}\r\n />\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n setAutoBilling({ group: e.target.value })} />\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n Invoice No}\r\n mode=\"w70\"\r\n\r\n onLabelClick={setNextCheckNo}\r\n >\r\n
    \r\n true} />\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n\r\n\r\n
    \r\n
    \r\n\r\n
    \r\n { return false }}\r\n addLine={() => { return undefined }}\r\n\r\n />\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n setIssueBilling()}>\r\n Auto Billings\r\n \r\n\r\n \r\n CLOSE\r\n \r\n
    \r\n\r\n
    \r\n );\r\n}\r\n\r\n\r\nconst AutoBillingDetails = ({\r\n onPopupClose,\r\n}: { onPopupClose: () => void }) => {\r\n\r\n /**\r\n * Implementation note:\r\n * key is important in this case in order to force full List view rerender for different parameters.\r\n */\r\n\r\n return (\r\n \r\n );\r\n};\r\nexport default AutoBillingDetails;","import _ from 'lodash';\r\nimport React, {cloneElement, useContext, useEffect, useRef, useState} from 'react';\r\nimport {useHistory, useRouteMatch} from 'react-router';\r\nimport Modal from 'react-modal';\r\nimport localforage from 'localforage';\r\nimport postal from 'postal';\r\nimport Skeleton, {SkeletonTheme} from \"react-loading-skeleton\";\r\n\r\nimport {faExclamationTriangle} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\n\r\nimport {useAppDispatch, useAppSelector} from './app/hooks';\r\n\r\nimport JobSwitchingMenu from './components/JobSwitchingMenu';\r\nimport JobSwitchingMenuContext, {JobSwitchingMenuState} from './components/jobSwitchingMenuContext';\r\n\r\nimport ApplicationContext from './ApplicationContext';\r\n\r\nimport config from './config';\r\nimport constants from './constants';\r\nimport routes from './config/routes';\r\n\r\nimport {NavigationType, openNewPage} from './util/navigationHelpers';\r\nimport { getJobNamesByCurrentUrl, getListItemByJobName, getOperationKey, MenuFilterForBillings, MenuFilterGrents, stringsEqualIgnoreCase} from './util';\r\n\r\nimport useGlobalYesNoDialog from './hooks/useGlobalYesNoDialog';\r\nimport useGlobalOkDialog from './hooks/useGlobalOkDialog';\r\nimport useSystemSettings from './hooks/useSystemSettings';\r\n\r\nimport ButtonGroup from './uiControls/ButtonGroup';\r\nimport OkButton from './uiControls/OkButton';\r\n\r\nimport IfmsTopBar from './components/IfmsTopBar';\r\nimport {IfmsConfigMenuItem} from './config/types';\r\n\r\nimport NoticeOKIcon from './img/notice_inform_blue.svg';\r\nimport NoticeYesNoIcon from './img/notice_inform_YesNo.svg';\r\nimport NoticeErrorIcon from './img/notice_error.svg';\r\nimport NoticeWarningIcon from './img/notice_warning.svg';\r\n\r\nimport {changeOperation, changeSideMenu, clearOperation} from './features/operationSlice';\r\nimport {JobMenuItem, moveJobToOperation, replaceJobMenuMetadata, replaceJobMenuParentOp} from './features/jobMenuSlice';\r\nimport { moveScreenToOperation, replaceScreenStackMetadata, replaceScreenUrlParentOpOnStack} from './features/screenStackSlice';\r\nimport {logoutUser as logout} from './features/loginSlice';\r\nimport {clearStorage} from './features/storageSlice';\r\nimport {hideGlobalOkDialog} from './features/globalOkDialogSlice';\r\nimport {hideGlobalYesNoDialog} from './features/globalYesNoDialogSlice';\r\nimport {hideGlobalYesNoCancelDialog, YesNoCancelResult} from './features/globalYesNoCancelDialogSlice';\r\n\r\nimport fastStorage from './fastStorage';\r\nimport IfmsModal from \"./ui/IfmsModal\";\r\nimport {JobNames, getJobNameByTbName, getJobNameFromInvBillCrdbTbName, getOpByjobName, getOpTypeFromInvBillCrdbTbName} from './framework.core/JobNames';\r\nimport {clearLastSavedJobs} from './features/lastSavedJobSlice';\r\nimport useExternalScreenFilter from './hooks/useExternalScreenFilter';\r\nimport useReportViewer from './hooks/useReportViewer';\r\nimport {ReportHyperKey} from './fms.report';\r\nimport {getListJobNameByJobName} from './components/common/listJobNames';\r\nimport { resetListScreenSettings } from './features/listScreenSettingsSlice';\r\nimport IfmsSideMenu, { IfmsSideMenuWidth, getMenuItemKey, findOpendSideMenuIndexes } from './IfmsSideMenu';\r\nimport { useMemoListOperationStorage } from './components/memoList/useMemoListOperationStorage';\r\nimport Spinner from './ui/Spinner';\r\nimport TableHeaderSizeDisplay from './uiControls/TableHeaderSizeDisplay';\r\nimport { FmsSubMenu } from './constants/fmsSubMenu';\r\nimport { getSelectedSubMenuArgs } from './components/JobListSubMenu';\r\nimport { ApiResult, InsertResultsWithData } from './framework.core/data/ApiResult';\r\nimport { getFmsGlobal } from './globals';\r\nimport useJobMenuUrlQuery from './hooks/useJobMenuUrlQuery';\r\nimport { storageKeyMap } from './hooks/useSetEditedId';\r\n\r\nimport oceanImportRoutes, { OiHblView, OiMblView } from './components/oceanImport/routes';\r\nimport oceanExportRoutes, { OeHblView, OeMblView, OeBookingView } from './components/oceanExport/routes';\r\nimport airImportRoutes, { AiHawbView, AiMawbView } from './components/airImport/routes';\r\nimport airExportRoutes, { AeHawbView, AeMawbView } from './components/airExport/routes';\r\nimport otherShipmentRoutes, { OtherShipmentView } from './components/otherShipment/routes';\r\nimport warehousingRotues, { WhReceiptView, WhReceivingView, WhShippingView } from './components/warehousing/routes';\r\nimport customerRotues, { CompanyView } from './components/common/routes';\r\nimport accountingRotues, { InvoiceView, BillView, CrdbView, GeneralInvoiceView, GeneralBillView } from './components/accounting/routes';\r\nimport useFunction from './hooks/useFunction';\r\nimport { SearchModelBase } from './fms.data/models/SearchModelBase';\r\nimport MyMemo from './components/reports/MyMemo';\r\nimport { compareIso, now } from './dateUtils';\r\nimport useJobMenus from './hooks/useJobMenus';\r\nimport LeftRightSplit from './ui/LeftRightSplit';\r\nimport { SQLField, SQLInfo, SQLType } from './framework.core/data/SQLInfo';\r\nimport { focusTabableByIndex, getCurrentTabableIndex, getTabableElementByIndex } from './util/inputUtils';\r\nimport { ActionButtonItem } from './ui/ActionButton';\r\nimport VolumebyCargoTypeYears from './components/reports/VolumebyCargoTypeYears';\r\nimport { useJournal } from './components/accounting/general/journal/JournalListView';\r\nimport HistoryView from './components/reports/HistoryView';\r\nimport PrintBill from './components/accounting/bill/report/PrintBill';\r\nimport BatchPrint from './components/reports/BatchPrint';\r\nimport { DocumentType } from \"./framework.core/DocumentType\";\r\nimport AutoBilling from './components/accounting/gInvoice/AutoBilling/AutoBilling';\r\n\r\n// Can be set to true in development mode to allow easy checking of table column sizes (button Show/Hide is displayed in bottom right corner).\r\nconst DebugTableHeaderSizes = false;\r\n\r\n// Implementation note:\r\n// Try to get operation from url (if the url starts with '/oceanImport', the operation is Ocean Import)\r\n// Otherwise, try to use user default operation. If it is also missing, use Ocean Import operation by default\r\n// (2020 10 29) (Dario)\r\nfunction operationFactory(initializationPath:string|null|undefined, userDefaultOperation:string|null|undefined = null) {\r\n if (!!initializationPath) {\r\n const operationsMap = _.map(constants.operations, (value, key) => ({\r\n key,\r\n value,\r\n }));\r\n\r\n const matchFromUrl = operationsMap.find(x => initializationPath.startsWith(`/${x.key}`));\r\n\r\n if (matchFromUrl) {\r\n return matchFromUrl.value;\r\n }\r\n }\r\n\r\n return userDefaultOperation ? userDefaultOperation : constants.operations.oceanImport;\r\n}\r\n\r\nconst ModalContentStyle:React.CSSProperties = {\r\n top: '50%',\r\n left: '50%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-50%',\r\n transform: 'translate(-50%, -50%)',\r\n zIndex: 10000\r\n};\r\n\r\nconst ModalDialogContentStyle:React.CSSProperties = {\r\n top: '50%',\r\n left: '50%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-50%',\r\n transform: 'translate(-50%, -50%)',\r\n border:'1px solid',\r\n borderRadius:'0px',\r\n borderColor:'#00F',\r\n zIndex: 10000,\r\n paddingLeft:'40px',\r\n paddingRight:'40px'\r\n};\r\n\r\nconst ModalOverlayStyle:React.CSSProperties = {\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backgroundColor: 'rgba(0, 0, 0, 0.55)',\r\n zIndex: 999998\r\n};\r\n\r\nlet navigationSubscription:ISubscriptionDefinition|null = null;\r\nlet ajaxErrorSubscription:ISubscriptionDefinition|null = null;\r\nlet ajaxStartSubscription:ISubscriptionDefinition|null = null;\r\nlet ajaxEndSubscription:ISubscriptionDefinition|null = null;\r\nlet loadingStartSubscription:ISubscriptionDefinition|null = null;\r\nlet loadingEndSubscription:ISubscriptionDefinition|null = null;\r\nlet viewReportSubscription:ISubscriptionDefinition|null = null;\r\nlet tableEditSubscription:ISubscriptionDefinition|null = null;\r\nlet broadcastChannel:BroadcastChannel|null = null; //\r\nlet movetologinSubscription:ISubscriptionDefinition|null = null; //<240221.dwshin>\r\n\r\nlet tooltipElement:HTMLElement|null|SVGElement = null;\r\n\r\nfunction getTooltipPosition(tooltipNode:HTMLElement) {\r\n if (!tooltipElement) {\r\n return {left: 0, top: 0};\r\n }\r\n\r\n const rect = tooltipElement.getBoundingClientRect();\r\n const rectParent = (tooltipElement as HTMLElement).offsetParent;\r\n const tRect = tooltipNode.getBoundingClientRect();\r\n if (rectParent) {\r\n if (rectParent.getAttribute('role') === 'cell') { // Is special tooltip (INV, BIL, Consignee, Shipper...)\r\n tooltipElement.dataset.tooltipPosition = 'listview-cell';\r\n }\r\n else if(rectParent.className === 'ifms-job-btn-container') {\r\n tooltipElement.dataset.tooltipPosition = 'tab-tooltip';\r\n }\r\n }\r\n if (!tooltipElement.dataset.tooltipPosition || tooltipElement.dataset.tooltipPosition === 'bottom') {\r\n return { left: (rect.left + rect.width/2 - tRect.width), top: rect.top - rect.height };\r\n }\r\n if (tooltipElement.dataset.tooltipPosition === 'user-button') {\r\n return { left: rect.left, top: (rectParent?.clientHeight ?? 0) - rect.height - 34};\r\n }\r\n if (tooltipElement.dataset.tooltipPosition === 'listview-cell') {\r\n return { left: (rect.left + (rectParent?.clientWidth ? rectParent?.clientWidth/2 : rectParent?.clientWidth ?? 0) ), top: rect.top - 3 };\r\n }\r\n //240805 hykim - 회장님 지시로 Column Header Tooltip 제거\r\n // if (tooltipElement.dataset.tooltipPosition === 'listview-header') {\r\n // return { left: (rect.left + rect.width), top: rect.top - rect.height };\r\n // }\r\n if (tooltipElement.dataset.tooltipPosition === 'left') {\r\n return { left: rect.left - rect.width * 2, top: rect.top - rect.height };\r\n }\r\n if (tooltipElement.dataset.tooltipPosition === 'right') {\r\n return { left: rect.right, top: rect.top - rect.height };\r\n }\r\n if (tooltipElement.dataset.tooltipPosition === 'tab-tooltip') {\r\n return { left: (rect.left + rect.width - tRect.width) - 110, top: rect.top - rect.height };\r\n }\r\n\r\n return { left: (rect.left + rect.width / 2 - tRect.width / 2), top: rect.top - rect.height };\r\n}\r\n\r\nfunction createFragment(htmlStr:string) {\r\n const frag = document.createDocumentFragment();\r\n const temp = document.createElement('div');\r\n\r\n temp.innerHTML = htmlStr;\r\n\r\n while (temp.firstChild) {\r\n frag.appendChild(temp.firstChild);\r\n }\r\n\r\n return frag;\r\n}\r\n\r\nfunction FindOpendOperationView(currentUrl: string) {\r\n const resultArray: {\r\n isOpenOperationView: boolean,\r\n jobName: JobNames,\r\n jobParams: any\r\n }[] = [];\r\n\r\n if (currentUrl.includes(`?copyId=`)) {\r\n const copyIndex = currentUrl.indexOf('?copyId=');\r\n currentUrl = currentUrl.substring(0 , copyIndex);\r\n }\r\n\r\n // ocean Import\r\n let routePath = oceanImportRoutes.find(x => x.component === OiMblView)?.path ?? '';\r\n let routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.OIMbl, jobParams: routeData?.params });\r\n\r\n routePath = oceanImportRoutes.find(x => x.component === OiHblView)?.path ?? '';\r\n routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.OIHbl, jobParams: routeData?.params });\r\n\r\n // ocean Export\r\n routePath = oceanExportRoutes.find(x => x.component === OeMblView)?.path ?? '';\r\n routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.OEMbl, jobParams: routeData?.params });\r\n\r\n routePath = oceanExportRoutes.find(x => x.component === OeHblView)?.path ?? '';\r\n routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.OEHbl, jobParams: routeData?.params });\r\n\r\n routePath = oceanExportRoutes.find(x => x.component === OeBookingView)?.path ?? '';\r\n routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.OEBook, jobParams: routeData?.params });\r\n\r\n // air Import\r\n routePath = airImportRoutes.find(x => x.component === AiMawbView)?.path ?? '';\r\n routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.AIMbl, jobParams: routeData?.params });\r\n\r\n routePath = airImportRoutes.find(x => x.component === AiHawbView)?.path ?? '';\r\n routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.AIHbl, jobParams: routeData?.params });\r\n\r\n // air Export\r\n routePath = airExportRoutes.find(x => x.component === AeMawbView)?.path ?? '';\r\n routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.AEMbl, jobParams: routeData?.params });\r\n\r\n routePath = airExportRoutes.find(x => x.component === AeHawbView)?.path ?? '';\r\n routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.AEHbl, jobParams: routeData?.params });\r\n\r\n // other Shipment\r\n routePath = otherShipmentRoutes.find(x => x.component === OtherShipmentView)?.path ?? '';\r\n routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.OtherOP, jobParams: routeData?.params });\r\n\r\n // warehousing\r\n routePath = warehousingRotues.find(x => x.component === WhReceiptView)?.path ?? '';\r\n routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.WHRcpt, jobParams: routeData?.params });\r\n\r\n routePath = warehousingRotues.find(x => x.component === WhReceivingView)?.path ?? '';\r\n routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.WHRcv, jobParams: routeData?.params });\r\n\r\n routePath = warehousingRotues.find(x => x.component === WhShippingView)?.path ?? '';\r\n routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.WHShip ,jobParams: routeData?.params });\r\n\r\n // customer\r\n routePath = customerRotues.find(x => x.component === CompanyView)?.path ?? '';\r\n routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.Company ,jobParams: routeData?.params });\r\n\r\n // accounting\r\n routePath = accountingRotues.find(x => x.component === InvoiceView)?.path ?? '';\r\n routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.Invoice ,jobParams: routeData?.params });\r\n \r\n routePath = accountingRotues.find(x => x.component === BillView)?.path ?? '';\r\n routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.Bill ,jobParams: routeData?.params });\r\n \r\n routePath = accountingRotues.find(x => x.component === CrdbView)?.path ?? '';\r\n routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.CrDb ,jobParams: routeData?.params });\r\n \r\n routePath = accountingRotues.find(x => x.component === GeneralInvoiceView)?.path ?? '';\r\n routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.GInvo ,jobParams: routeData?.params });\r\n \r\n routePath = accountingRotues.find(x => x.component === GeneralBillView)?.path ?? '';\r\n routeData = useRouteMatch(routePath);\r\n resultArray.push({ isOpenOperationView: routeData?.url === currentUrl, jobName: JobNames.GBill ,jobParams: routeData?.params });\r\n\r\n return resultArray.find(x => x.isOpenOperationView === true);\r\n}\r\n\r\nfunction IfmsMain() {\r\n const history = useHistory();\r\n const appContext = useContext(ApplicationContext);\r\n const systemSettings = useSystemSettings();\r\n\r\n const memoStorage = useMemoListOperationStorage();\r\n\r\n const [jobMenuContextState, setJobMenuContextState] = useState({});\r\n\r\n const {setFilterForScreenExternally} = useExternalScreenFilter();\r\n\r\n const userLogin = useAppSelector(state => state.user);\r\n const operationState = useAppSelector(state => state.operation);\r\n const selectedOperation = operationState.operation;\r\n\r\n const globalYesNoCancelDialog = useAppSelector(state => state.globalYesNoCancelDialog);\r\n const globalYesNoDialog = useAppSelector(state => state.globalYesNoDialog);\r\n const globalOkDialog = useAppSelector(state => state.globalOkDialog);\r\n //\r\n // const globalInputDialog = useAppSelector(state => state.globalInputDialog);\r\n\r\n const jobMenu = useAppSelector(x => x.jobMenu);\r\n const {cleanupAll, moveToSingleOpenedScreenInAnyOperationStartingWithUrl} = useJobMenus();\r\n const {switchJournal} = useJournal();\r\n \r\n const dispatch = useAppDispatch();\r\n\r\n const [focusEleAfterModalOkBtnClick, setFocusEleAfterModalOkBtnClick] = useState(null);\r\n\r\n const [apiLoading, setApiLoading] = useState(false);\r\n const [apiLoadingMessage, setApiLoadingMessage] = useState(false);\r\n\r\n const [initialized, setInitialized] = useState(false);\r\n\r\n const [selectedPopupMenuItem, setSelectedPopupMenuItem] = useState(null);\r\n const [selectedReportMenuItem, setSelectedReportMenuItem] = useState(null);\r\n const [selectedReportPopupMenuItem, setSelectedReportPopupMenuItem] = useState(null);\r\n\r\n const [showGlobalYesNoDialog] = useGlobalYesNoDialog();\r\n\r\n const jobSwitchingTestMode = false;\r\n\r\n const [showGlobalDialog] = useGlobalYesNoDialog();\r\n const [showGlobalOkDialog] = useGlobalOkDialog();\r\n\r\n // const reportRef = useRef(null);\r\n\r\n // auto logout.\r\n const autoLogoutTimerId = useRef(-1);\r\n const autoLogoutRemainTimerId = useRef(-1);\r\n const isStayLoggin = useRef(false);\r\n const [autoLogoutCheck, setAutoLogoutCheck] = useState(false);\r\n const [autoLogoutRemain, setAutoLogoutRemain] = useState(600); \r\n\r\n const currentUrl = `${history.location.pathname}${history.location.search}`;\r\n const currentListJobName = getJobNamesByCurrentUrl(storageKeyMap, currentUrl);\r\n const currentListItemModel = getListItemByJobName(currentListJobName);\r\n const defaultUrls = ['/home/home', '/home', '/'];\r\n\r\n const [isHome, setIsHome] = useState(defaultUrls.includes(currentUrl));\r\n const isHomeRef = useRef(defaultUrls.includes(currentUrl));\r\n const activeUrlRef = useRef(currentUrl);\r\n const opendOperationData = FindOpendOperationView(currentUrl);\r\n\r\n const channel = postal.channel('ajax');\r\n const filterChannel = postal.channel('ifms-filter');\r\n const [showMainPop, setShowMainPop] = useState(false);\r\n // let storageName = '';\r\n // const tableElement = document.querySelectorAll('[class*=ifms-table-content]');\r\n // if (tableElement.length > 0) storageName = tableElement[0].id\r\n //const [listSelectedId] = useStorage(storageName, null);\r\n const listSelectedId = document.getElementById('last-selectedId')?.innerText ?? '';\r\n const topBarHeight = (document.getElementById('ifms-top-bar')?.offsetHeight ?? 0) - 1;\r\n const listData = fastStorage[`ifms-list-data-${currentUrl}`]\r\n const fmsGlobal = getFmsGlobal();\r\n const hasOpenedScreenStartingWithUrl = useJobMenuUrlQuery();\r\n\r\n const menus = _.cloneDeep(config.menus.find(x => x.operation === operationState.sideMenu));\r\n\r\n const getExternalFunctions = useFunction({\r\n callbacks: ['ifmsSettingsSave', 'ifmsSettingsCancel','ifmsReferenceFilesSave', 'ifmsReferenceFilesCancel']\r\n });\r\n\r\n const _isRunning = useRef(false);\r\n const TaskReminderTimer = 60000;\r\n \r\n let grents = appContext.securityGrants;\r\n\r\n function resetJobMenuContextState() {\r\n setJobMenuContextState({});\r\n }\r\n\r\n function setInJobMenuContext(key: string, value: any) {\r\n const newJobMenuContextState = _.cloneDeep(jobMenuContextState);\r\n newJobMenuContextState[key] = value; \r\n\r\n setJobMenuContextState(newJobMenuContextState);\r\n }\r\n\r\n const setSelectedOperation = (data:string) => {\r\n dispatch(changeOperation(data));\r\n };\r\n\r\n const {viewReport} = useReportViewer(); // optab-rptviewer\r\n const { getSingleOpenedScreenInAnyOperationStartingWithUrl } = useJobMenus();\r\n \r\n // Report > HyperLink를 통해 동일한 항목을 반복해서 클릭하는 경우 리스트가 갱신되지 않아 항목이 사라지는 문제를 해결하기 위해 추가\r\n const versionCount = useRef(1); \r\n\r\n async function bcMessageHandler(e:any) {\r\n window.console.log('========================');\r\n window.console.log('message');\r\n window.console.log(e);\r\n window.console.log('========================');\r\n const args = decodeURIComponent(e.data.Target).split('^');\r\n let jobName, jobId, apiResult, opType, parentOp;\r\n window.console.log('=== args :');\r\n window.console.log(args);\r\n\r\n if (args[0] === 'CloseWindow') {\r\n if(window.name.indexOf('ifmssub') > -1) window.close();\r\n return;\r\n } else if (args[0] === 'MoveToLogin') {\r\n broadcastChannel?.postMessage({ Target: 'CloseWindow' });\r\n channel.publish('ajax.movetologin', {});\r\n return;\r\n }\r\n // else if (args[0] === 'PopupAvailCheck') {\r\n // let n = window.open(window.location.origin, '_blank', `width=10,height=10,left=${window.innerWidth - 10},top=${window.innerWidth - 10}`); // show bottom right corner of the screen.\r\n // if (n == null) {\r\n // broadcastChannel = new BroadcastChannel('ifms-openop-channel-' + appContext.user?.suntekId.toLowerCase() + '-' + appContext.user?.id?.toLowerCase());\r\n // broadcastChannel.postMessage({Target:'ShowAlertMsg', Msg:'Please allow popups for this website.'});\r\n // } else {\r\n // n.close();\r\n // }\r\n // return;\r\n // }\r\n else if(args[0] === 'OpenOperationDetail') {\r\n switch(args[1].toUpperCase()) {\r\n case 'OIM': \r\n jobName = JobNames.OIMbl; jobId = args[2]; opType = constants.opTypes.oceanImport; break;\r\n case 'OIH': \r\n jobName = JobNames.OIHbl; jobId = args[2]; opType = constants.opTypes.oceanImport; break;\r\n case 'OOM': \r\n case 'OEM': \r\n jobName = JobNames.OEMbl; jobId = args[2]; opType = constants.opTypes.oceanExport; break;\r\n case 'OOH': \r\n case 'OEH': \r\n jobName = JobNames.OEHbl; jobId = args[2]; opType = constants.opTypes.oceanExport; break;\r\n case 'AIM': \r\n jobName = JobNames.AIMbl; jobId = args[2]; opType = constants.opTypes.airImport; break;\r\n case 'AIH': \r\n jobName = JobNames.AIHbl; jobId = args[2]; opType = constants.opTypes.airImport; break;\r\n case \"AOM\": \r\n case \"AEM\": \r\n jobName = JobNames.AEMbl; jobId = args[2]; opType = constants.opTypes.airExport; break;\r\n case \"AOH\": \r\n case \"AEH\": \r\n jobName = JobNames.AEHbl; jobId = args[2]; opType = constants.opTypes.airExport; break;\r\n case \"OTH\": \r\n jobName = JobNames.OtherOP; jobId = args[2]; opType = constants.opTypes.otherShipment; break;\r\n case \"WHR\": \r\n jobName = JobNames.WHRcv; jobId = args[2]; opType = constants.opTypes.warehousing; break;\r\n case \"WHS\": \r\n jobName = JobNames.WHShip; jobId = args[2]; opType = constants.opTypes.warehousing; break;\r\n case \"T_INVOHD\":\r\n apiResult = await appContext.api.getSourceJobInfo(JobNames.Invoice, args[2]);\r\n window.console.log(\"============== getSourceJobInfo apiResult:\");\r\n window.console.log(apiResult);\r\n if(apiResult && apiResult.success && apiResult.result) {\r\n // jobId = args[2];\r\n // if(apiResult.result.tbName.toUpperCase() === \"T_STORAGE\") {\r\n // jobName = JobNames.WHStorageInv;\r\n // opType = constants.opTypes.warehousing;\r\n // } else {\r\n // jobName = JobNames.Invoice;\r\n // if(apiResult.result.tbId === 0) {\r\n // jobName = JobNames.GInvo;\r\n // }\r\n // opType = constants.opTypes.accounting; \r\n // }\r\n\r\n jobId = args[2];\r\n jobName = JobNames.Invoice;\r\n switch(apiResult.result.tbName.toUpperCase()) {\r\n case \"T_STORAGE\":\r\n jobName = JobNames.WHStorageInv;\r\n opType = constants.opTypes.warehousing;\r\n break;\r\n case \"T_WRECEIVE\":\r\n case \"T_WRECEIVEHD\":\r\n case \"T_WSHIPHD\":\r\n case \"T_WHPERIOD\":\r\n opType = constants.opTypes.warehousing;\r\n break;\r\n default:\r\n if (apiResult.result.tbId === 0) {\r\n jobName = JobNames.GInvo;\r\n }\r\n opType = constants.opTypes.accounting; \r\n break;\r\n }\r\n }\r\n break;\r\n\r\n case \"T_APHD\":\r\n apiResult = await appContext.api.getSourceJobInfo(JobNames.Bill, args[2]);\r\n if (apiResult && apiResult.success && apiResult.result) {\r\n // jobName = JobNames.Bill; jobId = args[2];\r\n // if(apiResult.result.tbName.toUpperCase() === '') {\r\n // if(apiResult.result.tbId === 0) {\r\n // jobName = JobNames.GBill; jobId = args[2];\r\n // } \r\n // }\r\n // opType = constants.opTypes.accounting; \r\n\r\n jobId = args[2];\r\n jobName = JobNames.Bill;\r\n switch(apiResult.result.tbName.toUpperCase()) {\r\n case \"T_WRECEIVE\":\r\n case \"T_WRECEIVEHD\":\r\n case \"T_WSHIPHD\":\r\n opType = constants.opTypes.warehousing;\r\n break;\r\n default:\r\n if (apiResult.result.tbId === 0) {\r\n jobName = JobNames.GBill;\r\n }\r\n opType = constants.opTypes.accounting; \r\n break;\r\n }\r\n }\r\n break;\r\n case \"T_CRDBHD\": \r\n // jobName = JobNames.CrDb; jobId = args[2]; opType = constants.opTypes.accounting; \r\n apiResult = await appContext.api.getSourceJobInfo(JobNames.CrDb, args[2]);\r\n\r\n if (apiResult && apiResult.success && apiResult.result) {\r\n jobId = args[2];\r\n jobName = JobNames.CrDb;\r\n switch(apiResult.result.tbName.toUpperCase()) {\r\n case \"T_WRECEIVE\":\r\n case \"T_WRECEIVEHD\":\r\n case \"T_WSHIPHD\":\r\n case \"T_WHPERIOD\":\r\n opType = constants.opTypes.warehousing;\r\n break;\r\n default:\r\n opType = constants.opTypes.accounting; \r\n break;\r\n }\r\n }\r\n break;\r\n case \"T_DEPOHD\":\r\n jobId = args[2];\r\n if (args[4] === \"D\") {\r\n jobName = JobNames.CustPayment;\r\n }\r\n else if (args[4] === \"M\") {\r\n jobName = JobNames.CCPayment;\r\n }\r\n else {\r\n jobName = JobNames.BillPayment; \r\n }\r\n opType = constants.opTypes.accounting; \r\n break;\r\n case \"PAY\": jobName = JobNames.Payroll2; jobId = args[2]; opType = constants.opTypes.accounting; break;\r\n }\r\n\r\n //window.console.log(`jobName=${jobName}, jobId=${jobId}`);\r\n if (jobName) {\r\n // - Example how to open list screen with filtering. This example opens invoice list view\r\n //const invoiceNo = 'INV-18931';\r\n let listUrl = `/common/joblistview/${getListJobNameByJobName(jobName)}/${opType}`;\r\n\r\n // find all screen stack - url screen opened.\r\n const lastScreenQuery = getSingleOpenedScreenInAnyOperationStartingWithUrl(listUrl);\r\n let lastScreen;\r\n if (lastScreenQuery && lastScreenQuery.item) {\r\n lastScreen = lastScreenQuery.item;\r\n listUrl = lastScreen.url;\r\n parentOp = listUrl?.split(\"parentOp=\")[1];\r\n } else if (\r\n (args[1].toUpperCase() === \"T_INVOHD\" ||\r\n args[1].toUpperCase() === \"T_APHD\" ||\r\n args[1].toUpperCase() === \"T_CRDBHD\") && opType !== constants.opTypes.warehousing\r\n ) {\r\n listUrl = `${listUrl}?parentOp=billings`\r\n }\r\n\r\n setFilterForScreenExternally(\r\n listUrl,\r\n 'id', // filter property name in model\r\n '', // property label, can be omitted as ''\r\n jobId?.toString()??'', // Filter value\r\n 'u2Date', // order by column in model\r\n false, // orderByAscending\r\n true, // startWithEntry\r\n ({...new SearchModelBase(), version: versionCount.current} as SearchModelBase) // Update version\r\n );\r\n versionCount.current += 1;\r\n\r\n if(lastScreen){\r\n openNewPage(history, listUrl, NavigationType.jobMenuSwitch, lastScreen.metadata, parentOp);\r\n }else{\r\n openNewPage(history, listUrl, NavigationType.newPage);\r\n }\r\n }\r\n } else if (args[0] === 'CompanySalesSummaryLink') {\r\n let model = new SearchModelBase();\r\n jobName = JobNames.OIMbl;\r\n\r\n switch (args[1]) {\r\n case \"T_OIMMAIN\":\r\n jobName = JobNames.OIMbl;\r\n opType = constants.opTypes.oceanImport;\r\n break;\r\n case \"T_OIHMAIN\":\r\n jobName = JobNames.OIHbl;\r\n opType = constants.opTypes.oceanImport;\r\n break;\r\n case \"T_OOMMAIN\":\r\n jobName = JobNames.OEMbl;\r\n opType = constants.opTypes.oceanExport;\r\n break;\r\n case \"T_OOHMAIN\":\r\n jobName = JobNames.OEHbl;\r\n opType = constants.opTypes.oceanExport;\r\n break;\r\n case \"T_AIMMAIN\":\r\n jobName = JobNames.AIMbl;\r\n opType = constants.opTypes.airImport;\r\n break;\r\n case \"T_AIHMAIN\":\r\n jobName = JobNames.AIHbl;\r\n opType = constants.opTypes.airImport;\r\n break;\r\n case \"T_AOMMAIN\":\r\n jobName = JobNames.AEMbl;\r\n opType = constants.opTypes.airExport;\r\n break;\r\n case \"T_AOHMAIN\":\r\n jobName = JobNames.AEHbl;\r\n opType = constants.opTypes.airExport;\r\n break;\r\n case \"T_GENMAIN\":\r\n jobName = JobNames.OtherOP;\r\n opType = constants.opTypes.otherShipment;\r\n break;\r\n case \"T_WRECEIVE\":\r\n jobName = JobNames.WHRcv;\r\n opType = constants.opTypes.warehousing;\r\n break;\r\n case \"T_WSHIPHD\":\r\n jobName = JobNames.WHShip;\r\n opType = constants.opTypes.warehousing;\r\n break;\r\n case \"T_WHPERIODINV\":\r\n jobName = JobNames.Invoice;\r\n opType = constants.opTypes.warehousing;\r\n break;\r\n case \"T_WHPERIODCRDB\":\r\n jobName = JobNames.CrDb;\r\n opType = constants.opTypes.warehousing;\r\n break;\r\n case \"T_STORAGE\":\r\n jobName = JobNames.WHStorageInv;\r\n opType = constants.opTypes.warehousing;\r\n break;\r\n }\r\n\r\n // switch (args[2]) {\r\n // case \"Customer\":\r\n // model.recognized = \"R\";\r\n // model.customer = parseInt(args[3]);\r\n // model.fromConfirmDate = args[4];\r\n // model.toConfirmDate = args[5];\r\n // model.shipmentType = args[6];\r\n // model.searchField.push(\"customer\");\r\n // break;\r\n\r\n // case \"Agent\":\r\n // model.recognized = \"R\";\r\n // model.agent = parseInt(args[3]);\r\n // model.fromConfirmDate = args[4];\r\n // model.toConfirmDate = args[5];\r\n // model.shipmentType = args[6];\r\n // model.searchField.push(\"agent\");\r\n // break;\r\n // }\r\n\r\n if (model != null) {\r\n // model.searchField.push(\"recognized\");\r\n // model.searchField.push(\"confirmDate\");\r\n // model.searchField.push(\"shipmentType\");\r\n model.extraWhere = `Id in (${args[2]})`\r\n model.version = versionCount.current;\r\n model.isSearchByReport = true;\r\n const listUrl = `/common/joblistview/${getListJobNameByJobName(jobName)}/${opType}`;\r\n\r\n setFilterForScreenExternally(\r\n listUrl,\r\n '', // filter property name in model\r\n '', // property label, can be omitted as ''\r\n 'B/L G. Profit', // Filter value\r\n '', // order by column in model\r\n false, // orderByAscending\r\n true, // startWithEntry\r\n model // Update version\r\n );\r\n versionCount.current += 1;\r\n openNewPage(history, listUrl, NavigationType.newPage);\r\n }\r\n\r\n } else if (args[0] === 'CargoTypeYears') {\r\n let jobName = JobNames.None;\r\n\r\n switch (args[1]) {\r\n case \"Ocean Import\":\r\n jobName = JobNames.OIMbl;\r\n break;\r\n case \"Ocean Export\":\r\n jobName = JobNames.OEMbl;\r\n break;\r\n case \"Air Import\":\r\n jobName = JobNames.AIMbl;\r\n break;\r\n case \"Air Export\":\r\n jobName = JobNames.AEMbl;\r\n break;\r\n }\r\n\r\n setSelectedReportPopupMenuItem(null);\r\n\r\n setSelectedReportPopupMenuItem({\r\n label: args[1],\r\n popupWidth: 725,\r\n popupComponent:\r\n setSelectedReportPopupMenuItem(null)}\r\n jobName={jobName}\r\n toDate={args[2]}\r\n unit={args[3]}\r\n />\r\n });\r\n }\r\n else {\r\n //optab-rptviewer\r\n //openNewPage(history, `/common/report/${e.data.Target}`, NavigationType.newPage);\r\n const reportId = decodeURIComponent(e.data.Target);\r\n const hlinkData = reportId.split('^');\r\n if([ReportHyperKey.DutyPendings, ReportHyperKey.NewProfitDetail1, ReportHyperKey.NewProfitDetail2, ReportHyperKey.NewProfitDetail2GP, ReportHyperKey.EmpPerformanceDetail].indexOf(hlinkData[0] as ReportHyperKey) >= 0) {\r\n // Find last operation before selecting report menu\r\n opType = _.findKey(constants.operations, x => x === selectedOperation)??'';\r\n } else {\r\n opType = constants.opTypes.accounting;\r\n }\r\n if (hlinkData[0].substring(0, 4).toUpperCase() === \"HTTP\")\r\n window.open(hlinkData[0]);\r\n else\r\n viewReport(reportId, opType, true, true);\r\n }\r\n }\r\n\r\n async function getReminderTime(){ \r\n const resultTime = await appContext.api.getReminderTaskTime(appContext.user ? appContext.user.id ?? '' : '');\r\n let tempInfoContent = appContext.appInfoAreaContent;\r\n if(!!resultTime){ //setSystemSettings가 바로 갱신이 안되어 강제로 값 변경\r\n if(appContext.systemSettings){\r\n appContext.systemSettings.reminderStatus = resultTime[0] ?? '';\r\n appContext.systemSettings.reminderTime = resultTime[1] ?? '';\r\n appContext.systemSettings.reminderDueTime = resultTime[2] ?? '';\r\n }\r\n //IfmsTopBar > Reminder Icon이 바로 갱신되지 않아 강제로 값 변경\r\n appContext.setSystemSettings({\r\n reminderStatus: resultTime[0] ?? '',\r\n reminderTime : resultTime[1] ?? '',\r\n reminderDueTime: resultTime[2] ?? '',\r\n });\r\n }\r\n appContext.setAppInfoAreaContent(tempInfoContent);\r\n }\r\n\r\n function stayLoggedin(){\r\n appContext.logoutWorker?.postMessage(['clearTimeout', autoLogoutRemainTimerId.current]);\r\n\r\n appContext.logoutWorker?.postMessage(['getAutoLogoutRemainInit']);\r\n appContext.logoutWorker?.postMessage(['setAutoLogoutTimer', autoLogoutTimerId.current]);\r\n setAutoLogoutCheck(false);\r\n }\r\n\r\n useEffect(() => {\r\n if (autoLogoutRemain <= 0) {\r\n if(!isStayLoggin.current)\r\n timeLogout();\r\n else \r\n isStayLoggin.current = false;\r\n }\r\n }, [autoLogoutRemain]);\r\n\r\n async function timeLogout() {\r\n console.log(`timeout. clear.`);\r\n appContext.logoutWorker?.postMessage(['clearTimeout', autoLogoutTimerId.current]);\r\n setAutoLogoutCheck(false);\r\n\r\n console.log(`timeout. logout.`);\r\n await logoutUser(false);\r\n }\r\n\r\n \r\n useEffect(() => {\r\n if (!['referenceFiles', 'settings', 'BusinessIntelligence'].some(x => currentUrl.endsWith(x))) {\r\n const selectedSideMenuClassName = !appContext.useDarkMode ? 'ifms-side-menu-item-selected-onclick' : 'ifms-side-menu-item-selected-onclick-darkmode'; \r\n const extendedSubMenuClassName = !appContext.useDarkMode ? 'ifms-sub-menu-item-withscroll' : 'ifms-sub-menu-item-withscroll-darkmode' ;\r\n const selectedSubMenuClassName = !appContext.useDarkMode ? 'ifms-sub-menu-item-selected-onclick' : 'ifms-sub-menu-item-selected-onclick-darkmode' ;\r\n const sideMenuClassName = !appContext.useDarkMode ? 'ifms-side-menu-item-withscroll' : 'ifms-side-menu-item-withscroll-darkmode' ;\r\n\r\n //clear side menu background color \r\n const alreadySideMenuOpend = document.querySelectorAll(`.${selectedSideMenuClassName}`);\r\n for (let i = 0; i < alreadySideMenuOpend.length; ++i) {\r\n alreadySideMenuOpend[i].className = sideMenuClassName;\r\n }\r\n const alreadySubMenuOpend = document.querySelectorAll(`.${selectedSubMenuClassName}`);\r\n for (let i = 0; i < alreadySubMenuOpend.length; ++i) {\r\n const parentIndex = alreadySubMenuOpend[i].className.replace(/[^0-9]/g, \"\");\r\n alreadySubMenuOpend[i].className = `${extendedSubMenuClassName} parent-index${parentIndex}`;\r\n }\r\n\r\n //Set side menu background color\r\n const findOpendSideMenuIndex = menus?.job.findIndex(x => x.link?.includes(currentUrl)) ?? -1;\r\n if (findOpendSideMenuIndex !== -1) {\r\n const menuItemKey = getMenuItemKey(operationState.sideMenu, 'ifms-side-menu', findOpendSideMenuIndex);\r\n const findOpendSideMenu = document.getElementById(menuItemKey);\r\n if (findOpendSideMenu){\r\n findOpendSideMenu.className = selectedSideMenuClassName;\r\n const imgElements = findOpendSideMenu.querySelectorAll('svg');\r\n imgElements.forEach(img => img.remove());\r\n }\r\n }\r\n else {\r\n const opendParentIndexes = findOpendSideMenuIndexes();\r\n let setBackGroundSubMenuIndex = -1;\r\n\r\n if (opendParentIndexes.length > 0) {\r\n for (let index = 0; index < opendParentIndexes.length; index++) {\r\n const parentIndex = Number(String(opendParentIndexes[index]).replace(/[^0-9]/g, \"\"));\r\n\r\n if (menus?.job[parentIndex]) {\r\n setBackGroundSubMenuIndex = menus?.job[parentIndex].items?.findIndex(x => x.link && currentUrl.includes(x.link)) ?? -1;\r\n }\r\n \r\n if (setBackGroundSubMenuIndex !== -1) {\r\n const menuItemKey = getMenuItemKey(`${operationState.sideMenu}`, `ifms-side-menu-${parentIndex}`, setBackGroundSubMenuIndex);\r\n const findOpendSubMenu = document.getElementById(menuItemKey);\r\n if (findOpendSubMenu)\r\n findOpendSubMenu.className = `${selectedSubMenuClassName} parent-index${parentIndex}`;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n const moreMenuIndex = menus?.job.findIndex(x => x.text === 'More Menu');\r\n if (moreMenuIndex !== undefined && moreMenuIndex !== -1) {\r\n setBackGroundSubMenuIndex = menus?.job[moreMenuIndex]?.items?.findIndex(x => x.link && currentUrl.includes(x.link.split('?')[0])) ?? -1;\r\n if (setBackGroundSubMenuIndex !== -1) {\r\n const menuItemKey = getMenuItemKey(`${operationState.sideMenu}`, `ifms-side-menu-${moreMenuIndex}`, setBackGroundSubMenuIndex);\r\n const findOpendSubMenu = document.getElementById(menuItemKey);\r\n if (findOpendSubMenu)\r\n findOpendSubMenu.className = `${selectedSubMenuClassName} parent-index${moreMenuIndex}`;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [menus, operationState.sideMenu, appContext.useDarkMode])\r\n\r\n useEffect(() => {\r\n subscribeChannels();\r\n\r\n // xcopy /s /r /y .\\build\\*.* ..\\api\\src\\iFms.Api\\frontend\\build\\\"\r\n // and run VS2022.\r\n // Open browser independently with url http://localhost:5000/index.html, then login page appears.\r\n // Start debugging here.\r\n broadcastChannel = new BroadcastChannel('ifms-openop-channel-' + appContext.user?.suntekId.toLowerCase() + '-' + appContext.user?.id?.toLowerCase());\r\n broadcastChannel.addEventListener('message', bcMessageHandler);\r\n //pt220314>\r\n\r\n // Back handler - don't allow it. Depend on the double push logic inside navigation helpers\r\n window.addEventListener(\"popstate\", e => {\r\n history.go(1);\r\n });\r\n\r\n // const newOperation = operationFactory(history.location.pathname, userLogin.user?.defaultOperation);\r\n const newOperation = 'Home';\r\n\r\n if (selectedOperation !== newOperation) {\r\n setSelectedOperation(operationFactory(newOperation));\r\n }\r\n\r\n window.addEventListener('mousemove', tooltipMonitor);\r\n\r\n if (appContext.logoutWorker) {\r\n appContext.logoutWorker.onmessage = function (event) {\r\n //console.log('logoutWorker.onmessage:', event.data);\r\n\r\n switch (event.data[0]) {\r\n case 'fireLogoutReaminTimer':\r\n //console.log('logoutWorker.onmessage:', event.data);\r\n setAutoLogoutCheck(true);\r\n\r\n appContext.logoutWorker?.postMessage(['getAutoLogoutRemainInit']);\r\n appContext.logoutWorker?.postMessage(['createInterval']);\r\n break;\r\n case 'setTimerId':\r\n //console.log('logoutWorker.onmessage:', event.data);\r\n appContext.logoutWorker?.postMessage(['clearTimeout', autoLogoutTimerId.current]);\r\n autoLogoutTimerId.current = event.data[1];\r\n break;\r\n case 'setAutoLogoutRemain':\r\n setAutoLogoutRemain(event.data[1]);\r\n break;\r\n case 'setRemainTimerId':\r\n //console.log('logoutWorker.onmessage:', event.data);\r\n autoLogoutRemainTimerId.current = event.data[1];\r\n break;\r\n }\r\n };\r\n }\r\n\r\n window.addEventListener('keydown', (e) => {\r\n globalDirtyMarkCleaner(e);\r\n appContext.logoutWorker?.postMessage(['setAutoLogoutTimer', autoLogoutTimerId.current]);\r\n });\r\n window.addEventListener('click', (e) => {\r\n appContext.logoutWorker?.postMessage(['setAutoLogoutTimer', autoLogoutTimerId.current]);\r\n });\r\n\r\n if (!initialized) { //fire once.\r\n appContext.logoutWorker?.postMessage(['getAutoLogoutRemainInit']);\r\n appContext.logoutWorker?.postMessage(['setAutoLogoutTimer', autoLogoutTimerId.current]);\r\n }\r\n\r\n return unsubscribeAll;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n \r\n function useInterval(callback:() => void, delay: any) {\r\n const savedCallback = useRef<(() => void) | null>(null);\r\n useEffect(() => {\r\n savedCallback.current = callback;\r\n }, [callback]);\r\n\r\n useEffect(() => {\r\n function tick() {\r\n if (savedCallback.current) {\r\n savedCallback.current();\r\n }\r\n }\r\n if (delay !== null) {\r\n let id = setInterval(tick, delay);\r\n return () => clearInterval(id);\r\n }\r\n }, [delay]);\r\n}\r\n\r\n useEffect(() => {\r\n if (selectedOperation === null) {\r\n // Initial setup\r\n // setInitialized(true);\r\n return;\r\n }\r\n\r\n if (!initialized) {\r\n setInitialized(true);\r\n redirectToUserDefaultUrl();\r\n return;\r\n }\r\n\r\n // const currentUrl = `${history.location.pathname}${history.location.search}`;\r\n // const operationKey = getOperationKey(selectedOperation);\r\n\r\n // if (!operationKey) {\r\n // return;\r\n // }\r\n\r\n // let currentScreenUrlForOperation = _.last(screenStack[operationKey]);\r\n\r\n // if(history.location.search?.indexOf('parentOp') > -1){\r\n // currentScreenUrlForOperation = _.last([...screenStack[operationKey], \r\n // ...screenStack.accounting, \r\n // ...screenStack.oceanExport, \r\n // ...screenStack.airExport]);\r\n // }\r\n\r\n // if (currentScreenUrlForOperation && !stringsEqualIgnoreCase(currentUrl, currentScreenUrlForOperation.url)) {\r\n // openNewPage(history, currentScreenUrlForOperation.url, NavigationType.newPage);\r\n // } \r\n // else {\r\n // const specialOperations = ['Other Shipment', 'Customer List', 'Standalone'];\r\n // if (specialOperations.every(x => x !== selectedOperation)) {\r\n // // Show operation home scren\r\n // openNewPage(history, '/home/home', NavigationType.newPage);\r\n // }\r\n // }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [selectedOperation]);\r\n\r\n useInterval(() => {\r\n appContext.setUseCheckReminder(!appContext.useCheckReminder);\r\n },_isRunning.current ? TaskReminderTimer: null);\r\n\r\n useEffect(() => {\r\n const getTime = async () => {\r\n appContext.setAppInfoAreaContent(appContext.appInfoAreaContent);\r\n await getReminderTime();\r\n\r\n if(appContext.systemSettings?.reminderStatus === 'R'){\r\n setShowMainPop(true);\r\n }\r\n if(appContext.systemSettings?.reminderDueTime !== ''){\r\n _isRunning.current = true;\r\n } else {\r\n _isRunning.current = false;\r\n }\r\n };\r\n getTime();\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [appContext.useCheckReminder ]);\r\n\r\n useEffect(() => {\r\n if (!showMainPop) {\r\n setTimeout(() => {\r\n if(appContext.myMemoTaskReminder){\r\n const editButton = document.getElementById('memo-log-edit-button');\r\n if (editButton) {\r\n editButton.click();\r\n }\r\n }\r\n }, 2000);\r\n }\r\n }, [showMainPop]);\r\n\r\n useEffect(() => {\r\n if (focusEleAfterModalOkBtnClick) {\r\n setTimeout(() => {\r\n if (getCurrentTabableIndex(document.activeElement) < 0) {\r\n (focusEleAfterModalOkBtnClick as HTMLElement).focus()\r\n }\r\n setFocusEleAfterModalOkBtnClick(null);\r\n }, 200);\r\n }\r\n }, [focusEleAfterModalOkBtnClick])\r\n\r\n //operation side menu\r\n if (menus && menus.job) {\r\n // securityTaskCode filter\r\n menus.job = MenuFilterGrents(menus.job, grents, appContext);\r\n\r\n if(menus.download) {\r\n // securityTaskCode filter\r\n menus.download = MenuFilterGrents(menus.download, grents, appContext);\r\n\r\n // const ediIndex = menus.download.findIndex(x => x.text === 'EDI');\r\n // if (ediIndex >= 0 && !appContext.suntekSettings?.edi?.ediForFS3) {\r\n // if (menus.download[ediIndex].items) {\r\n // menus.download[ediIndex].items = menus.download[ediIndex].items?.filter(x => x.text !== 'FS3.0 EDI');\r\n // }\r\n // }\r\n\r\n // if (ediIndex >= 0 && !appContext.suntekSettings?.edi?.ediblSuntekCustoms) {\r\n // if (menus.download[ediIndex].items) {\r\n // menus.download[ediIndex].items = menus.download[ediIndex].items?.filter(x => x.text !== 'B/L from Oversea Partner');\r\n // }\r\n // }\r\n\r\n // if ((menus.download[ediIndex]?.items?? []).length <= 0) {\r\n // menus.download.splice(ediIndex, 1);\r\n // }\r\n\r\n const ediForFS3Index = menus.download.findIndex(x => x.text === 'FS3.0 EDI');\r\n if (ediForFS3Index >= 0 && !appContext.suntekSettings?.edi?.ediForFS3)\r\n menus.download.splice(ediForFS3Index, 1);\r\n\r\n const ediblSuntekCustomsIndex = menus.download.findIndex(x => x.text === 'B/L from Oversea Partner');\r\n if (ediblSuntekCustomsIndex >= 0 && !appContext.suntekSettings?.edi?.ediblSuntekCustoms)\r\n menus.download.splice(ediblSuntekCustomsIndex, 1);\r\n }\r\n\r\n const moreMenuInjectBottom = menus?.moreMenuLocation === 'bottom';\r\n if (menus.moreMenu) {\r\n let moreMenuList = menus.moreMenu.filter(x => CheckMoreMenuJobName(x.moreMenuJobName) || (moreMenuInjectBottom && x.level == 0) );\r\n moreMenuList?.forEach(x => x.metadata = {\r\n ...x.metadata,\r\n operationMode: opendOperationData?.jobParams?.mode\r\n })\r\n if (!moreMenuInjectBottom) {\r\n moreMenuList?.sort((a, b) => {\r\n const textA = String(a.text).toUpperCase();\r\n const textB = String(b.text).toUpperCase();\r\n return textA.localeCompare(textB);\r\n });\r\n }\r\n\r\n if (moreMenuList && moreMenuList.length > 0) { \r\n switch (menus?.operation) {\r\n case 'Ocean Import':\r\n if (CheckMoreMenuJobName(JobNames.OIMbl)) {\r\n const menuIndex = moreMenuList.findIndex(x => x.text === 'CFS Manifest');\r\n if (!appContext.suntekSettings?.edi?.ediForStGeorgeWarehouse)\r\n moreMenuList.splice(menuIndex, 1);\r\n }\r\n else if (currentUrl === storageKeyMap.get(JobNames.OIHbl) || history.location.search.includes(`jobname=${JobNames.OIHbl}`)) {\r\n let menuIndex = moreMenuList.findIndex(x => x.text === 'CFS Release');\r\n if (!appContext.suntekSettings?.edi?.ediForStGeorgeWarehouse)\r\n moreMenuList.splice(menuIndex, 1);\r\n\r\n menuIndex = moreMenuList.findIndex(x => x.text === 'Arrival Notice' && x.link !== null);\r\n if (!systemSettings?.bl?.changeTitleInAnMenu)\r\n moreMenuList.splice(menuIndex, 1);\r\n else\r\n moreMenuList.splice(menuIndex + 1, 1);\r\n }\r\n break;\r\n case 'Ocean Export':\r\n if (currentUrl === storageKeyMap.get(JobNames.OEMbl) || history.location.search.includes(`jobname=${JobNames.OEMbl}`)) {\r\n // <250205.dwshin. releated pims. remove menu.>\r\n // let menuIndex = moreMenuList.findIndex(x => x.text === 'Carrier Shipping Instruction');\r\n // if (!appContext.suntekSettings?.edi?.ediForCarrier)\r\n // moreMenuList.splice(menuIndex, 1);\r\n\r\n let menuIndex = moreMenuList.findIndex(x => x.text === 'Send B/L to Partner');\r\n if (!appContext.suntekSettings?.edi?.ediblSuntekCustoms)\r\n moreMenuList.splice(menuIndex, 1);\r\n }\r\n break;\r\n case 'Air Import':\r\n if (currentUrl === storageKeyMap.get(JobNames.AIHbl) || history.location.search.includes(`jobname=${JobNames.AIHbl}`)) {\r\n const menuIndexArr = moreMenuList.findIndex(x => x.text === 'Arrival Notice' && x.link !== null);\r\n if (!systemSettings?.bl?.changeTitleInAnMenu)\r\n moreMenuList.splice(menuIndexArr, 1);\r\n else\r\n moreMenuList.splice(menuIndexArr + 1, 1);\r\n }\r\n break;\r\n case 'Billings':\r\n if (currentUrl === storageKeyMap.get(JobNames.GInvo) || history.location.search.includes(`jobname=${JobNames.GInvo}`)) {\r\n let menuIndex = moreMenuList.findIndex(x => x.text === 'Auto Billing');\r\n\r\n let suntekId = appContext.suntekSettings?.company?.companyId?.toUpperCase() ?? '';\r\n\r\n if (suntekId != 'FSSUNTEK')\r\n moreMenuList.splice(menuIndex, 1);\r\n }\r\n \r\n if (!appContext.suntekSettings?.general?.allowViewJournalBillings && !(appContext.user?.id??'').startsWith('@')) {\r\n moreMenuList = moreMenuList.filter(x => x.text !== constants.List_Journal);\r\n }\r\n\r\n break;\r\n }\r\n\r\n if (moreMenuList.length > 0) {\r\n let findOpendSideMenuIndex = menus?.job.findIndex(x => x.link?.includes(currentUrl)) ?? -1;\r\n\r\n // <250325 jhlee - Other Shipment의 경우만 특정 메뉴에 More Menu를 추가하도록 처리 />\r\n if (menus?.operation === constants.operations.otherShipment) {\r\n findOpendSideMenuIndex = menus?.job.findIndex(x => x.moreMenuJobName === JobNames.OtherOP) ?? -1;\r\n }\r\n \r\n if(moreMenuInjectBottom){\r\n menus?.job.splice(menus?.job.length + 1, 0, ...moreMenuList);\r\n menus.moreMenu = []; \r\n }else if (findOpendSideMenuIndex !== -1) {\r\n menus?.job.splice(findOpendSideMenuIndex + 1, 0, { text: 'More Menu', level: 0, items: moreMenuList, metadata: { hideMenu: true } })\r\n menus.moreMenu = []; // clear more menus\r\n }\r\n else if (currentUrl.includes('jobname=')) {\r\n const jobName = GetMoreMenuJobName(currentUrl);\r\n const findParentMenuIndex = menus?.job.findIndex(x => x.moreMenuJobName?.includes(jobName)) ?? -1;\r\n if (findParentMenuIndex !== -1) {\r\n menus?.job.splice(findParentMenuIndex + 1, 0, { text: 'More Menu', level: 0, items: moreMenuList, metadata: { hideMenu: true } })\r\n menus.moreMenu = []; // clear more menus\r\n }\r\n } else if (opendOperationData?.jobName) {\r\n const findOpendDetailMenuIndex = menus?.job.findIndex(x => x.moreMenuJobName === opendOperationData?.jobName);\r\n menus?.job.splice(findOpendDetailMenuIndex + 1, 0, { text: 'More Menu', level: 0, items: moreMenuList, metadata: { hideMenu: true } })\r\n menus.moreMenu = []; // clear more menus\r\n }\r\n }\r\n }\r\n else\r\n menus.moreMenu.splice(0, menus.moreMenu.length);\r\n }\r\n\r\n // securityTaskCode filter\r\n if(menus.moreMenu && menus.moreMenu.length > 0) menus.moreMenu = MenuFilterGrents(menus.moreMenu, grents, appContext);\r\n if(menus.operationReport && menus.operationReport.length > 0) menus.operationReport = MenuFilterGrents(menus.operationReport, grents, appContext);\r\n if(menus.preReport && menus.preReport.length > 0) menus.preReport = MenuFilterGrents(menus.preReport, grents, appContext);\r\n if(menus.report && menus.report.length > 0) menus.report = MenuFilterGrents(menus.report, grents, appContext);\r\n if(menus.afterReport && menus.afterReport.length > 0) menus.afterReport = MenuFilterGrents(menus.afterReport, grents, appContext);\r\n \r\n // if(operationState.sideMenu==='Utility'){\r\n // if(activeUrlRef.current.includes('utMemotask')){\r\n // menus.job = menus.job.filter(x => x.text === 'Attached File List')\r\n // }\r\n // else if(activeUrlRef.current.includes('utAttachedfile')){\r\n // menus.job = menus.job.filter(x => x.text === 'Memo/Task List')\r\n // }\r\n // else if(activeUrlRef.current.includes('utEmail')){\r\n // menus.job = menus.job.filter(x => x.text !== 'Email Log List' && x.text?.toString().includes('Log'))\r\n // }\r\n // else if(activeUrlRef.current.includes('utPrint')){\r\n // menus.job = menus.job.filter(x => x.text !== 'Print Log List' && x.text?.toString().includes('Log'))\r\n // }\r\n // else if(activeUrlRef.current.includes('utFax')){\r\n // menus.job = menus.job.filter(x => x.text !== 'Fax Log List' && x.text?.toString().includes('Log'))\r\n // }\r\n // }\r\n\r\n if (menus.operation === constants.operations.utility) {\r\n menus.job =\r\n menus.job.map(job => {\r\n const tempData = String(job.text).includes('B/L Activity Status');\r\n if (tempData) {\r\n if (String(job.text).includes('OIH')) {\r\n job.text = appContext.systemSettings?.showMilestoneInOihList ? 'OIH B/L Activity Status Off' : 'OIH B/L Activity Status On'\r\n } else {\r\n job.text = appContext.systemSettings?.showMilestoneInAihList ? 'AIH B/L Activity Status Off' : 'AIH B/L Activity Status On'\r\n }\r\n }\r\n return { ...job };\r\n });\r\n }\r\n\r\n // 250203 jhchoi : #1895 - Payroll (Old) 데이터가 있는 경우에만 Payroll(Old) Menu를 표시(notShowOldPayroll 값은 Fix Query를 통해 설정된다.)\r\n if (menus.operation === constants.operations.accounting) {\r\n const notShowOldPayroll = appContext.suntekSettings?.general?.notShowOldPayroll?? false;\r\n if (notShowOldPayroll) menus.job = menus.job.filter(x => x.text !== 'Payroll (Old)'); \r\n }\r\n }\r\n\r\n function unsubscribeAll() {\r\n unsubscribeChannels();\r\n\r\n //\r\n if(broadcastChannel) {\r\n broadcastChannel.removeEventListener('message', bcMessageHandler);\r\n broadcastChannel.close();\r\n }\r\n\r\n window.removeEventListener('mousemove', tooltipMonitor);\r\n window.removeEventListener('keydown', (e) => {\r\n globalDirtyMarkCleaner(e);\r\n appContext.logoutWorker?.postMessage(['setAutoLogoutTimer', autoLogoutTimerId.current//, autoLogoutReaminTimerId.current\r\n ]);\r\n });\r\n window.removeEventListener('click', (e) => {\r\n appContext.logoutWorker?.postMessage(['setAutoLogoutTimer', autoLogoutTimerId.current//, autoLogoutReaminTimerId.current\r\n ]);\r\n });\r\n\r\n appContext.logoutWorker?.terminate();\r\n\r\n }\r\n\r\n function subscribeChannels() {\r\n navigationSubscription = postal.subscribe({\r\n channel: 'ifms-navigation',\r\n topic: 'ifms-navigation.urlChange',\r\n callback: link => {\r\n if (activeUrlRef.current !== link) {\r\n activeUrlRef.current = link;\r\n const ish = defaultUrls.includes(link);\r\n if (isHomeRef.current !== ish) {\r\n isHomeRef.current = ish;\r\n setIsHome(ish);\r\n }\r\n }\r\n }\r\n });\r\n ajaxErrorSubscription = postal.subscribe({\r\n channel: 'ajax',\r\n topic: 'ajax.error',\r\n callback: error => onApiError(error)\r\n });\r\n ajaxStartSubscription = postal.subscribe({\r\n channel: 'ajax',\r\n topic: 'ajax.start',\r\n callback: () => setApiLoading(true)\r\n });\r\n ajaxEndSubscription = postal.subscribe({\r\n channel: 'ajax',\r\n topic: 'ajax.end',\r\n callback: () => setApiLoading(false)\r\n });\r\n loadingStartSubscription = postal.subscribe({\r\n channel: 'ajax',\r\n topic: 'ajax.loadingstart',\r\n callback: () => setApiLoadingMessage(true)\r\n });\r\n loadingEndSubscription = postal.subscribe({\r\n channel: 'ajax',\r\n topic: 'ajax.loadingend',\r\n callback: () => setApiLoadingMessage(false)\r\n });\r\n viewReportSubscription = postal.subscribe({\r\n channel: 'report',\r\n topic: 'report.view',\r\n callback: ({reportId, opType, jwt}) => {\r\n //\r\n }\r\n });\r\n // move to login page //<240221.dwshin>\r\n movetologinSubscription = postal.subscribe({\r\n channel: 'ajax',\r\n topic: 'ajax.movetologin',\r\n callback: () => moveToLoginPage()\r\n });\r\n }\r\n\r\n function unsubscribeChannels() {\r\n if (navigationSubscription) {\r\n postal.unsubscribe(navigationSubscription);\r\n }\r\n if (ajaxErrorSubscription) {\r\n postal.unsubscribe(ajaxErrorSubscription);\r\n }\r\n if (ajaxStartSubscription) {\r\n postal.unsubscribe(ajaxStartSubscription);\r\n }\r\n if (ajaxEndSubscription) {\r\n postal.unsubscribe(ajaxEndSubscription);\r\n }\r\n if (loadingStartSubscription) {\r\n postal.unsubscribe(loadingStartSubscription);\r\n }\r\n if (loadingEndSubscription) {\r\n postal.unsubscribe(loadingEndSubscription);\r\n }\r\n if (viewReportSubscription) {\r\n postal.unsubscribe(viewReportSubscription);\r\n }\r\n if (tableEditSubscription) {\r\n postal.unsubscribe(tableEditSubscription);\r\n }\r\n if (movetologinSubscription) {\r\n postal.unsubscribe(movetologinSubscription);\r\n }\r\n }\r\n\r\n function redirectToUserDefaultUrl() {\r\n if (!userLogin.user) {\r\n return;\r\n }\r\n\r\n // const user = userLogin.user;\r\n\r\n // if (user.defaultOperation === constants.operations.oceanExport) {\r\n // defaultUrl = '/oceanExport/home';\r\n // }\r\n // if (user.defaultOperation === constants.operations.airImport) {\r\n // defaultUrl = '/airExport/home';\r\n // }\r\n // if (user.defaultOperation === constants.operations.airExport) {\r\n // defaultUrl = '/airExport/home';\r\n // }\r\n // if (user.defaultOperation === constants.operations.otherShipment) {\r\n // defaultUrl = '/otherShipment/home';\r\n // }\r\n // if (user.defaultOperation === constants.operations.warehousing) {\r\n // defaultUrl = '/warehousing/home';\r\n // }\r\n // if (user.defaultOperation === constants.operations.accounting) {\r\n // defaultUrl = '/accounting/home';\r\n // }\r\n\r\n\r\n if (userLogin.user.moveToAutoLogin) {\r\n moveToAotherPage(userLogin.user.moveToAutoLogin);\r\n }else if (currentUrl !== '/home/home') {\r\n openNewPage(history, '/home/home', NavigationType.newPage);\r\n }\r\n }\r\n\r\n function moveToAotherPage(info: string){\r\n\r\n const moveInfo = info.split(';');\r\n // type=detail;url=url // array 2\r\n // type=list;url=url;searchinfo=info // array 3\r\n \r\n \r\n // type detail\r\n if (moveInfo?.length > 1) {\r\n var type = moveInfo[0].replace('type=', '');\r\n\r\n switch (type) {\r\n case 'detail':\r\n var url = moveInfo[1].replace('url=', '');\r\n window.name = `ifmssub-hblinfo-${url}-${appContext.user?.suntekId?.toLowerCase()}-${appContext.user?.id?.toLowerCase()}`;\r\n openNewPage(history, url, NavigationType.newPage);\r\n\r\n break;\r\n // case 'list':\r\n // var url = moveInfo[1].replace('url=', '');\r\n // //console.log(`url`, url);\r\n // eval(url);\r\n // break;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n function globalDirtyMarkCleaner(e:KeyboardEvent) {\r\n const element = e.target;\r\n if (element && element instanceof HTMLElement ) {\r\n const validationFor = element?.dataset?.validationfor;\r\n if (validationFor) {\r\n const dirtyElementsForProperty = document.querySelectorAll(`[data-validationfor=\"${validationFor}\"]`);\r\n for (let i = 0; i < dirtyElementsForProperty.length; ++i) {\r\n dirtyElementsForProperty[i].classList.remove('ifms-validation-error');\r\n }\r\n }\r\n\r\n element.classList.remove('ifms-validation-error');\r\n }\r\n }\r\n\r\n function isHTMLElement(element: Element): element is HTMLElement {\r\n return 'className' in element && (typeof element.className === 'string');\r\n }\r\n\r\n function tooltipMonitor(e:MouseEvent) {\r\n const hoverElements = document.elementsFromPoint(e.clientX, e.clientY);\r\n\r\n const hasHeaderFilterModal = hoverElements.some(element => isHTMLElement(element) && element.className.includes(\"header-filter-modal\"));\r\n\r\n if(hasHeaderFilterModal) {\r\n deleteAllTooltipsFromDom();\r\n return;\r\n }\r\n\r\n if (!hoverElements || hoverElements.length <= 0) {\r\n if (tooltipElement) {\r\n tooltipElement = null;\r\n processTooltip();\r\n }\r\n return;\r\n }\r\n\r\n for (let i = 0; i < hoverElements.length; ++i) {\r\n const el = hoverElements[i];\r\n if (!(el instanceof HTMLElement || el instanceof SVGElement)) {\r\n continue;\r\n }\r\n if (el.dataset.tooltip) {\r\n if (el === tooltipElement) {\r\n return;\r\n }\r\n\r\n tooltipElement = el;\r\n processTooltip();\r\n return;\r\n }\r\n }\r\n\r\n if (tooltipElement) {\r\n tooltipElement = null;\r\n processTooltip();\r\n }\r\n }\r\n\r\n function processTooltip() {\r\n const isBlank = (str:string|null|undefined) => (!str || /^\\s*$/.test(str));\r\n\r\n if (tooltipElement) {\r\n if (!!tooltipElement.dataset.tooltipOnlywhencutoff) {\r\n if (tooltipElement.scrollWidth <= tooltipElement.clientWidth) {\r\n deleteAllTooltipsFromDom();\r\n return;\r\n }\r\n }\r\n let tooltipText = tooltipElement.dataset.tooltip;\r\n if (tooltipText === '-from-value' && !(tooltipElement instanceof SVGElement)) {\r\n const inputElement = tooltipElement as HTMLInputElement;\r\n if (inputElement.value) {\r\n if (inputElement.value.length > 200)\r\n tooltipText = inputElement.value.slice(0, 100) + '\\r\\n' + inputElement.value.slice(100, 200) + '\\r\\n' + inputElement.value.slice(200);\r\n else if (inputElement.value.length > 100)\r\n tooltipText = inputElement.value.slice(0, 100) + '\\r\\n' + inputElement.value.slice(100);\r\n else \r\n tooltipText = inputElement.value;\r\n } else {\r\n if (tooltipElement.innerText.length > 200)\r\n tooltipText = tooltipElement.innerText.slice(0, 100) + '\\r\\n' + tooltipElement.innerText.slice(100, 200) + '\\r\\n' + tooltipElement.innerText.slice(200);\r\n else if (tooltipElement.innerText.length > 100)\r\n tooltipText = tooltipElement.innerText.slice(0, 100) + '\\r\\n' + tooltipElement.innerText.slice(100);\r\n else\r\n tooltipText = tooltipElement.innerText;\r\n }\r\n }\r\n\r\n if (isBlank(tooltipText)) {\r\n deleteAllTooltipsFromDom();\r\n return;\r\n }\r\n\r\n let fragment : DocumentFragment = createFragment('');\r\n \r\n // const userButtonMenu = document.getElementsByClassName('ifms-custom-usermenu-plain');\r\n // if (userButtonMenu.length === 0)\r\n fragment = createFragment(`
    ${tooltipText}
    `);\r\n\r\n const firstChildNode = fragment.childNodes[0];\r\n if (!(firstChildNode instanceof HTMLElement)) {\r\n return;\r\n }\r\n \r\n const fragmentPosition = getTooltipPosition(firstChildNode);\r\n\r\n firstChildNode.style.left = `${fragmentPosition.left}px`;\r\n firstChildNode.style.top = `${fragmentPosition.top}px`;\r\n \r\n deleteAllTooltipsFromDom();\r\n document.body.appendChild(firstChildNode);\r\n\r\n // Tooltip 위치 보정 - Right 넘어갈 때\r\n if (firstChildNode.offsetWidth + fragmentPosition.left > document.body.offsetWidth) {\r\n firstChildNode.style.left = `${document.body.offsetWidth - firstChildNode.offsetWidth}px`\r\n //firstChildNode.style.left = `${document.body.offsetWidth - firstChildNode.offsetWidth - 5}px`\r\n }\r\n // Is special tooltip (INV, BIL, Consignee, Shipper...)\r\n if (tooltipElement.dataset.tooltipPosition === 'listview-cell') {\r\n const childInfo = firstChildNode.getBoundingClientRect()\r\n firstChildNode.style.top = `${childInfo.top - childInfo.height}px`;\r\n }\r\n } else {\r\n deleteAllTooltipsFromDom();\r\n }\r\n }\r\n\r\n function deleteAllTooltipsFromDom() {\r\n const visibleTooltips = document.querySelectorAll('.ifms-tooltip');\r\n if (visibleTooltips && visibleTooltips.length > 0) {\r\n for (let i = 0; i < visibleTooltips.length; ++i) {\r\n const t = visibleTooltips[i];\r\n if (t.parentElement) {\r\n t.parentElement.removeChild(t);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async function onApiError(error:any) {\r\n const color = error.errorType === 'warning' ? '#f7c82d' : '#bd3737';\r\n await showGlobalOkDialog(\r\n
    \r\n
    \r\n
    \r\n {error.errorTitle}\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async function purgeLocalStorage() {\r\n const keys = await localforage.keys();\r\n\r\n const toDelete:Array = [];\r\n keys.forEach(k => {\r\n if (k.startsWith('filter-')) {\r\n toDelete.push(k);\r\n }\r\n });\r\n\r\n for (let i = 0; i < toDelete.length; ++i) {\r\n await localforage.removeItem(toDelete[i]);\r\n }\r\n\r\n _.forOwn(fastStorage, (_, k) => {\r\n delete fastStorage[k];\r\n });\r\n }\r\n\r\n async function logoutUser(showLogoutAlert: boolean = true, authLogoff: boolean = true) {\r\n // Find are there any screens that should be closed on logout and prompt for confirmation\r\n function distinct(value:JobMenuItem, index:number, self:Array) {\r\n return self.findIndex(x => stringsEqualIgnoreCase(x.url, value.url)) === index;\r\n }\r\n\r\n // const jobMenuItemsToCloseOnLogout = [\r\n // ...jobMenu.oceanImport.filter(x => x.closeOnLogout),\r\n // ...jobMenu.oceanExport.filter(x => x.closeOnLogout),\r\n // ...jobMenu.airImport.filter(x => x.closeOnLogout),\r\n // ...jobMenu.airExport.filter(x => x.closeOnLogout),\r\n // ...jobMenu.otherShipment.filter(x => x.closeOnLogout),\r\n // ...jobMenu.accounting.filter(x => x.closeOnLogout),\r\n // ...jobMenu.warehousing.filter(x => x.closeOnLogout),\r\n // ].filter(distinct);\r\n\r\n // Implementation note:\r\n // Remove all screens on logout, not just children, but leave the code in case it needs to be turned back on\r\n const allJobMenuItemsToCloseOnLogout = [\r\n ...jobMenu.home,\r\n ...jobMenu.oceanImport,\r\n ...jobMenu.oceanExport,\r\n ...jobMenu.airImport,\r\n ...jobMenu.airExport,\r\n ...jobMenu.otherShipment,\r\n ...jobMenu.whReceipt,\r\n ...jobMenu.accounting,\r\n ...jobMenu.warehousing,\r\n ...jobMenu.opReport,\r\n ...jobMenu.customer,\r\n ...jobMenu.standalone,\r\n ...jobMenu.utility,\r\n ...jobMenu.billings\r\n ].filter(x => !stringsEqualIgnoreCase('Home', x.label)).filter(distinct);\r\n\r\n let doLogout = true;\r\n\r\n if (showLogoutAlert && allJobMenuItemsToCloseOnLogout.length > 0) {\r\n doLogout = await showGlobalDialog(\r\n
    \r\n

    Are you sure you want to logout?

    \r\n\r\n {/* There are opened screens:\r\n
    \r\n
    \r\n {allJobMenuItemsToCloseOnLogout.map((x, i) => (\r\n
  • {x.label}
  • \r\n ))} */}\r\n
    \r\n );\r\n }\r\n\r\n if (doLogout) {\r\n if(authLogoff && (process.env.NODE_ENV === 'production')){\r\n // authentication service logoff call\r\n await appContext.api.authenticateLogoff();\r\n }\r\n await purgeLocalStorage();\r\n\r\n // report tab all close\r\n broadcastChannel?.postMessage({Target:'CloseWindow'});\r\n // clear logout timeout.\r\n appContext.logoutWorker?.postMessage(['clearTimeout', autoLogoutTimerId.current]);\r\n\r\n cleanupAll();\r\n\r\n dispatch(clearStorage());\r\n dispatch(clearOperation());\r\n dispatch(resetListScreenSettings());\r\n dispatch(logout());\r\n dispatch(clearLastSavedJobs());\r\n\r\n appContext.onLogout();\r\n\r\n history.push('/');\r\n }\r\n }\r\n\r\n async function moveToLoginPage(){\r\n let userId = appContext?.user?.id;\r\n\r\n await showGlobalOkDialog(\r\n
    \r\n

    Someone has logged in with the same ID{userId ? `(${userId})` : '' }\r\n
    So You are automatically logged out.

    \r\n
    \r\n );\r\n \r\n await logoutUser(false, false);\r\n }\r\n\r\n // Memo screen does not belong to any operation but must ensure OP menu from where\r\n // it was opened is displayed\r\n function prepareMemoListView(menuItem:IfmsConfigMenuItem) {\r\n if (!menuItem.link || !menuItem.metadata || !menuItem.metadata.op) {\r\n // Should never happen\r\n return;\r\n }\r\n\r\n const parts = menuItem.link.split('/');\r\n\r\n const requestingOperation = getOperationKey(menuItem.metadata.op);\r\n const viewIndex = parts[2];\r\n\r\n const hasViewIndex = memoStorage.hasViewIndex(viewIndex);\r\n\r\n if (hasViewIndex) {\r\n const openedOperation = getOperationKey(memoStorage.getViewIndex(viewIndex));\r\n\r\n if (!requestingOperation || !openedOperation) {\r\n // Should never happen\r\n return;\r\n }\r\n\r\n if (openedOperation === requestingOperation) {\r\n return;\r\n }\r\n\r\n // Replace screen under different operation before opening\r\n\r\n dispatch(moveJobToOperation({\r\n destinationOperation: requestingOperation,\r\n sourceOperation: openedOperation,\r\n url: menuItem.link,\r\n }));\r\n dispatch(moveScreenToOperation({\r\n destinationOperation: requestingOperation,\r\n sourceOperation: openedOperation,\r\n url: menuItem.link,\r\n }));\r\n dispatch(changeOperation(menuItem.metadata.op));\r\n dispatch(changeSideMenu(menuItem.metadata.op));\r\n\r\n memoStorage.deleteViewIndex(viewIndex);\r\n }\r\n }\r\n\r\n //for HelpButton\r\n async function openESupportPage() {\r\n const openURL: string = await appContext.api.getESupportURL(fmsGlobal.AcmeID)\r\n window.open(openURL);\r\n }\r\n\r\n //for HelpButton\r\n async function checkFileServer() {\r\n const apiResult2: ApiResult = await appContext.api.checkfileserver();\r\n if (apiResult2 && apiResult2.success)\r\n await showGlobalOkDialog(

    File Server is working!

    );\r\n else\r\n await showGlobalOkDialog(

    File Server is not working!

    );\r\n }\r\n\r\n //for HelpButton\r\n async function setMilestoneOption(jobName: string) {\r\n let msg = '';\r\n if (jobName === 'OIH') {\r\n if (hasOpenedScreenStartingWithUrl('/common/joblistview/hbl/oceanImport')) {\r\n await showGlobalOkDialog(

    Please close HBL List (OI)

    );\r\n return;\r\n }\r\n let sqlInfos: SQLInfo[] = [];\r\n sqlInfos.push(new SQLInfo({\r\n tableName: \"T_SETTINGS\",\r\n type: SQLType.Update,\r\n fields:[\r\n new SQLField({fieldName: \"F_Value\", propertyName:'showMilestoneInOihList',value: !appContext.systemSettings?.showMilestoneInOihList})\r\n ],\r\n whereFields:[\r\n new SQLField({fieldName:\"F_Name\", propertyName:'', value:'ShowMilestoneInOihList'})\r\n ]\r\n }))\r\n\r\n const apiResult: ApiResult = await appContext.api.saveJobDetail(JobNames.SystemSetup,\r\n sqlInfos,\r\n {});\r\n\r\n if(apiResult && apiResult.success){\r\n appContext.setSystemSettings({\r\n ...appContext.systemSettings,\r\n showMilestoneInOihList: !appContext.systemSettings?.showMilestoneInOihList,\r\n });\r\n\r\n msg = appContext.systemSettings?.showMilestoneInOihList ? 'OIH B/L Activity Status Off' : 'OIH B/L Activity Status On'\r\n await showGlobalOkDialog(

    {msg}

    );\r\n } \r\n }\r\n else {\r\n if (hasOpenedScreenStartingWithUrl('/common/joblistview/aiHawb/airImport')) {\r\n await showGlobalOkDialog(

    Please close HAWB List (AI)

    );\r\n return;\r\n }\r\n \r\n let sqlInfos: SQLInfo[] = [];\r\n sqlInfos.push(new SQLInfo({\r\n tableName: \"T_SETTINGS\",\r\n type: SQLType.Update,\r\n fields:[\r\n new SQLField({fieldName: \"F_Value\", propertyName:'showMilestoneInAihList', value: !appContext.systemSettings?.showMilestoneInAihList})\r\n ],\r\n whereFields:[\r\n new SQLField({fieldName:\"F_Name\", propertyName:'', value:'ShowMilestoneInAihList'})\r\n ]\r\n }))\r\n const apiResult: ApiResult = await appContext.api.saveJobDetail(JobNames.SystemSetup,\r\n sqlInfos,\r\n {});\r\n\r\n if(apiResult && apiResult.success){\r\n appContext.setSystemSettings({\r\n ...appContext.systemSettings,\r\n showMilestoneInAihList: !appContext.systemSettings?.showMilestoneInAihList,\r\n });\r\n msg = appContext.systemSettings?.showMilestoneInAihList ? 'AIH B/L Activity Status Off' : 'AIH B/L Activity Status On'\r\n await showGlobalOkDialog(

    {msg}

    );\r\n }\r\n }\r\n }\r\n\r\n async function checkStandaloneDirty() {\r\n if(selectedOperation !== 'Standalone') return;\r\n\r\n if (fastStorage['ifms-settings-haschanges']) {\r\n const doSave = await showGlobalYesNoDialog(\r\n
    \r\n There are unsaved changes. Do you want to save?\r\n
    \r\n ,false, 1, true, 'info');\r\n\r\n const externalFunctions = getExternalFunctions();\r\n if (doSave) {\r\n await externalFunctions.ifmsSettingsSave();\r\n } else {\r\n await externalFunctions.ifmsSettingsCancel();\r\n }\r\n }\r\n else if (fastStorage['ifms-referenceFiles-haschanges']) {\r\n const doSave = await showGlobalYesNoDialog(\r\n
    \r\n There are unsaved changes. Do you want to save?\r\n
    \r\n ,false, 1, true, 'info');\r\n\r\n const externalFunctions = getExternalFunctions();\r\n if (doSave) {\r\n await externalFunctions.ifmsReferenceFilesSave();\r\n } else {\r\n await externalFunctions.ifmsReferenceFilesCancel();\r\n }\r\n }\r\n }\r\n\r\n async function onMenuItemClicked(menuItem:IfmsConfigMenuItem) {\r\n if (menuItem.disable) return;\r\n\r\n if (menuItem.link && !menuItem.link.includes('http')) await checkStandaloneDirty();\r\n // if (menuItem.changeOperation) {\r\n // if (menuItem.changeOperation === selectedOperation) {\r\n // return;\r\n // } else {\r\n // dispatch(changeOperation(menuItem.changeOperation));\r\n // }\r\n // }\r\n if (menuItem.changeOperation) {\r\n if (menuItem.changeOperation !== selectedOperation) {\r\n dispatch(changeOperation(menuItem.changeOperation));\r\n }\r\n }\r\n if (menuItem.changeSideMenu) {\r\n if (menuItem.changeSideMenu !== operationState.sideMenu) {\r\n dispatch(changeSideMenu(menuItem.changeSideMenu));\r\n }\r\n }\r\n\r\n if (menuItem.name === 'amsFiling') {\r\n const apiResult = await appContext.api.getAmsLink();\r\n const isAmsEnable = appContext.suntekSettings?.compliance?.amsEnable;\r\n\r\n if (apiResult && apiResult.success) {\r\n if (isAmsEnable) {\r\n window.open('https://ams1.suntekscm.com/login_auto.aspx?' + apiResult.result);\r\n } else {\r\n window.open('https://ams1.suntekscm.com/login_2017.aspx'); \r\n }\r\n } \r\n }\r\n\r\n if (menuItem.name === 'isfFiling') {\r\n const apiResult = await appContext.api.getIsfLink();\r\n const isIsfEnable = appContext.suntekSettings?.compliance?.isfEnable;\r\n\r\n if (apiResult && apiResult.success) {\r\n if (isIsfEnable) {\r\n window.open('https://imanifest.suntekscm.com/Home/AutoLoginFms?args=' + apiResult.result);\r\n } else {\r\n window.open('https://imanifest.suntekscm.com/Home/Login');\r\n }\r\n }\r\n }\r\n\r\n if (!!menuItem.link) {\r\n // Special case scenario\r\n if (menuItem.link.startsWith('/memoList')) {\r\n prepareMemoListView(menuItem);\r\n }\r\n\r\n // if (menuItem.link.indexOf('/releaseOrderTurnover') > 0) {\r\n // if (fmsGlobal.NoRelease) {\r\n // showGlobalOkDialog('Contact Manager!');\r\n // return false;\r\n // }\r\n // }\r\n\r\n if (menuItem.link === history.location.pathname) {\r\n // The menu item clicked is the same screen we are on. In case it is a list screen, clear filters on that page\r\n filterChannel.publish('ifms-filter.forceclear');\r\n\r\n // Metadata could be changed. Make sure it is replaced. Both on screen stack and in job menu\r\n dispatch(replaceJobMenuMetadata({ url: menuItem.link, metadata: menuItem.metadata}));\r\n dispatch(replaceScreenStackMetadata({url: menuItem.link, metadata: menuItem.metadata}));\r\n }\r\n\r\n if (menuItem.link.indexOf('parentOp') > -1) {\r\n if (menuItem.link === history.location.pathname + history.location.search) {\r\n filterChannel.publish('ifms-filter.forceclear');\r\n }\r\n dispatch(replaceJobMenuParentOp({ url: menuItem.link }));\r\n dispatch(replaceScreenUrlParentOpOnStack({ url: menuItem.link, metadata: menuItem.metadata }));\r\n }\r\n\r\n if (menuItem.moreMenuJobName && menuItem.level !== 0) {\r\n // if (menuItem.moreMenuJobName && menuItem.level === 0) {\r\n //listSelectedId is Empty\r\n let lastSelectedId = document.getElementById('last-selectedId')?.innerText ?? '';\r\n let jobName = currentListJobName === JobNames.None ? getJobNamesByCurrentUrl(storageKeyMap, activeUrlRef.current) : currentListJobName;\r\n\r\n //Click moremenu in moremenu tab\r\n if (_.isEmpty(lastSelectedId)) {\r\n const params = history.location.search.replace('?', '').split('&');\r\n lastSelectedId = params.find(x => x.includes('id='))?.replace('id=', '') ?? '';\r\n jobName = params.find(x => x.includes('jobname='))?.replace('jobname=', '') as JobNames;\r\n\r\n //Click moremenu in operation detail tab\r\n if (_.isEmpty(lastSelectedId)) {\r\n jobName = opendOperationData?.jobName ?? JobNames.None\r\n //lastSelectedId = document.getElementById(`${opendOperationData?.jobName}-detailid`)?.innerText ?? ''\r\n lastSelectedId = opendOperationData?.jobParams.id ?? ''\r\n } \r\n }\r\n\r\n let link = menuItem.link.replace('@jobName', jobName).replace('@jobid', lastSelectedId);\r\n if (_.isEmpty(jobName) || _.isEmpty(lastSelectedId)) return;\r\n if (jobName === JobNames.OIHbl && menuItem.text === 'Cargo Status Query') {\r\n const oiMblId = document.getElementById('last-selectedOiMblId')?.innerText ?? '';\r\n link = link.replace('@oiMblId', oiMblId);\r\n }\r\n\r\n if (lastSelectedId === '0' && menuItem.moreMenuJobName === jobName) {\r\n await showGlobalOkDialog(

    Data is not select!

    );\r\n } else {\r\n openNewPage(history, link, NavigationType.newPage, menuItem.metadata);\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (menuItem.link?.includes('http'))\r\n window.open(menuItem.link);\r\n else\r\n openNewPage(history, menuItem.link, NavigationType.newPage, menuItem.metadata);\r\n }\r\n\r\n if(!!menuItem.popupComponent) {\r\n setSelectedPopupMenuItem(menuItem)\r\n }\r\n\r\n if(!!menuItem.subMenu || !!menuItem.subMenuNonReport) {\r\n setSelectedReportMenuItem(menuItem)\r\n } \r\n\r\n //Move to ifmsHelp.tsx\r\n //for HelpButton \r\n if (operationState.sideMenu === 'Utilities') {\r\n if (menuItem.text?.toString() === 'Check File Server')\r\n checkFileServer();\r\n else if (menuItem.text?.toString().includes('B/L Activity Status')) {\r\n menuItem.text.toString().includes('OIH') ? setMilestoneOption('OIH') : setMilestoneOption('AIH');\r\n }\r\n else if (menuItem.text?.toString() === 'eSupport') {\r\n openESupportPage();\r\n }\r\n }\r\n\r\n if (operationState.sideMenu === 'Accounting') {\r\n if (menuItem.text?.toString() === 'iXpense')\r\n return;\r\n //await showGlobalOkDialog(

    Please Contact Suntek to Activate

    );\r\n }\r\n }\r\n\r\n function getSelectedElement(model: any) {\r\n if (model) {\r\n if (listData && listData.length > 0) {\r\n return listData?.find((x: any) => String(x.id) === listSelectedId) as typeof model;\r\n }\r\n }\r\n else {\r\n //Click moremenu in moremenu tab\r\n const params = history.location.search.replace('?', '').split('&');\r\n let jobName = params.find(x => x.includes('jobname='))?.replace('jobname=', '') as JobNames;\r\n let jobId = params.find(x => x.includes('id='))?.replace('id=', '') ?? '';\r\n\r\n model = getListItemByJobName(jobName);\r\n\r\n if (!model) {//Click moremenu in operation detail tab\r\n jobName = opendOperationData?.jobName ?? JobNames.None;\r\n jobId = opendOperationData?.jobParams?.id ?? 0;\r\n model = getListItemByJobName(jobName);\r\n }\r\n\r\n const listData = fastStorage[`ifms-list-data-${storageKeyMap.get(jobName)}`]\r\n return listData?.find((x: any) => String(x.id) === jobId) as typeof model ?? model;\r\n }\r\n } \r\n\r\n async function onSubMenuClick (fmsSubMenu: FmsSubMenu, model: any, jobName: JobNames) {\r\n setSelectedReportMenuItem(null);\r\n if (!jobName) {\r\n jobName = opendOperationData?.jobName ?? JobNames.None;\r\n }\r\n\r\n const selectedElement = getSelectedElement(model);\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n\r\n let fullLink = '';\r\n let searchText = '';\r\n if (fmsSubMenu == FmsSubMenu.NewCustomerPay || fmsSubMenu == FmsSubMenu.NewBillPay) {\r\n //if(opendOperationData) return;\r\n\r\n let link = `/accounting/${fmsSubMenu == FmsSubMenu.NewCustomerPay ? 'acCustomerPayment' : 'acBillPayment'}/add`;\r\n switch (jobName) {\r\n case JobNames.OpInvoice:\r\n case JobNames.Invoice:\r\n case JobNames.GInvo:\r\n fullLink = `${link}/${selectedElement.invoiceTo}`;\r\n break;\r\n case JobNames.OpBill:\r\n case JobNames.Bill:\r\n case JobNames.GBill:\r\n fullLink = `${link}/${selectedElement.vendorId}`;\r\n break;\r\n case JobNames.OpCrDb:\r\n case JobNames.CrDb:\r\n fullLink = `${link}/${selectedElement.agentId}`;\r\n break;\r\n }\r\n\r\n moveToSingleOpenedScreenInAnyOperationStartingWithUrl(fullLink, [fullLink]);\r\n return;\r\n }\r\n\r\n if (fmsSubMenu == FmsSubMenu.CustomerPayList || fmsSubMenu == FmsSubMenu.BillPayList) {\r\n //if(opendOperationData) return;\r\n fullLink = `/common/joblistview/${fmsSubMenu == FmsSubMenu.CustomerPayList ? 'acCustomerPayment' : 'acBillPayment'}/accounting`;\r\n\r\n switch (jobName) {\r\n case JobNames.OpInvoice:\r\n case JobNames.Invoice:\r\n case JobNames.GInvo:\r\n searchText = selectedElement.invoiceNo;\r\n break;\r\n case JobNames.OpBill:\r\n case JobNames.Bill:\r\n case JobNames.GBill:\r\n searchText = selectedElement.billNo;\r\n break;\r\n case JobNames.OpCrDb:\r\n case JobNames.CrDb:\r\n searchText = selectedElement.crDbNo;\r\n break;\r\n }\r\n\r\n //setFilterForScreenExternally(fullLink, 'invoiceNo', 'Billings', searchText, 'updated', false, true, null);\r\n openNewPage(history, fullLink, NavigationType.newPage);\r\n return;\r\n }\r\n\r\n if (fmsSubMenu === FmsSubMenu.SwitchJournal) {\r\n //if(opendOperationData) return;\r\n switch (jobName) {\r\n case JobNames.OpInvoice:\r\n case JobNames.Invoice:\r\n switchJournal(JobNames.Invoice, selectedElement.id);\r\n break;\r\n case JobNames.GInvo:\r\n switchJournal(JobNames.GInvo, selectedElement.id);\r\n break;\r\n case JobNames.OpBill:\r\n case JobNames.Bill:\r\n switchJournal(JobNames.Bill, selectedElement.id);\r\n break;\r\n case JobNames.GBill:\r\n switchJournal(JobNames.GBill, selectedElement.id);\r\n break;\r\n case JobNames.OpCrDb:\r\n case JobNames.CrDb:\r\n switchJournal(JobNames.CrDb, selectedElement.id)\r\n\r\n break;\r\n } \r\n return;\r\n } \r\n\r\n // if (fmsSubMenu === FmsSubMenu.OpenHistoryView || fmsSubMenu === FmsSubMenu.OpenDeleteHistoryView) {\r\n // const viewAcctDeleteHistory = fmsSubMenu === FmsSubMenu.OpenDeleteHistoryView;\r\n // let width = 1200;\r\n\r\n // if (viewAcctDeleteHistory || [JobNames.OpBill, JobNames.Bill, JobNames.GBill].includes(jobName))\r\n // width = 920;\r\n\r\n // if (viewAcctDeleteHistory) width = 640;\r\n\r\n // let deleteTitle = \"\";\r\n // switch (jobName) {\r\n // case JobNames.Invoice: deleteTitle = \"Invoice\"; break;\r\n // case JobNames.Bill: deleteTitle = \"Bill\"; break;\r\n // case JobNames.CrDb: deleteTitle = \"CrDb\"; break;\r\n // case JobNames.GInvo: deleteTitle = \"G. Invoice\"; break;\r\n // case JobNames.GBill: deleteTitle = \"G. Bill\"; break;\r\n // }\r\n\r\n // setSelectedReportPopupMenuItem({ \r\n // label: fmsSubMenu === FmsSubMenu.OpenHistoryView ? 'View History' : 'Delete History (' + deleteTitle + ')',\r\n // popupWidth: width,\r\n // popupTop: fmsSubMenu === FmsSubMenu.OpenHistoryView ? 0 : 50,\r\n // popupComponent: ( setSelectedReportPopupMenuItem(null)} viewDeleteHistory={viewAcctDeleteHistory} />)\r\n // });\r\n // return;\r\n // }\r\n\r\n if (fmsSubMenu === FmsSubMenu.OpenHistoryView) {\r\n let width = 1200;\r\n\r\n if ([JobNames.OpBill, JobNames.Bill, JobNames.GBill].includes(jobName))\r\n width = 920;\r\n\r\n let deleteTitle = \"\";\r\n switch (jobName) {\r\n case JobNames.Invoice: deleteTitle = \"Invoice\"; break;\r\n case JobNames.Bill: deleteTitle = \"Bill\"; break;\r\n case JobNames.CrDb: deleteTitle = \"CrDb\"; break;\r\n case JobNames.GInvo: deleteTitle = \"G. Invoice\"; break;\r\n case JobNames.GBill: deleteTitle = \"G. Bill\"; break;\r\n }\r\n\r\n setSelectedReportPopupMenuItem({ \r\n label: `View History (${deleteTitle})`,\r\n popupWidth: width,\r\n popupTop: fmsSubMenu === FmsSubMenu.OpenHistoryView ? 0 : 50,\r\n popupComponent: ( setSelectedReportPopupMenuItem(null)} />)\r\n });\r\n return;\r\n }\r\n\r\n if (fmsSubMenu === FmsSubMenu.PrintBill) {\r\n setSelectedReportPopupMenuItem({\r\n label: 'Print Bill',\r\n popupWidth: 540,\r\n popupComponent: ( setSelectedReportPopupMenuItem(null)} />)\r\n });\r\n return;\r\n }\r\n\r\n if (fmsSubMenu === FmsSubMenu.BatchPrint) {\r\n setSelectedReportPopupMenuItem({\r\n label: 'Batch Print',\r\n popupWidth: 760,\r\n popupComponent: ( setSelectedReportPopupMenuItem(null)} />)\r\n });\r\n return;\r\n }\r\n\r\n if (fmsSubMenu == FmsSubMenu.ViewPaymenHistory) {\r\n\r\n let link = `/accounting/acPaymentHistoryView`;\r\n\r\n switch (jobName) {\r\n case JobNames.OpInvoice:\r\n case JobNames.Invoice:\r\n fullLink = `${link}/INVO/${selectedElement.id}?parentOp=billings`;\r\n break;\r\n case JobNames.OpBill:\r\n case JobNames.Bill:\r\n fullLink = `${link}/BILL/${selectedElement.id}?parentOp=billings`;\r\n break;\r\n case JobNames.OpCrDb:\r\n case JobNames.CrDb:\r\n fullLink = `${link}/CRDB/${selectedElement.id}?parentOp=billings`;\r\n break;\r\n case JobNames.GInvo:\r\n fullLink = `${link}/GINVE/${selectedElement.id}?parentOp=billings`;\r\n break;\r\n case JobNames.GBill:\r\n fullLink = `${link}/GBILE/${selectedElement.id}?parentOp=billings`;\r\n break;\r\n }\r\n\r\n moveToSingleOpenedScreenInAnyOperationStartingWithUrl(fullLink, [fullLink]);\r\n return;\r\n }\r\n \r\n if (fmsSubMenu === FmsSubMenu.AutoBillingView) {\r\n setSelectedReportPopupMenuItem({\r\n label: 'Auto Billing',\r\n popupWidth: 860,\r\n popupComponent: ( setSelectedReportPopupMenuItem(null)} />)\r\n });\r\n return;\r\n }\r\n\r\n // if (fmsSubMenu == FmsSubMenu.AutoBillingView) {\r\n // let link = `/accounting/acAutobilling?parentOp=billings`;\r\n // switch (jobName) {\r\n // case JobNames.GInvo:\r\n // fullLink = `${link}`;\r\n // break;\r\n // }\r\n\r\n // moveToSingleOpenedScreenInAnyOperationStartingWithUrl(fullLink, [fullLink]);\r\n // return;\r\n // }\r\n }\r\n\r\n async function onReportMenuClick(fmsSubMenu: FmsSubMenu, model: any, jobName: JobNames) {\r\n setSelectedReportMenuItem(null);\r\n if (fmsSubMenu === FmsSubMenu.IssueReady) {\r\n const args = await getSelectedSubMenuArgs(fmsSubMenu, JobNames.RptIssueReady, null, appContext, showGlobalYesNoDialog, showGlobalOkDialog);\r\n if (args) {\r\n viewReport(args, \"\", true);\r\n }\r\n return;\r\n }\r\n const selectedElement = getSelectedElement(model);\r\n if (!selectedElement) {\r\n return;\r\n }\r\n\r\n if (fmsSubMenu === FmsSubMenu.AesOcean || fmsSubMenu === FmsSubMenu.AesAir || fmsSubMenu === FmsSubMenu.AesOtherOP) {\r\n if (fmsSubMenu === FmsSubMenu.AesOcean) {\r\n if (!selectedElement.hblNo) {\r\n await showGlobalOkDialog(

    No Hbl Number exist!

    );\r\n return;\r\n }\r\n }\r\n else { \r\n if (fmsSubMenu !== FmsSubMenu.AesOtherOP) {\r\n if (!selectedElement.hawbNo) {\r\n await showGlobalOkDialog(

    No Hbl Number exist!

    );\r\n return;\r\n }\r\n }\r\n }\r\n if (!(getFmsGlobal().PimsID)) {\r\n await showGlobalOkDialog(

    CANNOT CONNECT DB SERVER!

    );\r\n return;\r\n }\r\n\r\n var apiResult = await appContext.api.getAesLink();\r\n\r\n if (apiResult && apiResult.success) {\r\n window.open('https://aes.suntekscm.com/home/loginrequest/' + apiResult.result);\r\n }\r\n return;\r\n }\r\n\r\n let tempJobName = jobName;\r\n if (!tempJobName) { //Click moremenu in moremenu tab\r\n const params = history.location.search.replace('?', '').split('&');\r\n tempJobName = params.find(x => x.includes('jobname='))?.replace('jobname=', '') as JobNames;\r\n if (!tempJobName) //Click moremenu in operation detail tab\r\n tempJobName = opendOperationData?.jobName ?? JobNames.None;;\r\n }\r\n\r\n const args = await getSelectedSubMenuArgs(fmsSubMenu, tempJobName, selectedElement, appContext, showGlobalYesNoDialog, showGlobalOkDialog);\r\n if (args) {\r\n viewReport(args, \"\", true);\r\n }\r\n }\r\n\r\n function closeGlobalOk() {\r\n if (globalOkDialog.resolve) {\r\n globalOkDialog.resolve();\r\n }\r\n dispatch(hideGlobalOkDialog());\r\n\r\n const currentCellSelection = document.querySelector('.data-cell-selected') as HTMLElement;\r\n if (currentCellSelection) {\r\n let parent: HTMLElement | null = currentCellSelection.parentElement;\r\n let tableId: string | null = null;\r\n let tableEle: HTMLElement | null = null;\r\n while (parent && !tableId) {\r\n if (parent.getAttribute('role') === 'table') {\r\n tableId = parent.id;\r\n tableEle = document.getElementById(tableId);\r\n break;\r\n }\r\n parent = parent.parentElement;\r\n }\r\n setFocusEleAfterModalOkBtnClick(tableEle);\r\n }\r\n else {\r\n const focusedElementIndexInStorage = fastStorage[`focusedEleIndexCurPageInStorage-${currentUrl}`];\r\n setFocusEleAfterModalOkBtnClick(getTabableElementByIndex(focusedElementIndexInStorage));\r\n }\r\n }\r\n\r\n function noMenus() {\r\n const hasJob = !!menus && !!menus.job && menus.job.length > 0;\r\n const hasDownload = !!menus && !!menus.download && menus.download.length > 0;\r\n const hasReport = !!menus && !!menus.report && menus.report.length > 0;\r\n const hasPreReport = !!menus && !!menus.preReport && menus.preReport.length > 0;\r\n const hasOperationReport = !!menus && !!menus.operationReport && menus.operationReport.length > 0;\r\n const hasMoreMenu = !!menus && !!menus.moreMenu && menus.moreMenu.length > 0;\r\n\r\n return !hasJob && !hasDownload && !hasReport && !hasPreReport && !hasOperationReport && !hasMoreMenu;\r\n }\r\n\r\n function getPopUpCompent(selectedPopupMenuItem: any, menuModel: any) {\r\n if (menuModel === undefined)\r\n return cloneElement(selectedPopupMenuItem.popupComponent!, { onPopupClose, updateSelectedPopupMenuItemWidth })\r\n else\r\n return cloneElement(selectedPopupMenuItem.popupComponent!, { onPopupClose, updateSelectedPopupMenuItemWidth, selectedElement: getSelectedElement(menuModel), selectedElementId: getSelectedElement(menuModel).id })\r\n }\r\n\r\n if (!initialized) {\r\n return null;\r\n }\r\n\r\n function CheckMoreMenuJobName(moreMenuJobName: JobNames | undefined) {\r\n return currentListJobName === moreMenuJobName //ListView\r\n || history.location.search.includes(`jobname=${moreMenuJobName}`) //Moremenu Tab\r\n || (opendOperationData?.jobName === moreMenuJobName) //Operation detail tab\r\n || moreMenuJobName === JobNames.OtherOP;\r\n }\r\n\r\n function GetMoreMenuJobName(currentUrl: string) {\r\n const jobNameIndex = currentUrl.indexOf('jobname=');\r\n if (currentUrl.includes('&')) return currentUrl.substring(jobNameIndex + 8, currentUrl.indexOf('&', jobNameIndex));\r\n else return currentUrl.substring(jobNameIndex + 8);\r\n // return currentListJobName === moreMenuJobName //ListView\r\n // || history.location.search.includes(`jobname=${moreMenuJobName}` ?? '') //Moremenu Tab\r\n // || (opendOperationData?.jobName === moreMenuJobName); //Operation detail tab\r\n }\r\n // const systemMenus = _.cloneDeep(config.systemMenus);\r\n // if (!systemSettings.enableBranch) {\r\n // if (systemMenus[0] && systemMenus[0].items && systemMenus[0].items[0]) {\r\n // const originalItems = systemMenus[0].items[0].items ?? [];\r\n // systemMenus[0].items[0].items = originalItems.filter(x => x.text !== 'Branch');\r\n // }\r\n // }\r\n\r\n const onPopupClose = () => {\r\n setSelectedPopupMenuItem(null);\r\n }\r\n \r\n const onReportPopupClose = () => {\r\n setSelectedReportPopupMenuItem(null);\r\n }\r\n\r\n const updateSelectedPopupMenuItemWidth = (popupWidth: number) => {\r\n setSelectedPopupMenuItem((item) => {\r\n if(item) {\r\n item.popupWidth = popupWidth;\r\n return {...item}\r\n }\r\n return null;\r\n })\r\n }\r\n\r\n const hasSideMenu = !!menus && !noMenus() && !isHome;\r\n //const emptySideMenu = menus?.operation === 'Freight Receipt';\r\n const emptySideMenu = '';\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n openNewPage(history, link, NavigationType.newPage)}\r\n logout={logoutUser}\r\n user={userLogin.user}\r\n showMainPop={showMainPop}\r\n setShowMainPop={setShowMainPop}\r\n />\r\n \r\n
    \r\n
    \r\n {hasSideMenu &&\r\n
    \r\n \r\n
    \r\n }\r\n {emptySideMenu &&\r\n
    \r\n
    \r\n
    \r\n {menus?.operation}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n }\r\n
    \r\n
    \r\n
    }>\r\n {routes}\r\n \r\n
    \r\n
    \r\n {/* {infoArea} */}\r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n {globalYesNoCancelDialog.content}\r\n
    \r\n {\r\n if (globalYesNoCancelDialog.resolve) {\r\n if (b === 'Yes') {\r\n globalYesNoCancelDialog.resolve(YesNoCancelResult.Yes);\r\n } else if (b === 'No') {\r\n globalYesNoCancelDialog.resolve(YesNoCancelResult.No);\r\n } else {\r\n globalYesNoCancelDialog.resolve(YesNoCancelResult.Cancel);\r\n }\r\n }\r\n dispatch(hideGlobalYesNoCancelDialog());\r\n }}\r\n defaultFocusIndex={2}\r\n />\r\n \r\n\r\n \r\n
    \r\n \r\n \"\" \r\n \"\" \r\n \r\n }\r\n right={
    \r\n {globalYesNoDialog.content}
    \r\n }\r\n />\r\n
    \r\n {\r\n if (globalYesNoDialog.resolve) {\r\n if (b === 'Yes') {\r\n globalYesNoDialog.resolve(true);\r\n } else {\r\n globalYesNoDialog.resolve(false);\r\n }\r\n }\r\n dispatch(hideGlobalYesNoDialog());\r\n }}\r\n //defaultFocusIndex={globalYesNoDialog.focusindex > 0 ? globalYesNoDialog.focusindex : 0}\r\n defaultFocusIndex={globalYesNoDialog.focusindex}\r\n addOr={globalYesNoDialog.addor}\r\n />\r\n \r\n \r\n
    \r\n \r\n \"\" \r\n \"\" \r\n \"\" \r\n
    \r\n }\r\n right={\r\n
    \r\n {globalOkDialog.content}\r\n
    \r\n }\r\n />\r\n
    \r\n {!globalOkDialog.hideOkButton &&\r\n \r\n }\r\n \r\n {apiLoading &&\r\n
    \r\n \r\n \r\n \r\n
    \r\n }\r\n {apiLoadingMessage &&\r\n \r\n
    \r\n The application is loading\r\n
    \r\n \r\n }\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {!!selectedPopupMenuItem ? (\r\n \r\n {getPopUpCompent(selectedPopupMenuItem, currentListItemModel)}\r\n )\r\n : null\r\n }\r\n\r\n {!!selectedReportMenuItem && selectedReportMenuItem.subMenu ?\r\n onReportMenuClick(selectedReportMenuItem.subMenu, currentListItemModel, currentListJobName)\r\n : null\r\n }\r\n\r\n \r\n {!!selectedReportMenuItem && selectedReportMenuItem.subMenuNonReport ?\r\n onSubMenuClick(selectedReportMenuItem.subMenuNonReport, currentListItemModel, currentListJobName)\r\n : null\r\n }\r\n\r\n {!!selectedReportPopupMenuItem ? (\r\n \r\n {cloneElement(selectedReportPopupMenuItem.popupComponent!, { onReportPopupClose })}\r\n \r\n ) : null}\r\n\r\n {showMainPop && {\r\n let jobName = getJobNameByTbName(tbName);\r\n let parentOpType = false;\r\n let parentOpName = '';\r\n if(jobName === JobNames.None){\r\n if(tbName === \"T_DEPOHD\"){\r\n if(acctTbName.substring(0,1) === 'D' && acctTbName.substring(2) === '1')\r\n jobName = JobNames.AgntPayment;\r\n else if (acctTbName.substring(0,1) === 'D' && acctTbName.substring(2) !== '1')\r\n jobName = JobNames.CustPayment;\r\n else if (acctTbName.substring(0,1) === 'M')\r\n jobName = JobNames.CCPayment;\r\n else jobName = JobNames.BillPayment;\r\n }\r\n else {\r\n jobName = getJobNameFromInvBillCrdbTbName(tbName, acctTbName);\r\n }\r\n }\r\n let opName = getOpByjobName(jobName);\r\n let blType = '';\r\n switch (jobName) {\r\n case JobNames.OIMbl:\r\n blType = 'mbl';\r\n break;\r\n case JobNames.OIHbl:\r\n blType = 'hbl';\r\n break;\r\n case JobNames.OEMbl:\r\n blType = 'oeMbl';\r\n break;\r\n case JobNames.OEHbl:\r\n blType = 'oeHbl';\r\n break;\r\n case JobNames.AIMbl:\r\n blType = 'aiMawb';\r\n break;\r\n case JobNames.AIHbl:\r\n blType = 'aiHawb';\r\n break;\r\n case JobNames.AEMbl:\r\n blType = 'aeMawb';\r\n break;\r\n case JobNames.AEHbl:\r\n blType = 'aeHawb';\r\n break;\r\n case JobNames.OtherOP:\r\n blType = 'otherShipment';\r\n break;\r\n case JobNames.WHRcv:\r\n blType = 'whReceiving';\r\n break;\r\n case JobNames.WHShip:\r\n blType = 'whShipping';\r\n break;\r\n case JobNames.Company:\r\n blType = 'company';\r\n break;\r\n case JobNames.Invoice:\r\n blType = 'invoice';\r\n opName = getOpTypeFromInvBillCrdbTbName(acctTbName);\r\n if(opName === constants.opTypes.accounting){\r\n parentOpName = 'billings';\r\n parentOpType = true;\r\n }\r\n break;\r\n case JobNames.GInvo:\r\n blType = 'acGeneralInvoice';\r\n parentOpType = true;\r\n opName = constants.opTypes.accounting;\r\n parentOpName = 'billings';\r\n break;\r\n case JobNames.WHStorageInv:\r\n blType = 'whStorageInvoice';\r\n opName = constants.opTypes.warehousing;\r\n break;\r\n case JobNames.Bill:\r\n blType = 'bill';\r\n opName = getOpTypeFromInvBillCrdbTbName(acctTbName);\r\n if(opName === constants.opTypes.accounting){\r\n parentOpName = 'billings';\r\n parentOpType = true;\r\n }\r\n break;\r\n case JobNames.GBill:\r\n blType = 'acGeneralBill';\r\n parentOpType = true;\r\n opName = constants.opTypes.accounting;\r\n parentOpName = 'billings';\r\n break;\r\n case JobNames.CrDb:\r\n blType = 'crdb';\r\n opName = getOpTypeFromInvBillCrdbTbName(acctTbName);\r\n if(opName === constants.opTypes.accounting){\r\n parentOpName = 'billings';\r\n parentOpType = true;\r\n }\r\n break;\r\n case JobNames.CustPaymentMemo:\r\n blType = 'acCustomerPaymentMemo';\r\n opName = constants.opTypes.accounting;\r\n break;\r\n case JobNames.AgntPayment:\r\n blType = 'acAgentPayment';\r\n opName = constants.opTypes.accounting;\r\n break;\r\n case JobNames.CustPayment:\r\n blType = 'acCustomerPayment';\r\n opName = constants.opTypes.accounting;\r\n break;\r\n case JobNames.CCPayment:\r\n blType = 'acCCPayment';\r\n opName = constants.opTypes.accounting;\r\n break;\r\n case JobNames.BillPayment:\r\n blType = 'acBillPayment';\r\n opName = constants.opTypes.accounting;\r\n break;\r\n case JobNames.SeaQuotation:\r\n blType = 'oeQuotation';\r\n opName = constants.opTypes.oceanExport;\r\n parentOpType = true;\r\n parentOpName = 'oceanExport'\r\n break;\r\n }\r\n setFilterForScreenExternally(`/common/joblistview/${blType}/${opName}${parentOpType? `?parentOp=${parentOpName}`:''}`,\r\n 'id', '', tbId.toString(), 'update', false, true,({...new SearchModelBase(), version: versionCount.current} as SearchModelBase)); // Update version);\r\n versionCount.current += 1;\r\n openNewPage(history, `/common/joblistview/${blType}/${opName}${parentOpType? `?parentOp=${parentOpName}`:''}`, NavigationType.newPage);\r\n }}\r\n />\r\n }\r\n {/*\r\n */}\r\n \r\n {DebugTableHeaderSizes &&\r\n \r\n }\r\n\r\n {autoLogoutCheck &&\r\n \r\n
    \r\n \r\n \"\"\r\n
    \r\n }\r\n right={\r\n
    \r\n You are about to be signed out due to inactivity.
    \r\n If there remains any unsaved data, it may be lost.\r\n
    \r\n }\r\n />\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n Time Left - {`${Math.floor(autoLogoutRemain / 60)}`.padStart(2, '0')}:{`${autoLogoutRemain % 60}`.padStart(2, '0')}\r\n
    \r\n\r\n {\r\n if (b === 'Stay Logged In') {\r\n isStayLoggin.current = true;\r\n stayLoggedin();\r\n } else {\r\n logoutUser(false);\r\n }\r\n }}\r\n />\r\n
    \r\n\r\n \r\n }\r\n
    \r\n );\r\n}\r\n\r\nexport default IfmsMain;\r\n","import React, { useEffect } from 'react';\r\nimport { User } from './ifmsTypes';\r\nimport ApplicationLoading from './ApplicationLoading';\r\n\r\nimport {NavigationType, openNewPage} from '././util/navigationHelpers';\r\nimport { useHistory } from 'react-router';\r\n\r\ntype Props = {\r\n autoLoginCall: () => void,\r\n};\r\n\r\nconst AutoLogin: React.FC = ({ autoLoginCall }) => {\r\n \r\n useEffect(() => {\r\n console.log(`useEffect - autoLoginCall`);\r\n autoLoginCall()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n\r\n return ();\r\n\r\n}\r\n\r\nexport default AutoLogin;\r\n\r\n\r\n\r\n","import React, { useEffect, useRef, useState } from 'react';\r\n\r\nimport { useAppDispatch, useAppSelector } from './app/hooks';\r\n\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport createApi from './api';\r\nimport {\r\n //setBillingCodes,\r\n setCurrencies,\r\n setPrimaryCurrency,\r\n setDefaultPageSize,\r\n setUsers,\r\n setDateFormat,\r\n setDateTimeFormat,\r\n getFmsGlobal,\r\n getDefaultPageSize,\r\n setFmsGlobalBySg,\r\n} from './globals';\r\nimport Modal from 'react-modal';\r\nimport OkButton from './uiControls/OkButton';\r\nimport localforage from 'localforage';\r\n\r\nimport { loginUser, logoutUser, reset } from './features/loginSlice';\r\nimport { changeOperation } from './features/operationSlice';\r\nimport { clearStorage } from './features/storageSlice';\r\nimport { resetListScreenSettings } from './features/listScreenSettingsSlice';\r\n\r\nimport AuthService from './security/AuthService';\r\n\r\nimport ApplicationLoading from './ApplicationLoading';\r\nimport Login from './Login';\r\nimport IfmsMain from './IfmsMain';\r\nimport { User, SystemSettings, SuntekSettings } from './ifmsTypes';\r\n\r\nimport ApplicationContext from './ApplicationContext';\r\nimport { JobNames } from './framework.core/JobNames';\r\nimport { ApiResult } from './framework.core/data/ApiResult';\r\nimport { SecurityGrant } from './framework.core/SecurityGrant';\r\nimport { ControlType } from './fms.core/modules/FmsSecurity';\r\nimport { FormType } from './fms.enum';\r\nimport AutoLogin from './AutoLogin';\r\nimport { setDefaultForMSetup } from './fms.data/modules/FmsModFunc';\r\nimport _ from 'lodash';\r\n\r\nconst authService = new AuthService();\r\n\r\nconst api = createApi();\r\n\r\n/*\r\nfunction createWelcomeMessage(userSession:User, systemSettings:SystemSettings) {\r\n if (!userSession || !systemSettings) {\r\n return \"\";\r\n }\r\n\r\n const welcomeMessage =\r\n`\r\n----------------------------\r\nSuntek Systems - iFMS (v0.1)\r\n----------------------------\r\n User session started for: ${userSession.email}\r\n Primary currency: ${systemSettings.primaryCurrency}\r\n\r\n Currency data: ${JSON.stringify(systemSettings.currencies)}\r\n Default list size: ${systemSettings.defaultPageSize}\r\n\r\n----------------------------\r\n`;\r\n return welcomeMessage;\r\n}\r\n*/\r\n\r\nModal.setAppElement('#root');\r\n\r\nconst ModalContentStyle:React.CSSProperties = {\r\n top: '50%',\r\n left: '50%',\r\n right: 'auto',\r\n bottom: 'auto',\r\n marginRight: '-50%',\r\n transform: 'translate(-50%, -50%)',\r\n zIndex: 10000\r\n};\r\nconst ModalOverlayStyle:React.CSSProperties = {\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backgroundColor: 'rgba(0, 0, 0, 0.55)',\r\n zIndex: 999998\r\n};\r\n\r\n\r\nfunction workerFunction() {\r\n onmessage = (event) => {\r\n //console.log('worker.onmessage:', event.data);\r\n\r\n // live\r\n const autoLogoutTime = 1000 * 60 * 60 * 2; // 1000ms * 60 (1m) * 60 (1h) * 2 (2h)\r\n const initAutoLogoutTime = (1000 * 60 * 60) + (1000 * 60 * 50); // 1h + 50min\r\n const initAutoLogoutReaminTime = 600; // 1sec * 60 (1min) * 10 (10min)\r\n\r\n // test/debug\r\n // const autoLogoutTime = 1000 * 60 * 2; // 2min\r\n // const initAutoLogoutTime = 1000 * 60 ; // 1min\r\n // const initAutoLogoutReaminTime = 30; //30sec\r\n\r\n function nextInterval(counter: number) {\r\n // counter calc\r\n counter--;\r\n if (counter >= 0) {\r\n postMessage(['setAutoLogoutRemain', counter]);\r\n\r\n // next setting.\r\n const remainTimerId = setTimeout(function () {\r\n nextInterval(counter); // repeat\r\n }, 1000)\r\n\r\n // for stay loggedin.\r\n postMessage(['setRemainTimerId', Number(remainTimerId)]);\r\n }\r\n }\r\n\r\n switch (event.data[0]) {\r\n case 'setAutoLogoutTimer':\r\n clearTimeout(event.data[1]); //prev timer clear\r\n\r\n let lastAction = Date.now();\r\n\r\n const timerId = setTimeout(() => {\r\n let now = Date.now();\r\n let delta = (lastAction + autoLogoutTime) - now;\r\n let delta2 = (lastAction + autoLogoutTime + initAutoLogoutReaminTime) - now; // last action + 2h + 10m - now\r\n //console.log('worker.onmessage delta:', lastAction, now, delta, delta2);\r\n\r\n if(delta2 < 0){\r\n // fire immediately logoff\r\n postMessage(['setAutoLogoutRemain', 9999]);\r\n postMessage(['setAutoLogoutRemain', 0]);\r\n } else \r\n if (delta > 0) {\r\n clearTimeout(timerId);\r\n const timerId2 = setTimeout(() => { \r\n postMessage(['fireLogoutReaminTimer']); \r\n }, delta);\r\n postMessage(['setTimerId', Number(timerId2)]);\r\n } else {\r\n postMessage(['fireLogoutReaminTimer']);\r\n }\r\n }, initAutoLogoutTime);\r\n\r\n postMessage(['setTimerId', Number(timerId)]);\r\n break;\r\n\r\n case 'createInterval':\r\n nextInterval(initAutoLogoutReaminTime);\r\n break;\r\n case 'clearTimeout':\r\n clearTimeout(event.data[1]); //prev timer clear\r\n break;\r\n\r\n case 'getAutoLogoutRemainInit':\r\n postMessage(['setAutoLogoutRemain', initAutoLogoutReaminTime])\r\n break;\r\n }\r\n };\r\n}\r\n\r\nfunction App() {\r\n const [loaded, setLoaded] = useState(false);\r\n const [userBranchMissingDialog, setUserBranchMissingDialog] = useState(false);\r\n const [authenticateDialog, setAuthenticateDialog] = useState(false);\r\n const [authenticateMsg, setAuthenticateMsg] = useState('');\r\n const [systemSettings, _setSystemSettings] = useState();\r\n const [suntekSettings, setSuntekSettings] = useState(); //\r\n const [securityGrants, setSecurityGrants] = useState();\r\n const [securityControls, setSecurityControls] = useState>();\r\n //const [journalType, _setJournalType] = useState(0);\r\n const [appInfoAreaContent, setAppInfoAreaContent] = useState('none');\r\n const [useDarkMode, setUseDarkMode] = useState(false);\r\n const [backgroundColor, setBackgroundColor] = useState('W');\r\n const [appInfoAreaDrawerHeight, setAppInfoAreaDrawerHeight] = useState(0);\r\n const userState = useAppSelector(state => state.user);\r\n const user = userState.user;\r\n //move to Memo & Log list\r\n const [myMemoTaskReminder, setMyMemoTaskReminder] = useState(false);\r\n const [myMemoId, setMyMemoId] = useState(0);\r\n // for Suntek admin 2fa\r\n const [suntekAdmin2FAActive, setSuntekAdmin2FAActive] = useState(false);\r\n const [suntekAdminVerify, setSuntekAdminVerify] = useState(false);\r\n const [suntekAdminAuthFin, setSuntekAdminAuthFin] = useState(false);\r\n const [suntekUser, setSuntekUser] = useState();\r\n const [useCheckReminder, setUseCheckReminder] = useState(false);\r\n\r\n const dispatch = useAppDispatch();\r\n const isLoggedIn = !!user;\r\n let isSuntekAdmin = !!user?.isSuntekAdmin;\r\n\r\n let broadcastChannel = new BroadcastChannel('ifms-loginuser-channel');\r\n const anotherUserId = useRef('');\r\n const loginUserId = useRef('');\r\n \r\n const dataObj = '(' + workerFunction + ')();';\r\n const blob = new Blob([dataObj], { type: 'application/javascript' })\r\n const logoutWorker = new Worker(URL.createObjectURL(blob));\r\n\r\n function setSystemSettings(s : any){\r\n _setSystemSettings(s)\r\n setAppInfoAreaContent(s?.useMemoListByDefault ? 'memo' : 'none')\r\n }\r\n\r\n // function setJournalType(n: number) {\r\n // _setJournalType(n);\r\n // }\r\n\r\n function initializeUserSession(userSession:User) {\r\n api.setAccessToken(userSession.accessToken);\r\n dispatch(loginUser(userSession));\r\n \r\n if (authService.isDifferentUserLogin(userSession.id ?? '')) {\r\n dispatch(reset());\r\n // dispatch(changeOperation(userSession.defaultOperation ?? 'Home'));\r\n dispatch(changeOperation('Home'));\r\n }\r\n\r\n authService.rememberLastLoginEmail(userSession ? userSession.id ?? '' : '');\r\n //authService.setUserLicProduct(userSession?.licProduct ?? '');\r\n\r\n isSuntekAdmin = userSession.isSuntekAdmin??false;\r\n }\r\n\r\n function adjustDateFormats(s:SystemSettings) {\r\n if (!s) {\r\n return;\r\n }\r\n\r\n if (!s.dateFormat) {\r\n s.dateFormat = 'MM-DD-YYYY';\r\n s.dateTimeFormat = 'MM-DD-YYYY HH:mm';\r\n s.datePlaceHolder = 'MM-DD-YYYY';\r\n s.dateTimePlaceHolder = 'MM-DD-YYYY HH:mm';\r\n } else {\r\n s.dateFormat = s.dateFormat.replace(/m/g, 'M').replace(/d/g, 'D').replace(/y/g, 'Y');\r\n s.dateTimeFormat = `${s.dateFormat} HH:mm`;\r\n s.datePlaceHolder = s.dateFormat;\r\n s.dateTimePlaceHolder = s.dateTimeFormat;\r\n }\r\n }\r\n\r\n async function loadSystemSettings() {\r\n const s = await api.getSystemSettings();\r\n adjustDateFormats(s);\r\n if (s && s.userBranchMissing && !isSuntekAdmin) {\r\n setUserBranchMissingDialog(true);\r\n return false;\r\n }\r\n\r\n setSystemSettings(s);\r\n //let user = authService.getUser() as User;\r\n //window.console.log(createWelcomeMessage(user, s));\r\n //window.console.log(s);\r\n setUseDarkMode(s?.useDarkMode ?? false);\r\n setBackgroundColor(!!s?.backgroundColor ? s?.backgroundColor : 'W');\r\n setCurrencies(!!s ? s.currencies : []);\r\n setPrimaryCurrency(!!s ? s.primaryCurrency : null);\r\n //\r\n setUsers(s?.users);\r\n setDateFormat(s.dateFormat);\r\n setDateTimeFormat(s.dateTimeFormat);\r\n\r\n // user grent setting\r\n setSecurityGrants(s?.securityGrants);\r\n setFmsGlobalBySg(s?.securityGrants, isSuntekAdmin);\r\n \r\n return true;\r\n }\r\n\r\n /**\r\n * pt211201\r\n */\r\n async function loadSuntekSettings() {\r\n const ss: SuntekSettings = {\r\n accounting: null,\r\n company: null,\r\n compliance: null,\r\n oceanAir: null,\r\n server: null,\r\n edi: null,\r\n myCompany: null,\r\n myEvent: null,\r\n general: null,\r\n }\r\n\r\n let apiResult: ApiResult = await api.getJobDetail(JobNames.SystemSetup, { entityName: 'SuntekCompany' });\r\n if (apiResult?.success) ss.company = apiResult.result;\r\n\r\n //await api.getSettingsSuntekSettingsCompany();\r\n apiResult = await api.getJobDetail(JobNames.SystemSetup, { entityName: 'OceanAir' });\r\n if (apiResult?.success) ss.oceanAir = apiResult.result;\r\n\r\n //= await api.getSettingsSuntekSettingsOceanAir();\r\n apiResult = await api.getJobDetail(JobNames.SystemSetup, { entityName: 'Accounting' });\r\n if (apiResult?.success) ss.accounting = setDefaultForMSetup(apiResult.result);\r\n\r\n //await api.getSettingsSuntekSettingsAccounting();\r\n apiResult = await api.getJobDetail(JobNames.SystemSetup, { entityName: 'MyCompany' });\r\n if (apiResult?.success) ss.myCompany = apiResult.result;\r\n\r\n apiResult = await api.getJobDetail(JobNames.SystemSetup, { entityName: 'Compliance' });\r\n if (apiResult?.success) ss.compliance = apiResult.result;\r\n\r\n apiResult = await api.getJobDetail(JobNames.SystemSetup, { entityName: 'EDI' });\r\n if (apiResult?.success) ss.edi = apiResult.result;\r\n\r\n apiResult = await api.getJobDetail(JobNames.SystemSetup, { entityName: 'Server' });\r\n if (apiResult?.success) ss.server = apiResult.result;\r\n\r\n apiResult = await api.getJobDetail(JobNames.SystemSetup, { entityName: 'MyEvent'});\r\n if (apiResult?.success) ss.myEvent = apiResult.result;\r\n\r\n apiResult = await api.getJobDetail(JobNames.SystemSetup, { entityName: 'General'});\r\n if (apiResult?.success) ss.general = apiResult.result;\r\n\r\n apiResult = await api.getJobDetail(JobNames.SystemSetup, { entityName: 'Charge'});\r\n if (apiResult?.success) ss.charge = apiResult.result;\r\n\r\n setSuntekSettings(ss);\r\n\r\n // fmsGlobal\r\n const fmsGlobal = getFmsGlobal();\r\n fmsGlobal.AcmeID = ss.company?.companyId;\r\n fmsGlobal.AcmeID3 = fmsGlobal.AcmeID?.substring(0, 3);\r\n fmsGlobal.AcmeID4 = fmsGlobal.AcmeID?.substring(0, 4);\r\n\r\n fmsGlobal.AgentGLNo = ss.myCompany?.agentGLNo;\r\n fmsGlobal.ARGLNo = ss.myCompany?.arglNo;\r\n fmsGlobal.APGLNo = ss.myCompany?.apglNo;\r\n fmsGlobal.IssuePlace = ss.myCompany?.issuePlace;\r\n fmsGlobal.HeadType = ss.myCompany?.headType;\r\n fmsGlobal.UseKorVat = ss.company?.currency === 'KRW';\r\n fmsGlobal.EarningGLNo = ss.myCompany?.earningGLNo;\r\n fmsGlobal.AGR1 = ss.myCompany?.agR1;\r\n fmsGlobal.AGR2 = ss.myCompany?.agR2;\r\n fmsGlobal.AGR3 = ss.myCompany?.agR3;\r\n fmsGlobal.HawbPSize = ss.myCompany?.hawbPSize;\r\n fmsGlobal.BlRemarks = ss.myCompany?.blRemarks;\r\n fmsGlobal.FCountry = ss.myCompany?.fCountry;\r\n fmsGlobal.OohOfrtCode = ss.myCompany?.oohOfrtCode;\r\n fmsGlobal.OihFrtChg = ss.myCompany?.oihFrtChg;\r\n fmsGlobal.OihChg = ss.myCompany?.oihChg;\r\n\r\n fmsGlobal.BrokerGroup = ss.myCompany?.brokerGroup;\r\n fmsGlobal.PsShareRatio = ss.myCompany?.psShareRatio;\r\n fmsGlobal.ShowChargesConfirmedAN = ss.myCompany?.showChargesConfirmedAN;\r\n fmsGlobal.UseABIDB = ss.myCompany?.useABIDB;\r\n fmsGlobal.ShareDocWIthABI = ss.myCompany?.shareDocWithABI;\r\n fmsGlobal.EnableSTKMemo = ss.myCompany?.enableSTKMemo;\r\n fmsGlobal.UseITNew = ss.myCompany?.a20FC10.substring(0, 1) === '1';\r\n fmsGlobal.CashInBankGLNo = ss.myCompany?.cashInBankGLNo;\r\n fmsGlobal.SavingsGLNo = ss.myCompany?.savingsGLNo;\r\n fmsGlobal.OtherSavingsGLNo = ss.myCompany?.otherSavingsGLNo;\r\n fmsGlobal.CheckReceivableGLNo = ss.myCompany?.checkReceivableGLNo;\r\n fmsGlobal.CheckPayableGLNo = ss.myCompany?.checkPayableGLNo;\r\n\r\n fmsGlobal.AgentAPGLNo = ss.myCompany?.agentAPGLNo;\r\n fmsGlobal.PayGLNo = ss.myCompany?.payGLNo;\r\n fmsGlobal.RcvGLNo = ss.myCompany?.rcvGLNo;\r\n fmsGlobal.AdvPayGLNo = ss.myCompany?.advPayGLNo;\r\n fmsGlobal.AdvRecGLNo = ss.myCompany?.advRecGLNo;\r\n fmsGlobal.VatGLNo = ss.myCompany?.vatGLNo;\r\n fmsGlobal.VatRcvGLNo = ss.myCompany?.vatRcvGLNo;\r\n fmsGlobal.ShowAmend = ss.myCompany?.showAmend;\r\n fmsGlobal.ViewETA = ss.myCompany?.viewETA;\r\n\r\n fmsGlobal.CloseDate = ss.myCompany?.closeDate;\r\n\r\n fmsGlobal.PimsID = ss.server?.pimsId;\r\n fmsGlobal.PimsUserID = ss.server?.pimsUserID;\r\n fmsGlobal.PimsUserPwd = ss.server?.pimsUserPwd;\r\n\r\n fmsGlobal.ChargeFscAE = ss.myCompany?.chargeFscAE;\r\n fmsGlobal.ChargeSscAE = ss.myCompany?.chargeSscAE;\r\n fmsGlobal.ChargeTsaAE = ss.myCompany?.chargeTsaAE;\r\n fmsGlobal.ChargeHandlingCAE = ss.myCompany?.chargeHandlingCAE;\r\n\r\n fmsGlobal.AmsMode = 'AMS/ACI';\r\n if (ss.compliance?.amsEnable || ss.compliance?.amsEnableAll) {\r\n if (!_.isEmpty(ss.compliance.amsId1) || !_.isEmpty(ss.compliance.amsId2) || !_.isEmpty(ss.compliance.amsId3)) {\r\n let apiResult = await api.getManifestProducts(ss.compliance.amsId1, ss.compliance.amsId2, ss.compliance.amsId3, ss.compliance.amsUseeManifest);\r\n if (apiResult?.success) {\r\n switch (apiResult.result) {\r\n case 1: fmsGlobal.AmsMode = 'AMS'; break;\r\n case 2: fmsGlobal.AmsMode = 'ACI'; break;\r\n case 3: fmsGlobal.AmsMode = 'ALL'; break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n let isIntnl = ss.company?.country !== 'U.S.';\r\n if (isIntnl) fmsGlobal.CashierRelease = false;\r\n else fmsGlobal.CashierRelease = true;\r\n\r\n return true;\r\n }\r\n\r\n\r\n const detectPlatform = () => {\r\n let osName = \"Unknown OS\";\r\n let browser = null;\r\n let version = null;\r\n let userAgent = window.navigator.userAgent;\r\n\r\n if (userAgent) {\r\n const { isArray } = Array;\r\n const ua = userAgent.toLowerCase().replace(/^mozilla\\/\\d\\.\\d\\W/, '')\r\n\r\n // Determine the operating system.\r\n if (userAgent.indexOf(\"Win\") !== -1) osName = \"Windows\";\r\n if (userAgent.indexOf(\"Mac\") !== -1) osName = \"MacOS\";\r\n if (userAgent.indexOf(\"Linux\") !== -1) osName = \"Linux\";\r\n if (userAgent.indexOf(\"X11\") !== -1) osName = \"UNIX\";\r\n if (userAgent.indexOf(\"Liunx\") !== -1) osName = \"Liunx\";\r\n\r\n if (userAgent.indexOf(\"Android\") !== -1) osName = \"Android\";\r\n if (userAgent.indexOf(\"like Mac\") !== -1) osName = \"iOS\";\r\n\r\n // Extract browser and version information.\r\n const browserTest = ua.match(/(\\w+)\\/(\\d+\\.\\d+(?:\\.\\d+)?(?:\\.\\d+)?)/g)\r\n const safariVersion = ua.match(/version\\/(\\d+(\\.\\d+)*)/)\r\n const saVersion = isArray(safariVersion) ? safariVersion[1] : null\r\n const browserOffset = browserTest && (browserTest.length > 2 && !(/^(ver|cri|gec)/.test(browserTest[1])) ? 1 : 0)\r\n const browserResult = browserTest && browserTest[browserTest.length - 1 - (browserOffset || 0)].split('/')\r\n browser = browserResult && browserResult[0];\r\n version = saVersion ? saVersion : browserResult && browserResult[1]\r\n\r\n // Check specifically for Edge\r\n if (ua.includes('edg/')) {\r\n const edgeMatch = ua.match(/edg\\/(\\d+\\.\\d+)/);\r\n browser = 'edge';\r\n version = edgeMatch && edgeMatch[1];\r\n }\r\n }\r\n\r\n return { browserInfo: `${osName} / ${browser??''} / ${version??''}` };\r\n }\r\n\r\n async function authenticateAsync() {\r\n\r\n if (process.env.NODE_ENV !== 'production') {\r\n return true;\r\n }\r\n\r\n //get user browser info.\r\n let info = detectPlatform();\r\n\r\n let result:string = await api.authenticate(info);\r\n\r\n if (!result) return false;\r\n\r\n var msg = '';\r\n switch (result.toString()) {\r\n case '100':\r\n break;\r\n case '105':\r\n msg = `Authentication has failed due to invalid subscription ID temporarily.\r\nPlease enter another login ID again or contact Suntek Systems Inc. ${getFmsGlobal().SuntekPhone}\r\niFMS will now terminate. (Ref# ${getFmsGlobal().SuntekPhone})`;\r\n break;\r\n\r\n case '106':\r\n//already login\r\n// msg = `Someone has already logged in with the same user ID.\r\n// Please use another valid user ID or contact your company's administrator to login.\r\n// iFMS will now terminate. (Ref# ${result})`;\r\n break;\r\n case '200':\r\n case '204':\r\n //version msssage\r\n break;\r\n case '500':\r\n //mac address\r\n break;\r\n case '700':\r\n //db name\r\n break;\r\n\r\n default: // 666 or 446\r\n msg = `Authentication has failed. Please contact Suntek Systems Inc. ${getFmsGlobal().SuntekPhone}\r\niFMS will now terminate. (Ref# ${result})`;\r\n break;\r\n }\r\n\r\n if (msg || ['200', '204'].indexOf(result) >= 0) {\r\n setAuthenticateMsg(msg);\r\n setAuthenticateDialog(true);\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function applySystemSettingsChange(change: Partial) {\r\n _setSystemSettings((prevSettings) => {\r\n const newSettings = { ...prevSettings, ...change };\r\n return newSettings;\r\n });\r\n }\r\n\r\n function applySuntekSettingsChange(change: Partial) {\r\n if (suntekSettings) {\r\n // Should always be true for correctly loaded application\r\n setSuntekSettings({...suntekSettings, ...change});\r\n }\r\n }\r\n\r\n \r\n function applySecurityControlChange(jobname: string, change: ControlType[]) {\r\n setSecurityControls({...securityControls, ...{[jobname] : change} });\r\n }\r\n\r\n function getControlDisableBySecurity(jobName: string, conName: string, formType: FormType): boolean {\r\n let fromTypeStr = '';\r\n let result = false;\r\n if (formType === FormType.ModeAdd || formType === FormType.ModeCopy) {\r\n fromTypeStr = '_Add';\r\n } else if (formType === FormType.ModeEdit) {\r\n fromTypeStr = '_Edit';\r\n }\r\n\r\n if (securityControls) {\r\n if (!securityControls[jobName]) return false;\r\n\r\n let dicSecCntr = securityControls[jobName];\r\n\r\n dicSecCntr.forEach(secCntr => {\r\n if (securityGrants && securityGrants.find(g => g.securityTaskCode === secCntr.secCntr + fromTypeStr)) {\r\n let arrSecCntr = secCntr.contName.split('|');\r\n if (conName?.toUpperCase() === arrSecCntr[0]?.toUpperCase()) result = true;\r\n\r\n // const cont = document.getElementById(arrSecCntr[0]);\r\n // if (cont) return true;// cont.setAttribute('disabled', 'disabled');\r\n }\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n //\r\n // async function loadBillingCodes() {\r\n // const search = {\r\n // general1: null,\r\n // generalText1: null,\r\n // general2: 'inactive',\r\n // generalText2: 'false',\r\n // orderBy: 'code',\r\n // orderByAscending: true,\r\n // };\r\n\r\n // const apiResult = await api.getCodesBillingCodes(search);\r\n // if (apiResult && apiResult.data) {\r\n // setBillingCodes(apiResult.data);\r\n // }\r\n // }\r\n\r\n async function initialize() {\r\n const systemSettingsValid = await loadSystemSettings();\r\n if (!systemSettingsValid) {\r\n return;\r\n }\r\n\r\n //\r\n\r\n const authenticateValid = await authenticateAsync();\r\n if (!authenticateValid) {\r\n return;\r\n }\r\n \r\n //await loadBillingCodes();\r\n setLoaded(true);\r\n }\r\n\r\n useEffect(() => {\r\n window.addEventListener('beforeunload', (e) => {\r\n broadcastChannel.removeEventListener('message', bcMessageHandler2);\r\n\r\n // login page. ignore confirm.\r\n if(window.location.pathname === '/' || window.name?.indexOf('ifmssub') > -1){ \r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n e.returnValue = true;\r\n });\r\n\r\n if(broadcastChannel){\r\n broadcastChannel.addEventListener('message', bcMessageHandler2);\r\n }\r\n\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (authService.isAuthenticated()) {\r\n initializeUserSession(authService.getUser());\r\n initialize();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isLoggedIn]);\r\n\r\n\r\n useEffect(() => {\r\n if (suntekUser && suntekAdminAuthFin) {\r\n initializeUserSession(suntekUser);\r\n initialize();\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [suntekAdminAuthFin]);\r\n\r\n async function purgeLocalStorage() {\r\n const keys = await localforage.keys();\r\n\r\n const toDelete:Array = [];\r\n keys.forEach(k => {\r\n toDelete.push(k);\r\n });\r\n\r\n for (let i = 0; i < toDelete.length; ++i) {\r\n await localforage.removeItem(toDelete[i]);\r\n }\r\n }\r\n\r\n async function forceLogout() {\r\n setUserBranchMissingDialog(false);\r\n setAuthenticateMsg('');\r\n setAuthenticateDialog(false);\r\n\r\n await purgeLocalStorage();\r\n\r\n dispatch(logoutUser());\r\n dispatch(clearStorage());\r\n dispatch(resetListScreenSettings());\r\n\r\n setLoaded(false);\r\n }\r\n\r\n async function doLoginUser(username:string, password:string, rememberMe:boolean, urlPrefix:string) {\r\n const apiResult = await api.login(username, password, urlPrefix);\r\n\r\n if (apiResult && apiResult.success) {\r\n loginUserId.current = username.toLowerCase();\r\n\r\n if (apiResult.user.branchMissing) {\r\n setUserBranchMissingDialog(true);\r\n return;\r\n }\r\n\r\n //<221006.dwshin. comment out. / 'remember me' uncheck when logging in. Problem going to the login page when the page is refreshed.\r\n //\r\n if (rememberMe && !apiResult.user.isSuntekAdmin) {\r\n authService.setUser(apiResult.user);\r\n }\r\n\r\n if(process.env.NODE_ENV === 'production' && apiResult.user.isSuntekAdmin) {\r\n //if (apiResult.user.isSuntekAdmin) {\r\n api.setAccessToken(apiResult.user.accessToken);\r\n suntekAdmin2FAStart(apiResult.user);\r\n } else {\r\n initializeUserSession(apiResult.user);\r\n await initialize();\r\n }\r\n }\r\n\r\n return apiResult;\r\n }\r\n\r\n async function suntekAdmin2FAStart(user: any) {\r\n // check user enable 2FA.\r\n // if disabled. show guide.\r\n setSuntekUser(user);\r\n setSuntekAdminAuthFin(false);\r\n //console.log(`suntekAdmin2FAStart`, user);\r\n\r\n if(!user.twoFactorEnabled){\r\n setSuntekAdmin2FAActive(true);\r\n const focusElement = document.getElementById('verifycode');\r\n if (focusElement) {\r\n focusElement.focus();\r\n }\r\n }else{\r\n setSuntekAdminVerify(true);\r\n const focusElement = document.getElementById('authcode');\r\n if (focusElement) {\r\n focusElement.focus();\r\n }\r\n }\r\n }\r\n\r\n async function do2FAActive(username:string, password:string, code: string){\r\n const apiResult = await api.active2FA(username, password, code);\r\n\r\n if(apiResult && apiResult.success){\r\n setSuntekAdmin2FAActive(false);\r\n setSuntekAdminAuthFin(true);\r\n return '';\r\n } else {\r\n // error msg display\r\n return apiResult.result;\r\n }\r\n }\r\n\r\n async function doSuntekAdminAuth(username:string, password:string, code: string){\r\n const apiResult = await api.suntekAdminAuth(username, password, code);\r\n\r\n if (apiResult && apiResult.success) {\r\n setSuntekAdminVerify(false);\r\n setSuntekAdminAuthFin(true);\r\n return '';\r\n } else {\r\n // error msg display\r\n return apiResult.result;\r\n }\r\n }\r\n\r\n function focusPassword() {\r\n setTimeout(() => {\r\n const password = document.getElementById('password') as HTMLInputElement;\r\n if (password) {\r\n password.focus();\r\n }\r\n }, 500);\r\n }\r\n\r\n async function on2FAActiveCancel() {\r\n setSuntekAdmin2FAActive(false);\r\n focusPassword();\r\n loginUserId.current = '';\r\n }\r\n\r\n async function onSuntekAdminAuthCancel() {\r\n setSuntekAdminVerify(false);\r\n focusPassword();\r\n loginUserId.current = '';\r\n }\r\n \r\n async function autoLoginCall() {\r\n const apiResult = await api.autologin(window.location.search);\r\n if(apiResult){\r\n initializeUserSession(apiResult);\r\n await initialize();\r\n return;\r\n }\r\n else{\r\n // move to login\r\n window.location.href ='/';\r\n }\r\n }\r\n\r\n async function bcMessageHandler2(e:any) {\r\n let currentLoginId = loginUserId.current.toLowerCase();\r\n //console.log(`get msg broadcastchannel-login`, e.data.Target, e.data.Value, currentLoginId);\r\n\r\n if(e.data.Target === 'getLoginInfo' && e.data.Value === currentLoginId){\r\n broadcastChannel.postMessage({ Target: 'updateLoginInfo', Value:currentLoginId });\r\n }else if (e.data.Target === 'updateLoginInfo'){\r\n anotherUserId.current = e.data.Value;\r\n }\r\n }\r\n\r\n async function fineOtherTabLogin(userid:string){\r\n let result = true;\r\n //<240801.dwshin. Suntek Admin ID Pattern Update\r\n //if(userid === getFmsGlobal().SUNTEK_ID) return result;\r\n //if(userid === getFmsGlobal().SUNTEK_ID || userid.startsWith('@')) return result;\r\n //240801.dwshin>\r\n \r\n userid = userid.toLocaleLowerCase();\r\n anotherUserId.current = '';\r\n broadcastChannel = new BroadcastChannel('ifms-loginuser-channel');\r\n broadcastChannel.postMessage({ Target:'getLoginInfo', Value: userid });\r\n \r\n\r\n // check user name. \r\n // wait bc message\r\n // if duplicate none. return true.\r\n // else return false.\r\n \r\n await new Promise(resolve => setTimeout(resolve, 500))\r\n .then(() => {\r\n if(anotherUserId.current === userid){\r\n result = false;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n if(window.location.pathname === '/autologin' && !loaded ){\r\n return ();\r\n }\r\n\r\n if (!isLoggedIn) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n const applicationCtx = \r\n !loaded\r\n ? \r\n : \r\n (\r\n \r\n setSuntekSettings: applySuntekSettingsChange,\r\n defaultPageSize: systemSettings?.defaultPageSize || 50,\r\n // journalType,\r\n // setJournalType,\r\n onLogout: () => {\r\n loginUserId.current = '';\r\n anotherUserId.current = '';\r\n setLoaded(false);\r\n },\r\n refreshSystemSettings: async () => {\r\n await loadSystemSettings()\r\n },\r\n securityGrants,\r\n appInfoAreaContent,\r\n setAppInfoAreaContent,\r\n useDarkMode,\r\n setUseDarkMode,\r\n backgroundColor,\r\n setBackgroundColor,\r\n appInfoAreaDrawerHeight,\r\n setAppInfoAreaDrawerHeight,\r\n securityControls,\r\n setSecurityControls: applySecurityControlChange,\r\n getControlDisableStatus: getControlDisableBySecurity,\r\n logoutWorker: logoutWorker,\r\n myMemoTaskReminder,\r\n setMyMemoTaskReminder,\r\n useCheckReminder,\r\n setUseCheckReminder,\r\n myMemoId,\r\n setMyMemoId,\r\n }}>\r\n \r\n \r\n \r\n \r\n );\r\n \r\n\r\n return (\r\n <>\r\n {applicationCtx}\r\n \r\n
    \r\n

    Login User does not have Branch Info.(CR)
    \r\n Please ask your Admin to setup Branch Info of User Property.

    \r\n
    \r\n \r\n \r\n \r\n
    \r\n {authenticateMsg.split('\\n').map((str, index) =>
    {str}
    )}\r\n
    \r\n \r\n\r\n \r\n \r\n );\r\n\r\n // const globalYesNoDialog = useAppSelector(state => state.globalYesNoDialog);\r\n // const dispatch = useAppDispatch();\r\n\r\n // const [ showGlobalYesNoDialog ] = useGlobalYesNoDialog();\r\n\r\n // const application =
    Hello world
    ;\r\n\r\n // async function test() {\r\n // const result = await showGlobalYesNoDialog(\r\n //

    Hello word

    \r\n // );\r\n // window.console.log(result);\r\n // }\r\n\r\n // function close() {\r\n // if (globalYesNoDialog.resolve) {\r\n // globalYesNoDialog.resolve(true);\r\n // }\r\n\r\n // dispatch(hideGlobalYesNoDialog());\r\n // }\r\n\r\n // function resetState() {\r\n // dispatch(reset());\r\n // }\r\n\r\n // return (\r\n // <>\r\n // {application}\r\n\r\n // Show: {globalYesNoDialog.show ? 'true' : 'false'}\r\n //
    \r\n\r\n // \r\n //
    \r\n //
    \r\n //
    \r\n\r\n // {globalYesNoDialog.show &&\r\n // \r\n // }\r\n\r\n\r\n //
    \r\n //
    \r\n //
      \r\n // \r\n\r\n // \r\n // );\r\n}\r\n\r\nexport default App;\r\n","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\nimport React from \"react\";\r\n\r\nexport interface IInputDialogResult {\r\n date: string|null,\r\n text: string|null\r\n};\r\n\r\nexport interface GlobalInputDialogState {\r\n show: boolean,\r\n resolve: ((value: IInputDialogResult | PromiseLike) => void) | null,\r\n content: React.ReactNode | null,\r\n};\r\n\r\nexport interface GlobalInputDialogData {\r\n resolve: ((value: IInputDialogResult | PromiseLike) => void) | null,\r\n content: React.ReactNode | null,\r\n};\r\n\r\nconst initialState:GlobalInputDialogState = {\r\n show: false,\r\n resolve: null,\r\n content: null,\r\n};\r\n\r\nconst globalInputDialogSlice = createSlice({\r\n name: 'globalInputDialogSlice',\r\n initialState,\r\n reducers: {\r\n showGlobalInputDialog: (state, action: PayloadAction) => {\r\n state.show = true;\r\n state.resolve = action.payload.resolve;\r\n state.content = action.payload.content;\r\n },\r\n hideGlobalInputDialog: (state) => {\r\n state.show = false;\r\n state.resolve = null;\r\n state.content = null;\r\n }\r\n }\r\n});\r\n\r\nexport default globalInputDialogSlice.reducer;\r\n\r\nexport const { showGlobalInputDialog, hideGlobalInputDialog } = globalInputDialogSlice.actions;","import { configureStore, combineReducers, AnyAction, Reducer } from '@reduxjs/toolkit';\r\n//import logger from 'redux-logger';\r\nimport localforage from 'localforage';\r\nimport {\r\n persistStore,\r\n persistReducer,\r\n} from 'redux-persist';\r\n// import hardSet from 'redux-persist/lib/stateReconciler/hardSet';\r\n\r\nimport globalOkDialogReducer from '../features/globalOkDialogSlice';\r\nimport globalYesNoDialogReducer from '../features/globalYesNoDialogSlice';\r\nimport globalYesNoCancelDialogReducer from '../features/globalYesNoCancelDialogSlice';\r\nimport loginReducer from '../features/loginSlice';\r\nimport jobMenuReducer from '../features/jobMenuSlice';\r\n//import oceanImportNewMblReducer from '../features/oceanImportNewMblSlice';\r\nimport operationReducer from '../features/operationSlice';\r\nimport screenStackReducer from '../features/screenStackSlice';\r\nimport storageReducer from '../features/storageSlice';\r\nimport activeDutyTrackingSliceReducer from '../features/activeDutyTrackingSlice';\r\nimport lastSavedJobReducer from '../features/lastSavedJobSlice';\r\nimport listScreenSettingsReducer from '../features/listScreenSettingsSlice';\r\nimport globalInputDialogReducer from '../features/globalInputDialogSlice';\r\n\r\nexport const EnablePersistence = false;\r\n\r\nconst combinedReducer = combineReducers({\r\n globalOkDialog: globalOkDialogReducer,\r\n globalYesNoDialog: globalYesNoDialogReducer,\r\n globalYesNoCancelDialog: globalYesNoCancelDialogReducer,\r\n user: loginReducer,\r\n jobMenu: jobMenuReducer,\r\n //oceanImportNewMbl: oceanImportNewMblReducer,\r\n operation: operationReducer,\r\n screenStack: screenStackReducer,\r\n storage: storageReducer,\r\n activeDutyTracking: activeDutyTrackingSliceReducer,\r\n lastSavedJob: lastSavedJobReducer,\r\n listScreenSettings: listScreenSettingsReducer,\r\n\r\n //\r\n globalInputDialog: globalInputDialogReducer,\r\n});\r\n\r\nconst rootReducer:Reducer = (state:RootState, action:AnyAction) => {\r\n if (action.type === 'login/reset') {\r\n // Reset everything but the user\r\n state = {\r\n user: state.user,\r\n } as RootState;\r\n }\r\n\r\n return combinedReducer(state, action);\r\n}\r\n\r\nconst persistConfig = {\r\n key: 'ifmsv36',\r\n storage: localforage,\r\n blacklist: [\r\n 'initialized',\r\n 'user',\r\n 'operation',\r\n 'jobMenu',\r\n 'screenStack',\r\n 'oceanImportNewMbl',\r\n 'commonNewCompany',\r\n 'oceanImportNewBill',\r\n 'codesAccountingNewCurrency',\r\n 'oceanImportNewInvoice',\r\n 'oceanImportNewCrdb',\r\n \"globalYesNoDialog\",\r\n \"globalYesNoCancelDialog\",\r\n \"globalOkDialog\",\r\n 'storage',\r\n 'oceanImportNewHbl',\r\n 'codesOceanNewContainerType',\r\n 'codesCompanyNewCompanyUser',\r\n 'systemSettingsRetry',\r\n 'activeDutyTracking',\r\n 'lastSavedJob',\r\n 'listScreenSettings',\r\n ],\r\n // stateReconciler: hardSet, // TODO -research why it is not working with typescript. Resulting state is null\r\n version: 36,\r\n};\r\n\r\nconst allReducers = EnablePersistence ? persistReducer(persistConfig, rootReducer) : rootReducer;\r\n\r\nexport const store = configureStore({\r\n reducer: allReducers,\r\n middleware: (getDefaultMiddleware) =>\r\n getDefaultMiddleware({\r\n serializableCheck: false,\r\n })\r\n //.prepend(logger),\r\n});\r\n\r\nexport type RootState = ReturnType;\r\nexport type AppDispatch = typeof store.dispatch;\r\n\r\nexport const persistor = persistStore(store);\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport { Provider } from 'react-redux';\r\nimport { PersistGate } from 'redux-persist/integration/react';\r\nimport { store, persistor, EnablePersistence } from './app/store';\r\n\r\nimport ApplicationLoading from './ApplicationLoading';\r\n// import reportWebVitals from './reportWebVitals';\r\n\r\nwindow.console.log('==========');\r\nwindow.console.log('iFMS initialization started');\r\nwindow.console.log('Persistence enabled: ' + EnablePersistence);\r\nwindow.console.log('==========');\r\nReactDOM.render(\r\n EnablePersistence\r\n ?\r\n \r\n } persistor={persistor}>\r\n \r\n \r\n \r\n :\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\n// reportWebVitals();\r\n"],"sourceRoot":""}