{"version":3,"file":"js/a5ed687f3e4e72f64909.chunk.js","mappings":"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","sources":["webpack:///./components/Tooltip.tsx","webpack:///./legacy/components/user/layout/navbar-top.ts","webpack:///./legacy/features/companies/payees/contactsFragment/ContactsFragment.store.ts","webpack:///./legacy/features/companies/payees/contactsFragment/contactsTable.state.ts","webpack:///./legacy/features/companies/payees/interfaces.ts","webpack:///./legacy/features/companies/payees/payeesRestApiService.ts","webpack:///./legacy/features/companies/payments/components/PayablesPage.store.ts","webpack:///./legacy/features/companies/payments/components/PayablesTable.queries.tsx","webpack:///./legacy/features/companies/payments/components/PayablesTable.state.tsx","webpack:///./legacy/features/companies/singleSignOn/models/singleSignOnSettings.ts","webpack:///./legacy/features/companies/singleSignOn/services/api.ts","webpack:///./legacy/features/companies/singleSignOn/services/singleSignOnFeatureToggleService.ts","webpack:///./legacy/features/user/requests/components/ReceivablesPage.store.ts","webpack:///./legacy/features/user/requests/components/ReceivablesTable.queries.ts","webpack:///./legacy/features/user/requests/components/ReceivablesTable.state.tsx","webpack:///./legacy/services/emailPaymentRequests.ts","webpack:///./legacy/services/filters/payeeFilters.ts","webpack:///./legacy/shared/components/SearchFilter/models/Property.ts","webpack:///./legacy/utils/plootoPlan/codes.ts","webpack:///./legacy/utils/plootoPlan/descriptions.ts"],"sourcesContent":["import * as React from 'react';\nimport MuiTooltip, { TooltipProps as MuiTooltipProps } from '@mui/material/Tooltip';\n\n/**\n * Plooto Tooltip.\n *\n * Identical to MUI v4's [Tooltip component](https://v4.mui.com/components/tooltips/), except we display a tooltip arrow by default.\n *\n * See the MUI component and the [Tooltip API](https://v4.mui.com/components/tooltips/) for additional usage details.\n *\n * @param props MUI Tooltip props\n * @returns Function component\n */\nconst Tooltip: React.FC = (props: MuiTooltipProps) => (\n \n);\n\nexport type { MuiTooltipProps as TooltipProps };\nexport default Tooltip;\n","import * as app from 'durandal/app';\nimport * as router from 'plugins/router';\nimport * as ko from 'knockout';\nimport * as segmentAnalytics from 'segmentAnalytics';\n\nimport { NavbarTop, NavbarTopProps } from '@/features/navigation';\nimport { isReferralsAvailableForCurrentCompany } from '@/features/referrals';\nimport contactsStore, {\n StoreActionType as ContactsStoreActionType,\n} from '@/legacy/features/companies/payees/contactsFragment/ContactsFragment.store';\nimport payablesStore, {\n StoreActionType as PayablesStoreActionType,\n} from '@/legacy/features/companies/payments/components/PayablesPage.store';\nimport { SingleSignOnSetupState } from '@/legacy/features/companies/singleSignOn/models/singleSignOnSettings';\nimport SingleSignOnFeatureToggleService from '@/legacy/features/companies/singleSignOn/services/singleSignOnFeatureToggleService';\nimport receivablesStore, {\n StoreActionType as ReceivablesStoreActionType,\n} from '@/legacy/features/user/requests/components/ReceivablesPage.store';\nimport * as companyService from '@/legacy/services/company';\nimport CompanyEventService from '@/legacy/services/companyEventService';\nimport * as emailPaymentRequestsService from '@/legacy/services/emailPaymentRequests';\nimport * as userService from '@/legacy/services/user';\n\nimport { EventName, FormEventType, SignoutContext } from '../../../features/analytics/helper';\n\ntype CurrentTab =\n | 'payments'\n | 'paymentRequests'\n | 'payees'\n | 'bank'\n | 'approvalRules'\n | 'documents'\n | 'dashboard';\n\nexport class ViewModel {\n private userService: userService.UserService = userService.Instance;\n\n private companyService: companyService.CompanyService = companyService.Instance;\n\n private routerNavigationSubscription: DurandalEventSubscription;\n\n private paymentRequestEmailKeyUpdateSubscription: DurandalEventSubscription;\n\n private currentTab = ko.observable(null);\n\n private PermissionId: typeof companyService.PermissionId;\n\n // Payment request\n private myInvoicesUrl = ko.observable(null);\n\n private myInvoicesCount = ko.observable(0);\n\n private paymentRequestEmailKey = ko.observable(null);\n\n private showReferralsNavItem = companyService.Instance.CompanyId.mapAsync(\n isReferralsAvailableForCurrentCompany\n );\n\n /** Links to the first settings panel that they have access to. */\n private settingsHref = ko.pureComputed({\n read: () => {\n if (this.companyService.HasPermissionTo(this.PermissionId.COMPANY_EDIT)) {\n return '#user/settings/company';\n }\n if (\n this.isAccountingFirm() &&\n this.companyService.HasPermissionTo(this.PermissionId.COMPANY_EDIT)\n ) {\n return '#user/settings/accountingFirm';\n }\n if (this.companyService.HasPermissionTo(this.PermissionId.USER_ADD_EDIT)) {\n return '#user/settings/users';\n }\n if (this.isSingleSignOnVisible()) {\n return '#user/settings/sso';\n }\n\n return '#user/settings/controls';\n },\n deferEvaluation: true,\n });\n\n public react = {\n NavbarTop,\n };\n\n constructor() {\n this.PermissionId = companyService.PermissionId;\n\n // If the email key changes reload the unpaid invoices\n this.paymentRequestEmailKey.subscribe(() => {\n this.reloadUnpaidInvoices();\n });\n }\n\n public attached() {\n this.routerNavigationSubscription = app.on('router:navigation:complete').then(() => {\n this.updateCurrentTab();\n });\n this.updateCurrentTab();\n\n this.paymentRequestEmailKeyUpdateSubscription = app\n .on('paymentRequest:refresh')\n .then((koEmailPaymentRequest: emailPaymentRequestsService.KoEmailPaymentRequest) => {\n this.paymentRequestEmailKey(koEmailPaymentRequest.emailKey());\n\n this.reloadUnpaidInvoices();\n });\n }\n\n public detached() {\n this.showReferralsNavItem?.dispose();\n this.paymentRequestEmailKeyUpdateSubscription?.off();\n this.routerNavigationSubscription?.off();\n }\n\n private activeRouteFragment(route: string): boolean {\n return router.activeInstruction().fragment.startsWith(route);\n }\n\n private updateCurrentTab() {\n // Figure out if the person is looking at the payment request\n this.checkMyInvoicesRoute();\n\n if (this.activeRouteFragment('user/payments')) {\n this.currentTab('payments');\n } else if (this.activeRouteFragment('user/requests')) {\n this.currentTab('paymentRequests');\n } else if (this.activeRouteFragment('user/payees')) {\n this.currentTab('payees');\n } else if (this.activeRouteFragment('user/bank')) {\n this.currentTab('bank');\n } else if (this.activeRouteFragment('user/approvals')) {\n this.currentTab('approvalRules');\n } else if (this.activeRouteFragment('user/documents')) {\n this.currentTab('documents');\n } else if (\n router.activeInstruction().fragment === 'user' ||\n this.activeRouteFragment('user/dashboard')\n ) {\n this.currentTab('dashboard');\n } else {\n this.currentTab(null);\n }\n }\n\n private NavigateHome = () => {\n // don't navigate anywhere when tutorial is visible\n if ($('body').hasClass('tutorial-visible')) {\n router.navigate('user/tutorials/companyInfo');\n return;\n }\n\n if (this.userService.IsAuthenticated() === false || !companyService.Instance.CompanyName()) {\n router.navigate('https://www.plooto.com/');\n } else {\n router.navigate('user');\n }\n window.scrollTo({ top: 0 });\n };\n\n private shouldShowGoHomeButton = ko.pureComputed(\n () =>\n router.activeInstruction().fragment === 'user/settings/sso' ||\n router.activeInstruction().fragment === 'user/settings'\n );\n\n private LogoutUser = () => {\n segmentAnalytics.track(EventName.UserSignedOut, {\n source: FormEventType.ButtonClicked,\n context: SignoutContext.Settings,\n });\n segmentAnalytics.reset();\n\n this.userService.Logout();\n };\n\n private navigateSwitchCompany() {\n payablesStore.dispatch({ type: PayablesStoreActionType.Reset }); // reset company specific filters before changing the company\n receivablesStore.dispatch({ type: ReceivablesStoreActionType.Reset });\n contactsStore.dispatch({ type: ContactsStoreActionType.Reset });\n\n router.navigate('user/company/select');\n }\n\n private checkMyInvoicesRoute() {\n if (\n this.activeRouteFragment('requests/myInvoices/') ||\n this.activeRouteFragment('requests/display/')\n ) {\n const myInvoicesRoute = router\n .activeInstruction()\n .fragment.replace('requests/display/', '')\n .replace('requests/myInvoices/', '');\n const myInvoicesRouteSplit = myInvoicesRoute.split('/');\n\n this.myInvoicesUrl(`#requests/myInvoices/${myInvoicesRoute}`);\n this.paymentRequestEmailKey(myInvoicesRouteSplit[0]);\n } else {\n this.myInvoicesUrl(null);\n }\n }\n\n private reloadUnpaidInvoices() {\n emailPaymentRequestsService.Instance.countContactPaymentRequests(this.paymentRequestEmailKey())\n .then((unpaidContactPaymentRequests: number) => {\n this.myInvoicesCount(unpaidContactPaymentRequests);\n })\n .fail(() => {\n this.myInvoicesCount(null);\n });\n }\n\n private isNavigationButtonsVisible = ko.pureComputed({\n read: () => {\n // Hide navigation buttons if you are going through id verification\n if (\n this.activeRouteFragment('user/identityVerification') ||\n this.activeRouteFragment('user/company/select')\n ) {\n return false;\n }\n\n return true;\n },\n deferEvaluation: true,\n });\n\n private isAccountingFirm = ko.pureComputed({\n read: () => {\n if (companyService.Instance.profile()) {\n return companyService.Instance.profile().isAccountingFirm();\n }\n\n return false;\n },\n deferEvaluation: true,\n });\n\n private isSwitchCompanies = ko.pureComputed({\n read: () => {\n if (router.activeInstruction().fragment.includes('user/company/select')) {\n return true;\n }\n\n return false;\n },\n });\n\n private isSingleSignOnVisible = ko.pureComputed({\n read: () =>\n SingleSignOnFeatureToggleService.IsSingleSignOnEnabled() &&\n (SingleSignOnFeatureToggleService.IsSingleSignOnAdminUser() ||\n SingleSignOnFeatureToggleService.SingleSignOnSettings()?.setupState ===\n SingleSignOnSetupState.NotStarted),\n });\n\n private navigateToReferrals() {\n CompanyEventService.emit(FormEventType.ButtonClicked, {\n context: 'dropDownMenu',\n buttonName: 'Referrals',\n });\n\n return true;\n }\n\n /**\n * Props to supply to NavbarTop, effectively bridging the business logic in this viewmodel with\n * the new presentation logic in React. Using a computed viewmodel field so we get type-safety\n * given the immense size of this props object.\n */\n public reactNavbarProps = ko.pureComputed({\n read: (): NavbarTopProps => ({\n navigateHome: this.NavigateHome,\n navigateSwitchCompany: this.navigateSwitchCompany,\n logoutUser: this.LogoutUser,\n settingsHref: this.settingsHref(),\n currentTab: this.currentTab(),\n shouldShowNavigation: Boolean(\n this.userService.IsAuthenticated() &&\n this.companyService.CompanyName() &&\n this.isNavigationButtonsVisible()\n ),\n shouldShowMyInvoices: Boolean(\n !(this.userService.IsAuthenticated() && this.companyService.CompanyName()) &&\n this.myInvoicesUrl()\n ),\n shouldShowHelpCenter: Boolean(\n this.userService.IsAuthenticated() &&\n ((this.companyService.CompanyName() && this.isNavigationButtonsVisible()) ||\n (!this.isSwitchCompanies() && this.userService.isSsoAdminUserWithoutNodePermissions()))\n ),\n shouldShowSwitchCompany: Boolean(\n this.userService.IsAuthenticated() &&\n this.companyService.CompanyName() &&\n this.isNavigationButtonsVisible()\n ),\n shouldShowReturnToDashboard: Boolean(\n this.userService.IsAuthenticated() &&\n (this.isSwitchCompanies() || this.userService.isSsoAdminUserWithoutNodePermissions()) &&\n !this.userService.profile().isSsoAdminUser() &&\n this.userService.memberships().length > 0\n ),\n shouldShowReturnToHome: Boolean(\n this.userService.IsAuthenticated() &&\n (this.isSwitchCompanies() || this.userService.isSsoAdminUserWithoutNodePermissions()) &&\n this.userService.profile().isSsoAdminUser() &&\n this.shouldShowGoHomeButton()\n ),\n shouldShowUserSettings: Boolean(\n this.userService.IsAuthenticated() &&\n ((this.companyService.CompanyName() && this.isNavigationButtonsVisible()) ||\n ((this.isSwitchCompanies() ||\n this.userService.isSsoAdminUserWithoutNodePermissions()) &&\n this.userService.profile().isSsoAdminUser()))\n ),\n shouldShowCompanySettings: Boolean(\n this.userService.IsAuthenticated() &&\n this.companyService.CompanyName() &&\n this.isNavigationButtonsVisible()\n ),\n shouldShowSsoSettings: Boolean(\n this.userService.IsAuthenticated() &&\n (this.isSwitchCompanies() || this.userService.isSsoAdminUserWithoutNodePermissions()) &&\n this.userService.profile().isSsoAdminUser()\n ),\n shouldShowReferrals: Boolean(this.showReferralsNavItem() && !this.isSwitchCompanies()),\n shouldShowLogOut: Boolean(this.userService.IsAuthenticated()),\n isSwitchCompanies: this.isSwitchCompanies(),\n myInvoicesUrl: this.myInvoicesUrl(),\n myInvoicesCount: this.myInvoicesCount(),\n navigateToReferrals: this.navigateToReferrals,\n }),\n deferEvaluation: true,\n });\n}\n","import { createStore } from 'redux';\n\nimport { PayeeContactTabsType } from '@/legacy/services/filters/payeeFilters';\n\nimport ContactsTableState, { getInitialState } from './contactsTable.state';\n\nenum StoreActionType {\n SetState,\n AddSupplierSuccess,\n AddCustomerSuccess,\n Reset,\n}\n\ninterface SetStateAction {\n readonly type: StoreActionType.SetState;\n readonly payload: { contactType: PayeeContactTabsType; newState: ContactsTableState };\n}\n\ninterface AddSupplierSuccessAction {\n readonly type: StoreActionType.AddSupplierSuccess;\n}\n\ninterface AddCustomerSuccessAction {\n readonly type: StoreActionType.AddCustomerSuccess;\n}\n\ninterface ResetAction {\n readonly type: StoreActionType.Reset;\n}\n\ntype StoreAction =\n | SetStateAction\n | AddSupplierSuccessAction\n | AddCustomerSuccessAction\n | ResetAction;\n\ninterface State {\n [PayeeContactTabsType.All]: ContactsTableState;\n [PayeeContactTabsType.Suppliers]: ContactsTableState;\n [PayeeContactTabsType.Customers]: ContactsTableState;\n}\n\nconst initialState: State = {\n [PayeeContactTabsType.All]: getInitialState(PayeeContactTabsType.All),\n [PayeeContactTabsType.Suppliers]: getInitialState(PayeeContactTabsType.Suppliers),\n [PayeeContactTabsType.Customers]: getInitialState(PayeeContactTabsType.Customers),\n};\n\nconst reducer = (state: State, action: StoreAction): State => {\n switch (action.type) {\n case StoreActionType.SetState: {\n const { contactType, newState } = action.payload;\n return {\n ...state,\n [contactType]: newState,\n };\n }\n case StoreActionType.AddSupplierSuccess:\n return {\n ...state,\n [PayeeContactTabsType.All]: {\n ...state[PayeeContactTabsType.All],\n grandTotalCount:\n state[PayeeContactTabsType.All].grandTotalCount &&\n state[PayeeContactTabsType.All].grandTotalCount + 1,\n },\n [PayeeContactTabsType.Suppliers]: {\n ...state[PayeeContactTabsType.Suppliers],\n grandTotalCount:\n state[PayeeContactTabsType.Suppliers].grandTotalCount &&\n state[PayeeContactTabsType.Suppliers].grandTotalCount + 1,\n },\n };\n case StoreActionType.AddCustomerSuccess:\n return {\n ...state,\n [PayeeContactTabsType.All]: {\n ...state[PayeeContactTabsType.All],\n grandTotalCount:\n state[PayeeContactTabsType.All].grandTotalCount &&\n state[PayeeContactTabsType.All].grandTotalCount + 1,\n },\n [PayeeContactTabsType.Customers]: {\n ...state[PayeeContactTabsType.Customers],\n grandTotalCount:\n state[PayeeContactTabsType.Customers].grandTotalCount &&\n state[PayeeContactTabsType.Customers].grandTotalCount + 1,\n },\n };\n case StoreActionType.Reset:\n return { ...initialState };\n default:\n return state;\n }\n};\n\n/**\n * Redux store. Allows to store React state outside of component\n * to preserve component state between navigations to other pages\n */\nconst store = createStore(reducer, initialState);\n\nconst selectContactsState = (state: State, contactType: PayeeContactTabsType) => state[contactType];\n\nexport { StoreActionType, selectContactsState };\nexport default store;\n","import { PayeeContactTabsType } from '@/legacy/services/filters/payeeFilters';\nimport Filter from '@/legacy/shared/components/SearchFilter/models/Filter';\nimport {\n Property as FilterProperty,\n PropertyType,\n} from '@/legacy/shared/components/SearchFilter/models/Property';\n\nimport { Payee } from '../interfaces';\nimport { Comparison } from '../payeesRestApiService';\n\nimport { QueryAction, SortingItem } from './contactsTable.actions';\n\nenum FilterNames {\n Email = 'Email',\n PadStatus = 'PAD Status',\n}\n\nenum FilterRelations {\n Equals = 'equals',\n NotEqualTo = 'not equal to',\n Contains = 'contains',\n DoesNotContain = 'does not contain',\n StartsWith = 'starts with',\n}\n\ninterface State {\n isLoading: boolean;\n isError: boolean;\n searchQuery: string;\n filters: Array;\n sorting: Array;\n data: Array;\n totalCount: number;\n grandTotalCount: number;\n currentPage: number;\n pageSizeOptions: Array;\n pageSize: number;\n contactType: PayeeContactTabsType;\n appliedFilters: Array;\n filterOptions: Array;\n queries: Array;\n}\n\nfunction getInitialState(contactType: PayeeContactTabsType): State {\n return {\n isLoading: false,\n isError: false,\n searchQuery: '',\n filters: [],\n sorting: [],\n data: [],\n totalCount: 0,\n grandTotalCount: null,\n currentPage: 0,\n pageSizeOptions: [10, 25, 50],\n pageSize: 10,\n contactType,\n appliedFilters: [],\n filterOptions: [\n {\n name: FilterNames.Email,\n label: FilterNames.Email,\n type: PropertyType.Text,\n relations: [\n { value: Comparison.Equals, label: FilterRelations.Equals },\n { value: Comparison.NotEquals, label: FilterRelations.NotEqualTo },\n { value: Comparison.Contains, label: FilterRelations.Contains },\n { value: Comparison.DoesNotContain, label: FilterRelations.DoesNotContain },\n { value: Comparison.StartsWith, label: FilterRelations.StartsWith },\n ],\n },\n {\n name: FilterNames.PadStatus,\n label: FilterNames.PadStatus,\n type: PropertyType.Dropdown,\n values: [\n { value: '0', label: 'None' },\n { value: '100', label: 'Pending' },\n { value: '200', label: 'Completed' },\n ],\n relations: [\n { value: Comparison.Equals, label: FilterRelations.Equals },\n { value: Comparison.NotEquals, label: FilterRelations.NotEqualTo },\n ],\n },\n ],\n queries: [],\n };\n}\n\nexport { getInitialState, FilterNames };\nexport default State;\n","import { CreditCardPayableStatus } from '@/features/pay-by-card/types';\nimport BankAccountDetails from '@/legacy/features/bankAccounts/interfaces';\nimport { PayeeBusinessType } from '@/legacy/services/company/payee.types';\n\n/**\n * A payee that can be used by multiple companies.\n * @todo Type this better using the backend.\n */\ninterface UniversalPayee {\n id: string;\n}\n\ninterface PayeeAccount {\n accountDetails: BankAccountDetails | null;\n accountTransactionType: string;\n additionalVisibleBankFields: Array;\n bank: string;\n bankDetailsRequired: boolean;\n checkAddress: string;\n checkSuite: string;\n checkState: string;\n checkCity: string;\n checkZipCode: string;\n checkPrintNameOnCheckAs: string;\n containsAccountInformation: boolean;\n country: string;\n currency: string;\n deleted: boolean;\n discriminator: string;\n displayName: string;\n emailMoneyTransfer: boolean;\n id: string;\n name: string;\n payeeId: string;\n payee: Payee;\n securityQuestion: string;\n securityAnswer: string;\n}\n\n/**\n * The object to send to the API to create a payee in the backend.\n */\ninterface PayeeBindingModel {\n accounts?: Array;\n accountingSoftwarePayeeId?: string;\n accountingSoftwarePayeeName?: string;\n address?: string;\n businessType?: string;\n city?: string;\n companyId?: string;\n /**\n * The name of the Payee.\n * @required\n */\n contact: string;\n country?: string;\n currency?: string;\n deleted?: boolean;\n displayName?: string;\n /**\n * @required\n */\n email: string;\n id?: string;\n isNetworkPayee?: boolean;\n locale?: string;\n name?: string;\n phone?: string;\n printNameOnCheckAs?: string;\n state?: string;\n suite?: string;\n type?: string;\n padStatus?: string;\n registrationDate?: Date;\n /**\n * @see {@link UniversalPayee}\n */\n universalPayee?: UniversalPayee;\n universalPayeeId?: string;\n vendorAccountNumber?: string;\n zipCode?: string;\n}\n\nexport enum PayeePadStatus {\n None = 'None',\n Pending = 'Pending',\n Completed = 'Completed',\n}\n\ninterface Payee {\n accounts: Array;\n accountingSoftwarePayeeId: string;\n accountingSoftwarePayeeName: string;\n address: string;\n businessType: PayeeBusinessType;\n city: string;\n companyId: string;\n contact: string;\n country: string;\n currency: string;\n deleted: boolean;\n displayName: string;\n email: string;\n id: string;\n isNetworkPayee: boolean;\n locale: string;\n name: string;\n phone: string;\n printNameOnCheckAs: string;\n state: string;\n suite: string;\n type: string;\n padStatus: PayeePadStatus;\n registrationDate: Date;\n /**\n * @see {@link UniversalPayee}\n */\n universalPayee: UniversalPayee;\n universalPayeeId: string;\n vendorAccountNumber: string;\n zipCode: string;\n industry: string;\n industrySubCategory: string;\n creditCardPayableStatus: CreditCardPayableStatus;\n}\n\ninterface PayeesPage {\n items: Array;\n totalResults: number;\n}\n\ninterface PayeesByIdsResponse {\n payees: Array;\n}\n\nenum SortableFieldTypes {\n Name,\n ContactName,\n Email,\n}\n\nexport type {\n BankAccountDetails,\n Payee,\n PayeeAccount,\n PayeeBindingModel,\n PayeesPage,\n PayeesByIdsResponse,\n};\nexport { SortableFieldTypes };\n","import { ApiService, SearchPaginationOptions } from '@/features/api';\nimport { Comparison, SortOrder } from '@/features/api/types/pagination';\n\nimport {\n Payee,\n PayeeBindingModel,\n PayeesByIdsResponse,\n PayeesPage,\n SortableFieldTypes,\n} from './interfaces';\n\nclass PayeesRestApiService {\n public static async create(bindingModel: PayeeBindingModel, companyId: string): Promise {\n const url = new URL(`${import.meta.env.APP_URLS_API_URL}/v1/companies/${companyId}/payees`);\n\n return ApiService.put(url.toString(), { body: bindingModel }, true);\n }\n\n public static async get(payeeId: string, companyId: string): Promise {\n const url = new URL(\n `${import.meta.env.APP_URLS_API_URL}/v1/companies/${companyId}/payees/${payeeId}`\n );\n\n return ApiService.get(url.toString(), null, true);\n }\n\n public static async getPayees(\n companyId: string,\n options: SearchPaginationOptions = null\n ): Promise {\n const url = new URL(\n `${import.meta.env.APP_URLS_API_URL}/v1/companies/${companyId}/payees/search`\n );\n return ApiService.post(url.toString(), { body: options }, true);\n }\n\n public static async getPayeesByIds(\n companyId: string,\n payeeIds: Array\n ): Promise {\n const url = new URL(\n `${import.meta.env.APP_URLS_API_URL}/v1/companies/${companyId}/payees/searchByIds`\n );\n const options = {\n payeeIds,\n };\n return ApiService.post(url.toString(), { body: options }, true);\n }\n\n public static async getSuppliers(\n companyId: string,\n name?: string,\n resultsPerPage = 50\n ): Promise {\n return this.getPayees(companyId, {\n searchQuery: name,\n sortDetails: [\n {\n type: SortableFieldTypes.Name,\n order: SortOrder.Ascending,\n },\n ],\n resultsPerPage,\n filters: [\n {\n type: 'Type',\n value: 'Supplier',\n comparison: Comparison.Equals,\n },\n ],\n });\n }\n}\n\nexport default PayeesRestApiService;\nexport type { Payee };\nexport { Comparison } from '@/features/api';\n","import { createStore } from 'redux';\n\nimport PayablesTableState, { getInitialState } from './PayablesTable.state';\n\nenum StoreActionType {\n SetPendingPayablesState,\n SetCompletedPayablesState,\n AddPayableSuccess,\n Reset,\n}\n\ninterface SetPendingPayablesStateAction {\n readonly type: StoreActionType.SetPendingPayablesState;\n readonly payload: PayablesTableState;\n}\n\ninterface SetCompletedPayablesStateAction {\n readonly type: StoreActionType.SetCompletedPayablesState;\n readonly payload: PayablesTableState;\n}\n\ninterface AddPayableSuccessAction {\n readonly type: StoreActionType.AddPayableSuccess;\n}\n\ninterface ResetAction {\n readonly type: StoreActionType.Reset;\n}\n\ntype StoreAction =\n | SetPendingPayablesStateAction\n | SetCompletedPayablesStateAction\n | AddPayableSuccessAction\n | ResetAction;\n\ninterface State {\n pendingPayablesState: PayablesTableState;\n completedPayablesState: PayablesTableState;\n}\n\nconst initialState: State = {\n pendingPayablesState: getInitialState(true, ''),\n completedPayablesState: getInitialState(false, ''),\n};\n\nconst reducer = (state: State, action: StoreAction): State => {\n switch (action.type) {\n case StoreActionType.SetPendingPayablesState:\n return {\n ...state,\n pendingPayablesState: action.payload,\n };\n case StoreActionType.SetCompletedPayablesState:\n return {\n ...state,\n completedPayablesState: action.payload,\n };\n case StoreActionType.AddPayableSuccess:\n return {\n ...state,\n pendingPayablesState: {\n ...state.pendingPayablesState,\n grandTotalNumberOfRecords: state.pendingPayablesState.grandTotalNumberOfRecords + 1,\n },\n };\n case StoreActionType.Reset:\n return { ...initialState };\n default:\n return state;\n }\n};\n\n/**\n * Redux store. Allows to store React state outside of component\n * to preserve component state between navigations to other pages\n */\nconst store = createStore(reducer, initialState);\n\nconst selectPendingPayablesState = (state: State) => state.pendingPayablesState;\nconst selectCompletedPayablesState = (state: State) => state.completedPayablesState;\n\nexport { StoreActionType, selectPendingPayablesState, selectCompletedPayablesState };\nexport default store;\n","import PayablesTableSearchQuery from '../models/payablesTableSearchQuery';\n\nenum PayablesTableQueryType {\n GetDropdownOptions,\n GetPage,\n DeletePayment,\n}\n\ninterface QueryGetDropdownOptions {\n type: PayablesTableQueryType.GetDropdownOptions;\n}\n\ninterface QueryGetPage {\n type: PayablesTableQueryType.GetPage;\n query: PayablesTableSearchQuery;\n}\n\ninterface QueryDeletePayment {\n type: PayablesTableQueryType.DeletePayment;\n paymentId: string;\n}\n\ntype PayablesTableQuery = QueryGetDropdownOptions | QueryGetPage | QueryDeletePayment;\n\nexport { PayablesTableQueryType };\nexport default PayablesTableQuery;\n","import { Comparison } from '@/features/api';\nimport {\n DateProperty,\n DropdownProperty,\n NumberProperty,\n PropertyType,\n TextProperty,\n} from '@/legacy/shared/components/SearchFilter/models/Property';\n\nimport PayablesTableRowData from '../models/payablesTableRow';\nimport PayablesTableSearchQuery from '../models/payablesTableSearchQuery';\n\nimport PayablesTableQuery, { PayablesTableQueryType } from './PayablesTable.queries';\n\n/**\n * Properties required to render a table component for Payables\n */\ninterface PayablesTableProperties {\n readonly paymentStatus: DropdownProperty;\n readonly amount: NumberProperty;\n readonly requestedDebitDate: DateProperty;\n readonly createdDate: DateProperty;\n readonly debitDate: DateProperty;\n readonly paymentMethod: DropdownProperty;\n readonly bank: DropdownProperty;\n readonly memo: TextProperty;\n readonly initiatedBy: DropdownProperty;\n readonly recurring: DropdownProperty;\n readonly currency: DropdownProperty;\n readonly destinationCountry: DropdownProperty;\n readonly imported: DropdownProperty;\n}\n\n/**\n * Properties required to manage table component state for Payables Table\n */\ninterface PayablesTableState {\n /**\n * Required properties to render payables table component\n */\n readonly properties: PayablesTableProperties;\n readonly propertiesOrder: Array;\n readonly query: PayablesTableSearchQuery;\n readonly totalNumberOfRecords: number;\n readonly grandTotalNumberOfRecords: number;\n readonly rows: Array;\n readonly isLoading: boolean;\n readonly isError: boolean;\n readonly filterStatus: 'not loaded' | 'loading' | 'loaded';\n readonly queries: Array;\n}\n\nconst pendingPayablesStatusOptions = [\n { value: 'Scheduled', label: 'Scheduled' },\n { value: 'InClearing', label: 'In Clearing' },\n { value: 'ApprovalRequired', label: 'Approval Required' },\n];\n\nconst completedPayablesStatusOptions = [\n { value: 'Deleted', label: 'Deleted' },\n { value: 'Completed', label: 'Completed' },\n { value: 'DebitFailed', label: 'Debit Failed' },\n { value: 'CreditFailed', label: 'Credit Failed' },\n { value: 'Rejected', label: 'Rejected' },\n { value: 'Recalled', label: 'Recalled' },\n { value: 'CheckMailed', label: 'Check Mailed' },\n];\n\nconst getInitialState = (\n pendingPayables: boolean,\n recentPayablesContactId: string\n): PayablesTableState => {\n const initialQuery: PayablesTableSearchQuery = {\n searchText: '',\n filters: [],\n sortDirections: {\n contact: false,\n status: false,\n requestedDebitDate: false,\n estimatedDeliveryDate: false,\n amount: false,\n },\n sortOrder: [],\n pageIndex: 0,\n pageSize: 10,\n pendingPayables,\n recentPayablesContactId,\n };\n\n return {\n properties: {\n paymentStatus: {\n name: 'Status',\n label: 'Payment Status',\n type: PropertyType.Dropdown,\n relations: [\n { value: Comparison.Equals, label: 'equals' },\n { value: Comparison.NotEquals, label: 'not equal to' },\n ],\n values: pendingPayables ? pendingPayablesStatusOptions : completedPayablesStatusOptions,\n },\n amount: {\n name: 'Amount',\n label: 'Amount',\n type: PropertyType.Number,\n relations: [\n { value: Comparison.Equals, label: 'equals' },\n { value: Comparison.NotEquals, label: 'not equal to' },\n { value: Comparison.LessThan, label: 'less than' },\n { value: Comparison.GreaterThan, label: 'greater than' },\n { value: Comparison.LessOrEqual, label: 'less or equal' },\n { value: Comparison.GreaterOrEqual, label: 'greater or equal' },\n ],\n },\n requestedDebitDate: {\n name: 'DebitDate',\n label: 'Requested Debit Date',\n type: PropertyType.Date,\n },\n createdDate: { name: 'CreatedDate', label: 'Created Date', type: PropertyType.Date },\n debitDate: { name: 'WithdrawnOn', label: 'Debit Date', type: PropertyType.Date },\n paymentMethod: {\n name: 'Method',\n label: 'Payment Method',\n type: PropertyType.Dropdown,\n relations: [\n { value: Comparison.Equals, label: 'equals' },\n { value: Comparison.NotEquals, label: 'not equal to' },\n ],\n values: [\n { value: '0', label: 'Bank Deposit' },\n { value: '1', label: 'Cheque' },\n { value: '2', label: 'Email Money Transfer' },\n ],\n },\n bank: {\n name: 'Bank',\n label: 'Account',\n type: PropertyType.Dropdown,\n relations: [\n { value: Comparison.Equals, label: 'equals' },\n { value: Comparison.NotEquals, label: 'not equal to' },\n ],\n values: [],\n loading: true,\n },\n memo: {\n name: 'Memo',\n label: 'Memo',\n type: PropertyType.Text,\n relations: [{ value: Comparison.Contains, label: 'contains' }],\n },\n initiatedBy: {\n name: 'InitiatedBy',\n label: 'Initiated By',\n type: PropertyType.Dropdown,\n relations: [\n { value: Comparison.Equals, label: 'equals' },\n { value: Comparison.NotEquals, label: 'not equal to' },\n ],\n values: [],\n loading: true,\n },\n recurring: {\n name: 'Recurring',\n label: 'Recurring',\n type: PropertyType.Dropdown,\n relations: [{ value: Comparison.Equals, label: 'equals' }],\n values: [\n { value: '1', label: 'Yes' },\n { value: '0', label: 'No' },\n ],\n },\n currency: {\n name: 'Currency',\n label: 'Currency',\n type: PropertyType.Dropdown,\n relations: [{ value: Comparison.Equals, label: 'equals' }],\n values: [],\n loading: true,\n },\n destinationCountry: {\n name: 'DestinationCountry',\n label: 'Destination Country',\n type: PropertyType.Dropdown,\n relations: [{ value: Comparison.Equals, label: 'equals' }],\n values: [],\n loading: true,\n },\n imported: {\n name: 'Imported',\n label: 'Imported',\n type: PropertyType.Dropdown,\n relations: [{ value: Comparison.Equals, label: 'equals' }],\n values: [\n { value: '1', label: 'Yes' },\n { value: '0', label: 'No' },\n ],\n },\n },\n propertiesOrder: [\n 'paymentStatus',\n 'amount',\n 'requestedDebitDate',\n 'createdDate',\n 'debitDate',\n 'paymentMethod',\n 'bank',\n 'memo',\n 'initiatedBy',\n 'recurring',\n 'currency',\n 'destinationCountry',\n 'imported',\n ],\n query: initialQuery,\n rows: [],\n totalNumberOfRecords: undefined,\n grandTotalNumberOfRecords: null,\n isLoading: true,\n isError: false,\n filterStatus: 'not loaded',\n queries: [\n {\n type: PayablesTableQueryType.GetPage,\n query: initialQuery,\n },\n ],\n };\n};\n\nexport { PayablesTableProperties, getInitialState };\nexport default PayablesTableState;\n","export enum SingleSignOnSetupState {\n NotStarted = 'NotStarted',\n InProgress = 'InProgress',\n Completed = 'Completed',\n}\n\ninterface SingleSignOnSettings {\n isEnabled: boolean;\n setupState: SingleSignOnSetupState;\n}\n\nexport default SingleSignOnSettings;\n","import { ApiService } from '@/features/api';\n\nimport SingleSignOnAdministrator from '../models/singleSignOnAdministrator';\nimport SingleSignOnConfiguration from '../models/singleSignOnConfiguration';\nimport SingleSignOnEmailDomain from '../models/singleSignOnEmailDomain';\nimport SingleSignOnSettings from '../models/singleSignOnSettings';\n\nfunction getSingleSignOnSettings(companyId: string): Promise {\n return ApiService.get(\n `${import.meta.env.APP_URLS_API_URL}/v1/companies/${companyId}/singleSignOn/settings`,\n null,\n true\n );\n}\n\nfunction getSingleSignOnConfiguration(companyId: string): Promise {\n return ApiService.get(\n `${import.meta.env.APP_URLS_API_URL}/v1/companies/${companyId}/singleSignOn/settings/configuration`,\n null,\n true\n );\n}\n\nfunction updateSingleSignOnConfiguration(\n configuration: SingleSignOnConfiguration,\n companyId: string\n): Promise {\n return ApiService.put(\n `${import.meta.env.APP_URLS_API_URL}/v1/companies/${companyId}/singleSignOn/settings/configuration`,\n { body: configuration },\n true\n );\n}\n\nfunction insertSingleSignOnEmailDomain(\n domain: string,\n companyId: string\n): Promise {\n return ApiService.post(\n `${import.meta.env.APP_URLS_API_URL}/v1/companies/${companyId}/singleSignOn/settings/emailDomains`,\n { body: { domain } },\n true\n );\n}\n\nfunction getSingleSignOnEmailDomains(companyId: string): Promise> {\n return ApiService.get(\n `${import.meta.env.APP_URLS_API_URL}/v1/companies/${companyId}/singleSignOn/settings/emailDomains`,\n null,\n true\n );\n}\n\nfunction verifySingleSignOnEmailDomain(\n emailDomain: string,\n companyId: string\n): Promise {\n return ApiService.post(\n `${import.meta.env.APP_URLS_API_URL}/v1/companies/${companyId}/singleSignOn/settings/emailDomains/${emailDomain}`,\n null,\n true\n );\n}\n\nfunction deleteSingleSignOnEmailDomain(emailDomainId: string, companyId: string): Promise {\n return ApiService.remove(\n `${import.meta.env.APP_URLS_API_URL}/v1/companies/${companyId}/singleSignOn/settings/emailDomains/${emailDomainId}`,\n null,\n true\n );\n}\n\nfunction insertSingleSignOnAdministrator(\n email: string,\n companyId: string\n): Promise {\n return ApiService.post(\n `${import.meta.env.APP_URLS_API_URL}/v1/companies/${companyId}/singleSignOn/settings/administrators`,\n { body: { email } },\n true\n );\n}\n\nfunction getSingleSignOnAdministrators(\n companyId: string\n): Promise> {\n return ApiService.get(\n `${import.meta.env.APP_URLS_API_URL}/v1/companies/${companyId}/singleSignOn/settings/administrators`,\n null,\n true\n );\n}\n\nfunction deleteSingleSignOnAdministrator(email: string, companyId: string): Promise {\n const encodedEmail = encodeURIComponent(email);\n\n return ApiService.remove(\n `${\n import.meta.env.APP_URLS_API_URL\n }/v1/companies/${companyId}/singleSignOn/settings/administrators?email=${encodedEmail}`,\n null,\n true\n );\n}\n\nfunction getSingleSignOnTwoFactorBypassValue(email: string, companyId: string): Promise {\n const encodedEmail = encodeURIComponent(email);\n return ApiService.get(\n `${import.meta.env.APP_URLS_API_URL}/v1/companies/${companyId}/singleSignOn/settings/2fa/bypass?email=${encodedEmail}`\n );\n}\n\nexport {\n getSingleSignOnSettings,\n getSingleSignOnConfiguration,\n updateSingleSignOnConfiguration,\n insertSingleSignOnEmailDomain,\n getSingleSignOnEmailDomains,\n verifySingleSignOnEmailDomain,\n deleteSingleSignOnEmailDomain,\n insertSingleSignOnAdministrator,\n getSingleSignOnAdministrators,\n deleteSingleSignOnAdministrator,\n getSingleSignOnTwoFactorBypassValue,\n};\n","import * as ko from 'knockout';\n\nimport { getSingleSignOnSettings } from '@/legacy/features/companies/singleSignOn/services/api';\nimport { Instance as CompanyService } from '@/legacy/services/company';\nimport { Instance as UserService } from '@/legacy/services/user';\nimport { getNameFromCode, PlanNames } from '@/legacy/utils/plootoPlan';\n\nenum SingleSignOnFeatureState {\n /** Not available at all. */\n NotAvailable,\n /** Currently enabled, configurable. */\n Enabled,\n /** Not currently enabled, but can be enabled. */\n Available,\n /** Not currently available, but can be accessed via plan upgrade. */\n AvailableForUpgrade,\n}\n\n/** Plans that SSO are available to as an upgrade. */\nconst UpgradeForPlans: ReadonlySet = new Set([\n getNameFromCode(PlanNames.Go),\n getNameFromCode(PlanNames.Grow),\n getNameFromCode(PlanNames['Grow Unlimited']),\n]);\n\n/**\n * Plans that SSO are available to innately.\n *\n * TODO(PLP-35965): Remove this after BE updated with isSingleSignOnEnabled.\n */\nconst AvailableForPlans: ReadonlySet = new Set([getNameFromCode(PlanNames.Pro)]);\n\nclass SingleSignOnFeatureToggleService {\n private static IsSingleSignOnFeatureEnabled = ko.pureComputed(() =>\n Boolean(UserService.profile()?.ssoAdminCompanyId?.())\n );\n\n public static IsSingleSignOnAdminUser = ko.pureComputed(\n () =>\n UserService.isSsoAdminUserWithoutNodePermissions() ||\n (UserService.profile()?.isSsoAdminUser() &&\n UserService.profile()?.ssoAdminCompanyId() === CompanyService.CompanyId())\n );\n\n public static FeatureState = ko.pureComputed(() => {\n if (this.IsSingleSignOnFeatureEnabled() && this.IsSingleSignOnAdminUser()) {\n return SingleSignOnFeatureState.Enabled;\n }\n const planName = CompanyService.profile()?.subscriptionFeatures()?.name();\n const isSingleSignOnEnabled = CompanyService.profile()\n ?.subscriptionFeatures()\n ?.isSingleSignOnEnabled?.();\n if (isSingleSignOnEnabled ?? AvailableForPlans.has(planName)) {\n return SingleSignOnFeatureState.Available;\n }\n if (UpgradeForPlans.has(planName)) {\n return SingleSignOnFeatureState.AvailableForUpgrade;\n }\n return SingleSignOnFeatureState.NotAvailable;\n });\n\n public static IsSingleSignOnEnabled: KnockoutObservable = ko.pureComputed(\n () => SingleSignOnFeatureToggleService.FeatureState() !== SingleSignOnFeatureState.NotAvailable\n );\n\n public static SingleSignOnSettingsCompanyId = ko.pureComputed(() =>\n UserService.isSsoAdminUserWithoutNodePermissions()\n ? UserService.profile()?.ssoAdminCompanyId?.()\n : CompanyService.CompanyId()\n );\n\n public static SingleSignOnSettings =\n SingleSignOnFeatureToggleService.SingleSignOnSettingsCompanyId.mapAsync(\n (companyId) => (companyId != null ? getSingleSignOnSettings(companyId) : null),\n { pendingValue: undefined }\n );\n}\n\nexport { SingleSignOnFeatureState };\nexport default SingleSignOnFeatureToggleService;\n","import { createStore } from 'redux';\n\nimport ReceivablesTableState, { getInitialState } from './ReceivablesTable.state';\n\nenum StoreActionType {\n SetPendingReceivablesState,\n SetCompletedReceivablesState,\n AddReceivableSuccess,\n Reset,\n}\n\ninterface SetPendingReceivablesStateAction {\n readonly type: StoreActionType.SetPendingReceivablesState;\n readonly payload: ReceivablesTableState;\n}\n\ninterface SetCompletedReceivablesStateAction {\n readonly type: StoreActionType.SetCompletedReceivablesState;\n readonly payload: ReceivablesTableState;\n}\n\ninterface AddReceivableSuccessAction {\n readonly type: StoreActionType.AddReceivableSuccess;\n}\n\ninterface ResetPendingReceivablesStateAction {\n readonly type: StoreActionType.Reset;\n}\n\ntype StoreAction =\n | SetPendingReceivablesStateAction\n | SetCompletedReceivablesStateAction\n | AddReceivableSuccessAction\n | ResetPendingReceivablesStateAction;\n\ninterface State {\n pendingReceivablesState: ReceivablesTableState;\n completedReceivablesState: ReceivablesTableState;\n}\n\nconst initialState: State = {\n pendingReceivablesState: getInitialState({ receivablesType: 'pending' }),\n completedReceivablesState: getInitialState({ receivablesType: 'completed' }),\n};\n\nconst reducer = (state: State, action: StoreAction): State => {\n switch (action.type) {\n case StoreActionType.SetPendingReceivablesState:\n return {\n ...state,\n pendingReceivablesState: action.payload,\n };\n case StoreActionType.SetCompletedReceivablesState:\n return {\n ...state,\n completedReceivablesState: action.payload,\n };\n case StoreActionType.AddReceivableSuccess:\n return {\n ...state,\n pendingReceivablesState: {\n ...state.pendingReceivablesState,\n grandTotalNumberOfRecords: state.pendingReceivablesState.grandTotalNumberOfRecords + 1,\n },\n };\n case StoreActionType.Reset:\n return { ...initialState };\n default:\n return state;\n }\n};\n\n/**\n * Redux store. Allows to store React state outside of component\n * to preserve component state between navigations to other pages\n */\nconst store = createStore(reducer, initialState);\n\nconst selectPendingReceivablesState = (state: State) => state.pendingReceivablesState;\nconst selectCompletedReceivablesState = (state: State) => state.completedReceivablesState;\n\nexport { StoreActionType, selectCompletedReceivablesState, selectPendingReceivablesState };\nexport default store;\n","import ReceivablesTableSearchQuery from '../models/receivablesTableSearchQuery';\n\nenum ReceivablesTableQueryType {\n GetDropdownOptions,\n GetPage,\n DeletePaymentRequest,\n}\n\ninterface QueryGetDropdownOptions {\n type: ReceivablesTableQueryType.GetDropdownOptions;\n}\n\ninterface QueryGetPage {\n type: ReceivablesTableQueryType.GetPage;\n query: ReceivablesTableSearchQuery;\n}\n\ninterface QueryDeletePayment {\n type: ReceivablesTableQueryType.DeletePaymentRequest;\n paymentRequestId: string;\n}\n\ntype ReceivablesTableQuery = QueryGetDropdownOptions | QueryGetPage | QueryDeletePayment;\n\nexport { ReceivablesTableQueryType };\nexport default ReceivablesTableQuery;\n","import { Comparison } from '@/features/api';\nimport {\n DateProperty,\n DropdownProperty,\n NumberProperty,\n PropertyType,\n TextProperty,\n} from '@/legacy/shared/components/SearchFilter/models/Property';\n\nimport { ReceivablesType } from '../models/receivablesTablePage';\nimport ReceivablesTableRowData from '../models/receivablesTableRow';\nimport ReceivablesTableSearchQuery from '../models/receivablesTableSearchQuery';\n\nimport ReceivablesTableQuery, { ReceivablesTableQueryType } from './ReceivablesTable.queries';\n\ninterface ReceivablesTableProperties {\n readonly requestStatus: DropdownProperty;\n readonly amount: NumberProperty;\n readonly createdDate: DateProperty;\n readonly scheduledDate: DateProperty;\n readonly withdrawnOn: DateProperty;\n readonly creditedOn: DateProperty;\n readonly creditCardUsed: DropdownProperty;\n readonly bank: DropdownProperty;\n readonly memo: TextProperty;\n readonly initiatedBy: DropdownProperty;\n readonly recurring: DropdownProperty;\n readonly padUsed: DropdownProperty;\n readonly imported: DropdownProperty;\n}\n\ninterface ReceivablesTableState {\n readonly properties: ReceivablesTableProperties;\n readonly propertiesOrder: Array;\n readonly query: ReceivablesTableSearchQuery;\n readonly totalNumberOfRecords: number;\n readonly grandTotalNumberOfRecords: number;\n readonly rows: Array;\n readonly isLoading: boolean;\n readonly isError: boolean;\n readonly filterStatus: 'not loaded' | 'loading' | 'loaded';\n readonly queries: Array;\n}\n\ninterface ReceivablesTableInitialStateOptions {\n readonly receivablesType: ReceivablesType;\n readonly payeeId?: string;\n}\n\nconst pendingReceivablesStatusOptions = [\n { value: 'AwaitingRequestAcceptance', label: 'Awaiting Request Acceptance' },\n { value: 'PaymentScheduled', label: 'Payment Scheduled' },\n { value: 'InClearing', label: 'In Clearing' },\n];\n\nconst completedReceivablesStatusOptions = [\n { value: 'DebitFailed', label: 'Debit Failed' },\n { value: 'CreditFailed', label: 'Credit Failed' },\n { value: 'Completed', label: 'Completed' },\n { value: 'Deleted', label: 'Deleted' },\n { value: 'Rejected', label: 'Rejected' },\n];\n\nconst getInitialState = ({\n receivablesType,\n payeeId = '',\n}: ReceivablesTableInitialStateOptions): ReceivablesTableState => {\n const initialQuery: ReceivablesTableSearchQuery = {\n searchQuery: '',\n filters: [],\n sortDirections: {\n contact: false,\n status: false,\n requestedDebitDate: false,\n amount: false,\n },\n sortOrder: [],\n pageIndex: 0,\n pageSize: 10,\n receivablesType,\n payeeId,\n };\n\n let statusOptions = [];\n\n switch (receivablesType) {\n case 'pending':\n statusOptions = pendingReceivablesStatusOptions;\n break;\n case 'completed':\n statusOptions = completedReceivablesStatusOptions;\n break;\n default:\n statusOptions = [...pendingReceivablesStatusOptions, ...completedReceivablesStatusOptions];\n break;\n }\n\n return {\n properties: {\n requestStatus: {\n name: 'Status',\n label: 'Request Status',\n type: PropertyType.Dropdown,\n relations: [\n { value: Comparison.Equals, label: 'equals' },\n { value: Comparison.NotEquals, label: 'not equal to' },\n ],\n values: statusOptions,\n },\n amount: {\n name: 'Amount',\n label: 'Amount',\n type: PropertyType.Number,\n relations: [\n { value: Comparison.Equals, label: 'equals' },\n { value: Comparison.NotEquals, label: 'not equal to' },\n { value: Comparison.LessThan, label: 'less than' },\n { value: Comparison.GreaterThan, label: 'greater than' },\n { value: Comparison.LessOrEqual, label: 'less or equal' },\n { value: Comparison.GreaterOrEqual, label: 'greater or equal' },\n ],\n },\n createdDate: {\n name: 'CreatedDate',\n label: 'Created Date',\n type: PropertyType.Date,\n },\n scheduledDate: {\n name: 'DebitDate',\n label: 'Requested Debit Date',\n type: PropertyType.Date,\n },\n withdrawnOn: {\n name: 'WithdrawnOn',\n label: 'Withdrawn On',\n type: PropertyType.Date,\n },\n creditedOn: {\n name: 'CreditedOn',\n label: 'Credited On',\n type: PropertyType.Date,\n },\n creditCardUsed: {\n name: 'CreditCardUsed',\n label: 'Credit Card Used?',\n type: PropertyType.Dropdown,\n relations: [{ value: Comparison.Equals, label: 'equals' }],\n values: [\n { value: '1', label: 'Yes' },\n { value: '0', label: 'No' },\n ],\n },\n bank: {\n name: 'Bank',\n label: 'Bank',\n type: PropertyType.Dropdown,\n relations: [\n { value: Comparison.Equals, label: 'equals' },\n { value: Comparison.NotEquals, label: 'not equal to' },\n ],\n values: [],\n loading: true,\n },\n memo: {\n name: 'Memo',\n label: 'Memo',\n type: PropertyType.Text,\n relations: [{ value: Comparison.Contains, label: 'contains' }],\n },\n initiatedBy: {\n name: 'InitiatedBy',\n label: 'Initiated By',\n type: PropertyType.Dropdown,\n relations: [\n { value: Comparison.Equals, label: 'equals' },\n { value: Comparison.NotEquals, label: 'not equal to' },\n ],\n values: [],\n loading: true,\n },\n recurring: {\n name: 'Recurring',\n label: 'Recurring',\n type: PropertyType.Dropdown,\n relations: [{ value: Comparison.Equals, label: 'equals' }],\n values: [\n { value: '1', label: 'Yes' },\n { value: '0', label: 'No' },\n ],\n },\n padUsed: {\n name: 'PadUsed',\n label: 'PAD Used',\n type: PropertyType.Dropdown,\n relations: [{ value: Comparison.Equals, label: 'equals' }],\n values: [\n { value: '1', label: 'Yes' },\n { value: '0', label: 'No' },\n ],\n },\n imported: {\n name: 'Imported',\n label: 'Imported',\n type: PropertyType.Dropdown,\n relations: [{ value: Comparison.Equals, label: 'equals' }],\n values: [\n { value: '1', label: 'Yes' },\n { value: '0', label: 'No' },\n ],\n },\n },\n propertiesOrder: [\n 'requestStatus',\n 'amount',\n 'createdDate',\n 'scheduledDate',\n 'withdrawnOn',\n 'creditedOn',\n 'creditCardUsed',\n 'bank',\n 'memo',\n 'initiatedBy',\n 'recurring',\n 'padUsed',\n 'imported',\n ],\n query: initialQuery,\n rows: [],\n totalNumberOfRecords: 0,\n grandTotalNumberOfRecords: null,\n isLoading: true,\n isError: false,\n filterStatus: 'not loaded',\n queries: [\n {\n type: ReceivablesTableQueryType.GetPage,\n query: initialQuery,\n },\n ],\n };\n};\n\nexport { ReceivablesTableProperties, getInitialState };\nexport default ReceivablesTableState;\n","import * as system from 'durandal/system';\nimport * as ko from 'knockout';\n\nimport { FileStorageDownloadLinkViewModel, fileStorageService } from '@/features/file-attachments';\nimport { SessionTimeoutService } from '@/legacy/services/sessionTimeout';\nimport * as userService from '@/legacy/services/user';\nimport * as plootoUtils from '@/legacy/utils/plooto';\nimport * as addModels from '@/legacy/viewmodels/addModels';\nimport * as viewModels from '@/legacy/viewmodels/viewModels';\n\nconst API_PREFIX = 'v1';\n\ninterface PopupParameters {\n location: number;\n width: number;\n height: number;\n left?: number;\n top?: number;\n}\n\nexport class PaymentRequestEmailViewModel {\n public id: string;\n}\nexport class PaymentRequestContactEmailViewModel {\n public id: string;\n\n public memo: string;\n\n public emailKey: string;\n\n public emailVerificationKey: string;\n\n public status: string;\n\n public date: string;\n\n public amount: number;\n\n public currency: string;\n\n public debitedDate: string;\n\n public debitTransactionError: string;\n}\n\nexport class PaymentRequestPinBindingModel {\n public code: string;\n\n public emailVerificationCode: string;\n\n public paymentRequestCurrentStateHash: string;\n\n public payeePaymentMethodId: string;\n}\nexport class PaymentRequestPrefilledBindingModel {\n public emailVerificationCode: string;\n\n public payeeAccountId: string;\n}\n\nexport enum PaymentRequestDirectDebitStatus {\n BankDetailsPending = 0,\n BankDetailsAdded,\n Accepted,\n}\nexport class PayeePaymentMethodViewModel {\n public fundAccountId: string;\n\n public discriminator: string;\n}\nexport class PayeePaymentMethodDirectDebitViewModel extends PayeePaymentMethodViewModel {\n public payeePaymentMethodId: string;\n\n public directDebitStatus: PaymentRequestDirectDebitStatus;\n\n public microDeposit: viewModels.MicroDepositViewModel;\n\n public locked: boolean;\n\n public bank: string;\n\n public maskedAccountNumber: string;\n}\nexport class PayeePaymentMethodPayeeAccountViewModel extends PayeePaymentMethodViewModel {\n public payeeAccountId: string;\n\n public bank: string;\n\n public country: string;\n\n public maskedAccountNumber: string;\n\n public verificationIdentifier: string;\n}\n\nexport class PayeePaymentMethodCreditCardViewModel extends PayeePaymentMethodViewModel {\n public payeePaymentMethodId: string;\n\n public directDebitStatus: PaymentRequestDirectDebitStatus;\n\n public locked: boolean;\n\n public creditCardId: number;\n\n public creditCardType: string;\n\n public maskedCreditCardNumber: string;\n\n public expirationMonth: number;\n\n public expirationYear: number;\n}\n\nexport interface IPaymentRequestPayeeAccountDetailsViewModel {\n accountNumber: string;\n\n institution: string;\n transit: string;\n\n routingNumber: string;\n\n confirmed: boolean;\n}\nexport class ReuseBankingInformationBindingModel {\n public paymentRequestCurrentStateHash: string;\n\n public emailVerificationCode: string;\n\n public payeePaymentMethodId: string;\n}\nexport class PaymentRequestRejectionBindingModel {\n public rejectionOption: string;\n\n public memo: string;\n}\n\nexport class VerifiedBankValidateBindingModel {\n public accountDetails: addModels.BankAccountDetailsAddModel;\n\n public emailVerificationCode: string;\n\n public paymentRequestCurrentStateHash: string;\n}\n\nexport class PaymentRequestContactPaymentRequestsBindingModel {\n public emailVerificationCode: string;\n\n public fromDate: string;\n\n public toDate: string;\n\n public completedOnly: boolean;\n}\nexport class UniversalPayeePublicInfo {\n public id: KnockoutObservable = ko.observable('');\n\n public name: KnockoutObservable = ko.observable('');\n\n public phone: KnockoutObservable = ko.observable('');\n\n public address: KnockoutObservable = ko.observable('');\n\n public unit: KnockoutObservable = ko.observable('');\n\n public city: KnockoutObservable = ko.observable('');\n\n public zipCode: KnockoutObservable = ko.observable('');\n\n public country: KnockoutObservable = ko.observable('');\n\n public state: KnockoutObservable = ko.observable('');\n\n public status: KnockoutObservable = ko.observable('');\n\n public Update(info) {\n for (const property in info) {\n // if updated data doesnt specify property skip\n if (info[property] !== undefined) {\n const newValue = ko.utils.unwrapObservable(info[property]);\n\n if (!ko.isComputed(this[property]) && ko.isObservable(this[property])) {\n this[property](newValue);\n }\n }\n }\n }\n}\nexport class KoEmailPaymentRequest {\n public id: KnockoutObservable = ko.observable('');\n\n public emailKey: KnockoutObservable = ko.observable('');\n\n public emailVerificationCode: KnockoutObservable = ko.observable('');\n\n public emailVerificationCodeValid: KnockoutObservable = ko.observable(false);\n\n public amount: KnockoutObservable = ko.observable(0);\n\n public currency: KnockoutObservable = ko.observable('');\n\n public country: KnockoutObservable = ko.observable('');\n\n public memo: KnockoutObservable = ko.observable('');\n\n public deleted: KnockoutObservable = ko.observable(false);\n\n public padOnly: KnockoutObservable = ko.observable(false);\n\n public payeeLocale: KnockoutObservable = ko.observable('');\n\n public paymentRequestPaymentMethodSource: KnockoutObservable = ko.observable('');\n\n public isPreview: KnockoutObservable = ko.observable(false);\n\n public paymentDebitTransactionStatus = ko.observable(null);\n\n public paymentDebitTransactionError = ko.observable(null);\n\n public payeeName = ko.observable(null);\n\n public createdDate: KnockoutObservable = ko.observable(new Date());\n\n public universalPayee: KnockoutObservable = ko.observable(\n new UniversalPayeePublicInfo()\n );\n\n public payeePaymentMethodId: KnockoutObservable = ko.observable('');\n\n public payeePaymentMethods = ko.observableArray();\n\n public creditCardPayeePaymentMethods = ko.observableArray();\n\n public date: KnockoutObservable = ko.observable('');\n\n public estimatedDebitDate: KnockoutObservable = ko.observable('');\n\n public creditCardAvailable: KnockoutObservable = ko.observable(false);\n\n public recurringPlan: KnockoutObservable = ko.observable(false);\n\n public intervalNumber: KnockoutObservable = ko.observable(1);\n\n public interval: KnockoutObservable = ko.observable('Month');\n\n public duration: KnockoutObservable = ko.observable(0);\n\n public startDay: KnockoutObservable = ko.observable(0);\n\n public nextRecurringPaymentDay: KnockoutObservable = ko.observable(new Date());\n\n public processingStatus = ko.observable();\n\n public paymentRequestCurrentStateHash = ko.observable();\n\n public payeeEmail = ko.observable();\n\n public hasAttachments = ko.observable(false);\n\n public attachmentStatus = ko.observable('loadRequired');\n\n public attachments = ko.observableArray([]);\n\n public isSecondaryBankLoginEnabled = ko.observable();\n\n constructor(info: any) {\n this.Update(info);\n }\n\n public Update(paymentRequestInfo) {\n for (const property in paymentRequestInfo) {\n // if updated data doesnt specify property skip\n if (paymentRequestInfo[property] !== undefined) {\n const newValue = ko.utils.unwrapObservable(paymentRequestInfo[property]);\n\n if (property == 'universalPayee') {\n this.universalPayee().Update(newValue);\n } else if (property == 'payeePaymentMethods') {\n this.payeePaymentMethods(newValue as Array);\n } else if (property == 'creditCardPayeePaymentMethods') {\n this.creditCardPayeePaymentMethods(newValue as Array);\n } else if (!ko.isComputed(this[property]) && ko.isObservable(this[property])) {\n this[property](newValue);\n }\n }\n }\n }\n\n public getTransactionErrorDescription(isDebit: boolean) {\n switch (this.paymentDebitTransactionError()) {\n case 'Unknown':\n return `The ${isDebit ? 'debit' : 'credit'} was rejected for unknown reason`;\n case 'AccountClosed':\n return `The ${isDebit ? 'source' : 'destination'} bank account is closed.`;\n case 'AccountFrozen':\n return `The ${isDebit ? 'source' : 'destination'} bank account is frozen.`;\n case 'AccountNotFound':\n return `The ${isDebit ? 'source' : 'destination'} bank account number was not found.`;\n case 'CurrencyMismatch':\n return `The ${\n isDebit ? 'source' : 'destination'\n } bank account currency does not match the payment currency.`;\n case 'AccountHolderDeceased':\n return `The ${isDebit ? 'source' : 'destination'} bank account holder is deceased.`;\n case 'FundsNotCleared':\n return `The ${isDebit ? 'debit' : 'credit'} transaction failed because the ${\n isDebit ? 'source' : 'destination'\n } funds have not fully cleared.`;\n case 'IncorrectAccountHolderName':\n return `The ${\n isDebit ? 'source' : 'destination'\n } bank account holder name does not match the contact name.`;\n case 'NotAllowed':\n return `The ${isDebit ? 'source' : 'destination'} bank rejected this transaction.`;\n case 'PaymentStopped':\n return `The ${isDebit ? 'source' : 'destination'} bank stopped this transaction.`;\n case 'Nsf':\n return `The ${\n isDebit ? 'source' : 'destination'\n } bank account did not have enough funds for the transaction.`;\n case 'StateRegionNotSupported':\n return `The ${isDebit ? 'source' : 'destination'} bank is not in a supported Region/State.`;\n\n case 'PaymentFailure':\n return 'Payment failed. Please reach out to Plooto support.';\n\n default:\n return `The ${isDebit ? 'debit' : 'credit'} was rejected for unknown reason`;\n }\n }\n\n public getTransactionErrorTitle(isDebit: boolean) {\n switch (this.paymentDebitTransactionError()) {\n case 'Unknown':\n return 'Unknown Reason';\n case 'AccountClosed':\n return 'Account Closed';\n case 'AccountFrozen':\n return 'Account Frozen';\n case 'AccountNotFound':\n return 'Account Not Found';\n case 'CurrencyMismatch':\n return 'Currency Mismatch';\n case 'AccountHolderDeceased':\n return 'Account Holder Deceased';\n case 'FundsNotCleared':\n return 'Non-Sufficient Funds due to funds not cleared';\n case 'IncorrectAccountHolderName':\n return 'Incorrect Account Holder Name';\n case 'NotAllowed':\n return 'Not Allowed';\n case 'PaymentStopped':\n return 'Payment was stopped by bank account owner';\n case 'Nsf':\n return 'Non-Sufficient Funds';\n\n case 'PaymentFailure':\n return 'Payment failed. Please reach out to Plooto support.';\n\n case 'StateRegionNotSupported':\n return 'State/Region Not Supported';\n default:\n return 'Unknown Reason';\n }\n }\n}\n\nexport class EmailPaymentRequestService {\n public GetPaymentRequestByEmailKey(\n emailKey: string,\n emailVerificationCode: string = null\n ): JQueryPromise {\n return system\n .defer((dfd) => {\n userService.Instance.AuthorizedGetFromUri(\n `${import.meta.env.APP_URLS_API_URL}/${API_PREFIX}/emailPaymentRequests/${emailKey}`,\n { emailVerificationCode }\n )\n .done((tokenData) => {\n if (plootoUtils.IsNullOrUndefined(tokenData) || tokenData.error === true) {\n dfd.reject(tokenData);\n return;\n }\n\n dfd.resolve(new KoEmailPaymentRequest(tokenData));\n })\n .fail((error) => {\n dfd.reject(error);\n });\n })\n .promise();\n }\n\n public getContactPaymentRequests(\n emailKey: string,\n model: PaymentRequestContactPaymentRequestsBindingModel\n ): JQueryPromise> {\n return system\n .defer>((dfd) => {\n userService.Instance.AuthorizedGetFromUri(\n `${\n import.meta.env.APP_URLS_API_URL\n }/${API_PREFIX}/emailPaymentRequests/${emailKey}/contactPaymentRequests`,\n model\n )\n .done((data) => {\n if (plootoUtils.IsNullOrUndefined(data) || data.error === true) {\n dfd.reject(data);\n return;\n }\n\n dfd.resolve(data);\n })\n .fail((error) => {\n dfd.reject(error);\n });\n })\n .promise();\n }\n\n public countContactPaymentRequests(emailKey: string): JQueryPromise {\n return system\n .defer((dfd) => {\n userService.Instance.AuthorizedGet(\n `${\n import.meta.env.APP_URLS_API_URL\n }/${API_PREFIX}/emailPaymentRequests/${emailKey}/countUnpaidPaymentRequests`\n )\n .done((data) => {\n if (plootoUtils.IsNullOrUndefined(data) || data.error === true) {\n dfd.reject(data);\n return;\n }\n\n dfd.resolve(data);\n })\n .fail((error) => {\n dfd.reject(error);\n });\n })\n .promise();\n }\n\n public RemovePayeeAccount(\n emailKey: string,\n emailVerificationCode: string,\n creditCardId: number\n ): JQueryPromise {\n return system\n .defer((dfd) => {\n userService.Instance.AuthorizedDelete(\n `${\n import.meta.env.APP_URLS_API_URL\n }/${API_PREFIX}/emailPaymentRequests/${emailKey}/${emailVerificationCode}/${creditCardId}`\n )\n .then((result) => {\n if (plootoUtils.IsNullOrUndefined(result) || result.error === true) {\n dfd.reject(result);\n return;\n }\n dfd.resolve(result);\n })\n .fail((e) => {\n console.log('error', e);\n dfd.reject(e);\n });\n })\n .promise();\n }\n\n public PostAddAccountDetails(\n emailKey: string,\n accountDetails: addModels.PaymentRequestFinancialDetailsBindingModel\n ): JQueryPromise {\n return system\n .defer((dfd) => {\n userService.Instance.AuthorizedPost(\n `${\n import.meta.env.APP_URLS_API_URL\n }/${API_PREFIX}/emailPaymentRequests/${emailKey}/accountDetails`,\n accountDetails\n )\n .then((emailStatus) => {\n if (plootoUtils.IsNullOrUndefined(emailStatus) || emailStatus.error === true) {\n dfd.reject(emailStatus);\n return;\n }\n dfd.resolve(emailStatus);\n })\n .fail((e) => {\n console.log('error', e);\n dfd.reject(e);\n });\n })\n .promise();\n }\n\n public PostPaymentRequestPrefilled(\n emailKey: string,\n paymentRequestPrefilledBindingModel: PaymentRequestPrefilledBindingModel\n ): JQueryPromise {\n return system\n .defer((dfd) => {\n userService.Instance.AuthorizedPost(\n `${\n import.meta.env.APP_URLS_API_URL\n }/${API_PREFIX}/emailPaymentRequests/${emailKey}/prefilledAccountDetails`,\n paymentRequestPrefilledBindingModel\n )\n .then((emailStatus) => {\n if (plootoUtils.IsNullOrUndefined(emailStatus) || emailStatus.error === true) {\n dfd.reject(emailStatus);\n return;\n }\n dfd.resolve(emailStatus);\n })\n .fail((e) => {\n console.log('error', e);\n dfd.reject(e);\n });\n })\n .promise();\n }\n\n public PostVerifiedBankValidate(\n emailKey: string,\n accountDetails: addModels.VerifiedBankValidateBindingModel\n ): JQueryPromise {\n return system\n .defer((dfd) => {\n userService.Instance.AuthorizedPost(\n `${\n import.meta.env.APP_URLS_API_URL\n }/${API_PREFIX}/emailPaymentRequests/${emailKey}/verifiedBankValidate`,\n accountDetails\n )\n .then((emailStatus) => {\n if (plootoUtils.IsNullOrUndefined(emailStatus) || emailStatus.error === true) {\n dfd.reject(emailStatus);\n return;\n }\n dfd.resolve(emailStatus);\n })\n .fail((e) => {\n console.log('error', e);\n dfd.reject(e);\n });\n })\n .promise();\n }\n\n public PostBankPinCode(\n emailKey: string,\n bankAccountValidateBindingModel: PaymentRequestPinBindingModel\n ): JQueryPromise {\n return system\n .defer((dfd) => {\n userService.Instance.AuthorizedPost(\n `${\n import.meta.env.APP_URLS_API_URL\n }/${API_PREFIX}/emailPaymentRequests/${emailKey}/pinCode`,\n bankAccountValidateBindingModel\n )\n .then((emailStatus) => {\n if (plootoUtils.IsNullOrUndefined(emailStatus) || emailStatus.error === true) {\n dfd.reject(emailStatus);\n return;\n }\n dfd.resolve(emailStatus);\n })\n .fail((e) => {\n console.log('error', e);\n dfd.reject(e);\n });\n })\n .promise();\n }\n\n public PostReuseBankingInformation(\n emailKey: string,\n reuseBankingInformationBindingModel: ReuseBankingInformationBindingModel\n ): JQueryPromise {\n return system\n .defer((dfd) => {\n userService.Instance.AuthorizedPost(\n `${\n import.meta.env.APP_URLS_API_URL\n }/${API_PREFIX}/emailPaymentRequests/${emailKey}/reuseBankingDetails`,\n reuseBankingInformationBindingModel\n )\n .then((emailStatus) => {\n if (plootoUtils.IsNullOrUndefined(emailStatus) || emailStatus.error === true) {\n dfd.reject(emailStatus);\n return;\n }\n dfd.resolve(emailStatus);\n })\n .fail((e) => {\n console.log('error', e);\n dfd.reject(e);\n });\n })\n .promise();\n }\n\n public PostRejectPaymentRequest(\n emailKey: string,\n reuseBankingInformationBindingModel: PaymentRequestRejectionBindingModel\n ): JQueryPromise {\n return system\n .defer((dfd) => {\n userService.Instance.AuthorizedPost(\n `${\n import.meta.env.APP_URLS_API_URL\n }/${API_PREFIX}/emailPaymentRequests/${emailKey}/rejectPaymentRequest`,\n reuseBankingInformationBindingModel\n )\n .then((emailStatus) => {\n if (plootoUtils.IsNullOrUndefined(emailStatus) || emailStatus.error === true) {\n dfd.reject(emailStatus);\n return;\n }\n dfd.resolve(emailStatus);\n })\n .fail((e) => {\n console.log('error', e);\n dfd.reject(e);\n });\n })\n .promise();\n }\n\n public GetInvoiceAttachments(emailKey: string): JQueryPromise> {\n return system\n .defer>((dfd) => {\n userService.Instance.AuthorizedGet(\n `${\n import.meta.env.APP_URLS_API_URL\n }/${API_PREFIX}/emailPaymentRequests/${emailKey}/attachments`\n )\n .done((payments) => {\n if (plootoUtils.IsNullOrUndefined(payments) || payments.error === true) {\n dfd.reject(payments);\n return;\n }\n dfd.resolve(payments);\n })\n .fail(() => {\n dfd.reject();\n });\n })\n .promise();\n }\n\n public GetInvoiceAttachment(invoiceAttachmentDetails) {\n return system\n .defer((dfd) => {\n // default parameter values\n const popupHeight = 1068;\n const popupWidth = 800;\n const popupCentered = true;\n // default parameters\n const parameters: PopupParameters = {\n location: 1,\n width: popupWidth,\n height: popupHeight,\n };\n // center pop-up if needed\n if (popupCentered) {\n parameters.left = (window.screen.width - popupWidth) / 2;\n parameters.top = (window.screen.height - popupHeight) / 2;\n }\n // flatten all parameters into a string\n const features = $.map(parameters, (value, name) => `${name}=${value}`).join(',');\n\n // open pop-up without URL first to ensure that pop-up blocker wouldn't prevent it after our delay\n const popup = window.open('', '', features);\n if (popup.document) {\n popup.document.write(\n 'Connecting...'\n );\n }\n\n popup.location.href = invoiceAttachmentDetails.url;\n })\n .promise();\n }\n\n public async GetInvoiceFileStorageAttachment(emailKey: string, companyFileStorageFileId: string) {\n const fileStorageDownloadLinkViewModel = await this.generateDownloadFileAttachmentLink(\n emailKey,\n companyFileStorageFileId\n );\n await fileStorageService.viewFileStorageFile(fileStorageDownloadLinkViewModel);\n }\n\n private generateDownloadFileAttachmentLink(emailKey: string, companyFileStorageFileId: string) {\n return system\n .defer((dfd) => {\n userService.Instance.AuthorizedGet(\n `${\n import.meta.env.APP_URLS_API_URL\n }/v1/emailPaymentRequests/${emailKey}/fileStorageAttachments/${companyFileStorageFileId}`\n )\n .then((data) => {\n if (plootoUtils.IsNullOrUndefined(data) || data.error === true) {\n if (data.type === 'invalid.authentication') {\n SessionTimeoutService.showTimeout();\n }\n dfd.reject(data);\n return;\n }\n dfd.resolve(data);\n })\n .fail((error) => console.error(error));\n })\n .promise();\n }\n}\nexport const Instance = new EmailPaymentRequestService();\n","import { SortOrder } from '@/features/api';\nimport { FilterComparison } from '@/legacy/services/filters/filtersService';\n\nexport enum PayeeFilterType {\n Name = 0,\n Contact,\n Email,\n PadStatus,\n Type,\n ExcludeUniversalPayee,\n}\n\nexport enum PayeeContactType {\n Customer,\n Supplier,\n}\n\nexport enum PayeeContactTabsType {\n All = 'All Contacts',\n Suppliers = 'Suppliers',\n Customers = 'Customers',\n}\n\nexport type PayeeFilterItem = {\n type: PayeeFilterType;\n comparison?: FilterComparison;\n value: string;\n valueTo?: string;\n};\n\n// In the backend, this is the same PayeeFilterType type, but it doesn't implement every field.\nexport enum PayeeSortType {\n Name = 0,\n Contact,\n Email,\n PadStatus,\n}\n\nexport type PayeeSortItem = {\n type: PayeeSortType;\n order: SortOrder;\n};\n","import ValueLabel from './ValueLabel';\n\nenum PropertyType {\n Date = 'Date',\n Text = 'Text',\n Number = 'Number',\n Dropdown = 'Dropdown',\n}\n\ninterface FilterProperty {\n name: string;\n label: string;\n type: PropertyType;\n}\n\ninterface DateProperty extends FilterProperty {\n type: PropertyType.Date;\n}\n\ninterface TextProperty extends FilterProperty {\n type: PropertyType.Text;\n relations: Array;\n}\n\ninterface NumberProperty extends FilterProperty {\n type: PropertyType.Number;\n relations: Array;\n}\n\ninterface DropdownProperty extends FilterProperty {\n type: PropertyType.Dropdown;\n relations: Array;\n values: Array;\n loading?: boolean;\n}\n\ntype Property = DateProperty | TextProperty | NumberProperty | DropdownProperty;\n\nexport { DateProperty, TextProperty, NumberProperty, DropdownProperty, Property, PropertyType };\n","const PlanCodes = {\n PlootoPlanAServiceSubscription: 'Legacy',\n PlootoPlanBServiceSubscription: 'Legacy',\n PlootoPlanCServiceSubscription: 'Legacy',\n PlootoPlanDServiceSubscription: 'Grow',\n PlootoPlanEServiceSubscription: 'Grow Unlimited',\n PlootoPlanFServiceSubscription: 'Go',\n PlootoPlanProServiceSubscription: 'Pro',\n CustomSubscriptionPlan: 'Deloitte Client',\n} as const;\n\ntype PlanCode = keyof typeof PlanCodes;\n\nconst PlanNames = {\n Go: 'PlootoPlanFServiceSubscription',\n Grow: 'PlootoPlanDServiceSubscription',\n 'Grow Unlimited': 'PlootoPlanEServiceSubscription',\n Legacy: 'PlootoPlanCServiceSubscription',\n Pro: 'PlootoPlanProServiceSubscription',\n 'Deloitte Client': 'CustomSubscriptionPlan',\n} as const;\n\ntype PlanName = keyof typeof PlanNames;\n\nconst getNameFromCode = (code: PlanCode): PlanName => PlanCodes[code];\n\nconst getIsLegacy = (code: PlanCode): boolean => getNameFromCode(code) === 'Legacy';\n\nexport default PlanCodes;\nexport { getIsLegacy, getNameFromCode, PlanNames };\nexport type { PlanCode, PlanName };\n","const descriptions = {\n /**\n * Legacy plan.\n */\n PlootoPlanAServiceSubscription: 'Legacy',\n /**\n * Legacy plan.\n */\n PlootoPlanBServiceSubscription: 'Legacy',\n /**\n * Legacy plan.\n */\n PlootoPlanCServiceSubscription: 'Legacy',\n /**\n * Grow plan.\n */\n PlootoPlanDServiceSubscription: 'Automate payments with advanced workflows',\n /**\n * Grow Unlimited plan.\n */\n PlootoPlanEServiceSubscription: 'Automate payments and workflows with ease',\n /**\n * Go plan.\n */\n PlootoPlanFServiceSubscription: 'Begin automating payments',\n} as const;\n\nexport default descriptions;\n"],"names":["props","_jsx","MuiTooltip","arrow","ViewModel","userService","companyService","currentTab","ko","myInvoicesUrl","myInvoicesCount","paymentRequestEmailKey","showReferralsNavItem","CompanyId","mapAsync","isReferralsAvailableForCurrentCompany","settingsHref","read","HasPermissionTo","PermissionId","COMPANY_EDIT","isAccountingFirm","USER_ADD_EDIT","isSingleSignOnVisible","deferEvaluation","react","NavbarTop","constructor","subscribe","reloadUnpaidInvoices","attached","routerNavigationSubscription","app","then","updateCurrentTab","paymentRequestEmailKeyUpdateSubscription","koEmailPaymentRequest","emailKey","detached","dispose","off","activeRouteFragment","route","router","fragment","startsWith","checkMyInvoicesRoute","NavigateHome","$","hasClass","IsAuthenticated","CompanyName","window","scrollTo","top","shouldShowGoHomeButton","LogoutUser","segmentAnalytics","EventName","UserSignedOut","source","FormEventType","ButtonClicked","context","SignoutContext","Settings","Logout","navigateSwitchCompany","payablesStore","dispatch","type","PayablesStoreActionType","Reset","receivablesStore","ReceivablesStoreActionType","contactsStore","ContactsStoreActionType","myInvoicesRoute","replace","myInvoicesRouteSplit","split","emailPaymentRequestsService","countContactPaymentRequests","unpaidContactPaymentRequests","fail","isNavigationButtonsVisible","profile","isSwitchCompanies","includes","SingleSignOnFeatureToggleService","IsSingleSignOnEnabled","IsSingleSignOnAdminUser","SingleSignOnSettings","setupState","SingleSignOnSetupState","NotStarted","navigateToReferrals","CompanyEventService","emit","buttonName","reactNavbarProps","navigateHome","logoutUser","shouldShowNavigation","Boolean","shouldShowMyInvoices","shouldShowHelpCenter","isSsoAdminUserWithoutNodePermissions","shouldShowSwitchCompany","shouldShowReturnToDashboard","isSsoAdminUser","memberships","length","shouldShowReturnToHome","shouldShowUserSettings","shouldShowCompanySettings","shouldShowSsoSettings","shouldShowReferrals","shouldShowLogOut","StoreActionType","initialState","PayeeContactTabsType","All","getInitialState","Suppliers","Customers","reducer","state","action","SetState","contactType","newState","payload","AddSupplierSuccess","grandTotalCount","AddCustomerSuccess","store","createStore","selectContactsState","FilterNames","FilterRelations","isLoading","isError","searchQuery","filters","sorting","data","totalCount","currentPage","pageSizeOptions","pageSize","appliedFilters","filterOptions","name","Email","label","PropertyType","Text","relations","value","Comparison","Equals","NotEquals","NotEqualTo","Contains","DoesNotContain","StartsWith","PadStatus","Dropdown","values","queries","PayeePadStatus","SortableFieldTypes","PayeesRestApiService","create","bindingModel","companyId","url","URL","Object","globalThis","import_meta_env","APP_URLS_API_URL","ApiService","put","toString","body","get","payeeId","getPayees","options","post","getPayeesByIds","payeeIds","getSuppliers","resultsPerPage","sortDetails","Name","order","SortOrder","Ascending","comparison","pendingPayablesState","completedPayablesState","SetPendingPayablesState","SetCompletedPayablesState","AddPayableSuccess","grandTotalNumberOfRecords","selectPendingPayablesState","selectCompletedPayablesState","PayablesTableQueryType","pendingPayablesStatusOptions","completedPayablesStatusOptions","pendingPayables","recentPayablesContactId","initialQuery","searchText","sortDirections","contact","status","requestedDebitDate","estimatedDeliveryDate","amount","sortOrder","pageIndex","properties","paymentStatus","Number","LessThan","GreaterThan","LessOrEqual","GreaterOrEqual","Date","createdDate","debitDate","paymentMethod","bank","loading","memo","initiatedBy","recurring","currency","destinationCountry","imported","propertiesOrder","query","rows","totalNumberOfRecords","undefined","filterStatus","GetPage","getSingleSignOnSettings","getSingleSignOnConfiguration","updateSingleSignOnConfiguration","configuration","insertSingleSignOnEmailDomain","domain","getSingleSignOnEmailDomains","verifySingleSignOnEmailDomain","emailDomain","deleteSingleSignOnEmailDomain","emailDomainId","remove","insertSingleSignOnAdministrator","email","getSingleSignOnAdministrators","deleteSingleSignOnAdministrator","encodedEmail","encodeURIComponent","getSingleSignOnTwoFactorBypassValue","SingleSignOnFeatureState","UpgradeForPlans","Set","getNameFromCode","PlanNames","Go","Grow","AvailableForPlans","Pro","IsSingleSignOnFeatureEnabled","UserService","ssoAdminCompanyId","CompanyService","FeatureState","Enabled","planName","subscriptionFeatures","isSingleSignOnEnabled","has","Available","AvailableForUpgrade","NotAvailable","SingleSignOnSettingsCompanyId","pendingValue","pendingReceivablesState","receivablesType","completedReceivablesState","SetPendingReceivablesState","SetCompletedReceivablesState","AddReceivableSuccess","selectPendingReceivablesState","selectCompletedReceivablesState","ReceivablesTableQueryType","pendingReceivablesStatusOptions","completedReceivablesStatusOptions","statusOptions","requestStatus","scheduledDate","withdrawnOn","creditedOn","creditCardUsed","padUsed","API_PREFIX","PaymentRequestEmailViewModel","PaymentRequestContactEmailViewModel","PaymentRequestPinBindingModel","PaymentRequestPrefilledBindingModel","PaymentRequestDirectDebitStatus","PayeePaymentMethodViewModel","PayeePaymentMethodDirectDebitViewModel","PayeePaymentMethodPayeeAccountViewModel","PayeePaymentMethodCreditCardViewModel","ReuseBankingInformationBindingModel","PaymentRequestRejectionBindingModel","VerifiedBankValidateBindingModel","PaymentRequestContactPaymentRequestsBindingModel","UniversalPayeePublicInfo","id","phone","address","unit","city","zipCode","country","Update","info","property","newValue","unwrapObservable","KoEmailPaymentRequest","emailVerificationCode","emailVerificationCodeValid","deleted","padOnly","payeeLocale","paymentRequestPaymentMethodSource","isPreview","paymentDebitTransactionStatus","paymentDebitTransactionError","payeeName","universalPayee","payeePaymentMethodId","payeePaymentMethods","creditCardPayeePaymentMethods","date","estimatedDebitDate","creditCardAvailable","recurringPlan","intervalNumber","interval","duration","startDay","nextRecurringPaymentDay","processingStatus","paymentRequestCurrentStateHash","payeeEmail","hasAttachments","attachmentStatus","attachments","isSecondaryBankLoginEnabled","paymentRequestInfo","getTransactionErrorDescription","isDebit","getTransactionErrorTitle","EmailPaymentRequestService","GetPaymentRequestByEmailKey","system","dfd","AuthorizedGetFromUri","done","tokenData","plootoUtils","error","reject","resolve","promise","getContactPaymentRequests","model","AuthorizedGet","RemovePayeeAccount","creditCardId","AuthorizedDelete","result","e","console","log","PostAddAccountDetails","accountDetails","AuthorizedPost","emailStatus","PostPaymentRequestPrefilled","paymentRequestPrefilledBindingModel","PostVerifiedBankValidate","PostBankPinCode","bankAccountValidateBindingModel","PostReuseBankingInformation","reuseBankingInformationBindingModel","PostRejectPaymentRequest","GetInvoiceAttachments","payments","GetInvoiceAttachment","invoiceAttachmentDetails","parameters","location","width","popupWidth","height","popupHeight","left","screen","features","map","join","popup","open","document","write","href","GetInvoiceFileStorageAttachment","companyFileStorageFileId","fileStorageDownloadLinkViewModel","generateDownloadFileAttachmentLink","fileStorageService","viewFileStorageFile","SessionTimeoutService","showTimeout","Instance","PayeeFilterType","PayeeContactType","PayeeSortType","PlanCodes","PlootoPlanAServiceSubscription","PlootoPlanBServiceSubscription","PlootoPlanCServiceSubscription","PlootoPlanDServiceSubscription","PlootoPlanEServiceSubscription","PlootoPlanFServiceSubscription","PlootoPlanProServiceSubscription","CustomSubscriptionPlan","Legacy","code","getIsLegacy","descriptions"],"sourceRoot":""}