{"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","ApplicationContext.ts","dateUtils/index.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","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","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","img/Tracking_Y_circle.svg","img/Tracking_R_circle.svg","img/Tracking_B_circle.svg","img/Tracking_G_circle.svg","img/container_tracking-yellow.svg","img/container_tracking-green.svg","img/container_tracking-blue.svg","img/container_tracking-red.svg","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","img/container_tracking-gray.svg","img/container_tracking-black.svg","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","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","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","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","ShipmentTypeFilterRenderer","applySearchWithEnter","LclFclRenderer","formatLclFcl","LclFclFilterRenderer","unFormatLclFcl","BillInvoiceCrdbFilterRenderer","RecognizedFilterRenderer","TaxIdTypeFilterRenderer","StatusNotUseFileLockedRenderer","VoidFilterRenderer","InactiveFilterRenderer","CTypeFilterRenderer","BicTypeFilterRenderer","RQFilterRenderer","Tracking_Y","Tracking_G","Tracking_B","Tracking_R","TrStatus2FilterRenderer","cntrYellow","cntrGreen","cntrBlue","cntrRed","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","useContext","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","display","marginTop","onMouseEnter","onMouseLeave","src","alt","d","r","Cell","selectable","marginBottom","headerRow","marginRight","Provider","SmartTable","cellRangeSelect","renderBottomControls","selectedColIndex","EditableTable","dateTimeFormat","setCurrencies","setPrimaryCurrency","setDefaultPageSize","p","getDefaultPageSize","setUsers","u","setDateFormat","fmsGlobal","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","getFmsGlobal","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","open","_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","float","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","paddingLeft","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","imgSrc","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","replaceAll","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","alignItems","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","mblNo","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","hblNo","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","trStatus","trType","vcResult","containerNo","newRequest","setNewRequest","groupTitleRef","groupVisibleRef","groupItem","removeData","getTrackRequest","requestKind","bl","InitTrackRequestGroup","trs","cntrNo","tr","divElement","innerHTML","statusDesc","checkPopupWidth","groupDataLength","groupData","TrackingRequestInitializedImpl","groupTitle","groupVisible","validateEmails","emails","emailArray","email","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","TrStatus2Renderer","cntrGray","AcmeID","openContainerTracking","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","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","trDate","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","lastEvent","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","trStatus2","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","operationState","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","getTableRightEndCustomCell","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","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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","file":"static/js/main.cefb332b.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}","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","/**\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 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: 'Nos of Pkgs',\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: 'Nos of Packages',\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: 'Nos of Packages',\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: 10094,\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: 10076,\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: 'Nos of Packages',\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: 'Nos of Packages',\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}","import { 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 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\n\r\nimport railYellow from '../../img/rail-yellow.svg';\r\nimport railGreen from '../../img/rail-green.svg';\r\nimport railBlue from '../../img/rail-blue.svg';\r\nimport railRed from '../../img/rail-red.svg';\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\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 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: Tracking_Y },\r\n { value: 'created', label: 'Under Movement', icon: Tracking_G },\r\n { value: 'tracking_stopped', label: 'End of Tracking', icon: Tracking_B },\r\n { value: 'failed', label: 'Invalid or Error', icon: Tracking_R },\r\n ]}\r\n applySearchWithEnter={onEnter}\r\n />\r\n \r\n );\r\n}\r\n\r\nexport function TrStatus2FilterRenderer({ value, onChange, onEnter }: any) {\r\n return (\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\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 railYellow from '../../../img/rail-yellow.svg';\r\nimport railGreen from '../../../img/rail-green.svg';\r\nimport railBlue from '../../../img/rail-blue.svg';\r\nimport railRed from '../../../img/rail-red.svg';\r\nimport railGray from '../../../img/rail-gray.svg';\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 cntrGray from '../../../img/container_tracking-gray.svg';\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, TrStatus2FilterRenderer } 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\nfunction TrStatus2Renderer({ value, data, row }: any) {\r\n const appContext = useContext(ApplicationContext);\r\n let imgSrc = cntrGray;\r\n const l = data[row.index];\r\n const mblNo = (l as any).mblNo as string;\r\n const trStatus = (l as any).trStatus as string;\r\n const fmsGlobal = getFmsGlobal();\r\n\r\n function openContainerTracking() {\r\n if(trStatus && trStatus !== 'C' && trStatus !== 'failed' && trStatus !== 'Q') {\r\n window.open(`https://quicktrack2.suntekscm.com/?licid=${fmsGlobal.AcmeID}&mbl=${mblNo}&email=${appContext.user?.email}`)\r\n }\r\n }\r\n\r\n if (value) {\r\n switch (l.trStatus) {\r\n case 'Q': \r\n imgSrc = cntrYellow;\r\n break;\r\n case 'failed': \r\n imgSrc = cntrRed;\r\n break;\r\n case 'tracking_stopped': \r\n imgSrc = cntrBlue;\r\n break;\r\n default:\r\n imgSrc = cntrGreen;\r\n break;\r\n }\r\n\r\n return (\r\n
\r\n \"\" openContainerTracking()} /> \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//22.12.27 hykim - not used\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 // const containerNo = (data[row.index].containerNo ?? '') as string;\r\n // const cNoQuery = containerNo.endsWith('+') ? containerNo.substring(0, containerNo.length - 1) : containerNo;\r\n\r\n // jobListContext.setFilterForScreenExternally('/common/joblistview/OICN/oceanImport', \r\n // 'containerNo', '', cNoQuery, 'update', false);\r\n // openNewPage(history, `/common/joblistview/OICN/oceanImport`, NavigationType.newPage);\r\n // }\r\n\r\n // return
{value}
;\r\n\r\n // return {value}\r\n// }\r\n\r\n// Commented out by Dario:\r\n// According to 'OI 1. MBL rev6.xlsx' this is not correct.\r\n// In file: L: Consol, F: FCL, O: LCL/Other\"\r\n\r\n// Use utility function instead.\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: 'trStatus2',\r\n renderer: TrStatus2FilterRenderer,\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 === 'trStatus2') {\r\n colRenderer.Cell = TrStatus2Renderer;\r\n colRenderer.Header = () => (\r\n \r\n {}\r\n );\r\n }\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 = () => (
);\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: 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 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\r\n trDate: string | null = null;\r\n fromTrDate: string | null = null;\r\n toTrDate: 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: 45, 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 { RQFilterRenderer } from '../../common/commonListRenderers';\r\nimport BlackInverseButton from '../../../ui/BlackInverseButton';\r\nimport viewIcon from '../../../img/container-view.svg';\r\nimport viewIconDark from '../../../img/container-view_D.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): 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 = () => (
);;\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 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 } 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): 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 = () => (
);\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, RecognizedFilterRenderer, RecognizedRenderer, RQFilterRenderer, ShipmentTypeRenderer } from '../../common/commonListRenderers';\r\nimport * as XCol from '../../../framework.core/XExportColumn';\r\nimport DeleteHistory from \"../../reports/DeleteHistory\";\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\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): 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 = () => (
);\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 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 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 link: '/airImport/cargoManifestStatus?jobname=@jobName&id=@jobid',\r\n isSelected: (_: any, c: string | null) => stringsStartsWithIgnoreCase(c, '/airImport/pickupDelivery/'),\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 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 },\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 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: 9, text: 'RQ', width: 45, 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: 'Nos of Pkgs',\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: 'Nos of Pkgs',\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: 'Nos of Pkgs',\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 (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 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: 4, text: 'RQ', width: 45, 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","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 trDate: string | null = null;\r\n fromTrDate: string | null = null;\r\n toTrDate: 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: 45, 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: 'Nos of Pieces', 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: 'Nos of Pieces', 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: 'Nos of Pieces', 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\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];\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 getTableRightEndCustomCell(cell: any) {\r\n if ((operationState.sideMenu === 'Ocean Import' || operationState.sideMenu === 'Other Shipment') && appContext.suntekSettings?.company?.trackingService) {\r\n let trStatus = '';\r\n let imgSrc = null;\r\n // if (cell.column.dataIndex === 'refNo' && cell.row.original.trType === 'M' ||) {\r\n // trStatus = cell.row.original.trStatus\r\n // }\r\n // else if (cell.column.dataIndex === 'containerNo' && cell.row.original.trType === 'C') {\r\n // trStatus = cell.row.original.trStatus\r\n // }\r\n // if (!_.isEmpty(trStatus)) {\r\n // switch (trStatus) {\r\n // case 'Q':\r\n // imgSrc = Tracking_Y\r\n // break;\r\n // case 'failed':\r\n // imgSrc = Tracking_R\r\n // break;\r\n // case 'tracking_stopped':\r\n // imgSrc = Tracking_B;\r\n // break;\r\n // default:\r\n // imgSrc = Tracking_G\r\n // }\r\n // return {\r\n // jobListContext.setRowExtrasId(cell.row.original.id);\r\n // jobListContext.setTrackingRequestEmailList('OpenTrackRequestViewMode');\r\n // }}\r\n // style={{ paddingRight: '5px', cursor: 'pointer' }}>\r\n // \r\n // \r\n // }\r\n\r\n if (\r\n (cell.column.dataIndex === 'trStatus' && (cell.row.original.trType === 'M' || cell.row.original.trType === 'C'))\r\n // (cell.column.dataIndex === 'refNo' && cell.row.original.trType === 'M') ||\r\n // (cell.column.dataIndex === 'containerNo' && cell.row.original.trType === 'C')\r\n ) {\r\n trStatus = cell.row.original.trStatus\r\n\r\n let tooltip = '';\r\n\r\n switch (trStatus) {\r\n case 'Q':\r\n tooltip = 'Start to Request';\r\n imgSrc = Tracking_Y\r\n break;\r\n case 'failed':\r\n tooltip = 'Invalid or Error';\r\n imgSrc = Tracking_R\r\n break;\r\n case 'tracking_stopped':\r\n tooltip = 'End of Tracking';\r\n imgSrc = Tracking_B;\r\n break;\r\n default:\r\n tooltip = 'Under Movement';\r\n imgSrc = Tracking_G\r\n break;\r\n }\r\n return
    {\r\n jobListContext.setRowExtrasId(cell.row.original.id);\r\n jobListContext.setTrackingRequestEmailList('OpenTrackRequestViewMode');\r\n }} >\r\n \r\n
    \r\n }\r\n }\r\n\r\n return null;\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 {getTableRightEndCustomCell(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 {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: 10065,\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","export default __webpack_public_path__ + \"static/media/Tracking_Y_circle.1c62a99c.svg\";","export default __webpack_public_path__ + \"static/media/Tracking_R_circle.5321626d.svg\";","export default __webpack_public_path__ + \"static/media/Tracking_B_circle.26e29033.svg\";","export default __webpack_public_path__ + \"static/media/Tracking_G_circle.260e1b59.svg\";","export default __webpack_public_path__ + \"static/media/container_tracking-yellow.4a3242c4.svg\";","export default __webpack_public_path__ + \"static/media/container_tracking-green.d435d079.svg\";","export default __webpack_public_path__ + \"static/media/container_tracking-blue.06549142.svg\";","export default __webpack_public_path__ + \"static/media/container_tracking-red.3b68bd3e.svg\";","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 Nos of 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","export default __webpack_public_path__ + \"static/media/container_tracking-gray.2004d44b.svg\";","export default __webpack_public_path__ + \"static/media/container_tracking-black.94943a01.svg\";","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,iVBORw0KGgoAAAANSUhEUgAAAPAAAADwCAYAAAA+VemSAAAKIElEQVR42u3dzWtc1xmA8VBMyCKLErIKIYRSSgmlZN1VFyaErrroqosQQiklCxO66tZ/QVdd5Q8otT5HIym2RxZCwTJSMBb+WAXTVcnCmNJFMMYY97xFCYUmta99z7xndH4PPEQ49mjOx6N772g+XnoJC8f+/v6b0+n0vclkcm5tbe3PK4XV1dVr5T93l5eX75WvH5evnywtLf3H+Dr+LP5f/J2Tv7sS/zZuI24rbjN7XMCp4+jo6JWtra2z6+vr50tzl4r3L1y48KSGcdvFz+J7bW5uno3vnT1+YOGYzWZvl4jOlZhm5Qj6oFawT7McsR/EfYj7Uu7TW9nzAjTL7u7u63E6W4I5zAr2GY7Qh3Ef475mzxfQBOX0+JflmrQcaJceZgf6rMZ9Lff5b3Hfs+cPmDu3b98+s7Gx8dtyRLuRHeMIR+UbMZabN2+eyZ5XoCp37tz5QdnsH5Rryy+zw6twvfxljC3GmD3PwOhsbm7+qhyt7mSHNocj8q0y1vez5xsYhYsXL/64XC9uZYc1b2PMMfbs+Qeei8PDwzPr6+t/yvw1ULYx9piD69evuz7G4rC9vf1OOZX8IjugVoy5KHPy0+x1AZ7KxsbGH3o+6v6fo/HXZW5+n70+wHdy5cqVV9fW1v6aHUrrxhzt7Oy8mr1ewLeU08MfxaOv2XEsijFXMWfZ6wbEM6l+UU4P72VHsWjGnMXcZa8fOqZc0/3a9e4LRfwg5jB7HdEh0+n0g7IJH2VHcAp8FHOZvZ7oiMlk8ruy8R43sPlPi4/Lkfij7HVFB5wcecVbIWJHYlQlrtecNtc9nXZNjCqcPNrc1ANWy8vL/1pdXb0S7221vr7+cdn871++fPndq1evvnF8fPza3t7ey2F8HX8W/y/+Tvzd+Dfxb+M2ssfx38Yce3QaoxK/s2zhV0UnL6S/VAL8ZDab/fzg4OCFX7oXtxG3FbcZt93CGwvEXPs9MUYhnjWU/SSN8v0/n0wmH+3v7/+w9njje8T3iu+ZPOZbnrGFFybr6ZFxKlm+96cXL158J2vs8b3jPmRdOsTcZ68/Fph4YULGaXLZuH8pp7VvZI//G+K+xH3KOL32Agg8F/Hyt3kfeco16LQc9X6SPfbvI+5b3Mc5/0D72ksRMYh4Mf48X8+7vLz81XQ6/U32uJ+VuK9xn+d4PfyFNwXAMxPvIjHHo+5kZ2dn4d5nOe5z3Pd5zVOsSfaYsQDE+zjN6dT50WQy+WP2eF+UGMOFOTy5JdbEe2zhqczjDejKZvxnOQ09mz3WsYixxJjmcLaylT1WNEy89escrnf/sb29/bPssY5NjCnGVnv+vGUtvpN4Q/La79tcNvjft7a2Tu1pYIwtxlj5Aa1b3jwe/0N8qkDtI+9pjvcbTiKueiSOtcoeJxoiPquo5sedxPXhaTxt/j5irDWviWOtfBYTviU+nKviEePRaXrA6lmJMV+o+Oh0rFn2GNEINT8l8DT8quh5OfkVU61r4RvZ40MDxGfc1tpk8USH7PFlU/PJHj6fGLHBlipdp321iM+wGpuYg1pPu4wPGc8eHxLZ3d19vdYrbBbpuc21ibmo9ODgw1jD7PEhiXKNdq7SkWGaPbbWqPUqpljD7LEhiZWVlcMaR4WWXxKYRcxJjbOdWMPssSGB2Wz2do0jQrzwPXtsrRJzU2POy1q+lT02zJn19fXRT5/jFTMtvZNGa8Tc1HilV6xl9tgwZ8qp16zC0ffT7HG1TsxRhcccZtnjwhw5Ojp6pcaRIPMN6BaFmKMaZz6xptljw5zY2to6W+HBlM+zx7Uo1HjL2s3Nze6ertot5Zrp/NgbaDKZfJg9rkUh5qrCdfD57HFhTpQjwKWRT+EezuNN108LMVdj/0qprOln2ePCnCiLfX/kB1EuZY9p0Yg5Gzng+9ljwhwoP/3frHD69kn2uBaNmLOx1yHWNntcqMx0On1v7I0THw6WPa5FI+Zs7HWItc0eFyoz9vOf4+M5x/iUwN6IORv7o009L7oD4nNxR77+vZI9pkUl5m7MtYi1zR4TKrNSsGnaYOwfprG22WNCZcpP/WsjP4D1cfaYFpWYu5HPhq5ljwmVKT+k7465aTY2NrzR+HMSczfyEfhu9phQmeXl5XsjPwL9bvaYFpWYu5EfULyXPSZUppxmPR5z0xwcHHj54HMSczfyKfTj7DGhMuU0a7QNEx4fH7+WPaZFJeZu5FPoJ9ljQmWWlpZGDXhvb+/l7DEtKjF3Y65FrG32mFCZMTdMmD2eRcd6YBA2TFtYDwzChmkL64FB2DBtYT0wCBumLawHBmHDtIX1wCBsmLawHhiEDdMW1gODsGHawnpgEDZMW1gPDMKGaQvrgUHYMG1hPTAIG6YtrAcGYcO0hfXAIGyYtrAeGIQN0xbWA4OwYdrCemAQNkxbWA8MwoZpC+uBQdgwbWE9MAgbpi2sBwZhw7SF9cAgbJi2sB4YhA3TFtYDg7Bh2sJ6YBA2TFtYDwzChmkL64FB2DBtYT0wCBumLawHBmHDtIX1wCBsmLawHhiEDdMW1gODsGHawnpgEDZMW1gPDMKGaQvrgUHYMG1hPTAIG6YtrAcGYcO0hfXAIGyYtrAeGIQN0xbWY0EZe+HITLN7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjApYAGzT7N7EjC5gAH/G2ExN5o1BGmaAAAAAElFTkSuQmCC\"","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,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\"","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":""}