{"version":3,"file":"js/8ea3827349ce55fd6689.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/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"],"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 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 = SingleSignOnFeatureToggleService.IsSingleSignOnEnabled;\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';\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\ninterface Payee {\n accounts: Array;\n accountingSoftwarePayeeId: string;\n accountingSoftwarePayeeName: string;\n address: string;\n businessType: string;\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: string;\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","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","export enum PayeeFilterType {\n Name = 0,\n Contact,\n Email,\n PadStatus,\n Type,\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","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"],"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","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","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","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"],"sourceRoot":""}