{"version":3,"sources":["node_modules/dayjs/plugin/timezone.js","libs/sales-ui/src/lib/filters/market-selector/tokens.ts","libs/sales-ui/src/lib/filters/market-selector/market-selector.component.ts","libs/sales-ui/src/lib/filters/market-selector/market-selector.component.html","libs/sales-ui/src/lib/filters/market-selector/market-selector.module.ts","libs/sales-ui/src/lib/filters/date-range-selector-dialog/date-range-selector-dialog.component.ts","libs/sales-ui/src/lib/filters/date-range-selector-dialog/date-range-selector-dialog.component.html","libs/sales-ui/src/lib/filters/date-range-selector-dialog/date-range-selector-dialog.module.ts","libs/sales-ui/src/lib/filters/filter-chips/filter-chips-container/filter-chip-container.component.ts","libs/sales-ui/src/lib/filters/filter-chips/filter-chips-container/filter-chip-container.component.html","libs/sales-ui/src/lib/filters/filter-chips/filter-chip/filter-chip.component.ts","libs/sales-ui/src/lib/filters/filter-chips/filter-chip/filter-chip.component.html","libs/sales-ui/src/lib/filters/filter-chips/filter-chips.module.ts","libs/sales-ui/src/lib/pipelines/user-pipelines/tokens.ts","libs/sales-ui/src/lib/cache/app-cache.service.ts","libs/sales-ui/src/lib/pipelines/pipeline/cache/selected-pipeline-cache.service.ts","libs/sales-ui/src/lib/pipelines/user-pipelines/user-pipelines.ts","libs/sales-ui/src/lib/filters/salesperson-multi-select/tokens.ts","libs/sales-ui/src/lib/pipelines/tokens.ts","libs/sales-ui/src/lib/sales-opportunities/tokens.ts","libs/sales-ui/src/lib/accounts/account-selector/account-selector-api.service.ts","libs/sales-ui/src/lib/pipelines/pipeline-filters-cache/pipeline-filters-cache.service.ts","libs/sales-ui/src/lib/pipelines/pipeline-saved-filters/tokens.ts","libs/sales-ui/src/lib/pipelines/pipeline-status-checkbox/pipeline-status-checkbox.service.ts","libs/sales-ui/src/lib/pipelines/pipeline-status-checkbox/pipeline-status-checkbox.component.ts","libs/sales-ui/src/lib/pipelines/pipeline-status-checkbox/pipeline-status-checkbox.component.html","libs/sales-ui/src/lib/pipelines/pipeline-status-checkbox/pipeline-status-checkbox.module.ts","libs/sales-ui/src/lib/pipelines/pipeline/pipeline-service.interface.ts","libs/sales-ui/src/lib/pipelines/pipeline-filters-cache/pipeline-filter-saver.service.ts","libs/sales-ui/src/lib/pipelines/pipeline-saved-filters/pipeline-table-filter-dialog/pipeline-filter-dialog.component.ts","libs/sales-ui/src/lib/pipelines/pipeline-saved-filters/pipeline-table-filter-dialog/pipeline-filter-dialog.component.html","libs/sales-ui/src/lib/pipelines/pipeline-saved-filters/pipeline-saved-filters.component.ts","libs/sales-ui/src/lib/pipelines/pipeline-saved-filters/pipeline-saved-filters.component.html","libs/sales-ui/src/lib/pipelines/pipeline-filters-cache/pipeline-filters-cache.module.ts","libs/sales-ui/src/lib/pipelines/pipeline-saved-filters/pipeline-saved-filters.module.ts","libs/sales-ui/src/lib/pipelines/pipeline-card/tokens.ts","libs/sales-ui/src/lib/filters/account-filter/account-filter.service.ts","libs/sales-ui/src/lib/pipelines/pipeline/potential-revenue/tokens.ts","libs/sales-ui/src/lib/pipelines/pipeline/potential-revenue/potential-revenue.service.ts","libs/sales-ui/src/lib/filters/date-filters/date-filters.service.ts","libs/sales-ui/src/lib/filters/filter-options/option.abstract.ts","libs/sales-ui/src/lib/filters/filter-options/sales-team-option.model.ts","libs/sales-ui/src/lib/filters/filter-options/salesperson-option.model.ts","libs/sales-ui/src/lib/filters/package-selector/pipeline-filter-package-selection.service.ts","libs/sales-ui/src/lib/filters/package-selector/tokens.ts","libs/sales-ui/src/lib/filters/package-selector/pipeline-filter-package-store.service.ts","libs/sales-ui/src/lib/filters/pipeline-multi-select/pipeline-multi-select.service.ts","libs/sales-ui/src/lib/filters/product-selector/tokens.ts","libs/sales-ui/src/lib/filters/product-selector/product-selector.service.ts","libs/sales-ui/src/lib/filters/salesperson-multi-select/salesperson-multi-select.store.service.ts","libs/sales-ui/src/lib/filters/salesteam-multi-select/tokens.ts","libs/sales-ui/src/lib/filters/salesteam-multi-select/sales-team-multi-select-store.service.ts","libs/sales-ui/src/lib/filters/tag-selector/tag.ts","libs/sales-ui/src/lib/filters/tag-selector/tokens.ts","libs/sales-ui/src/lib/filters/tag-selector/tag-multi-selection.service.ts","libs/sales-ui/src/lib/filters/opportunity-type-filter/opportunity-type-filter.service.ts","libs/sales-ui/src/lib/filters/opportunity-type-filter/opportunity-type-filter-store.service.ts","libs/sales-ui/src/lib/filters/filters-service/pipeline-filters.service.ts","libs/sales-ui/src/lib/pipelines/pipeline-stats/pipeline-stats.service.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity.ts","libs/sales-ui/src/lib/sales-opportunities/interface.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity.service.ts","libs/sales-ui/src/lib/utils/lock-map/lock-map.ts","libs/sales-ui/src/lib/pipelines/pipeline-business-name/pipeline-business-name.service.ts","libs/sales-ui/src/lib/pipelines/pipeline-sort.ts","libs/sales-ui/src/lib/pipelines/pipeline-board-service/tokens.ts","libs/sales-ui/src/lib/pipelines/pipeline-board-service/pipeline-board.service.ts","libs/data-providers/src/lib/base.ts","libs/sales-ui/src/lib/meddic/meddic-scores/m-e-d-d-i-c-score-source.ts","libs/sales-ui/src/lib/slide-out-panel/slide-out-panel.service.ts","libs/sales-ui/src/lib/meddic/meddic-scores/meddic-scores.ts","libs/sales-ui/src/lib/meddic/meddic-section/meddic-progress-bar/meddic-progress-bar.component.ts","libs/sales-ui/src/lib/meddic/meddic-section/meddic-progress-bar/meddic-progress-bar.component.html","libs/sales-ui/src/lib/pipelines/pipeline-card/pipeline-card.component.ts","libs/sales-ui/src/lib/pipelines/pipeline-card/pipeline-card.component.html","libs/sales-ui/src/lib/meddic/meddic-selector/m-e-d-d-i-c-selector.component.ts","libs/sales-ui/src/lib/meddic/meddic-selector/m-e-d-d-i-c-selector.component.html","libs/sales-ui/src/lib/meddic/meddic-section/meddic-notes.service.ts","libs/sales-ui/src/lib/meddic/meddic-section/meddic-notes/meddic-notes-field/meddic-notes-field.component.ts","libs/sales-ui/src/lib/meddic/meddic-section/meddic-notes/meddic-notes-field/meddic-notes-field.component.html","libs/sales-ui/src/lib/meddic/meddic-section/meddic-errors/meddic-errors.component.ts","libs/sales-ui/src/lib/meddic/meddic-section/meddic-errors/meddic-errors.component.html","libs/sales-ui/src/lib/meddic/meddic-title/m-e-d-d-i-c-title.component.ts","libs/sales-ui/src/lib/meddic/meddic-title/m-e-d-d-i-c-title.component.html","libs/sales-ui/src/lib/meddic/meddic-section/meddic-section.component.ts","libs/sales-ui/src/lib/meddic/meddic-section/meddic-section.component.html","libs/sales-ui/src/lib/meddic/meddic-section/meddic-notes/meddic-notes.module.ts","libs/sales-ui/src/lib/meddic/meddic-section/meddic-errors/meddic-errors.module.ts","libs/sales-ui/src/lib/meddic/meddic.module.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-service.module.ts","libs/sales-ui/src/lib/pipelines/pipeline-card/pipeline-card.module.ts","libs/sales-ui/src/lib/accounts/account-selector/account-selector.component.ts","libs/sales-ui/src/lib/accounts/account-selector/account-selector.component.html","libs/sales-ui/src/lib/filters/account-filter/account-filter.component.ts","libs/sales-ui/src/lib/filters/account-filter/account-filter.component.html","libs/sales-ui/src/lib/filters/opportunity-type-filter/opportunity-type-filter.component.ts","libs/sales-ui/src/lib/filters/opportunity-type-filter/opportunity-type-filter.component.html","libs/sales-ui/src/lib/filters/package-selector/pipeline-filter-package-selector.component.ts","libs/sales-ui/src/lib/filters/package-selector/pipeline-filter-package-selector.html","libs/sales-ui/src/lib/filters/product-selector/product-selector.component.ts","libs/sales-ui/src/lib/filters/product-selector/product-selector.component.html","libs/sales-ui/src/lib/filters/salesperson-multi-select/salesperson-multi-select.component.ts","libs/sales-ui/src/lib/filters/salesperson-multi-select/salesperson-multi-select.component.html","libs/sales-ui/src/lib/filters/salesteam-multi-select/sales-team-multi-select.component.ts","libs/sales-ui/src/lib/filters/salesteam-multi-select/sales-team-multi-select.component.html","libs/sales-ui/src/lib/filters/tag-selector/tag-multi-selector.component.ts","libs/sales-ui/src/lib/filters/tag-selector/tag-multi-selector.component.html","libs/sales-ui/src/lib/pipelines/pipeline-board/filter/pipeline-board-filter-chips/pipeline-board-filter-chips.component.ts","libs/sales-ui/src/lib/pipelines/pipeline-board/filter/pipeline-board-filter-chips/pipeline-board-filter-chips.component.html","libs/sales-ui/src/lib/pipelines/pipeline-board/filter/pipeline-board-filter-chips/tokens.ts","libs/sales-ui/src/lib/pipelines/pipeline-board-stage/stage.component.ts","libs/sales-ui/src/lib/pipelines/pipeline-board-stage/stage.component.html","libs/sales-ui/src/lib/pipelines/pipeline-board/filter/pipeline-board-filtered.component.ts","libs/sales-ui/src/lib/pipelines/pipeline-board/filter/pipeline-board-filtered.component.html","libs/sales-ui/src/lib/pipelines/pipeline-board/filter/pipeline-board-filters.module.ts","libs/sales-ui/src/lib/pipelines/pipeline/cache/pipeline-page-cache.service.ts","libs/sales-ui/src/lib/pipelines/pipeline/cache/pipeline-cache.module.ts","libs/sales-ui/src/lib/pipelines/user-pipelines/user-pipelines.module.ts","libs/sales-ui/src/lib/pipelines/pipeline/potential-revenue/revenue-date-dropdown/revenue-date-selector.component.ts","libs/sales-ui/src/lib/pipelines/pipeline/potential-revenue/revenue-date-dropdown/revenue-date-selector.component.html","libs/sales-ui/src/lib/pipelines/pipeline/potential-revenue/revenue-date-dropdown/revenue-date-dropdown.module.ts","libs/sales-ui/src/lib/pipelines/pipeline/potential-revenue/potential-revenue.component.ts","libs/sales-ui/src/lib/pipelines/pipeline/potential-revenue/potential-revenue.component.html","libs/sales-ui/src/lib/pipelines/pipeline/potential-revenue/potential-revenue.module.ts","libs/sales-ui/src/lib/assets/i18n/en_devel.json","libs/sales-ui/src/lib/shared/constants.ts","libs/sales-ui/src/lib/filters/product-selector/product-selector.module.ts","libs/sales-ui/src/lib/filters/pipeline-multi-select/pipeline-multi-select.component.ts","libs/sales-ui/src/lib/filters/pipeline-multi-select/pipeline-multi-select.component.html","libs/sales-ui/src/lib/filters/pipeline-multi-select/pipeline-multi-select.module.ts","libs/sales-ui/src/lib/filters/status-select/status-select.service.ts","libs/sales-ui/src/lib/filters/status-select/status-select.module.ts","libs/sales-ui/src/lib/filters/salesteam-multi-select/sales-team-multi-select.module.ts","libs/sales-ui/src/lib/filters/tag-selector/tag-multi-selector.module.ts","libs/sales-ui/src/lib/filters/date-filters/date-filters.module.ts","libs/sales-ui/src/lib/filters/salesperson-multi-select/salesperson-multi-select.module.ts","libs/sales-ui/src/lib/filters/package-selector/pipeline-filter-package-selector.module.ts","libs/sales-ui/src/lib/filters/filters-service/pipeline-filters-service.module.ts","libs/sales-ui/src/lib/pipelines/pipeline-board-service/pipeline-board-service.module.ts","libs/sales-ui/src/lib/pipelines/shared.ts","libs/sales-ui/src/lib/pipelines/pipeline-board/pipeline-board.module.ts","libs/sales-ui/src/lib/pipelines/pipeline-switcher/pipeline-switcher.service.ts","libs/sales-ui/src/lib/pipelines/pipeline-switcher/pipeline-switcher.component.ts","libs/sales-ui/src/lib/pipelines/pipeline-switcher/pipeline-switcher.component.html","libs/sales-ui/src/lib/pipelines/pipeline-switcher/pipeline-switcher.module.ts","libs/sales-ui/src/lib/pipelines/pipeline-table-filter-chips/pipeline-table-filter-chips.component.ts","libs/sales-ui/src/lib/pipelines/pipeline-table-filter-chips/pipeline-table-filter-chips.component.html","libs/sales-ui/src/lib/pipelines/pipeline-table-filter-chips/tokens.ts","libs/sales-ui/src/lib/pipelines/pipeline-table-filter-chips/pipeline-table-filter-chips.module.ts","libs/sales-ui/src/lib/pipelines/searchbar/searchbar.service.ts","libs/sales-ui/src/lib/pipelines/searchbar/searchbar.component.ts","libs/sales-ui/src/lib/pipelines/searchbar/searchbar.component.html","libs/sales-ui/src/lib/pipelines/searchbar/searchbar.module.ts","libs/sales-ui/src/lib/pipelines/pipeline-table-service/tokens.ts","libs/sales-ui/src/lib/pipelines/pipeline-table-service/pipeline-table.service.ts","libs/sales-ui/src/lib/pipelines/pipeline-table-service/pipeline-table-service.module.ts","libs/sales-ui/src/lib/pipelines/pipeline-table/type-name.pipe.ts","libs/sales-ui/src/lib/pipelines/pipeline-table/pipeline-table.component.ts","libs/sales-ui/src/lib/pipelines/pipeline-table/pipeline-table.component.html","libs/sales-ui/src/lib/pipelines/pipeline-table/pipeline-table.module.ts","libs/sales-ui/src/lib/pipelines/pipeline/csv/export-csv-notification-dialog/export-csv-notification-dialog.component.ts","libs/sales-ui/src/lib/pipelines/pipeline/csv/export-csv-notification-dialog/export-csv-notification-dialog.component.html","libs/sales-ui/src/lib/pipelines/pipeline/csv/pipeline-export-csv/tokens.ts","libs/sales-ui/src/lib/pipelines/pipeline/csv/pipeline-export-csv/pipeline-export-csv.service.ts","libs/sales-ui/src/lib/pipelines/pipeline/csv/export-csv-selection-dialog/export-csv-selection-dialog.component.ts","libs/sales-ui/src/lib/pipelines/pipeline/csv/export-csv-selection-dialog/export-csv-selection-dialog.component.html","libs/sales-ui/src/lib/pipelines/pipeline/csv/pipeline-export-csv.component.ts","libs/sales-ui/src/lib/pipelines/pipeline/csv/pipeline-export-csv.component.html","libs/sales-ui/src/lib/pipelines/pipeline/csv/pipeline-export-csv.module.ts","libs/sales-ui/src/lib/pipelines/pipelines.module.ts","libs/sales-ui/src/lib/pipelines/pipeline-settings/tokens.ts","libs/sales-ui/src/lib/pipelines/pipeline-settings/pipeline-settings.service.ts","libs/sales-ui/src/lib/pipelines/pipeline-settings/constants.ts","libs/sales-ui/src/lib/pipelines/pipeline-settings/pipeline-settings.component.ts","libs/sales-ui/src/lib/pipelines/pipeline-settings/pipeline-settings.component.html","libs/sales-ui/src/lib/pipelines/pipeline-settings/pipeline-settings-form/pipeline-settings-form.component.ts","libs/sales-ui/src/lib/pipelines/pipeline-settings/pipeline-settings-form/pipeline-settings-form.component.html","libs/sales-ui/src/lib/pipelines/pipeline-settings/pipeline-settings.module.ts","libs/sales-ui/src/lib/sales-orders/external-dependencies/provider-tokens.ts","libs/sales-ui/src/lib/sales-orders/sales-opportunity-store.service.ts","libs/sales-ui/src/lib/sales-orders/sales-order-line-item-selector/item-selector-adapter/utils.ts","libs/sales-ui/src/lib/sales-orders/conversion-utils.ts","libs/sales-ui/src/lib/sales-orders/sales-order-line-item-selector/item-selector-adapter/item-selector-adapter.service.ts","libs/sales-ui/src/lib/sales-orders/sales-order-line-item-selector/item-selector-adapter/item-selector-adapter.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-line-item-selector/item-selector-adapter/item-selector-adapter.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-line-item-selector/package-selector/cells/package-selector-custom.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-line-item-selector/package-selector/cells/package-name-cell.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-line-item-selector/package-selector/cells/package-revenue-cell.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-line-item-selector/package-selector/cells/package-revenue-header-cell.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-line-item-selector/package-selector/package-selector-table-model.ts","libs/sales-ui/src/lib/sales-orders/sales-order-line-item-selector/package-selector/package-selector.service.ts","libs/sales-ui/src/lib/sales-orders/sales-order-line-item-selector/package-selector/package-selector.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-line-item-selector/package-selector/package-selector.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-line-item-selector/sales-order-line-item-selector.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-line-item-selector/sales-order-line-item-selector.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-line-item-selector/sales-order-line-item-selector.module.ts","libs/sales-ui/src/lib/sales-orders/sales-order-store.service.ts","libs/sales-ui/src/lib/sales-orders/sales-order-confirmation/sales-order-confirmation.service.ts","libs/sales-ui/src/lib/sales-orders/sales-order-confirmation/sales-order-line-item-selector-dialog/sales-order-line-item-selector-dialog.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-confirmation/sales-order-line-item-selector-dialog/sales-order-line-item-selector-dialog.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-confirmation/sales-order-edit-price/sales-order-edit-price.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-confirmation/sales-order-edit-price/sales-order-edit-price.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-confirmation/sales-order-confirmation.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-confirmation/sales-order-confirmation.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-confirmation/sales-order-confirmation.module.ts","libs/sales-ui/src/lib/sales-orders/sales-order-contents/package-dropdown/package-dropdown-item/package-dropdown-item.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-contents/package-dropdown/package-dropdown-item/package-dropdown-item.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-contents/package-dropdown/sales-package.ts","libs/sales-ui/src/lib/sales-orders/sales-order-contents/package-dropdown/package-dropdown.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-contents/package-dropdown/package-dropdown.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-contents/product-activation.ts","libs/sales-ui/src/lib/sales-orders/sales-order-contents/sales-order-contents.service.ts","libs/sales-ui/src/lib/sales-orders/sales-order-contents/sales-order-contents.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-contents/sales-order-contents.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-contents/sales-order-contents.module.ts","libs/sales-ui/src/lib/sales-orders/sales-order-decline-dialog/sales-order-decline-dialog.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-decline-dialog/sales-order-decline-dialog.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-decline-dialog/sales-order-decline-dialog.module.ts","libs/sales-ui/src/lib/sales-orders/sales-order-details-card/sales-order-details-card.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-details-card/sales-order-details-card.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-details-card/sales-order-details-contract-duration/sales-contract-duration.ts","libs/sales-ui/src/lib/sales-orders/sales-order-details-card/sales-order-details-tags/sales-order-details-tags.service.ts","libs/sales-ui/src/lib/sales-orders/sales-order-details-card/sales-order-details-tags/sales-order-details-tags.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-details-card/sales-order-details-tags/sales-order-details-tags.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-details-card/sales-order-details-requested-activation/sales-order-details-requested-activation.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-details-card/sales-order-details-requested-activation/sales-order-details-requested-activation.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-details-card/order-detail-field.ts","libs/sales-ui/src/lib/sales-orders/sales-order-details-card/sales-order-details-contract-duration/sales-order-details-contract-duration.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-details-card/sales-order-details-contract-duration/sales-order-details-contract-duration.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-details-card/sales-order-details-notes/sales-order-details-notes.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-details-card/sales-order-details-notes/sales-order-details-notes.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-details-card/sales-order-details-customer-notes/sales-order-details-customer-notes.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-details-card/sales-order-details-customer-notes/sales-order-details-customer-notes.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-details-card/sales-order-details-card.module.ts","libs/sales-ui/src/lib/sales-orders/sales-order-details-card/order-detail-agreement.ts","libs/sales-ui/src/lib/sales-orders/sales-order-form/sales-order.service.ts","libs/sales-ui/src/lib/sales-orders/sales-order-form/sales-order-form.service.ts","libs/sales-ui/src/lib/sales-orders/sales-order-short-list/sales-order-short-list.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-short-list/sales-order-short-list.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-short-list/sales-order-short-list.module.ts","libs/sales-ui/src/lib/sales-orders/salesperson-selector-dialog/salesperson-selector-dialog.component.ts","libs/sales-ui/src/lib/sales-orders/salesperson-selector-dialog/salesperson-selector-dialog.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-table/cells/order-link.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/cells/sales-order-table-custom.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/sales-orders-table-access.service.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/cells/admin-order-actions-cell.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/cells/business-info-cell.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/cells/date-cell.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/cells/expiry-cell.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/cells/order-id-cell.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/cells/order-tags-cell.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/cells/salesperson-cell.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/cells/salesperson-order-actions-cell.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/cells/status-cell.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/interface.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/sales-order-export-all-service.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/conversion-utils.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/sales-orders-customer-table.service.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/sales-orders-table-customer-filter.service.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/sales-orders-table-filter.service.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/cells/fulfillment-cell.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/cells/fulfillment-cell.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-table/sales-orders-table-model.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/sales-orders-table.service.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/salesperson.service.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/sales-order-table-stats/sales-order-table-stats.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/sales-order-table-stats/sales-order-table-stats.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-table/sales-orders-table.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/sales-orders-table.component.html","libs/sales-ui/src/lib/sales-orders/salesperson-selector-dialog/salesperson-selector-dialog.module.ts","libs/sales-ui/src/lib/sales-orders/sales-order-table/sales-orders-table.module.ts","libs/sales-ui/src/lib/slide-out-panel/side-panel-state.service.ts","libs/sales-ui/src/lib/slide-out-panel/slide-out-panel.component.ts","libs/sales-ui/src/lib/slide-out-panel/slide-out-panel.component.html","libs/sales-ui/src/lib/slide-out-panel/slide-out-panel.module.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/create-opportunity/create-opportunity.service.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-details.service.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-side-panel-events.service.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-attachments/opportunity-attachments.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-attachments/opportunity-attachments-card.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-tags/add-tags-dialog/add-tags-dialog.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-tags/add-tags-dialog/add-tags-dialog.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-tags/opportunity-tags.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-tags/opportunity-tags.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/reopen-opportunity/reopen-opportunity-dialog.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/reopen-opportunity/reopen-opportunity-dialog.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/close-opportunity/close-opportunity-dialog/close-opportunity-dialog.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/close-opportunity/close-opportunity-dialog/close-opportunity-dialog.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/close-opportunity/close-opportunity.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/close-opportunity/close-opportunity.component.html","libs/sales-ui/src/lib/sales-opportunities/type-selector/type-selector.component.ts","libs/sales-ui/src/lib/sales-opportunities/type-selector/type-selector.component.html","libs/sales-ui/src/lib/sales-opportunities/type-selector/update-type-selector/update-type-selector.component.ts","libs/sales-ui/src/lib/sales-opportunities/type-selector/update-type-selector/update-type-selector.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info-form/editable-fields/pipeline-selector/pipeline-selector.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info-form/editable-fields/pipeline-selector/pipeline-selector.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info-form/editable-fields/contract-duration-selector/contract-duration-selector.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info-form/editable-fields/contract-duration-selector/contract-duration-selector.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info-form/editable-fields/subscribers-selector/subscribers-selector.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info-form/editable-fields/subscribers-selector/subscribers-selector.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info-form/editable-fields/opportunity-name/opportunity-name.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info-form/editable-fields/opportunity-name/opportunity-name.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info-form/assignee-selector/assignee-selector.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info-form/assignee-selector/assignee-selector.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info-form/editable-fields/expected-close-selector/expected-close-selector.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info-form/editable-fields/expected-close-selector/expected-close-selector.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info-form/opportunity-info-form.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info-form/opportunity-info-form.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-qualification/opportunity-qualification.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-qualification/opportunity-qualification.component.html","libs/sales-ui/src/lib/notes/opportunity-notes-edit.component.ts","libs/sales-ui/src/lib/notes/opportunity-notes-edit.component.html","libs/sales-ui/src/lib/notes/opportunity-notes.component.ts","libs/sales-ui/src/lib/notes/opportunity-notes.component.html","libs/sales-ui/src/lib/sales-opportunities/secure.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/business-service/opportunity-business.service.ts","libs/sales-ui/src/lib/async-text/async-text.component.ts","libs/sales-ui/src/lib/async-text/async-text.component.html","libs/sales-ui/src/lib/localtime/localtime-card.component.ts","libs/sales-ui/src/lib/localtime/localtime-card.component.html","libs/sales-ui/src/lib/localtime/localtime-card.service.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-account-info/business-info.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-account-info/business-info.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/activities/opportunity-activities.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/activities/opportunity-activities.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-details.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-details.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/create-opportunity/interface.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/create-opportunity/opportunity-pipeline-selector/opportunity-pipeline-selector.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/create-opportunity/opportunity-pipeline-selector/opportunity-pipeline-selector.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/create-opportunity/create-opportunity.component.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/create-opportunity/create-opportunity.component.html","libs/sales-ui/src/lib/pipelines/pipeline-side-panel/pipeline-side-panel.component.ts","libs/sales-ui/src/lib/pipelines/pipeline-side-panel/pipeline-side-panel.component.html","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-attachments/opportunity-attachments.module.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-tags/opportunity-tags.module.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info-form/editable-fields/pipeline-selector/pipeline-selector.module.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info-form/editable-fields/contract-duration-selector/contract-duration-selector.module.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info-form/editable-fields/subscribers-selector/subscribers-selector.module.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-info/opportunity-info.module.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-qualification/opportunity-qualification.module.ts","libs/sales-ui/src/lib/async-text/async-text.module.ts","libs/sales-ui/src/lib/localtime/localtime-card.module.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-account-info/icon-svg-string.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-account-info/business-info.module.ts","libs/sales-ui/src/lib/notes/opportunity-notes.module.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/activities/opportunity-activities.module.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-details.module.ts","libs/sales-ui/src/lib/accounts/account-selector/account-selector.module.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity-side-panel/create-opportunity/create-opportunity.module.ts","libs/sales-ui/src/lib/pipelines/pipeline-side-panel/pipeline-side-panel.module.ts","libs/sales-ui/src/lib/filters/account-filter/account-filter.module.ts","libs/sales-ui/src/lib/filters/opportunity-type-filter/opportunity-type-filter.module.ts","libs/sales-ui/src/lib/sales-opportunities/opportunity.module.ts","libs/sales-ui/src/lib/sales-orders/sales-order-form/sales-order-form.component.ts","libs/sales-ui/src/lib/sales-orders/sales-order-form/sales-order-form.component.html","libs/sales-ui/src/lib/sales-orders/sales-order-form/sales-order-form.module.ts"],"sourcesContent":["!function (t, e) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = e() : \"function\" == typeof define && define.amd ? define(e) : (t = \"undefined\" != typeof globalThis ? globalThis : t || self).dayjs_plugin_timezone = e();\n}(this, function () {\n \"use strict\";\n\n var t = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5\n },\n e = {};\n return function (n, i, o) {\n var r,\n a = function (t, n, i) {\n void 0 === i && (i = {});\n var o = new Date(t),\n r = function (t, n) {\n void 0 === n && (n = {});\n var i = n.timeZoneName || \"short\",\n o = t + \"|\" + i,\n r = e[o];\n return r || (r = new Intl.DateTimeFormat(\"en-US\", {\n hour12: !1,\n timeZone: t,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n timeZoneName: i\n }), e[o] = r), r;\n }(n, i);\n return r.formatToParts(o);\n },\n u = function (e, n) {\n for (var i = a(e, n), r = [], u = 0; u < i.length; u += 1) {\n var f = i[u],\n s = f.type,\n m = f.value,\n c = t[s];\n c >= 0 && (r[c] = parseInt(m, 10));\n }\n var d = r[3],\n l = 24 === d ? 0 : d,\n h = r[0] + \"-\" + r[1] + \"-\" + r[2] + \" \" + l + \":\" + r[4] + \":\" + r[5] + \":000\",\n v = +e;\n return (o.utc(h).valueOf() - (v -= v % 1e3)) / 6e4;\n },\n f = i.prototype;\n f.tz = function (t, e) {\n void 0 === t && (t = r);\n var n = this.utcOffset(),\n i = this.toDate(),\n a = i.toLocaleString(\"en-US\", {\n timeZone: t\n }),\n u = Math.round((i - new Date(a)) / 1e3 / 60),\n f = o(a, {\n locale: this.$L\n }).$set(\"millisecond\", this.$ms).utcOffset(15 * -Math.round(i.getTimezoneOffset() / 15) - u, !0);\n if (e) {\n var s = f.utcOffset();\n f = f.add(n - s, \"minute\");\n }\n return f.$x.$timezone = t, f;\n }, f.offsetName = function (t) {\n var e = this.$x.$timezone || o.tz.guess(),\n n = a(this.valueOf(), e, {\n timeZoneName: t\n }).find(function (t) {\n return \"timezonename\" === t.type.toLowerCase();\n });\n return n && n.value;\n };\n var s = f.startOf;\n f.startOf = function (t, e) {\n if (!this.$x || !this.$x.$timezone) return s.call(this, t, e);\n var n = o(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\"), {\n locale: this.$L\n });\n return s.call(n, t, e).tz(this.$x.$timezone, !0);\n }, o.tz = function (t, e, n) {\n var i = n && e,\n a = n || e || r,\n f = u(+o(), a);\n if (\"string\" != typeof t) return o(t).tz(a);\n var s = function (t, e, n) {\n var i = t - 60 * e * 1e3,\n o = u(i, n);\n if (e === o) return [i, e];\n var r = u(i -= 60 * (o - e) * 1e3, n);\n return o === r ? [i, o] : [t - 60 * Math.min(o, r) * 1e3, Math.max(o, r)];\n }(o.utc(t, i).valueOf(), f, a),\n m = s[0],\n c = s[1],\n d = o(m).utcOffset(c);\n return d.$x.$timezone = a, d;\n }, o.tz.guess = function () {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n }, o.tz.setDefault = function (t) {\n r = t;\n };\n };\n});","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport const MARKET_SELECTOR_SERVICE_TOKEN = new InjectionToken(\n 'MARKET_SELECTOR_SERVICE_TOKEN',\n);\n\nexport interface Market {\n market_id: string;\n name: string;\n}\n\nexport interface MarketSelectorServiceInterface {\n marketDropdownOptions$: Observable;\n selectedMarketId$: Observable;\n setSelectedMarketId(marketId: string): void;\n}\n","import { Component, EventEmitter, Inject, Output } from '@angular/core';\nimport { MatSelectChange } from '@angular/material/select';\nimport { Observable } from 'rxjs';\nimport { MARKET_SELECTOR_SERVICE_TOKEN, Market, MarketSelectorServiceInterface } from './tokens';\n\n@Component({\n selector: 'sales-ui-market-selector',\n templateUrl: './market-selector.component.html',\n styleUrls: [],\n})\nexport class MarketSelectorComponent {\n @Output() selectedMarketIdChange = new EventEmitter();\n marketDropdownOptions$: Observable;\n selectedMarketId$: Observable;\n constructor(@Inject(MARKET_SELECTOR_SERVICE_TOKEN) private marketSelectorService: MarketSelectorServiceInterface) {\n this.marketDropdownOptions$ = marketSelectorService.marketDropdownOptions$;\n this.selectedMarketId$ = marketSelectorService.selectedMarketId$;\n }\n\n handleMarketIdChange(selectedMarket: MatSelectChange): void {\n this.marketSelectorService.setSelectedMarketId(selectedMarket?.value);\n this.selectedMarketIdChange.emit();\n }\n}\n","\n 1\" bottomSpacing=\"false\" minWidth=\"200px\" maxWidth=\"200px\">\n \n \n {{ market.name }}\n \n \n \n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MarketSelectorComponent } from './market-selector.component';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatSelectModule } from '@angular/material/select';\n\n@NgModule({\n declarations: [MarketSelectorComponent],\n providers: [],\n imports: [CommonModule, GalaxyFormFieldModule, MatSelectModule],\n exports: [MarketSelectorComponent],\n})\nexport class MarketSelectorModule {}\n","import { Component, Inject } from '@angular/core';\nimport { FormControl, FormGroup, UntypedFormGroup } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport moment from 'moment';\n\nexport interface DateRangeSelectorDialogData {\n minDate?: Date;\n maxDate?: Date;\n beginDate: Date;\n endDate: Date;\n}\n\n@Component({\n selector: 'sales-ui-date-range-selector-dialog',\n templateUrl: './date-range-selector-dialog.component.html',\n styleUrls: ['./date-range-selector-dialog.component.scss'],\n})\nexport class DateRangeSelectorDialogComponent {\n range: UntypedFormGroup;\n minDate: Date;\n maxDate: Date;\n\n constructor(\n private readonly ref: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) private readonly data: DateRangeSelectorDialogData,\n ) {\n this.minDate = this.data.minDate ? this.data.minDate : null;\n this.maxDate = this.data.maxDate ? this.data.maxDate : null;\n this.range = new FormGroup({\n start: new FormControl(this.data.beginDate),\n end: new FormControl(this.data.endDate),\n });\n }\n\n applyChanges(): void {\n const beginDate = this.range.controls.start.value;\n const endDate = this.range.controls.end.value;\n const start = moment(beginDate).startOf('day').toDate();\n const end = moment(endDate || beginDate)\n .endOf('day')\n .toDate();\n const dates: DateRangeSelectorDialogData = { beginDate: start, endDate: end };\n this.ref.close(dates);\n }\n}\n","
\n

{{ 'FRONTEND.SALES_UI.COMMON.DATES.DATE_RANGE' | translate }}

\n
\n \n \n \n \n \n \n \n \n {{ 'FRONTEND.SALES_UI.COMMON.DATES.INVALID_DATE_RANGE' | translate }}\n \n \n
\n
\n \n
\n
\n","import { NgModule } from '@angular/core';\nimport { DateRangeSelectorDialogComponent } from './date-range-selector-dialog.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n exports: [DateRangeSelectorDialogComponent],\n imports: [\n CommonModule,\n MatDialogModule,\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n ReactiveFormsModule,\n TranslateModule,\n MatDatepickerModule,\n ],\n declarations: [DateRangeSelectorDialogComponent],\n})\nexport class DateRangeSelectorDialogModule {}\n","import { Component, Directive } from '@angular/core';\n\n/**\n * @description\n * Template driven container for FilterChipComponent ().\n *\n * @usageNotes\n * ### Template example of usage with template driven va filter component.\n *\n * This could be an implementation of a reusable filter bar that can be used at the app or page level.\n * ```html\n * \n * \n * \n * \n * {{'COMMON.SALESPEOPLE_LABEL' | translate}}:\n * {{names}}\n * \n * \n * \n * person\n * {{name}}\n * \n * \n * \n * \n * \n * \n * \n * ...sorting options go here...\n * \n * \n * \n * \n * ```\n */\n@Component({\n selector: 'sales-ui-filter-chip-container',\n templateUrl: './filter-chip-container.component.html',\n styleUrls: ['./filter-chip-container.component.scss'],\n})\nexport class FilterChipContainerComponent {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'filter-menu-items',\n})\nexport class FilterMenuItemsDirective {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'filter-chip-actions',\n})\nexport class FilterChipActionsDirective {}\n","\n \n\n\n
\n \n \n \n \n
\n","import { Component, Directive, EventEmitter, Input, Output } from '@angular/core';\n\n/**\n * This component is experimental. The purpose of this component is to separate the UI concern from the functionality or features.\n * Its second goal is for open and closed principal by being able to extend the functionality of this component without\n * needing to update this component directly.\n * The idea is this will be used by the model driven filter chips in frontend to have consistent styling.\n * If your filters are simple and the model driven approach works for you then use the frontend library version.\n * If your filters have complicated state or you want to have more control of the level at which the state is stored then this approach\n * allows you to build feature rich filters without having to update the library component.\n * Another bonus is you have full control of loading your filter data and content data which means you don't have to wait for the slowest\n * api but call the content once with default values. You can just show the data and lazily load in the filter data on demand.\n */\n@Component({\n selector: 'sales-ui-filter-chip',\n templateUrl: './filter-chip.component.html',\n styleUrls: ['./filter-chip.component.scss'],\n})\nexport class FilterChipComponent {\n @Input() canRemove?: boolean;\n @Input() id?: string;\n\n @Output() clicked = new EventEmitter(); // tslint:disable-line\n @Output() delete = new EventEmitter(); // tslint:disable-line\n\n emitClickEvent(event: MouseEvent): void {\n event.stopPropagation();\n this.clicked.emit(event);\n }\n\n emitDeleteEvent(event: MouseEvent): void {\n event.stopPropagation();\n this.delete.emit(event);\n }\n}\n\n/* tslint:disable */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'filter-chip-title',\n})\nexport class FilterChipTitleDirective {}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'filter-chip-value',\n})\nexport class FilterChipValueDirective {}\n\n/* tslint:enable */\n","
\n \n \n \n \n \n \n \n \n \n
\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n FilterChipActionsDirective,\n FilterChipContainerComponent,\n FilterMenuItemsDirective,\n} from './filter-chips-container/filter-chip-container.component';\nimport {\n FilterChipComponent,\n FilterChipTitleDirective,\n FilterChipValueDirective,\n} from './filter-chip/filter-chip.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatRippleModule } from '@angular/material/core';\n\n@NgModule({\n declarations: [\n FilterChipContainerComponent,\n FilterChipComponent,\n FilterMenuItemsDirective,\n FilterChipActionsDirective,\n FilterChipTitleDirective,\n FilterChipValueDirective,\n ],\n exports: [\n FilterChipContainerComponent,\n FilterChipComponent,\n FilterMenuItemsDirective,\n FilterChipActionsDirective,\n FilterChipTitleDirective,\n FilterChipValueDirective,\n ],\n imports: [CommonModule, MatButtonModule, MatIconModule, MatMenuModule, TranslateModule, MatRippleModule],\n})\nexport class FilterChipsModule {}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport const USER_PIPELINES_SERVICE_CONFIG_TOKEN = new InjectionToken(\n 'general dependency data for the user pipelines',\n);\nexport interface UserPipelinesServiceConfig {\n partnerId$: Observable;\n}\n\nexport const PARTNER_ID_TOKEN: InjectionToken> = new InjectionToken('token for current partner id');\n","import { Injectable } from '@angular/core';\nimport { LocalStorageService } from '@vendasta/uikit';\nimport moment from 'moment';\nimport { Observable, ReplaySubject } from 'rxjs';\n\nexport enum ClientOrigin {\n MANAGE_ACCOUNTS_SALESPEOPLE = 'manage-accounts-salespeople',\n PIPELINE_PAGE_VIEW = 'pipeline-board-view',\n CURRENT_PARTNER_ID = 'current-partner-id',\n LAST_VIEWED_PIPELINE = 'last-viewed-pipeline',\n SSC_EXTENSION_OAUTH = 'ssc-gmail-extension-oauth',\n}\n\nconst SEPARATOR = ':';\nconst EXPIRY = 'expiry';\n\nexport interface CacheEntry {\n origin: ClientOrigin;\n value: string;\n}\n\nexport interface CacheGetResponse {\n origin: ClientOrigin;\n isCacheHit: boolean;\n value: any;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AppCacheService {\n private readonly cacheChange$$: ReplaySubject = new ReplaySubject(1);\n readonly cacheChange$: Observable = this.cacheChange$$.asObservable();\n\n constructor(private readonly localStorage: LocalStorageService) {}\n\n private buildIndexedKey(origin: string): string {\n return `${origin}`;\n }\n\n private buildExpiryKey(origin: ClientOrigin): string {\n return `${origin}${SEPARATOR}${EXPIRY}`;\n }\n private getExpiryDate(origin: ClientOrigin): string {\n switch (origin) {\n case ClientOrigin.MANAGE_ACCOUNTS_SALESPEOPLE: {\n return moment().add(5, 'days').toISOString();\n }\n case ClientOrigin.PIPELINE_PAGE_VIEW: {\n return moment().add(1, 'years').toISOString();\n }\n case ClientOrigin.LAST_VIEWED_PIPELINE: {\n return moment().add(1, 'years').toISOString();\n }\n case ClientOrigin.SSC_EXTENSION_OAUTH: {\n return moment().add(3, 'minutes').toISOString();\n }\n default:\n return moment().add(5, 'days').toISOString();\n }\n }\n private updateCacheExpiryTime(origin: ClientOrigin): void {\n const expiryDate = this.getExpiryDate(origin);\n const expiryKey = this.buildExpiryKey(origin);\n this.localStorage.set(expiryKey, expiryDate);\n }\n\n private isCacheValid(origin: ClientOrigin): boolean {\n const expiryKey = this.buildExpiryKey(origin);\n const expiryDate = this.localStorage.get(expiryKey);\n return expiryDate ? moment(expiryDate).toDate() > moment().toDate() : false;\n }\n\n add(entry: CacheEntry): void {\n const indexedKey = this.buildIndexedKey(entry.origin);\n this.localStorage.set(indexedKey, entry.value);\n this.updateCacheExpiryTime(entry.origin);\n this.cacheChange$$.next(entry.origin);\n }\n get(origin: ClientOrigin): CacheGetResponse {\n const indexedKey = this.buildIndexedKey(origin);\n const rawValue = this.localStorage.get(indexedKey);\n return {\n origin: origin,\n isCacheHit: rawValue && this.isCacheValid(origin),\n value: rawValue && this.isCacheValid(origin) ? JSON.parse(rawValue) : null,\n };\n }\n remove(origin: ClientOrigin): void {\n const indexedKey = this.buildIndexedKey(origin);\n this.localStorage.remove(indexedKey);\n this.cacheChange$$.next(origin);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AppCacheService, CacheEntry, ClientOrigin } from '../../../cache/app-cache.service';\n\nconst LAST_VIEWED_OPPORTUNITY_PIPELINE = ClientOrigin.LAST_VIEWED_PIPELINE;\n\n@Injectable()\nexport class SelectedPipelineCacheService {\n constructor(private readonly appCache: AppCacheService) {}\n\n get lastViewedPipeline(): string {\n return this.appCache.get(LAST_VIEWED_OPPORTUNITY_PIPELINE).value;\n }\n\n setLastViewedPipeline(pipelineID: string): void {\n const entry = {\n origin: LAST_VIEWED_OPPORTUNITY_PIPELINE,\n value: JSON.stringify(pipelineID),\n };\n this.appCache.add(entry);\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { PipelineInterface, SalesPipelinesService, StageInterface } from '@vendasta/sales-opportunities';\nimport { Observable, ReplaySubject, combineLatest } from 'rxjs';\nimport { map, shareReplay, startWith, switchMap, take, tap } from 'rxjs/operators';\nimport { Pipeline } from '@vendasta/sales-common';\nimport { SelectedPipelineCacheService } from '../pipeline/cache/selected-pipeline-cache.service';\nimport { PARTNER_ID_TOKEN } from './tokens';\n\nexport const DEFAULT_PIPELINE_ID = 'DEFAULT';\n\n@Injectable()\nexport class UserPipelines {\n defaultPipeline$: Observable;\n private readonly partnerPipelines$$ = new ReplaySubject(1);\n readonly partnerPipelines$ = this.partnerPipelines$$.asObservable();\n private readonly selectedPipelineID$$ = new ReplaySubject(1);\n private readonly selectedPipelineID$ = this.selectedPipelineID$$.asObservable();\n\n static getUserDefaultPipeline(userPipelines: UserPipelines): Observable {\n return userPipelines.defaultPipeline$;\n }\n\n static getPipelines(userPipelines: UserPipelines): Observable {\n return userPipelines.partnerPipelines$;\n }\n\n static getCurrentPipeline(userPipelines: UserPipelines): Observable {\n return userPipelines.getCurrentPipeline();\n }\n\n getCurrentPipeline(): Observable {\n return this.defaultPipeline$.pipe(\n switchMap((defaultP) => {\n const selectedOrDefault$ = this.selectedPipelineID$.pipe(startWith(defaultP));\n return combineLatest([selectedOrDefault$, this.partnerPipelines$]);\n }),\n map(([selectedPipelineID, partnerPipelines]) => {\n return partnerPipelines.find((p) => p.id === selectedPipelineID);\n }),\n );\n }\n\n static isDefaultPipeline(pipelineID: string): boolean {\n return pipelineID === DEFAULT_PIPELINE_ID;\n }\n\n constructor(\n @Inject(PARTNER_ID_TOKEN) private readonly partnerId$: Observable,\n private readonly pipelinesService: SalesPipelinesService,\n private readonly lastSelectedPipeline: SelectedPipelineCacheService,\n ) {\n partnerId$\n .pipe(\n take(1),\n switchMap((partnerId) => pipelinesService.list(partnerId)),\n map((pipelines) => {\n return this.getAvailablePipeline(pipelines);\n }),\n shareReplay(1),\n )\n .subscribe((p) => {\n this.partnerPipelines$$.next(p);\n });\n\n this.defaultPipeline$ = this.partnerPipelines$.pipe(\n map((pipelines) => {\n const lastViewedPipeline = this.lastSelectedPipeline.lastViewedPipeline;\n if (!lastViewedPipeline) {\n this.setCurrentPipelineID(pipelines[0].id);\n return pipelines[0];\n }\n const cachedPipeline = pipelines.find((p) => p.id === lastViewedPipeline);\n const pipeline = cachedPipeline ? cachedPipeline : pipelines[0];\n this.setCurrentPipelineID(pipeline.id);\n return pipeline;\n }),\n shareReplay(1),\n );\n }\n\n getAvailablePipeline(pipelines: PipelineInterface[]): Pipeline[] {\n if (!pipelines || pipelines.length === 0) {\n console.error('No pipelines available');\n return [];\n }\n\n if (pipelines.length > 1) {\n pipelines.sort((a, b) => {\n if (a.name < b.name) {\n return -1;\n }\n if (a.name > b.name) {\n return 1;\n }\n return 0;\n });\n }\n\n return pipelines.map((p) => this.convertToModelPipeline(p));\n }\n\n refreshPipelines(): Promise {\n return this.partnerId$\n .pipe(\n take(1),\n switchMap((partnerId) => this.pipelinesService.list(partnerId)),\n map((pipelines) => {\n if (!pipelines || pipelines.length === 0) {\n console.error('No pipelines available');\n return [];\n }\n\n if (pipelines.length === 1 && pipelines[0].pipelineId === DEFAULT_PIPELINE_ID) {\n return [this.convertToModelPipeline(pipelines[0])];\n } else {\n if (pipelines.length > 1) {\n pipelines.sort((a, b) => {\n if (a.name < b.name) {\n return -1;\n }\n if (a.name > b.name) {\n return 1;\n }\n return 0;\n });\n }\n return pipelines\n .filter((p) => p.pipelineId !== DEFAULT_PIPELINE_ID)\n .map((p) => this.convertToModelPipeline(p));\n }\n }),\n tap((p) => this.partnerPipelines$$.next(p)),\n shareReplay(1),\n )\n .toPromise();\n }\n\n convertToModelPipeline(pipeline: PipelineInterface): Pipeline {\n const stages = pipeline.stages.map(\n (s) =>\n {\n name: s.name,\n probability: s.probability || 0,\n stageId: s.stageId,\n },\n );\n stages.sort((a, b) => (a.probability < b.probability ? -1 : 1));\n return new Pipeline(stages, pipeline.pipelineId, pipeline.name);\n }\n\n public setCurrentPipelineID(pipelineID: string): void {\n this.selectedPipelineID$$.next(pipelineID);\n this.lastSelectedPipeline.setLastViewedPipeline(pipelineID);\n }\n}\n\nexport function getDefaultUserPipeline(pipelines: PipelineInterface[]): PipelineInterface | null {\n if (!pipelines || pipelines.length === 0) {\n return null;\n }\n if (pipelines.length === 1) {\n return pipelines[0];\n }\n return pipelines.find((p) => p.pipelineId !== DEFAULT_PIPELINE_ID);\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Salesperson } from '@galaxy/types';\n\nexport interface SalespersonMultiSelectConfig {\n allSalespeople$: Observable;\n salespersonId$: Observable;\n salespersonName$: Observable;\n initWithLoggedInSalesperson: boolean;\n}\n\nexport const SALESPERSON_MULTI_SELECT_CONFIG_TOKEN = new InjectionToken(\n 'general dependency data for the salesperson multi select filter',\n);\nexport const ALL_SALESPEOPLE_TOKEN: InjectionToken> = new InjectionToken(\n 'token for all salespeople',\n);\nexport const SALESPERSON_ID_TOKEN: InjectionToken> = new InjectionToken(\n 'token for current salesperson ID',\n);\nexport const SALESPERSON_NAME_TOKEN: InjectionToken> = new InjectionToken(\n 'token for current salesperson name',\n);\nexport const INIT_WITH_CUR_SALESPERSON_TOKEN: InjectionToken> = new InjectionToken(\n 'token for if the filter should initialize with a filter for the current salesperson',\n);\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nexport const SALES_TEAM_SERVICE_TOKEN = new InjectionToken('token for sales team data');\n\nexport interface SalesTeamServiceInterface {\n salesTeamIdsToArrayOfSalesPeopleIds(salesTeamIds: string[]): void;\n}\n\nexport const DEFAULT_CURRENCY_CODE_TOKEN = new InjectionToken>('default currency code');\nexport const PIPELINE_SETTINGS_URL_TOKEN = new InjectionToken>(\n 'app specific pipeline settings page URL',\n);\nexport const PIPELINE_SETTINGS_ACCESS_TOKEN = new InjectionToken>(\n 'app specific access check for pipeline settings page access',\n);\nexport const PARTNER_ID_TOKEN: InjectionToken> = new InjectionToken('token for current partner id');\nexport const MARKET_ID_TOKEN: InjectionToken> = new InjectionToken('token for current market id');\nexport const HAS_ACCESS_TO_ALL_ACCOUNTS_IN_MARKET_TOKEN = new InjectionToken>(\n 'token for the logged in user',\n);\nexport const PARTNER_OVERRIDE_CONFIG_TOKEN = new InjectionToken>(\n 'token for bypassing quantity restrictions',\n);\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Pipeline } from '@vendasta/sales-common';\nimport { OrdersUrlFunction } from './opportunity';\nimport { Salesperson } from '@galaxy/types';\nimport { AccountSelectorServiceConfig } from '../accounts/account-selector/account-selector-api.service';\nimport { BusinessInfoService } from './opportunity-side-panel/business-service/opportunity-business.service';\n\nexport const SALES_UI_OPPORTUNITY_CONFIG_TOKEN = new InjectionToken(\n 'general dependency data for sales-ui opportunities',\n);\nexport interface SalesUIOpportunityConfig\n extends AccountSelectorServiceConfig,\n SalesUIOpportunityDetailsConfig,\n SalesUICreateOpportunityConfig {\n businessInfoService: BusinessInfoService;\n}\n\nexport const SALES_PERSON_ID_TOKEN: InjectionToken> = new InjectionToken(\n 'token for current sales person id to be used in the sales-ui opportunity service',\n);\n\nexport const PIPELINES_TOKEN: InjectionToken> = new InjectionToken(\n 'token for current pipelines to be used in the sales-ui opportunity service',\n);\n\nexport const SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN = new InjectionToken(\n 'dependency data for the sales-ui opportunity details',\n);\n\nexport interface SalesUIOpportunityDetailsConfig {\n partnerId$: Observable;\n marketId$: Observable;\n bypassQuantityRestrictions$: Observable;\n pipelines$: Observable;\n salespeople$: Observable;\n getOrdersUrl: OrdersUrlFunction;\n canCreateOrders$: Observable;\n showActivities$?: Observable;\n}\n\nexport const SALES_UI_CREATE_OPPORTUNITY_CONFIG_TOKEN = new InjectionToken(\n 'dependency data for the sales-ui create opportunity form',\n);\n\nexport interface SalesUICreateOpportunityConfig {\n defaultCurrency$: Observable;\n partnerId$: Observable;\n marketId$: Observable;\n bypassQuantityRestrictions$: Observable;\n pipelines$: Observable;\n salespeople$: Observable;\n currentPipeline$: Observable;\n salespersonId$: Observable;\n}\n\nexport const BUSINESS_INFO_SERVICE_TOKEN: InjectionToken = new InjectionToken(\n 'token of service for retrieving business info to be used for sales-ui opportunities',\n);\n\nexport const MARKET_ID_OVERRIDE_TOKEN: InjectionToken = new InjectionToken(\n 'token for overriding the marketID that is usually provided in the sales UI config',\n);\n","import { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { AccountGroup, AccountGroupService, LookupFilter, ProjectionFilter } from '@galaxy/account-group';\nimport { Observable, combineLatest } from 'rxjs';\nimport { skipWhile, switchMap } from 'rxjs/operators';\n\nexport const ACCOUNT_SELECTOR_SERVICE_TOKEN = new InjectionToken(\n 'general dependency data for the sales-ui account selector service',\n);\nexport interface AccountSelectorServiceConfig {\n salespersonId$: Observable;\n marketId$: Observable;\n hasAccessToAllAccountsInMarket$: Observable;\n}\n\n@Injectable()\nexport class AccountSelectorApiService {\n constructor(\n private readonly accountGroupService: AccountGroupService,\n @Inject(ACCOUNT_SELECTOR_SERVICE_TOKEN) private readonly config: AccountSelectorServiceConfig,\n ) {}\n\n get(accountGroupId: string, projectionFilter: ProjectionFilter): Observable {\n return this.accountGroupService.get(accountGroupId, projectionFilter);\n }\n\n search(projectionFilter: ProjectionFilter, searchTerm?: string, pageSize = 500): Observable {\n return combineLatest([\n this.config.hasAccessToAllAccountsInMarket$,\n this.config.salespersonId$,\n this.config.marketId$,\n ]).pipe(\n switchMap(([hasAllMarketAccess, salespersonId, marketId]) => {\n const filters = !hasAllMarketAccess ? new LookupFilter(salespersonId) : undefined;\n return this.accountGroupService.lookup(projectionFilter, [marketId], searchTerm, filters, pageSize).pipe(\n skipWhile((r) => r == null), // skip the first null values (and undefined)\n );\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable, ReplaySubject, firstValueFrom } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\nimport { PipelineSort } from '../pipeline-sort';\nimport { PipelineUIFilters } from '../pipeline/pipeline-service.interface';\n\nexport interface FiltersCacheObject {\n filterName: string;\n filters: PipelineUIFilters;\n sort: PipelineSort;\n searchTerm: string;\n}\n\nconst SAVED_PIPELINE_FILTERS_KEY = 'saved-pipeline-filters-key';\n\nexport const FILTERS_CACHE_SERVICE_TOKEN = 'filters-cache-service-token';\n\n@Injectable()\nexport class PipelineFiltersCacheService {\n filtersCache$: Observable;\n private readonly trigger$$ = new ReplaySubject(1);\n private readonly trigger$ = this.trigger$$.asObservable();\n\n constructor(private readonly i18n: TranslateService) {\n this.filtersCache$ = this.trigger$.pipe(\n map(() => {\n return this.fetchCachedFilters();\n }),\n shareReplay(1),\n );\n this.trigger$$.next();\n }\n\n private fetchCachedFilters(): FiltersCacheObject[] {\n const existingFilters = localStorage.getItem(SAVED_PIPELINE_FILTERS_KEY);\n if (!existingFilters) {\n return [];\n }\n\n const jsonObj = JSON.parse(existingFilters);\n return jsonObj;\n }\n\n async saveNewFilterInCache(\n filters: PipelineUIFilters,\n sort: PipelineSort,\n searchTerm: string,\n name: string,\n ): Promise {\n return firstValueFrom(this.filtersCache$).then((existing) => {\n if (!this.canSaveFilter(existing, name)) {\n return new Error(this.i18n.instant('PIPELINE.SAVE_FILTER_ERROR'));\n }\n\n const newFilter = {\n filterName: name,\n filters: filters,\n sort: sort,\n searchTerm: searchTerm,\n };\n existing.push(newFilter);\n\n localStorage.setItem(SAVED_PIPELINE_FILTERS_KEY, JSON.stringify(existing));\n this.trigger$$.next();\n return null;\n });\n }\n\n async removeSavedFilterFromCache(name: string): Promise {\n return firstValueFrom(this.filtersCache$).then((existing) => {\n const filterToRemove = existing.findIndex((f) => f.filterName === name);\n\n if (filterToRemove === -1) {\n return new Error(`Filter group with name: '${name}' could not be deleted because it could not be found.`);\n } else {\n existing.splice(filterToRemove, 1);\n\n localStorage.setItem(SAVED_PIPELINE_FILTERS_KEY, JSON.stringify(existing));\n this.trigger$$.next();\n return null;\n }\n });\n }\n\n public canSaveFilter(filters: FiltersCacheObject[], newName: string): boolean {\n return !filters.find((f) => f.filterName === newName);\n }\n}\n","import { Observable } from 'rxjs';\nimport { InjectionToken } from '@angular/core';\n\nexport interface PipelineTableSavedFiltersConfig {\n canAccessSaveFilters$: Observable;\n}\nexport const PIPELINE_TABLE_SAVED_FILTERS_CONFIG_TOKEN = new InjectionToken(\n 'general dependency data for the pipeline table saved filters',\n);\n\nexport const HAS_ACCESS_TO_SAVE_FILTERS = new InjectionToken>(\n 'token for the access to save filters',\n);\n","import { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject, firstValueFrom } from 'rxjs';\n\nexport interface PipelineStatuses {\n open: boolean | null;\n lost: boolean | null;\n won: boolean | null;\n}\n\n@Injectable()\nexport class PipelineStatusCheckboxService {\n private readonly statuses$$ = new ReplaySubject(1);\n readonly statuses$: Observable = this.statuses$$.asObservable();\n\n async getValueToInitForm(): Promise {\n return await firstValueFrom(this.statuses$$);\n }\n\n storeStatuses(statuses: PipelineStatuses): void {\n this.statuses$$.next(statuses);\n }\n\n resetFilter(): void {\n this.storeStatuses(null);\n }\n}\n","import { Component } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { PipelineStatusCheckboxService, PipelineStatuses } from './pipeline-status-checkbox.service';\n\n@Component({\n selector: 'sales-ui-pipeline-status-checkbox',\n templateUrl: './pipeline-status-checkbox.component.html',\n styleUrls: [],\n})\nexport class PipelineStatusCheckboxComponent {\n statuses: UntypedFormGroup = new UntypedFormGroup({\n open: new UntypedFormControl(),\n won: new UntypedFormControl(),\n lost: new UntypedFormControl(),\n });\n\n constructor(\n public dialogRef: MatDialogRef,\n private readonly store: PipelineStatusCheckboxService,\n ) {\n this.store.getValueToInitForm().then((values: PipelineStatuses) => {\n const storeHasPreviousValue = !!values;\n const formUntouched = this.statuses.pristine;\n if (formUntouched && storeHasPreviousValue) {\n this.statuses.setValue({\n open: values.open,\n won: values.won,\n lost: values.lost,\n });\n }\n });\n }\n\n save(fg: UntypedFormGroup): void {\n this.store.storeStatuses({\n open: fg.value['open'],\n won: fg.value['won'],\n lost: fg.value['lost'],\n });\n this.dialogRef.close();\n }\n}\n","

{{ 'FRONTEND.SALES_UI.PIPELINE.STATUS_TITLE' | translate }}

\n\n\n \n \n \n\n\n\n \n \n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { GalaxyCheckboxModule } from '@vendasta/galaxy/checkbox';\nimport { PipelineStatusCheckboxComponent } from './pipeline-status-checkbox.component';\nimport { PipelineStatusCheckboxService } from './pipeline-status-checkbox.service';\n\n@NgModule({\n declarations: [PipelineStatusCheckboxComponent],\n exports: [PipelineStatusCheckboxComponent],\n providers: [PipelineStatusCheckboxService],\n imports: [CommonModule, GalaxyCheckboxModule, ReactiveFormsModule, MatButtonModule, MatDialogModule, TranslateModule],\n})\nexport class PipelineStatusCheckboxModule {}\n","import { Package, Product } from '@vendasta/marketplace-packages';\nimport { Pipeline } from '@vendasta/sales-common';\nimport { StageInterface } from '@vendasta/sales-opportunities';\nimport { DateRange } from '@vendasta/uikit';\nimport { Observable } from 'rxjs';\nimport { MultiSelectTag } from '../../filters/tag-selector/tag';\nimport { PipelineSort } from '../pipeline-sort';\nimport { PipelineStatuses } from '../pipeline-status-checkbox/pipeline-status-checkbox.service';\n\nimport { OpportunityType } from '../../sales-opportunities/interface';\n\nexport const PIPELINE_SERVICE_INJECTION_TOKEN = 'PIPELINE_SERVICE_INJECTION_TOKEN';\n\nexport interface SalesTeamOptionValue {\n groupId: string;\n teamName: string;\n}\n\nexport interface SalesPersonOptionValue {\n id: string;\n name: string;\n}\n\nexport interface PipelineServiceInterface {\n selectedUIFilters$: Observable;\n sort$: Observable;\n lastSearchTerm$: Observable;\n applySavedFiltersFromStorage(searchTerm: string, filters: PipelineUIFilters, sort: PipelineSort): void;\n}\n\nexport interface PipelineUIFilters {\n salespeople: SalesPersonOptionValue[];\n salesTeamsIds: SalesTeamOptionValue[];\n salesTeamSalespersonIds: string[];\n packages: Package[];\n products: Product[];\n pipelines: Pipeline[];\n pipelineStage: StageInterface;\n statuses: PipelineStatuses;\n oppTags: MultiSelectTag[];\n acctTags: MultiSelectTag[];\n monthlyRevenueDate: Date;\n expectedClose: DateRange;\n actualClose: DateRange;\n createdDate: DateRange;\n assignedDate: DateRange;\n marketId: string;\n accountGroupId: string;\n types: OpportunityType[];\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Observable, firstValueFrom } from 'rxjs';\nimport { PIPELINE_SERVICE_INJECTION_TOKEN, PipelineServiceInterface } from '../pipeline/pipeline-service.interface';\nimport {\n FILTERS_CACHE_SERVICE_TOKEN,\n FiltersCacheObject,\n PipelineFiltersCacheService,\n} from './pipeline-filters-cache.service';\n\n@Injectable()\nexport class PipelineFilterSaverService {\n savedFilters$: Observable;\n\n constructor(\n @Inject(FILTERS_CACHE_SERVICE_TOKEN) private readonly pipelineFiltersCacheService: PipelineFiltersCacheService,\n @Inject(PIPELINE_SERVICE_INJECTION_TOKEN) private readonly pipelineService: PipelineServiceInterface,\n ) {\n this.savedFilters$ = pipelineFiltersCacheService.filtersCache$;\n }\n\n async saveCurrentFilters(groupName: string): Promise {\n return Promise.all([\n firstValueFrom(this.pipelineService.selectedUIFilters$),\n firstValueFrom(this.pipelineService.sort$),\n firstValueFrom(this.pipelineService.lastSearchTerm$),\n ]).then(([filters, sort, search]) => {\n return this.pipelineFiltersCacheService.saveNewFilterInCache(filters, sort, search, groupName);\n });\n }\n\n deleteFilterGroup(groupName: string): Promise {\n return this.pipelineFiltersCacheService.removeSavedFilterFromCache(groupName);\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { firstValueFrom } from 'rxjs';\nimport { PipelineFilterSaverService } from '../../pipeline-filters-cache/pipeline-filter-saver.service';\n\n@Component({\n selector: 'sales-ui-pipeline-table-filter-dialog',\n templateUrl: './pipeline-filter-dialog.component.html',\n styles: [\n `\n glxy-alert {\n margin-bottom: 16px;\n }\n `,\n ],\n})\nexport class PipelineFilterDialogComponent {\n filterGroupName: string;\n isDuplicate = false;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private readonly data: { savedFilterGroupNames: string[] },\n private readonly filterStorage: PipelineFilterSaverService,\n private readonly snackbarService: SnackbarService,\n private readonly translateService: TranslateService,\n ) {}\n\n checkIsDuplicate(): void {\n this.isDuplicate = this.data.savedFilterGroupNames.includes(this.filterGroupName);\n }\n\n async saveFilterGroup(): Promise {\n const successMessage = await firstValueFrom(\n this.translateService.stream('FRONTEND.SALES_UI.PIPELINE.SAVE_FILTER_SUCCESS'),\n );\n\n this.filterStorage\n .deleteFilterGroup(this.filterGroupName)\n .then(() => this.filterStorage.saveCurrentFilters(this.filterGroupName))\n .then((err) => {\n if (err) {\n return this.snackbarService.openErrorSnack(err.message);\n }\n\n this.snackbarService.openSuccessSnack(successMessage);\n });\n }\n}\n","

{{ 'FRONTEND.SALES_UI.PIPELINE.SAVE_FILTER_DIALOG_TITLE' | translate }}

\n\n\n \n {{ 'FRONTEND.SALES_UI.PIPELINE.FILTER_NAME_INPUT' | translate }}\n \n \n \n {{ 'FRONTEND.SALES_UI.COMMON.WARNING' | translate }}\n —\n {{ 'FRONTEND.SALES_UI.PIPELINE.FILTER_OVERWRITTEN_WARNING' | translate : { filterGroupName: filterGroupName } }}\n \n\n\n\n \n \n\n","import { Component, Inject, OnDestroy } from '@angular/core';\nimport { Observable, firstValueFrom } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { MatDialog } from '@angular/material/dialog';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { PIPELINE_SERVICE_INJECTION_TOKEN, PipelineServiceInterface } from '../pipeline/pipeline-service.interface';\nimport { PipelineFilterDialogComponent } from './pipeline-table-filter-dialog/pipeline-filter-dialog.component';\nimport { HAS_ACCESS_TO_SAVE_FILTERS } from './tokens';\nimport { FiltersCacheObject } from '../pipeline-filters-cache/pipeline-filters-cache.service';\nimport { PipelineFilterSaverService } from '../pipeline-filters-cache/pipeline-filter-saver.service';\n\n@Component({\n selector: 'sales-ui-pipeline-saved-filters',\n templateUrl: './pipeline-saved-filters.component.html',\n styleUrls: ['./pipeline-saved-filters.component.scss'],\n})\nexport class PipelineSavedFiltersComponent implements OnDestroy {\n savedFilters$: Observable;\n canAccessSaveFilters$: Observable;\n\n private readonly subscriptions = SubscriptionList.new();\n\n ngOnDestroy(): void {\n this.subscriptions.destroy();\n }\n\n constructor(\n readonly dialog: MatDialog,\n private readonly filterStorage: PipelineFilterSaverService,\n @Inject(PIPELINE_SERVICE_INJECTION_TOKEN) private readonly pipelineService: PipelineServiceInterface,\n @Inject(HAS_ACCESS_TO_SAVE_FILTERS) private readonly hasAccessSaveFilters$: Observable,\n ) {\n this.canAccessSaveFilters$ = this.hasAccessSaveFilters$;\n this.savedFilters$ = filterStorage.savedFilters$;\n }\n\n applySavedFilter(filterGroup: FiltersCacheObject): void {\n this.pipelineService.applySavedFiltersFromStorage(filterGroup.searchTerm, filterGroup.filters, filterGroup.sort);\n }\n\n deleteSavedFilter(filterGroupName: string): void {\n this.filterStorage.deleteFilterGroup(filterGroupName);\n }\n\n async saveCurrentFilters(): Promise {\n const filterGroupNames = this.filterStorage.savedFilters$.pipe(\n map((filterCacheObjects) => filterCacheObjects.map((filterCacheObject) => filterCacheObject.filterName)),\n );\n\n const groupNames = await firstValueFrom(filterGroupNames);\n this.dialog.open(PipelineFilterDialogComponent, {\n width: '400px',\n data: { savedFilterGroupNames: groupNames },\n });\n }\n}\n","\n filter_alt\n {{ 'FRONTEND.SALES_UI.PIPELINE.SAVED_FILTERS' | translate }}\n arrow_drop_down\n\n\n\n \n
\n
\n \n {{ filter.filterName }}\n \n \n
\n
\n
\n \n
\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PipelineFiltersCacheService } from './pipeline-filters-cache.service';\nimport { PipelineFilterSaverService } from './pipeline-filter-saver.service';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n providers: [PipelineFiltersCacheService, PipelineFilterSaverService],\n})\nexport class PipelineFiltersCacheModule {}\n","import { Observable } from 'rxjs';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { FormsModule } from '@angular/forms';\nimport { PipelineStatusCheckboxModule } from '../../pipelines/pipeline-status-checkbox/pipeline-status-checkbox.module';\nimport { PipelineSavedFiltersComponent } from './pipeline-saved-filters.component';\nimport { PipelineFilterDialogComponent } from './pipeline-table-filter-dialog/pipeline-filter-dialog.component';\nimport {\n HAS_ACCESS_TO_SAVE_FILTERS,\n PIPELINE_TABLE_SAVED_FILTERS_CONFIG_TOKEN,\n PipelineTableSavedFiltersConfig,\n} from './tokens';\nimport { PipelineFiltersCacheModule } from '../pipeline-filters-cache/pipeline-filters-cache.module';\n\n@NgModule({\n declarations: [PipelineSavedFiltersComponent, PipelineFilterDialogComponent],\n exports: [PipelineSavedFiltersComponent, PipelineFilterDialogComponent],\n imports: [\n CommonModule,\n TranslateModule,\n FormsModule,\n MatIconModule,\n MatButtonModule,\n MatMenuModule,\n MatInputModule,\n MatDialogModule,\n MatFormFieldModule,\n GalaxyAlertModule,\n PipelineStatusCheckboxModule,\n PipelineFiltersCacheModule,\n ],\n providers: [\n {\n provide: HAS_ACCESS_TO_SAVE_FILTERS,\n deps: [PIPELINE_TABLE_SAVED_FILTERS_CONFIG_TOKEN],\n useFactory: hasAccessToSaveFilters,\n },\n ],\n})\nexport class PipelineSavedFiltersModule {}\n\nfunction hasAccessToSaveFilters(config: PipelineTableSavedFiltersConfig): Observable {\n return config.canAccessSaveFilters$;\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Salesperson } from '@galaxy/types';\nimport { AccountUrlFunction, CompanyUrlFunction, DetailsConfig } from '../../sales-opportunities/opportunity';\n\nexport const PIPELINE_CARD_CONFIG_TOKEN = new InjectionToken(\n 'general dependency data for the pipeline card component',\n);\nexport interface PipelineCardConfig {\n allSalespeople$: Observable; // Should start with current salesperson user when applicable\n defaultCurrency$: Observable;\n opportunityInfoUrlBuilder: OpportunityInfoUrlBuilder;\n detailsConfig: DetailsConfig;\n}\n\nexport interface OpportunityInfoUrlBuilder {\n (businessId: string, opportunityId: string): string;\n}\nexport const ALL_SALESPEOPLE: InjectionToken> = new InjectionToken(\n 'token for list of all salespeople',\n);\nexport const DEFAULT_CURRENCY: InjectionToken> = new InjectionToken('token for default currency');\nexport const OPPORTUNITY_INFO_URL_BUILDER: InjectionToken = new InjectionToken(\n 'token for function to build opportunity info url path',\n);\nexport const ACCOUNT_DETAILS_URL_TOKEN: InjectionToken = new InjectionToken(\n 'token for account details URL generator',\n);\nexport const COMPANY_DETAILS_URL_TOKEN: InjectionToken = new InjectionToken(\n 'token for the company details URL generator',\n);\n\nexport const DETAILS_CONFIG_TOKEN = new InjectionToken(\n 'token for configuring whether to show details in the account group or the company',\n);\n","import { Injectable } from '@angular/core';\nimport { AccountGroupApiService, ProjectionFilter } from '@galaxy/account-group';\nimport { ReplaySubject, map, of, switchMap } from 'rxjs';\n\n@Injectable()\nexport class AccountFilterService {\n private readonly selectedAccountGroupId$$ = new ReplaySubject(1);\n readonly selectedAccountGroupId$ = this.selectedAccountGroupId$$.asObservable();\n readonly selectedAccountGroupName$ = this.selectedAccountGroupId$.pipe(\n switchMap((accountGroupId) => {\n if (accountGroupId === '') return of(null);\n return this.accountGroupService.get(accountGroupId, new ProjectionFilter({ napData: true }));\n }),\n map((accountGroup) => accountGroup?.napData?.companyName ?? ''),\n );\n\n constructor(private accountGroupService: AccountGroupApiService) {}\n\n setAccountGroupId(accountGroupId: string): void {\n this.selectedAccountGroupId$$.next(accountGroupId);\n }\n\n clearAccountGroupFilter(): void {\n this.setAccountGroupId('');\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport const REVENUE_DEFAULT_CURRENCY_CODE_TOKEN = new InjectionToken>(\n 'revenue default currency code',\n);\n","import { Observable, ReplaySubject } from 'rxjs';\nimport { Inject, Injectable } from '@angular/core';\nimport { map, startWith } from 'rxjs/operators';\nimport { REVENUE_DEFAULT_CURRENCY_CODE_TOKEN } from './tokens';\n\n@Injectable()\nexport class PotentialRevenueService {\n private readonly selectedDate$$ = new ReplaySubject(1);\n readonly selectedDate$ = this.selectedDate$$.asObservable().pipe(startWith(null));\n\n private readonly potentialRevenue$$ = new ReplaySubject(1);\n readonly potentialRevenue$ = this.potentialRevenue$$.asObservable();\n\n private readonly weightedPotentialRevenue$$ = new ReplaySubject(1);\n readonly weightedPotentialRevenue$ = this.weightedPotentialRevenue$$.asObservable();\n\n private readonly monthlyRevenue$$ = new ReplaySubject(1);\n readonly monthlyRevenue$ = this.monthlyRevenue$$.asObservable();\n\n private readonly monthlyWeightedRevenue$$ = new ReplaySubject(1);\n readonly monthlyWeightedRevenue$ = this.monthlyWeightedRevenue$$.asObservable();\n\n readonly isPotentialRevenueLoaded$ = this.potentialRevenue$.pipe(map((r) => !!r || r === 0));\n\n readonly currency$ = this.defaultCurrency$;\n\n constructor(@Inject(REVENUE_DEFAULT_CURRENCY_CODE_TOKEN) private readonly defaultCurrency$: Observable) {}\n\n setDate(date: Date): void {\n this.selectedDate$$.next(date);\n }\n\n setPotentialRevenue(r: number): void {\n this.potentialRevenue$$.next(r);\n }\n\n setWeightedRevenue(r: number): void {\n this.weightedPotentialRevenue$$.next(r);\n }\n\n setMonthlyRevenue(r: number): void {\n this.monthlyRevenue$$.next(r);\n }\n\n setMonthlyWeightedRevenue(r: number): void {\n this.monthlyWeightedRevenue$$.next(r);\n }\n}\n","import { ReplaySubject, Observable } from 'rxjs';\nimport { DateRange } from '@vendasta/uikit';\nimport { filter, map } from 'rxjs/operators';\n\nexport interface DateFilterServiceInterface {\n dateRange$: Observable;\n\n setDateRange(startDate: Date, endDate: Date): void;\n clearSelection(): void;\n}\n\nclass DateFilterService implements DateFilterServiceInterface {\n private dateRange$$ = new ReplaySubject(1);\n dateRange$ = this.dateRange$$.asObservable();\n dateFilterToString$: Observable = this.dateRange$.pipe(\n filter((dateRange: DateRange) => !!dateRange?.start && !!dateRange?.end),\n map((dateRange: DateRange) => dateRange.start.toLocaleDateString() + ' - ' + dateRange.end.toLocaleDateString()),\n );\n\n setDateRange(startDate: Date, endDate: Date): void {\n if (startDate != null && endDate != null) {\n this.dateRange$$.next({ start: startDate, end: endDate });\n }\n }\n\n clearSelection(): void {\n this.dateRange$$.next(null);\n }\n}\n\nexport class ExpectedCloseFilterService extends DateFilterService {}\nexport class ActualCloseFilterService extends DateFilterService {}\nexport class CreatedDateFilterService extends DateFilterService {}\nexport class AssignedDateFilterService extends DateFilterService {}\n","/**\n * @description\n * Defines an interface that acts converts filter models into a value for @vendasta/forms/input-tags/Option\n *\n * Implement this interface to create a custom filter option for @angular/forms/ControlValueAccessor\n * that can integrate with Vendasta forms InputTags.\n * @usageNotes\n * ### Declares a model with a string option\n * ```ts\n * interface M {\n * id: string\n * field: string;\n * }\n *\n * class MyModel extends AbstractOption implements M {\n * id: string\n * field: string;\n *\n * constructor(m: M) {\n * super();\n * this.id = m.id;\n * this.field = m.v;\n * this.optionValue = [this.id, this.field].join(',');\n * }\n * static fromOptionValue(option: string): SalespersonOption {\n * const tup = option.split(delimiter);\n * return new SalespersonOption({id: tup[0], name: tup[1]});\n * }\n * }\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport abstract class AbstractOption {\n private _optionValue: OPTION;\n\n // TODO declare abstract static function\n // currently not supported in typescript, issue number: https://github.com/microsoft/TypeScript/issues/34516#issuecomment-544404500\n // abstract static fromOptionValue(option: OPTION): MODEL {\n\n protected get optionValue(): OPTION {\n return this._optionValue;\n }\n\n protected set optionValue(v: OPTION) {\n this._optionValue = v;\n }\n\n /**\n * @description\n * Converts the child class (MODEL) to an Option value (OPTION).\n *\n * @usageNotes\n * ### Converts the object to option value\n *\n * The following example converts a MODEL to an OPTION.\n * ```html\n * \n * ```\n *\n * ```ts\n * import { Option } from '@vendasta/forms';\n * ...\n * allModels: MyModel[] = ...;\n * selectedModels: MyModel[] = ...;\n * options: Option[] = models.map(m => ({name: m.name, value: m.toOptionValue()});\n * fc: FormControl = new FormControl([], []);\n * ...\n * const selected = models.map(m => m.toOptionValue());\n * this.fc.setValue(selected);\n * ```\n *\n * @return OPTION type\n */\n toOptionValue(): OPTION {\n return this.optionValue;\n }\n}\n","import { AbstractOption } from './option.abstract';\n\nconst delimiter = ':';\n\nexport interface SalesTeamOptionValue {\n groupId: string;\n teamName: string;\n}\n\nexport class SalesTeamOption extends AbstractOption {\n private readonly _groupId: string;\n private readonly _teamName: string;\n\n constructor(kwargs: { groupId: string; teamName: string }) {\n super();\n this._groupId = kwargs.groupId;\n this._teamName = kwargs.teamName;\n this.optionValue = [this._groupId, this._teamName].join(delimiter);\n }\n\n static fromOptionValue(option: string): SalesTeamOption {\n const tup = option.split(delimiter);\n return new SalesTeamOption({ groupId: tup[0], teamName: tup[1] });\n }\n\n toOptionValue(): string {\n return this.optionValue;\n }\n\n get id(): string {\n return this.optionValue.split(delimiter)[0];\n }\n\n get teamName(): string {\n return this.optionValue.split(delimiter)[1];\n }\n}\n","import { AbstractOption } from './option.abstract';\n\nconst delimiter = ':';\n\nexport interface SalesPersonOptionValue {\n id: string;\n name: string;\n}\n\nexport class SalespersonOption extends AbstractOption {\n private readonly _id: string;\n private readonly _fullName: string;\n\n constructor(kwargs: { id: string; name: string }) {\n super();\n this._id = kwargs.id;\n this._fullName = kwargs.name;\n this.optionValue = [this._id, this._fullName].join(delimiter);\n }\n\n static fromOptionValue(option: string): SalespersonOption {\n const tup = option.split(delimiter);\n return new SalespersonOption({ id: tup[0], name: tup[1] });\n }\n\n toOptionValue(): string {\n return this.optionValue;\n }\n\n get id(): string {\n return this.optionValue.split(delimiter)[0];\n }\n\n get fullName(): string {\n return this.optionValue.split(delimiter)[1];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { Package } from '@vendasta/marketplace-packages';\n\n@Injectable()\nexport class PipelineFilterPackageSelectionService {\n private readonly selectedPackages$$ = new ReplaySubject(1);\n readonly selectedPackages$ = this.selectedPackages$$.asObservable();\n\n setPackageSelection(pkgs: Package[]): void {\n this.selectedPackages$$.next(pkgs);\n }\n\n clearPackageSelection(): void {\n this.setPackageSelection([]);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport interface PackageSelectConfig {\n partnerId$: Observable;\n marketId$: Observable;\n}\n\nexport const PACKAGE_SELECT_CONFIG_TOKEN = new InjectionToken('package select config token');\nexport const PARTNER_ID_TOKEN: InjectionToken> = new InjectionToken('token for current partner id');\nexport const MARKET_ID_TOKEN: InjectionToken> = new InjectionToken('token for current market id');\n","import { Inject, Injectable } from '@angular/core';\nimport { Package, PackageService, Status } from '@vendasta/marketplace-packages';\nimport { Observable, combineLatest } from 'rxjs';\nimport { map, shareReplay, switchMap } from 'rxjs/operators';\nimport { MARKET_ID_TOKEN, PARTNER_ID_TOKEN } from './tokens';\n\n@Injectable()\nexport class PipelineFilterPackageStoreService {\n public packages$: Observable;\n constructor(\n private readonly pkgService: PackageService,\n @Inject(PARTNER_ID_TOKEN) private readonly partnerId$: Observable,\n @Inject(MARKET_ID_TOKEN) private readonly marketId$: Observable,\n ) {\n this.packages$ = combineLatest([this.partnerId$, this.marketId$]).pipe(\n switchMap(([partnerId, marketId]) =>\n this.pkgService.loadAllPackages(partnerId, [Status.PUBLISHED], marketId, false, 10000),\n ),\n map((resp) => resp.packages),\n map((packages) => packages.sort((a, b) => (a.name > b.name ? 1 : -1))),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { StageInterface } from '@vendasta/sales-opportunities';\nimport { BehaviorSubject, Observable, ReplaySubject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { Pipeline } from '@vendasta/sales-common';\nimport { UserPipelines } from '../../pipelines/user-pipelines/user-pipelines';\n\n@Injectable()\nexport class PipelineMultiSelectService {\n readonly selectablePipelines$: Observable;\n\n private readonly selectedPipelines$$ = new ReplaySubject(1);\n readonly selectedPipelines$ = this.selectedPipelines$$.asObservable().pipe(filter((v) => !!v));\n private readonly selectedPipelineStage$$ = new BehaviorSubject(null);\n readonly selectedPipelineStage$ = this.selectedPipelineStage$$.asObservable();\n\n constructor(private userPipelines: UserPipelines) {\n this.selectablePipelines$ = this.userPipelines.partnerPipelines$;\n }\n\n public setPipelineSelection(pipelines: Pipeline[]): void {\n this.selectedPipelines$$.next(pipelines);\n }\n\n public clearPipelineSelection(): void {\n this.selectedPipelines$$.next([]);\n }\n\n public setPipelineStageSelection(stage: StageInterface): void {\n this.selectedPipelineStage$$.next(stage);\n }\n\n public clearPipelineStageSelection(): void {\n this.selectedPipelineStage$$.next(null);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ProductInterface } from '@vendasta/marketplace-packages';\n\nexport interface ProductSelectorConfig {\n products$: Observable;\n}\nexport const PRODUCT_SELECTOR_CONFIG_TOKEN = new InjectionToken(\n 'general dependency data for the product selector filter',\n);\n\nexport const PRODUCTS_TOKEN: InjectionToken> = new InjectionToken(\n 'token for all products',\n);\n","import { Inject, Injectable } from '@angular/core';\nimport { ProductInterface } from '@vendasta/marketplace-packages';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { mapTo, startWith } from 'rxjs/operators';\nimport { PRODUCTS_TOKEN } from './tokens';\n\n@Injectable()\nexport class ProductSelectorService {\n private readonly selectedProducts$$ = new BehaviorSubject([]);\n readonly selectedProducts$: Observable = this.selectedProducts$$;\n readonly loadingProducts$: Observable;\n\n constructor(@Inject(PRODUCTS_TOKEN) readonly products$: Observable) {\n this.loadingProducts$ = products$.pipe(mapTo(false), startWith(true));\n }\n\n setProductSelection(products: ProductInterface[]): void {\n this.selectedProducts$$.next(products);\n }\n\n clearProductSelection(): void {\n this.setProductSelection([]);\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\nimport { Salesperson } from '@galaxy/types';\nimport { map, take, tap } from 'rxjs/operators';\nimport { SalespersonOption } from '../filter-options/salesperson-option.model';\n\nimport {\n ALL_SALESPEOPLE_TOKEN,\n INIT_WITH_CUR_SALESPERSON_TOKEN,\n SALESPERSON_ID_TOKEN,\n SALESPERSON_NAME_TOKEN,\n} from './tokens';\n\ninterface SalespersonMultiSelectStore {\n selectableSalespeople$: Observable;\n selectedSalespeople$: Observable;\n\n setSelectedSalespeople(salespeopleOptions: string[]): void;\n}\n\n/**\n * @description\n * Intent for the MultiSelectStoreServices is to combine their emissions wrapped by your FilterService.\n * Then a feature service can use those to make api calls (for backend filtering) by combining the changes in filters,\n * search term, page cursor, etc..., OR could do frontend filtering.\n *\n * @usageNotes\n * ```ts\n * // Best practice to have default values to load the content before all the filter values have loaded (may not be possible in all cases).\n * // This approach allows a filter's selectable values to be loaded lazily, and allows a user to interact with filters that have loaded in.\n * const defaultFilterValues: T = ...\n * @Injectable()\n * class MyFilterService {\n * readonly selectedFilters$: Observable;\n * constructor(\n * private readonly spFilter: SalespersonMultiSelectStoreService,\n * private readonly spFilter: SalesTeamMultiSelectStoreService,\n * ) {\n * this.selectedFilters$ = combineLatest([this.spFilter.selectedSalespeople$, this.stFilter.selectedSalesTeams$]).pipe(\n * map(([peopleFilters, teamFilters]) => {\n * return {people: peopleFilters, teams: teamFilters};\n * }),\n * startsWith(defaultFilterValues),\n * );\n * }\n * }\n * ```\n */\n\n/**\n * Manages the state of salesperson multi select.\n * Provides app state if provided in root (all instances share the same state and will effect each other),\n * Provides state for group of components if injected in a module (all instances in components of that module share state),\n * or directly on a component for component state (ex: page, table)\n */\n@Injectable()\nexport class SalespersonMultiSelectStoreService implements SalespersonMultiSelectStore {\n readonly selectableSalespeople$: Observable;\n private readonly selectedSalespeople$$ = new ReplaySubject(1);\n readonly selectedSalespeople$: Observable = this.selectedSalespeople$$.asObservable();\n\n constructor(\n @Inject(ALL_SALESPEOPLE_TOKEN) private readonly salespeople$: Observable,\n @Inject(SALESPERSON_ID_TOKEN) private readonly salespersonId$: Observable,\n @Inject(SALESPERSON_NAME_TOKEN) private readonly salespersonName$: Observable,\n @Inject(INIT_WITH_CUR_SALESPERSON_TOKEN) private readonly initWithLoggedInSalesperson: boolean,\n ) {\n this.selectableSalespeople$ = this.salespeople$.pipe(\n map((sp) => sp.map((s) => new SalespersonOption({ id: s.id, name: s.fullName }))),\n );\n\n if (this.initWithLoggedInSalesperson) {\n const initToLoggedInUser$ = combineLatest([this.salespersonId$, this.salespersonName$]).pipe(\n take(1),\n map(([id, name]) => new SalespersonOption({ id: id, name: name })),\n tap((sp) => this.selectedSalespeople$$.next([sp])),\n );\n initToLoggedInUser$.subscribe();\n }\n }\n\n getSalesPeopeOptionsFromIds$(ids: string[]): Observable {\n return this.selectableSalespeople$.pipe(\n map((sps) => sps.filter((sp) => ids.includes(sp.id))),\n map((sps) => sps.map((sp) => `${sp.id}:${sp.fullName}`)),\n );\n }\n\n /**\n * @param salespeopleOptions - array of `${salespersonId}:${salespersonName}` strings\n */\n setSelectedSalespeople(salespeopleOptions: string[]): void {\n const spOptions = [...new Set(salespeopleOptions)] as string[];\n const salespeople = (spOptions || []).map((o) => SalespersonOption.fromOptionValue(o));\n this.selectedSalespeople$$.next(salespeople);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable, SchedulerLike } from 'rxjs';\nimport { SalesTeamInterface } from '@vendasta/sales-common';\n\nexport interface SalesTeamsService {\n arrayOfSalesTeamMembers$: Observable;\n\n getSalesTeams$(partnerId: string, marketId: string, scheduler?: SchedulerLike): Observable;\n\n salesTeamIdsToArrayOfSalesPeopleIds(salesTeamIds: string[]): void;\n}\nexport interface SalesTeamMultiSelectConfig {\n partnerId$: Observable;\n marketId$: Observable;\n salesTeamsService: SalesTeamsService;\n}\n\nexport const SALES_TEAM_MULTI_SELECT_CONFIG_TOKEN = new InjectionToken(\n 'sales team multi select config token',\n);\nexport const PARTNER_ID_TOKEN: InjectionToken> = new InjectionToken('token for current partner id');\nexport const MARKET_ID_TOKEN: InjectionToken> = new InjectionToken('token for current market id');\nexport const SALES_TEAMS_SERVICE_TOKEN: InjectionToken = new InjectionToken(\n 'token for a service needed by this filter',\n);\n","import { Inject, Injectable } from '@angular/core';\nimport { SalesTeamInterface } from '@vendasta/sales-common';\nimport { Observable, ReplaySubject, combineLatest } from 'rxjs';\nimport { filter, map, switchMap } from 'rxjs/operators';\nimport { SalesTeamOption } from '../filter-options/sales-team-option.model';\nimport { MARKET_ID_TOKEN, PARTNER_ID_TOKEN, SALES_TEAMS_SERVICE_TOKEN, SalesTeamsService } from './tokens';\n\ninterface SalesTeamMultiSelectStore {\n selectableSalesTeams$: Observable;\n selectedSalesTeams$: Observable;\n\n setSelectedSalesTeams(salesTeamsOptions: string[]): void;\n}\n\n@Injectable()\nexport class SalesTeamMultiSelectStoreService implements SalesTeamMultiSelectStore {\n readonly selectableSalesTeams$: Observable;\n private readonly selectedSalesTeams$$: ReplaySubject = new ReplaySubject(1);\n readonly selectedSalesTeams$: Observable = this.selectedSalesTeams$$.pipe(filter((v) => !!v));\n readonly selectedTeamsSalespeopleIds$: Observable;\n readonly salesTeams$: Observable = combineLatest([this.partnerId$, this.marketId$]).pipe(\n switchMap(([partnerId, marketId]) => this.salesTeamService.getSalesTeams$(partnerId, marketId)),\n );\n\n constructor(\n @Inject(PARTNER_ID_TOKEN) private readonly partnerId$: Observable,\n @Inject(MARKET_ID_TOKEN) private readonly marketId$: Observable,\n @Inject(SALES_TEAMS_SERVICE_TOKEN) private readonly salesTeamService: SalesTeamsService,\n ) {\n this.selectableSalesTeams$ = this.salesTeams$.pipe(\n map((st) => st.map((s) => new SalesTeamOption({ groupId: s.groupId, teamName: s.teamName }))),\n );\n\n this.selectedSalesTeams$.subscribe((salesTeams) => this.fetchSalesTeamsSalespeopleIds(salesTeams.map((t) => t.id)));\n\n this.selectedTeamsSalespeopleIds$ = this.getSalesTeamsSalesPeopleIds$();\n }\n\n private getSalesTeamsSalesPeopleIds$(): Observable {\n return this.salesTeamService.arrayOfSalesTeamMembers$.pipe(\n map((teams) => {\n const salespeopleIds: string[] = [];\n\n if (teams) {\n for (const team of teams) {\n salespeopleIds.push(...team);\n }\n }\n\n return salespeopleIds;\n }),\n );\n }\n\n private fetchSalesTeamsSalespeopleIds(salesTeamIds: string[]): void {\n this.salesTeamService.salesTeamIdsToArrayOfSalesPeopleIds(salesTeamIds);\n }\n\n getSalesTeamOptionsFromIds$(ids: string[]): Observable {\n return this.selectableSalesTeams$.pipe(\n map((st) => st.filter((sp) => ids.includes(sp.id))),\n map((st) => st.map((sp) => `${sp.id}:${sp.teamName}`)),\n );\n }\n\n /**\n * @param salesTeamsOptions - array of `${salesTeamId}:${salesTeamName}` strings\n */\n setSelectedSalesTeams(salesTeamsOptions: string[]): void {\n const salesTeams = (salesTeamsOptions || []).map((o) => SalesTeamOption.fromOptionValue(o));\n this.selectedSalesTeams$$.next(salesTeams);\n }\n}\n","export interface MultiSelectTag {\n name: string;\n value: string;\n type: string;\n}\n\nexport const ACCOUNT = 'account';\nexport const OPPORTUNITY = 'opportunity';\nexport const BOTH = 'both';\n\nfunction convertToOpportunityMultiSelectTag(tag: MultiSelectTag): MultiSelectTag {\n tag.value = tag.name;\n tag.type = OPPORTUNITY;\n return tag;\n}\n\nfunction getUniqueTags(tags: MultiSelectTag[]): MultiSelectTag[] {\n const object: any = {};\n tags.forEach((tag) => {\n if (!tag.value) {\n tag = convertToOpportunityMultiSelectTag(tag);\n }\n const existingTag = object[tag.value];\n if (existingTag && existingTag.name !== tag.name) {\n console.log(\n 'Multiple tags with same value but different name. Using name:',\n existingTag.name,\n 'tags:',\n existingTag,\n tag,\n );\n return;\n }\n if (existingTag && existingTag.type !== tag.type) {\n tag.type = BOTH;\n }\n object[tag.value] = tag;\n });\n return Object.keys(object).map((key) => object[key]);\n}\n\nexport function sortTagOptions(tags: MultiSelectTag[]): MultiSelectTag[] {\n const values = getUniqueTags(tags);\n return values.sort(function (a, b): number {\n if (a.name.toLowerCase() < b.name.toLowerCase()) {\n return -1;\n }\n if (a.name.toLowerCase() > b.name.toLowerCase()) {\n return 1;\n }\n return 0;\n });\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { TagService } from './interface';\n\nexport interface TagMultiSelectConfig {\n partnerId$: Observable;\n marketId$: Observable;\n tagService: TagService;\n}\n\nexport const TAG_MULTI_SELECT_CONFIG_TOKEN = new InjectionToken(\n 'general dependency data for the tag selector filter',\n);\nexport const PARTNER_ID_TOKEN: InjectionToken> = new InjectionToken('token for current partner id');\nexport const MARKET_ID_TOKEN: InjectionToken> = new InjectionToken('token for current market id');\nexport const TAG_SERVICE_TOKEN: InjectionToken = new InjectionToken('token for tag service');\n","import { Inject, Injectable } from '@angular/core';\nimport { combineLatest, Observable, ReplaySubject } from 'rxjs';\nimport { map, shareReplay, switchMap } from 'rxjs/operators';\nimport { TagService } from './interface';\nimport { ACCOUNT, BOTH, MultiSelectTag, OPPORTUNITY } from './tag';\nimport { MARKET_ID_TOKEN, PARTNER_ID_TOKEN, TAG_SERVICE_TOKEN } from './tokens';\nimport { AccountGroupApiService, AggregationSupportedFields } from '@vendasta/account-group';\n\n@Injectable()\nexport class TagMultiSelectionStoreService {\n private readonly selectedAccountTags$$ = new ReplaySubject(1);\n readonly selectedAccountTags$ = this.selectedAccountTags$$.asObservable();\n private readonly selectedOppTags$$ = new ReplaySubject(1);\n readonly selectedOppTags$ = this.selectedOppTags$$.asObservable();\n\n readonly selectableOppTags$: Observable;\n readonly selectableAccTags$: Observable;\n\n constructor(\n private readonly accountGroupApi: AccountGroupApiService,\n @Inject(TAG_SERVICE_TOKEN) api: TagService,\n @Inject(PARTNER_ID_TOKEN) private readonly partnerId$: Observable,\n @Inject(MARKET_ID_TOKEN) private readonly marketId$: Observable,\n ) {\n this.selectableOppTags$ = combineLatest([this.partnerId$, this.marketId$]).pipe(\n switchMap(([partnerId, marketId]) =>\n api.getTagsForOpportunities({\n partnerId: partnerId,\n marketId: marketId,\n }),\n ),\n map((tagResponse) => tagResponse.tags.map((t) => { name: t, value: t, type: OPPORTUNITY })),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n this.selectableAccTags$ = combineLatest([this.partnerId$, this.marketId$]).pipe(\n switchMap(([partnerId, marketId]) =>\n this.accountGroupApi.listOptionsForField({\n partnerId: partnerId,\n marketId: marketId,\n field: AggregationSupportedFields.AGGREGATION_TAGS,\n }),\n ),\n map((tags) => tags.values.map((t) => { name: t, value: t, type: ACCOUNT })),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n public setTagsSelection(tags: MultiSelectTag[]): void {\n const accTags: MultiSelectTag[] = [];\n const oppTags: MultiSelectTag[] = [];\n\n tags.forEach((tag) => {\n if (tag.type === ACCOUNT || tag.type === BOTH) {\n accTags.push(tag);\n }\n if (tag.type === OPPORTUNITY || tag.type === BOTH) {\n oppTags.push(tag);\n }\n });\n\n this.selectedAccountTags$$.next(accTags);\n this.selectedOppTags$$.next(oppTags);\n }\n\n public setOppTagsSelection(tags: MultiSelectTag[]): void {\n this.selectedOppTags$$.next(tags || []);\n }\n\n public setAccTagsSelection(tags: MultiSelectTag[]): void {\n this.selectedAccountTags$$.next(tags || []);\n }\n\n public clearTagsSelection(): void {\n this.selectedAccountTags$$.next([]);\n this.selectedOppTags$$.next([]);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { OpportunityType } from '../../sales-opportunities/interface';\n\n@Injectable()\nexport class OpportunityTypeFilterService {\n private readonly selectedTypes$$ = new ReplaySubject(1);\n readonly selectedTypes$ = this.selectedTypes$$.asObservable();\n readonly selectedTypeNames$ = this.selectedTypes$.pipe(\n filter((types) => Boolean(types)),\n map((types) => types.map((type) => type.displayName).join(', ')),\n );\n\n setTypeSelection(types: OpportunityType[]): void {\n this.selectedTypes$$.next(types);\n }\n\n clearOpportunityTypeSelection(): void {\n this.setTypeSelection([]);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { OpportunityType } from '../../sales-opportunities/interface';\n\n@Injectable()\nexport class OpportunityTypeFilterStoreService {\n availableTypes$$ = new BehaviorSubject([\n {\n id: '',\n displayName: 'Not specified',\n },\n {\n id: 'new-business',\n displayName: 'New Business',\n },\n {\n id: 'existing-business',\n displayName: 'Existing Business',\n },\n ]);\n\n availableTypes$ = this.availableTypes$$.asObservable();\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { Package, Product, ProductInterface } from '@vendasta/marketplace-packages';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { Pipeline } from '@vendasta/sales-common';\nimport { StageInterface } from '@vendasta/sales-opportunities';\nimport { DateRange } from '@vendasta/uikit';\nimport { parseISO } from 'date-fns';\nimport { Observable, combineLatest, merge, of } from 'rxjs';\nimport { auditTime, debounceTime, filter, map, shareReplay, startWith, take } from 'rxjs/operators';\nimport {\n PipelineStatusCheckboxService,\n PipelineStatuses,\n} from '../../pipelines/pipeline-status-checkbox/pipeline-status-checkbox.service';\nimport { PipelineUIFilters } from '../../pipelines/pipeline/pipeline-service.interface';\nimport { PotentialRevenueService } from '../../pipelines/pipeline/potential-revenue/potential-revenue.service';\nimport {\n ActualCloseFilterService,\n AssignedDateFilterService,\n CreatedDateFilterService,\n DateFilterServiceInterface,\n ExpectedCloseFilterService,\n} from '../date-filters/date-filters.service';\nimport { SalesTeamOption } from '../filter-options/sales-team-option.model';\nimport { SalespersonOption } from '../filter-options/salesperson-option.model';\nimport { PipelineFilterPackageSelectionService } from '../package-selector/pipeline-filter-package-selection.service';\nimport { PipelineFilterPackageStoreService } from '../package-selector/pipeline-filter-package-store.service';\nimport { PipelineMultiSelectService } from '../pipeline-multi-select/pipeline-multi-select.service';\nimport { ProductSelectorService } from '../product-selector/product-selector.service';\nimport { SalespersonMultiSelectStoreService } from '../salesperson-multi-select/salesperson-multi-select.store.service';\nimport { SalesTeamMultiSelectStoreService } from '../salesteam-multi-select/sales-team-multi-select-store.service';\nimport { MultiSelectTag } from '../tag-selector/tag';\nimport { TagMultiSelectionStoreService } from '../tag-selector/tag-multi-selection.service';\nimport { MARKET_SELECTOR_SERVICE_TOKEN, MarketSelectorServiceInterface } from '../market-selector/tokens';\nimport { AccountFilterService } from '../account-filter/account-filter.service';\nimport { OpportunityTypeFilterService } from '../opportunity-type-filter/opportunity-type-filter.service';\nimport { OpportunityTypeFilterStoreService } from '../opportunity-type-filter/opportunity-type-filter-store.service';\n\nimport { OpportunityType } from '../../sales-opportunities/interface';\n\nexport enum queryConstants {\n SALES_PEOPLE = 'salesPeople',\n SALES_TEAMS = 'salesTeams',\n PACKAGES = 'packages',\n OPP_TAGS = 'oppTags',\n ACCT_TAGS = 'acctTags',\n PIPELINE = 'pipeline',\n PRODUCTS = 'products',\n REVENUE_DATE = 'revDate',\n STATUS = 'status',\n ACTUAL_CLOSE = 'actualClose',\n EXPECTED_CLOSE = 'expectedClose',\n CREATED_DATE = 'createdDate',\n ASSIGNED_DATE = 'assignedDate',\n PIPELINE_STAGE = 'pipelineStage',\n MARKET_ID = 'marketId',\n ACCOUNT_GROUP_ID = 'accountGroupId',\n TYPE = 'type',\n}\n\nconst QUERYPARAM_FILTERS = 'filters';\n\n// There is a race condition that happens in selectedUIFilters$ because we are doing a combineLatest on a large number\n// of observables. This delay is for the auditTime to give the observable time to collect all of the data from every\n// stream.\nconst UI_FILTER_SELECTION_DELAY = 50;\n\ninterface LiveListQueryParam {\n paramKey: string;\n listAction$: Observable;\n idFieldName: string;\n}\n\ninterface LiveQueryParam {\n queryKey: string;\n item$: Observable;\n}\n\ntype UIFilterInputTypes = [\n SalespersonOption[],\n SalesTeamOption[],\n string[],\n Package[],\n Pipeline[],\n StageInterface,\n MultiSelectTag[],\n MultiSelectTag[],\n Product[],\n Date,\n PipelineStatuses,\n DateRange,\n DateRange,\n DateRange,\n DateRange,\n string,\n string,\n OpportunityType[],\n];\n\nexport interface PipelineTableFilters {\n salespeopleIds: string[];\n packages: Package[];\n products: Product[];\n pipelines: Pipeline[];\n pipelineStage: StageInterface;\n oppTags: string[];\n acctTags: string[];\n monthlyRevenueDate: Date;\n statuses: PipelineStatuses;\n expectedClose: DateRange;\n actualClose: DateRange;\n createdDate: DateRange;\n assignedDate: DateRange;\n marketId: string;\n accountGroupId: string;\n types: OpportunityType[];\n}\n\n@Injectable()\nexport class PipelineFiltersService {\n selectedFiltersListRequestData$: Observable;\n selectedUIFilters$: Observable;\n\n private liveParams: Observable[] = [];\n private currentParams: Params = {};\n\n constructor(\n private readonly salespersonMultiSelectStoreService: SalespersonMultiSelectStoreService,\n private readonly salesTeamMultiSelectStoreService: SalesTeamMultiSelectStoreService,\n private readonly packageStoreService: PipelineFilterPackageStoreService,\n private readonly packageSelectorService: PipelineFilterPackageSelectionService,\n private readonly pipelineMultiSelectService: PipelineMultiSelectService,\n private readonly tagMultiSelectionStoreService: TagMultiSelectionStoreService,\n private readonly productSelectorService: ProductSelectorService,\n private readonly pipelineStatusesStore: PipelineStatusCheckboxService,\n private readonly potentialRevenueService: PotentialRevenueService,\n private readonly expectedCloseService: ExpectedCloseFilterService,\n private readonly actualCloseService: ActualCloseFilterService,\n private readonly createdDateService: CreatedDateFilterService,\n private readonly assignedDateService: AssignedDateFilterService,\n private readonly activatedRoute: ActivatedRoute,\n private readonly router: Router,\n private readonly productAnalytics: ProductAnalyticsService,\n private readonly accountFilterService: AccountFilterService,\n private readonly opportunityTypeFilterService: OpportunityTypeFilterService,\n private readonly opportunityTypeFilterStoreService: OpportunityTypeFilterStoreService,\n @Optional()\n @Inject(MARKET_SELECTOR_SERVICE_TOKEN)\n private readonly marketSelectorService?: MarketSelectorServiceInterface,\n ) {\n const routeParams: Params =\n JSON.parse(this.activatedRoute?.snapshot?.queryParams?.[QUERYPARAM_FILTERS] || null) || {};\n\n this.setInitialFiltersFromUrl(routeParams);\n this.setupLiveListQueryParameters();\n this.setupLiveQueryParameters();\n this.initializeLiveQueryParameters();\n\n // This is done to resolve a race condition\n // TODO (SSC-3390): inject the salesperson service without the salesperson preloaded, then pass salesperson through route params\n const salespeopleIds$ = this.getSelectedSalespeopleIds$();\n this.getSalespeopleFromUrl$(salespeopleIds$, routeParams[queryConstants.SALES_PEOPLE] || []).subscribe(\n (ssp) =>\n ssp.length > 0 &&\n this.salespersonMultiSelectStoreService.setSelectedSalespeople(ssp.map((sp) => sp.toOptionValue())),\n );\n\n this.selectedUIFilters$ = combineLatest([\n salespersonMultiSelectStoreService.selectedSalespeople$.pipe(startWith([])),\n salesTeamMultiSelectStoreService.selectedSalesTeams$.pipe(startWith([])),\n salesTeamMultiSelectStoreService.selectedTeamsSalespeopleIds$.pipe(startWith([])),\n packageSelectorService.selectedPackages$.pipe(startWith([])),\n pipelineMultiSelectService.selectedPipelines$.pipe(startWith([])),\n pipelineMultiSelectService.selectedPipelineStage$.pipe(startWith(null)),\n tagMultiSelectionStoreService.selectedOppTags$.pipe(startWith([])),\n tagMultiSelectionStoreService.selectedAccountTags$.pipe(startWith([])),\n productSelectorService.selectedProducts$.pipe(startWith([])),\n potentialRevenueService.selectedDate$.pipe(startWith(new Date())),\n pipelineStatusesStore.statuses$,\n createdDateService.dateRange$.pipe(startWith(null)),\n actualCloseService.dateRange$.pipe(startWith(null)),\n expectedCloseService.dateRange$.pipe(startWith(null)),\n assignedDateService.dateRange$.pipe(startWith(null)),\n (marketSelectorService?.selectedMarketId$ || of()).pipe(startWith(null)),\n accountFilterService.selectedAccountGroupId$.pipe(startWith(null)),\n opportunityTypeFilterService.selectedTypes$.pipe(startWith([])),\n ]).pipe(\n auditTime(UI_FILTER_SELECTION_DELAY),\n map(\n ([\n salespeople,\n salesTeams,\n salesTeamSalespeople,\n packages,\n pipelines,\n pipelineStage,\n oppTags,\n acctTags,\n products,\n potRevenueDate,\n statuses,\n createdDateRange,\n actualDateRange,\n expectedDateRange,\n assignedDateRange,\n marketId,\n accountGroupId,\n types,\n ]: UIFilterInputTypes) => {\n const f: PipelineUIFilters = {\n salespeople: salespeople.map((s) => ({ id: s.id, name: s.fullName })),\n salesTeamsIds: salesTeams.map((s) => ({ groupId: s.id, teamName: s.teamName })),\n salesTeamSalespersonIds: salesTeamSalespeople,\n packages: packages,\n pipelines: pipelines,\n pipelineStage: pipelineStage,\n oppTags: oppTags,\n acctTags: acctTags,\n products: products,\n monthlyRevenueDate: potRevenueDate,\n statuses: statuses,\n expectedClose: expectedDateRange,\n actualClose: actualDateRange,\n createdDate: createdDateRange,\n assignedDate: assignedDateRange,\n marketId: marketId,\n accountGroupId: accountGroupId,\n types: types,\n };\n return f;\n },\n ),\n shareReplay(1),\n );\n\n this.selectedFiltersListRequestData$ = this.getFilters$(\n salespeopleIds$,\n this.packageSelectorService.selectedPackages$,\n this.pipelineMultiSelectService.selectedPipelines$,\n this.pipelineMultiSelectService.selectedPipelineStage$,\n this.tagMultiSelectionStoreService.selectedOppTags$,\n this.tagMultiSelectionStoreService.selectedAccountTags$,\n this.productSelectorService.selectedProducts$,\n this.potentialRevenueService.selectedDate$,\n this.pipelineStatusesStore.statuses$,\n this.expectedCloseService.dateRange$,\n this.actualCloseService.dateRange$,\n this.createdDateService.dateRange$,\n this.assignedDateService.dateRange$,\n this.marketSelectorService?.selectedMarketId$ || of(null),\n this.accountFilterService.selectedAccountGroupId$,\n this.opportunityTypeFilterService?.selectedTypes$ || of([]),\n );\n\n this.selectedFiltersListRequestData$.pipe(debounceTime(10000)).subscribe((filters) => {\n const selectedFilters = [];\n\n for (const [filter, value] of Object.entries(filters)) {\n if (value) {\n selectedFilters.push(filter);\n }\n }\n\n this.productAnalytics.trackEvent('current-pipeline-filters', 'filters', 'set', -1, {\n selected: JSON.stringify(selectedFilters.sort()),\n });\n });\n }\n\n private setupLiveListQueryParameters(): void {\n [\n {\n paramKey: queryConstants.SALES_PEOPLE,\n listAction$: this.salespersonMultiSelectStoreService.selectedSalespeople$,\n idFieldName: 'id',\n },\n {\n paramKey: queryConstants.SALES_TEAMS,\n listAction$: this.salesTeamMultiSelectStoreService.selectedSalesTeams$,\n idFieldName: 'id',\n },\n {\n paramKey: queryConstants.PACKAGES,\n listAction$: this.packageSelectorService.selectedPackages$,\n idFieldName: 'packageId',\n },\n {\n paramKey: queryConstants.PIPELINE,\n listAction$: this.pipelineMultiSelectService.selectedPipelines$,\n idFieldName: 'id',\n },\n {\n paramKey: queryConstants.ACCT_TAGS,\n listAction$: this.tagMultiSelectionStoreService.selectedAccountTags$,\n idFieldName: 'name',\n },\n {\n paramKey: queryConstants.OPP_TAGS,\n listAction$: this.tagMultiSelectionStoreService.selectedOppTags$,\n idFieldName: 'name',\n },\n {\n paramKey: queryConstants.PRODUCTS,\n listAction$: this.productSelectorService.selectedProducts$,\n idFieldName: 'productId',\n },\n {\n paramKey: queryConstants.TYPE,\n listAction$: this.opportunityTypeFilterService.selectedTypes$,\n idFieldName: 'id',\n },\n ].forEach((llps: LiveListQueryParam) => {\n this.liveParams.push(\n llps.listAction$.pipe(\n map((items) => items.map((l) => l[llps.idFieldName])),\n map((ids) => {\n if (llps.paramKey === queryConstants.TYPE) {\n ids = ids.map((id) => (id === '' ? 'not-specified' : id));\n }\n this.currentParams[llps.paramKey] = ids.length > 0 ? ids : undefined;\n }),\n ),\n );\n });\n }\n\n // applies a set of filters; idea is top streams are manipulated and should trickle down to update the UI, and service state\n applySavedFiltersFromStorage(filters: PipelineUIFilters): void {\n const salesPeopleOptionValues = filters.salespeople.map((s) => {\n return new SalespersonOption({ id: s.id, name: s.name }).toOptionValue();\n });\n this.salespersonMultiSelectStoreService.setSelectedSalespeople(salesPeopleOptionValues);\n\n const salesTeamOptionValues = filters.salesTeamsIds.map((s) => {\n return new SalesTeamOption({ groupId: s.groupId, teamName: s.teamName }).toOptionValue();\n });\n this.salesTeamMultiSelectStoreService.setSelectedSalesTeams(salesTeamOptionValues);\n\n this.packageSelectorService.setPackageSelection(filters.packages || []);\n this.productSelectorService.setProductSelection(filters.products || []);\n\n this.pipelineMultiSelectService.setPipelineSelection(filters.pipelines || []);\n this.pipelineMultiSelectService.setPipelineStageSelection(filters.pipelineStage || null);\n this.pipelineStatusesStore.storeStatuses(filters.statuses || null);\n\n this.tagMultiSelectionStoreService.setOppTagsSelection(filters.oppTags);\n this.tagMultiSelectionStoreService.setAccTagsSelection(filters.acctTags);\n\n if (filters.monthlyRevenueDate) {\n const revDate = new Date(filters.monthlyRevenueDate);\n this.potentialRevenueService.setDate(revDate);\n }\n\n if (filters.expectedClose) {\n this.setDateRangeForService(this.expectedCloseService, filters.expectedClose);\n } else {\n this.expectedCloseService.clearSelection();\n }\n\n if (filters.actualClose) {\n this.setDateRangeForService(this.actualCloseService, filters.actualClose);\n } else {\n this.actualCloseService.clearSelection();\n }\n\n if (filters.createdDate) {\n this.setDateRangeForService(this.createdDateService, filters.createdDate);\n } else {\n this.createdDateService.clearSelection();\n }\n\n if (filters.assignedDate) {\n this.setDateRangeForService(this.assignedDateService, filters.assignedDate);\n } else {\n this.assignedDateService.clearSelection();\n }\n if (this.marketSelectorService && filters.marketId) {\n this.marketSelectorService.setSelectedMarketId(filters.marketId);\n }\n if (filters.accountGroupId) {\n this.accountFilterService.setAccountGroupId(filters.accountGroupId);\n } else {\n this.accountFilterService.clearAccountGroupFilter();\n }\n\n this.opportunityTypeFilterService.setTypeSelection(filters.types || []);\n }\n\n setDateRangeForService(service: DateFilterServiceInterface, dateRangeStrings: DateRange): void {\n const start = new Date(dateRangeStrings.start);\n const end = new Date(dateRangeStrings.end);\n\n service.setDateRange(start, end);\n }\n\n getSelectedPipelineStageId(): Observable {\n return this.pipelineMultiSelectService.selectedPipelineStage$.pipe(map((stage) => stage?.stageId));\n }\n\n private setupLiveQueryParameters(): void {\n [\n { queryKey: queryConstants.REVENUE_DATE, item$: this.potentialRevenueService.selectedDate$ },\n { queryKey: queryConstants.STATUS, item$: this.pipelineStatusesStore.statuses$ },\n { queryKey: queryConstants.EXPECTED_CLOSE, item$: this.expectedCloseService.dateRange$ },\n { queryKey: queryConstants.ACTUAL_CLOSE, item$: this.actualCloseService.dateRange$ },\n { queryKey: queryConstants.CREATED_DATE, item$: this.createdDateService.dateRange$ },\n { queryKey: queryConstants.PIPELINE_STAGE, item$: this.getSelectedPipelineStageId() },\n { queryKey: queryConstants.MARKET_ID, item$: this.marketSelectorService?.selectedMarketId$ || of(null) },\n {\n queryKey: queryConstants.ACCOUNT_GROUP_ID,\n item$: this.accountFilterService.selectedAccountGroupId$ || of(null),\n },\n ].forEach((llps: LiveQueryParam) => {\n this.liveParams.push(\n llps.item$.pipe(\n map((item) => {\n this.currentParams[llps.queryKey] = item || undefined;\n }),\n ),\n );\n });\n }\n\n private initializeLiveQueryParameters(): void {\n merge(...this.liveParams).subscribe(() => {\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams: { [QUERYPARAM_FILTERS]: JSON.stringify(this.currentParams, (_, v) => v || undefined) },\n queryParamsHandling: 'merge',\n });\n });\n }\n\n private setInitialFiltersFromUrl(routeParams: Params): void {\n const filterSets = [];\n\n if (routeParams[queryConstants.SALES_TEAMS]) {\n filterSets.push(\n this.salesTeamMultiSelectStoreService.selectableSalesTeams$.pipe(\n map((sp) =>\n sp.filter((p) => routeParams[queryConstants.SALES_TEAMS]?.includes(p.id)).map((st) => st.toOptionValue()),\n ),\n map((p) => this.salesTeamMultiSelectStoreService.setSelectedSalesTeams(p)),\n take(1),\n ),\n );\n }\n\n if (routeParams[queryConstants.PACKAGES]) {\n filterSets.push(\n this.packageStoreService.packages$.pipe(\n map((sp) => sp.filter((p) => routeParams[queryConstants.PACKAGES]?.includes(p.packageId))),\n map((p) => this.packageSelectorService.setPackageSelection(p)),\n take(1),\n ),\n );\n }\n\n if (routeParams[queryConstants.PIPELINE]) {\n filterSets.push(\n this.pipelineMultiSelectService.selectablePipelines$.pipe(\n map((sp) => sp.filter((p) => routeParams[queryConstants.PIPELINE]?.includes(p.id))),\n map((p) => this.pipelineMultiSelectService.setPipelineSelection(p)),\n take(1),\n ),\n );\n }\n if (routeParams[queryConstants.PIPELINE_STAGE]) {\n filterSets.push(\n this.pipelineMultiSelectService.selectablePipelines$.pipe(\n map((sp) => sp.filter((p) => routeParams[queryConstants.PIPELINE]?.includes(p.id))),\n filter((selectedPipelines) => selectedPipelines.length === 1),\n map(\n (singlePipeline) =>\n singlePipeline[0].stages.filter(\n (stage) => routeParams[queryConstants.PIPELINE_STAGE] === stage.stageId,\n )[0],\n ),\n map((p) => this.pipelineMultiSelectService.setPipelineStageSelection(p)),\n take(1),\n ),\n );\n }\n\n if (routeParams[queryConstants.OPP_TAGS]) {\n filterSets.push(\n this.tagMultiSelectionStoreService.selectableOppTags$.pipe(\n map((sp) => sp.filter((p) => routeParams[queryConstants.OPP_TAGS]?.includes(p.name))),\n map((p) => this.tagMultiSelectionStoreService.setOppTagsSelection(p)),\n take(1),\n ),\n );\n }\n\n if (routeParams[queryConstants.ACCT_TAGS]) {\n filterSets.push(\n this.tagMultiSelectionStoreService.selectableAccTags$.pipe(\n map((sp) => sp.filter((p) => routeParams[queryConstants.ACCT_TAGS]?.includes(p.name))),\n map((p) => this.tagMultiSelectionStoreService.setAccTagsSelection(p)),\n take(1),\n ),\n );\n }\n\n if (routeParams[queryConstants.PRODUCTS])\n filterSets.push(\n this.productSelectorService.products$.pipe(\n map((sp) => sp.filter((p) => routeParams[queryConstants.PRODUCTS]?.includes(p.productId))),\n map((p) => this.productSelectorService.setProductSelection(p)),\n take(1),\n ),\n );\n\n if (routeParams[queryConstants.TYPE]) {\n filterSets.push(\n this.opportunityTypeFilterStoreService.availableTypes$.pipe(\n map((types) => types.filter((t) => routeParams[queryConstants.TYPE]?.includes(t.id))),\n map((types) => this.opportunityTypeFilterService.setTypeSelection(types)),\n take(1),\n ),\n );\n }\n\n if (routeParams[queryConstants.ACCOUNT_GROUP_ID]) {\n this.accountFilterService.setAccountGroupId(routeParams[queryConstants.ACCOUNT_GROUP_ID]);\n }\n\n merge(...filterSets).subscribe();\n this.setDateFiltersFromQueryParams(routeParams);\n\n const revenueDateFromUrl = routeParams[queryConstants.REVENUE_DATE] || undefined;\n if (revenueDateFromUrl) {\n this.potentialRevenueService.setDate(parseISO(revenueDateFromUrl));\n }\n\n const initialStatus: PipelineStatuses = { open: true, won: null, lost: null };\n if (routeParams[queryConstants.STATUS]) {\n initialStatus.open = null;\n Object.assign(initialStatus, routeParams[queryConstants.STATUS]);\n }\n\n if (this.marketSelectorService && routeParams[queryConstants.MARKET_ID]) {\n this.marketSelectorService.setSelectedMarketId(routeParams[queryConstants.MARKET_ID]);\n }\n\n this.pipelineStatusesStore.storeStatuses(initialStatus);\n }\n\n applyFiltersFromQueryParams(): void {\n const routeParams = this.activatedRoute?.snapshot?.queryParams;\n if (!routeParams['filters']) {\n return;\n }\n const filters = JSON.parse(routeParams['filters']);\n this.setSalesPeopleFilterFromQueryParams(filters);\n this.setSalesTeamsFilterFromQueryParams(filters);\n this.setOpportunityTypeFilterFromQueryParams(filters);\n this.setProductsFilterFromQueryParams(filters);\n this.setPackagesFilterFromQueryParams(filters);\n this.setTagsFromQueryParams(filters);\n this.setDateFiltersFromQueryParams(filters);\n this.setStatusFromQueryParams(filters);\n this.setAccountFromQueryParams(filters);\n }\n\n private setSalesPeopleFilterFromQueryParams(filters: object): void {\n const salesPeople = filters[queryConstants.SALES_PEOPLE] || [];\n this.salespersonMultiSelectStoreService\n .getSalesPeopeOptionsFromIds$(salesPeople)\n .pipe(take(1))\n .subscribe((salesPeopleOptions) =>\n this.salespersonMultiSelectStoreService.setSelectedSalespeople(salesPeopleOptions),\n );\n }\n\n private setSalesTeamsFilterFromQueryParams(filters: object): void {\n // Salesteams\n const salesTeams = filters[queryConstants.SALES_TEAMS] || [];\n this.salesTeamMultiSelectStoreService\n .getSalesTeamOptionsFromIds$(salesTeams)\n .pipe(take(1))\n .subscribe((salesTeamOptions) => this.salesTeamMultiSelectStoreService.setSelectedSalesTeams(salesTeamOptions));\n }\n\n private setOpportunityTypeFilterFromQueryParams(filters: object): void {\n const types = filters[queryConstants.TYPE] || [];\n this.opportunityTypeFilterStoreService.availableTypes$\n .pipe(\n map((availableTypes) => {\n const ids = types.map((id) => (id === 'not-specified' ? '' : id));\n return availableTypes.filter((t) => ids?.includes(t.id));\n }),\n take(1),\n )\n .subscribe((types) => this.opportunityTypeFilterService.setTypeSelection(types));\n }\n\n private setProductsFilterFromQueryParams(filters: object): void {\n // Products\n const products = filters[queryConstants.PRODUCTS] || [];\n this.productSelectorService.products$\n .pipe(\n map((availableProducts) => availableProducts.filter((p) => products?.includes(p.productId))),\n take(1),\n )\n .subscribe((selectedProducts) => this.productSelectorService.setProductSelection(selectedProducts));\n }\n\n private setPackagesFilterFromQueryParams(filters: object): void {\n // Packages\n const packages = filters[queryConstants.PACKAGES] || [];\n this.packageStoreService.packages$\n .pipe(\n map((availablePackages) => availablePackages.filter((p) => packages?.includes(p.packageId))),\n take(1),\n )\n .subscribe((selectedPackages) => this.packageSelectorService.setPackageSelection(selectedPackages));\n }\n\n private setTagsFromQueryParams(filters: object): void {\n const oppTags = filters[queryConstants.OPP_TAGS] || [];\n const accTags = filters[queryConstants.ACCT_TAGS] || [];\n combineLatest([\n this.tagMultiSelectionStoreService.selectableOppTags$,\n this.tagMultiSelectionStoreService.selectableAccTags$,\n ])\n .pipe(\n map(([availableOppTags, availableAccTags]) =>\n [...availableOppTags, ...availableAccTags].filter((t) => [...oppTags, ...accTags]?.includes(t.name)),\n ),\n take(1),\n )\n .subscribe((selectedTags) => this.tagMultiSelectionStoreService.setTagsSelection(selectedTags));\n }\n\n private setDateFiltersFromQueryParams(filters: object): void {\n this.setFilterServiceForDateQueryParam(filters[queryConstants.CREATED_DATE] || null, this.createdDateService);\n this.setFilterServiceForDateQueryParam(filters[queryConstants.EXPECTED_CLOSE] || null, this.expectedCloseService);\n this.setFilterServiceForDateQueryParam(filters[queryConstants.ACTUAL_CLOSE] || null, this.actualCloseService);\n this.setFilterServiceForDateQueryParam(filters[queryConstants.ASSIGNED_DATE] || null, this.assignedDateService);\n }\n\n private setStatusFromQueryParams(filters: object): void {\n this.pipelineStatusesStore.storeStatuses({\n open: filters[queryConstants.STATUS]?.open || false,\n won: filters[queryConstants.STATUS]?.won || false,\n lost: filters[queryConstants.STATUS]?.lost || false,\n });\n }\n\n private setAccountFromQueryParams(filters: object): void {\n if (filters[queryConstants.ACCOUNT_GROUP_ID]) {\n this.accountFilterService.setAccountGroupId(filters[queryConstants.ACCOUNT_GROUP_ID]);\n }\n }\n\n private setFilterServiceForDateQueryParam(queryVal: any, dateFilterService: DateFilterServiceInterface): void {\n const dateFromUrl = queryVal || undefined;\n if (dateFromUrl) {\n dateFilterService.setDateRange(parseISO(dateFromUrl?.start), parseISO(dateFromUrl?.end));\n } else {\n dateFilterService.clearSelection();\n }\n }\n\n // TODO: rather than doing skip while, can we just change the query params on the default route and skip loading sp by default?\n private getSalespeopleFromUrl$(\n block: Observable,\n urlSalesPeople: string[],\n ): Observable {\n return this.salespersonMultiSelectStoreService.selectableSalespeople$.pipe(\n map((ssp) => ssp.filter((sp) => urlSalesPeople.includes(sp.id))),\n );\n }\n\n private getSelectedSalespeopleIds$(): Observable {\n return combineLatest([\n this.salespersonMultiSelectStoreService.selectedSalespeople$,\n this.salesTeamMultiSelectStoreService.selectedTeamsSalespeopleIds$.pipe(startWith([])),\n ]).pipe(\n map(([selectedSalespeople, salesTeamsPeople]) =>\n this.groupSalespeopleIds(\n salesTeamsPeople,\n selectedSalespeople.map((s) => s.id),\n ),\n ),\n );\n }\n\n private groupSalespeopleIds(salesTeamsPeople: string[], salespeopleIds: string[]): string[] {\n if (salespeopleIds?.length === 0 && salesTeamsPeople?.length === 0) {\n return [];\n }\n if (salespeopleIds?.length === 0 && salesTeamsPeople.length > 0) {\n return salesTeamsPeople;\n }\n if (salespeopleIds.length > 0 && salesTeamsPeople?.length === 0) {\n return salespeopleIds;\n }\n\n return salesTeamsPeople.concat(...salespeopleIds);\n }\n\n private getFilters$(\n teamsAndSalespersonSalespeopleIds$: Observable,\n selectedPackages$: Observable,\n selectedPipelines$: Observable,\n selectedPipelineStage$: Observable,\n selectedOppTags$: Observable,\n selectedAcctTags$: Observable,\n selectedProducts$: Observable,\n revenueSelectedDate$: Observable,\n statuses$: Observable,\n expectedCloseDate$: Observable,\n actualCloseDate$: Observable,\n createdDateRange$: Observable,\n assignedDateRange$: Observable,\n marketId$: Observable,\n accountGroupId$: Observable,\n selectedTypes$: Observable,\n ): Observable {\n return combineLatest([\n teamsAndSalespersonSalespeopleIds$.pipe(startWith([])), // We are guaranteed to at least have the logged in salesperson\n selectedPackages$.pipe(startWith([])),\n selectedPipelines$.pipe(startWith([])),\n selectedPipelineStage$.pipe(startWith(null)),\n selectedOppTags$.pipe(startWith([])),\n selectedAcctTags$.pipe(startWith([])),\n selectedProducts$.pipe(startWith([])),\n revenueSelectedDate$.pipe(startWith(null)),\n statuses$, // The status store is initialized with a default value after checking query params\n expectedCloseDate$.pipe(startWith(null)),\n actualCloseDate$.pipe(startWith(null)),\n createdDateRange$.pipe(startWith(null)),\n assignedDateRange$.pipe(startWith(null)),\n marketId$.pipe(startWith(null)),\n accountGroupId$.pipe(startWith(null)),\n selectedTypes$.pipe(startWith([])),\n ]).pipe(\n map(\n ([\n salespeople,\n packages,\n pipelines,\n pipelineStage,\n oppTags,\n accountTags,\n products,\n potentialRevenueDate,\n statuses,\n expectedCloseRange,\n actualCloseRange,\n createdDateRange,\n assignedDateRange,\n marketId,\n accountGroupId,\n types,\n ]: [\n string[],\n Package[],\n Pipeline[],\n StageInterface,\n MultiSelectTag[],\n MultiSelectTag[],\n ProductInterface[],\n Date,\n PipelineStatuses,\n DateRange,\n DateRange,\n DateRange,\n DateRange,\n string,\n string,\n OpportunityType[],\n ]) => {\n return {\n salespeopleIds: salespeople.length === 0 ? null : salespeople,\n pipelines: pipelines.length === 0 ? null : pipelines,\n pipelineStage: pipelineStage,\n packages: packages.length === 0 ? null : packages,\n oppTags: oppTags.length === 0 ? null : oppTags.map((t) => t.name),\n acctTags: accountTags.length === 0 ? null : accountTags.map((t) => t.name),\n products: products.length === 0 ? null : products,\n monthlyRevenueDate: potentialRevenueDate,\n statuses: statuses,\n expectedClose: expectedCloseRange,\n actualClose: actualCloseRange,\n createdDate: createdDateRange,\n assignedDate: assignedDateRange,\n marketId: marketId,\n accountGroupId: accountGroupId,\n types: types.length === 0 ? null : types,\n };\n },\n ),\n shareReplay(1),\n );\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { map, shareReplay, withLatestFrom } from 'rxjs/operators';\nimport { CURRENT_PIPELINE, Pipeline } from '@vendasta/sales-common';\n\nexport interface PipelineStageStats {\n revenue: number;\n weightedRevenue: number;\n revenueInPeriod: number;\n weightedRevenueInPeriod: number;\n totalOpportunities: number;\n}\n\n// get PipelineStageStat with all values set to zero\nexport const zeroStat = () => ({\n revenue: 0,\n weightedRevenue: 0,\n revenueInPeriod: 0,\n weightedRevenueInPeriod: 0,\n totalOpportunities: 0,\n});\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PipelineStats {\n private readonly stageToStatsMap = new Map();\n private readonly updateStats$$ = new ReplaySubject(1);\n public readonly totalRevenueForAllStages$: Observable;\n public readonly totalWeightedRevenueForAllStages$: Observable;\n readonly totalRevenueInPeriodForAllStages$: Observable;\n readonly totalWeightedRevenueInPeriodForAllStages$: Observable;\n public readonly totalVisibleOpportunitiesForAllStages$: Observable;\n\n constructor(@Inject(CURRENT_PIPELINE) readonly currentPipeline$: Observable) {\n const stageIds$ = currentPipeline$.pipe(map((pipeline) => pipeline?.stages?.map((s) => s.stageId)));\n\n const statsForStages$ = this.updateStats$$.pipe(\n withLatestFrom(stageIds$, currentPipeline$),\n map(([, ids, pipeline]) => {\n return ids.map((id) => {\n const stat = this.stageToStatsMap?.[id] ?? zeroStat();\n const stage = pipeline.stages.find((s) => s.stageId === id);\n\n // calculate weighted revenue\n if (stage?.probability > 0 && stage?.probability < 1) {\n stat.weightedRevenue = stat.revenue * stage?.probability;\n stat.weightedRevenueInPeriod = stat.revenueInPeriod * stage?.probability;\n }\n\n return stat;\n });\n }),\n map((stats) =>\n stats.reduce((acc: PipelineStageStats, value: PipelineStageStats) => {\n acc.revenue += value.revenue;\n acc.weightedRevenue += value.weightedRevenue;\n acc.revenueInPeriod += value.revenueInPeriod;\n acc.weightedRevenueInPeriod += value.weightedRevenueInPeriod;\n acc.totalOpportunities += value.totalOpportunities;\n\n return acc;\n }, zeroStat()),\n ),\n shareReplay(1),\n );\n\n this.totalRevenueForAllStages$ = statsForStages$.pipe(map((stats) => stats?.revenue));\n this.totalWeightedRevenueForAllStages$ = statsForStages$.pipe(map((stats) => stats?.weightedRevenue));\n this.totalRevenueInPeriodForAllStages$ = statsForStages$.pipe(map((stats) => stats?.revenueInPeriod));\n this.totalWeightedRevenueInPeriodForAllStages$ = statsForStages$.pipe(\n map((stats) => stats?.weightedRevenueInPeriod),\n );\n this.totalVisibleOpportunitiesForAllStages$ = statsForStages$.pipe(map((stats) => stats?.totalOpportunities));\n }\n\n public setStatsForStage(stageId: string, stats: PipelineStageStats): void {\n this.stageToStatsMap[stageId] = stats;\n this.updateStats$$.next();\n }\n\n getStatsForStage$(stageId: string): Observable {\n return this.updateStats$$.pipe(map(() => this.stageToStatsMap?.[stageId]));\n }\n\n public transferStatsBetweenStages(from: string, to: string, revenueMoved: number): void {\n if (!this.stageToStatsMap[from] || !this.stageToStatsMap[to]) {\n return;\n }\n\n this.stageToStatsMap[from].revenue -= revenueMoved;\n this.stageToStatsMap[from].totalOpportunities -= 1;\n\n this.stageToStatsMap[to].revenue += revenueMoved;\n this.stageToStatsMap[to].totalOpportunities += 1;\n\n this.updateStats$$.next();\n }\n}\n","/* eslint-disable prefer-const */\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { Params } from '@angular/router';\nimport {\n Opportunity as ApiOpportunity,\n DurationInterface,\n ForecastingInterface,\n LineItem,\n} from '@vendasta/sales-opportunities';\n\nexport interface OrdersUrl {\n route: string;\n queryParams?: Params;\n}\n\nexport const ACCOUNT_INFO_ROOT = 'info';\nexport const ACCOUNT_INFO = (businessId: string) => `/${ACCOUNT_INFO_ROOT}/${businessId}`;\n\nexport enum ClosedLostReason {\n Price,\n NoBudget,\n LostToCompetitor,\n NotReady,\n Other,\n}\n\nexport type OpportunityUrlFunction = (opportunity: Opportunity) => string;\n\nexport type AccountUrlFunction = (opportunity: Opportunity | ApiOpportunity) => string;\n\nexport type CompanyUrlFunction = (companyId: string) => string;\n\nexport type OrdersUrlFunction = (opportunity: ApiOpportunity) => OrdersUrl;\n\nexport const ClosedLostReasonStringMapping = {\n price: ClosedLostReason.Price,\n 'no-budget': ClosedLostReason.NoBudget,\n 'lost-to-competitor': ClosedLostReason.LostToCompetitor,\n 'not-ready': ClosedLostReason.NotReady,\n other: ClosedLostReason.Other,\n};\n\nexport interface DetailsConfig {\n showCRMDetails: boolean;\n getAccountDetailsUrl?: AccountUrlFunction;\n getCompanyDetailsUrl?: CompanyUrlFunction;\n}\n\nexport class Opportunity {\n public opportunityId: string;\n public accountGroupId: string;\n public salesPersonId: string;\n public name: string;\n public projectedFirstYearValue: number;\n public forecasting: ForecastingInterface;\n public preferredCurrency: string;\n\n public expectedCloseDate: Date;\n public actualClosedDate: Date;\n public probability: number;\n public notes: string;\n public isClosed: boolean;\n public closedLostReason: ClosedLostReason;\n public pipelineStage: string;\n\n public created: Date;\n public updated: Date;\n public lastConnectedDate: Date;\n public lastActivityDate: Date;\n\n public reopenedReason: string;\n public tags: string[];\n public opportunityDetailsUrl: string;\n public expectedContractDuration: DurationInterface;\n\n public attachments: Attachment[];\n\n public canReopen: boolean;\n public pipelineId: string;\n\n public lineItems: LineItem[];\n public subscriberUserIds: string[];\n\n constructor({\n opportunityId,\n accountGroupId,\n salesPersonId,\n name,\n projectedFirstYearValue,\n forecasting,\n expectedCloseDate,\n actualClosedDate,\n probability,\n isClosed,\n closedLostReason,\n pipelineStage,\n notes,\n created,\n updated,\n lastConnectedDate,\n lastActivityDate,\n reopenedReason,\n tags,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n opportunityDetailsUrl,\n preferredCurrency,\n attachments,\n expectedContractDuration,\n canReopen,\n pipelineId,\n lineItems,\n subscriberUserIds,\n }: Opportunity) {\n this.opportunityId = opportunityId;\n this.accountGroupId = accountGroupId;\n this.salesPersonId = salesPersonId;\n this.name = name;\n this.projectedFirstYearValue = projectedFirstYearValue;\n this.forecasting = forecasting;\n this.preferredCurrency = preferredCurrency;\n this.expectedCloseDate = expectedCloseDate;\n this.actualClosedDate = actualClosedDate;\n this.probability = probability;\n this.isClosed = isClosed;\n this.closedLostReason = closedLostReason;\n this.pipelineStage = pipelineStage;\n this.notes = notes;\n this.created = created;\n this.updated = updated;\n this.lastConnectedDate = lastConnectedDate;\n this.lastActivityDate = lastActivityDate;\n this.reopenedReason = reopenedReason;\n this.tags = tags;\n this.opportunityDetailsUrl = `/info/${accountGroupId}/opportunity/${opportunityId}/`;\n this.attachments = attachments;\n this.expectedContractDuration = expectedContractDuration;\n this.canReopen = canReopen;\n this.pipelineId = pipelineId;\n this.lineItems = lineItems;\n this.subscriberUserIds = subscriberUserIds;\n }\n\n public static createOpportunity(rawOpportunity: any, preferredCurrency: string): Opportunity {\n if (!rawOpportunity) {\n return null;\n }\n let opportunityId,\n accountGroupId,\n salesPersonId,\n name,\n projectedFirstYearValue,\n forecasting,\n expectedCloseDate,\n actualClosedDate,\n probability,\n isClosed,\n closedLostReason,\n pipelineStage,\n notes,\n created,\n updated,\n lastConnectedDate,\n reopenedReason,\n tags,\n opportunityDetailsUrl,\n attachments,\n expectedContractDuration,\n canReopen,\n pipelineId;\n\n opportunityId = rawOpportunity.opportunity_id;\n accountGroupId = rawOpportunity.account_group_id;\n salesPersonId = rawOpportunity.sales_person_id;\n name = rawOpportunity.name;\n projectedFirstYearValue = rawOpportunity.projected_first_year_value;\n forecasting = this.convertSTForecastingRevenueFromRaw(rawOpportunity.forecasting || {});\n expectedCloseDate = rawOpportunity.expected_close_date ? new Date(rawOpportunity.expected_close_date) : null;\n actualClosedDate = rawOpportunity.actual_closed_date ? new Date(rawOpportunity.actual_closed_date) : null;\n probability = rawOpportunity.probability > 0 ? rawOpportunity.probability : null;\n isClosed = rawOpportunity.is_closed;\n closedLostReason = rawOpportunity.closed_lost_reason;\n pipelineStage = rawOpportunity.pipeline_stage;\n\n notes = rawOpportunity.notes;\n created = new Date(rawOpportunity.created);\n updated = new Date(rawOpportunity.updated);\n lastConnectedDate = rawOpportunity.last_connected_date ? new Date(rawOpportunity.last_connected_date) : null;\n const lastActivityDate = rawOpportunity.last_activity_date ? new Date(rawOpportunity.last_activity_date) : null;\n\n reopenedReason = rawOpportunity.reopened_reason;\n tags = rawOpportunity.tags;\n opportunityDetailsUrl = rawOpportunity.opportunityDetailsUrl;\n attachments = []; // attachments only come from the microservice\n expectedContractDuration = rawOpportunity.expectedContractDuration;\n canReopen = rawOpportunity.canReopen;\n pipelineId = rawOpportunity.pipeline_id;\n const lineItems = rawOpportunity.line_items;\n const subscriberUserIds = rawOpportunity.subscriberUserIds;\n\n return new Opportunity({\n opportunityId,\n accountGroupId,\n salesPersonId,\n name,\n projectedFirstYearValue,\n forecasting,\n isClosed,\n closedLostReason,\n pipelineStage,\n expectedCloseDate,\n actualClosedDate,\n probability,\n notes,\n created,\n updated,\n lastConnectedDate,\n lastActivityDate,\n reopenedReason,\n tags,\n opportunityDetailsUrl,\n preferredCurrency,\n attachments,\n expectedContractDuration,\n canReopen,\n pipelineId,\n lineItems,\n subscriberUserIds,\n });\n }\n\n public static createOpportunityFromMicroservice(\n rawOpportunity: ApiOpportunity,\n preferredCurrency: string,\n ): Opportunity {\n if (!rawOpportunity) {\n return null;\n }\n let opportunityId,\n accountGroupId,\n salesPersonId,\n name,\n projectedFirstYearValue,\n forecasting,\n expectedCloseDate,\n actualClosedDate,\n probability,\n isClosed,\n closedLostReason,\n pipelineStage,\n notes,\n created,\n updated,\n lastConnectedDate,\n reopenedReason,\n tags,\n opportunityDetailsUrl,\n attachments: Attachment[],\n expectedContractDuration: DurationInterface,\n canReopen,\n pipelineId;\n\n opportunityId = rawOpportunity.opportunityId;\n accountGroupId = rawOpportunity.accountGroupId;\n salesPersonId = rawOpportunity.salesPersonId;\n name = rawOpportunity.name;\n projectedFirstYearValue = rawOpportunity.projectedFirstYearValue || 0;\n forecasting =\n rawOpportunity.forecasting ||\n { revenueInMonth: { recurringRevenue: 0, initialRevenue: 0 } };\n expectedCloseDate =\n rawOpportunity.expectedCloseDate.getFullYear() > 1970 ? new Date(rawOpportunity.expectedCloseDate) : null;\n actualClosedDate =\n rawOpportunity.actualClosedDate.getFullYear() > 1970 ? new Date(rawOpportunity.actualClosedDate) : null;\n probability = rawOpportunity.probability > 0 ? rawOpportunity.probability : null;\n isClosed = rawOpportunity.isClosed;\n closedLostReason = rawOpportunity.closedLostReason;\n pipelineStage = rawOpportunity.pipelineStage;\n\n notes = rawOpportunity.notes;\n created = new Date(rawOpportunity.created);\n updated = new Date(rawOpportunity.updated);\n lastConnectedDate =\n rawOpportunity.lastConnectedDate.getFullYear() > 1970 ? new Date(rawOpportunity.lastConnectedDate) : null;\n const lastActivityDate =\n rawOpportunity.lastActivityDate.getFullYear() > 1970 ? new Date(rawOpportunity.lastActivityDate) : null;\n\n reopenedReason = rawOpportunity.reopenedReason;\n tags = rawOpportunity.tags || [];\n opportunityDetailsUrl = ''; // The opportunityDetailsUrl isn't used\n attachments = rawOpportunity.attachments;\n expectedContractDuration = rawOpportunity.expectedContractDuration;\n canReopen = rawOpportunity.canReopen;\n pipelineId = rawOpportunity.pipelineId;\n const lineItems = rawOpportunity.lineItems;\n const subscriberUserIds = rawOpportunity.subscriberUserIds;\n\n return new Opportunity({\n opportunityId,\n accountGroupId,\n salesPersonId,\n name,\n projectedFirstYearValue,\n forecasting,\n isClosed,\n closedLostReason,\n pipelineStage,\n expectedCloseDate,\n actualClosedDate,\n probability,\n notes,\n created,\n updated,\n lastConnectedDate,\n lastActivityDate,\n reopenedReason,\n tags,\n opportunityDetailsUrl,\n preferredCurrency,\n attachments,\n expectedContractDuration,\n canReopen,\n pipelineId,\n lineItems,\n subscriberUserIds,\n });\n }\n\n public static createNewOpportunity(rawOpportunity: any): Opportunity {\n if (!rawOpportunity) {\n return null;\n }\n const coercedValues = {\n projectedFirstYearValue: rawOpportunity.projectedFirstYearValue ? rawOpportunity.projectedFirstYearValue : 0,\n expectedCloseDate: rawOpportunity.expectedCloseDate ? new Date(rawOpportunity.expectedCloseDate) : null,\n actualClosedDate: rawOpportunity.actualClosedDate ? new Date(rawOpportunity.actualClosedDate) : null,\n probability: rawOpportunity.probability > 0 ? rawOpportunity.probability : null,\n created: new Date(rawOpportunity.created),\n updated: new Date(rawOpportunity.updated),\n lastConnectedDate: rawOpportunity.lastConnectedDate ? new Date(rawOpportunity.lastConnectedDate) : null,\n lastActivityDate: rawOpportunity.lastActivityDate ? new Date(rawOpportunity.lastActivityDate) : null,\n };\n\n const opportunity = Object.assign(rawOpportunity, coercedValues);\n\n return new Opportunity(opportunity);\n }\n\n static convertSTForecastingRevenueFromRaw(rawForecastingRevenue: any): ForecastingInterface {\n const forecast = { revenueInMonth: {} };\n forecast.revenueInMonth.initialRevenue = rawForecastingRevenue?.revenue_in_month?.initial_revenue || 0;\n forecast.revenueInMonth.recurringRevenue = rawForecastingRevenue?.revenue_in_month?.recurring_revenue || 0;\n return forecast;\n }\n}\n\nexport interface Attachment {\n attachmentId: string;\n name: string;\n url: string;\n created: Date;\n}\n\n@Pipe({\n name: 'getOpportunityUrl',\n})\nexport class GetOpportunityUrl implements PipeTransform {\n transform(accountGroupId: string, opportunityId: string): string {\n return `${ACCOUNT_INFO(accountGroupId)}/opportunity/${opportunityId}`;\n }\n}\n","import { ClosedLostReason, Opportunity } from './opportunity';\nimport { Observable } from 'rxjs';\nimport { GetTagsRequest, GetTagsResponse } from '../filters/tag-selector/interface';\nimport { DurationPeriod, Opportunity as SalesOpportunity } from '@vendasta/sales-opportunities';\n\nconst BASE_URL = '/v1/opportunity/';\nexport const CREATE_OPPORTUNITY_URL = BASE_URL + 'create';\nexport const GET_TAGS_URL = BASE_URL + 'get/tags';\nexport const UPDATE_TAGS_URL = BASE_URL + 'update/tags';\n\nexport interface UpdateOpportunityTagsRequest {\n opportunityId: string;\n accountGroupId: string;\n editSalesPersonId: string;\n tags: string[];\n}\n\nexport interface GeneralBusinessInfo {\n name: string;\n partnerId: string;\n marketId: string;\n streetAddress: string;\n city: string;\n state: string;\n countryCode: string;\n zip: string;\n phoneNumber: string;\n website: string;\n businessId: string;\n serviceCategories: string[];\n socialUrls: SocialURLs;\n vCategories: string[];\n}\n\nexport interface OpportunityPackage {\n packageId: string;\n quantity: number;\n}\n\nexport interface OpportunityValues {\n pipelineId: string;\n probability: number;\n}\n\nexport interface CreateOpportunityRequest {\n accountGroupId: string;\n partnerId: string;\n marketId: string;\n salesPersonId: string;\n name: string;\n packages: OpportunityPackage[];\n expectedCloseDate: Date;\n probability: number;\n notes: string;\n tags: string[];\n}\n\nexport interface CreateOpportunityResponse {\n opportunity: Opportunity;\n}\n\nexport interface UpdateOpportunityTagsResponse {\n opportunity: Opportunity;\n}\n\nexport interface SalesOpportunitiesApi {\n create(req: CreateOpportunityRequest): Observable;\n getTags(req: GetTagsRequest): Observable;\n updateTags(req: UpdateOpportunityTagsRequest): Observable;\n}\n\nexport interface ContractDurationTranslationKey {\n key: string;\n value: number;\n}\n\nexport const contractDurationKeysToEnum: ContractDurationTranslationKey[] = [\n { key: 'SALES_CONTRACT_DURATION.DURATIONS.DAY', value: DurationPeriod.DAY },\n { key: 'SALES_CONTRACT_DURATION.DURATIONS.WEEK', value: DurationPeriod.WEEK },\n { key: 'SALES_CONTRACT_DURATION.DURATIONS.MONTH', value: DurationPeriod.MONTH },\n { key: 'SALES_CONTRACT_DURATION.DURATIONS.YEAR', value: DurationPeriod.YEAR },\n];\n\nexport const contractDurationKeysToEnumSingular: ContractDurationTranslationKey[] = [\n { key: 'SALES_CONTRACT_DURATION.DURATIONS.DAY_SINGULAR', value: DurationPeriod.DAY },\n { key: 'SALES_CONTRACT_DURATION.DURATIONS.WEEK_SINGULAR', value: DurationPeriod.WEEK },\n { key: 'SALES_CONTRACT_DURATION.DURATIONS.MONTH_SINGULAR', value: DurationPeriod.MONTH },\n { key: 'SALES_CONTRACT_DURATION.DURATIONS.YEAR_SINGULAR', value: DurationPeriod.YEAR },\n];\n\nexport enum UpdateRequestType {\n PROBABILITY,\n PIPELINE_ID,\n}\n\nexport interface OpportunitiesCommands {\n updateProbability(opportunity: SalesOpportunity, newProbability: number): void;\n updatePipelineId(opportunity: SalesOpportunity, newPipelineId: string, newProbability: number): void;\n}\n\nexport interface UpdateRequest extends SalesOpportunity {\n requestType: UpdateRequestType;\n probabilityIfUpdateFails?: number;\n pipelineIdIfUpdateFails?: string;\n}\n\nexport enum CloseState {\n WON = 'won',\n LOST = 'lost',\n}\n\nexport interface OpportunityCloseEvent {\n closeState: CloseState;\n reason: string;\n notes: string;\n actualClosedDate: Date;\n}\n\nexport const ClosedLostReasonStringMapping = {\n price: ClosedLostReason.Price,\n 'no-budget': ClosedLostReason.NoBudget,\n 'lost-to-competitor': ClosedLostReason.LostToCompetitor,\n 'not-ready': ClosedLostReason.NotReady,\n other: ClosedLostReason.Other,\n};\n\nexport interface AccountTag {\n name: string;\n value: string;\n}\n\nexport interface SocialURLs {\n linkedinUrl: string;\n twitterUrl: string;\n facebookUrl: string;\n instagramUrl: string;\n}\n\nexport interface OpportunityType {\n id: string;\n displayName: string;\n}\n\nexport const MIN_CONTRACT_DURATION_REGEX = '^[1-9][0-9]*?$'; // regex for checking minimum valid contract duration (1 year or month)\n","import { Inject, Injectable } from '@angular/core';\nimport { ObservableWorkStateMap } from '@vendasta/rx-utils/work-state';\nimport { Pipeline } from '@vendasta/sales-common';\nimport {\n DurationInterface,\n Opportunity,\n SalesOpportunitiesApiService,\n SalesOpportunitiesSdk,\n SalesOpportunitiesService,\n SortDirection,\n ListOpportunitiesRequestSortField as SortField,\n ListOpportunitiesRequestSortOptionInterface as SortOption,\n} from '@vendasta/sales-opportunities';\nimport { BehaviorSubject, Observable, ReplaySubject, combineLatest, merge, of, throwError } from 'rxjs';\nimport {\n catchError,\n filter,\n first,\n map,\n scan,\n shareReplay,\n startWith,\n switchMap,\n take,\n tap,\n withLatestFrom,\n} from 'rxjs/operators';\nimport { PipelineStats } from '../pipelines/pipeline-stats/pipeline-stats.service';\nimport { OpportunitiesCommands, UpdateRequest, UpdateRequestType } from './interface';\nimport { PIPELINES_TOKEN, SALES_PERSON_ID_TOKEN } from './tokens';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\n\n/**\n * Provides a RXJS+CQRS model for all of the opportunities updated on the\n * client-side.\n */\n@Injectable({ providedIn: 'root' })\nexport class OpportunityService implements OpportunitiesCommands {\n logErrors = true;\n private readonly workStateMap = new ObservableWorkStateMap(this.logErrors);\n public readonly state: ObservableWorkStateMap = this.workStateMap;\n private readonly updateRequests$$ = new ReplaySubject(1);\n private readonly updateRollbacks$$ = new ReplaySubject(1);\n private readonly changes$: Observable;\n\n private readonly currentOpportunity$$ = new BehaviorSubject(null);\n public readonly currentOpportunity$ = this.currentOpportunity$$.pipe(filter(Boolean));\n\n constructor(\n @Inject(SalesOpportunitiesService) private readonly opportunityApi: SalesOpportunitiesSdk,\n @Inject(SALES_PERSON_ID_TOKEN) readonly salesPersonId$: Observable,\n @Inject(PIPELINES_TOKEN) readonly pipelines$: Observable,\n private readonly pipelineRevenue: PipelineStats,\n private readonly salesOpportunitiesApiService: SalesOpportunitiesApiService,\n private readonly snackbarService: SnackbarService,\n ) {\n this.updateRequests$$\n .pipe(\n withLatestFrom(this.salesPersonId$),\n tap(([req, spId]) => this.handleRequest(req, spId)),\n )\n .subscribe();\n this.changes$ = buildListFromEvents(merge(this.updateRequests$$, this.updateRollbacks$$), (u) => u.opportunityId);\n }\n\n isEditable$(): Observable {\n return this.currentOpportunity$.pipe(map((o) => (o ? !o.isClosed : false)));\n }\n\n hasSalespersonAccess$(): Observable {\n return this.salesPersonId$.pipe(map(Boolean));\n }\n\n public addAttachmentToOpportunity(\n opportunityId: string,\n accountGroupId: string,\n name: string,\n url: string,\n ): Observable {\n return this.opportunityApi.addAttachment(opportunityId, accountGroupId, name, url).pipe(\n take(1),\n switchMap(() => this.loadOpportunityAndSetSelected(opportunityId, accountGroupId)), //reload\n );\n }\n\n updateOpportunitySalesperson(\n opportunity: Opportunity,\n salespersonId: string,\n editSalespersonId: string,\n createSalesActivity?: boolean,\n ): Observable {\n return this.opportunityApi\n .updateOpportunitySalesperson(\n opportunity.accountGroupId,\n opportunity.opportunityId,\n editSalespersonId,\n salespersonId,\n createSalesActivity,\n )\n .pipe(\n catchError(() => {\n return of(null);\n }),\n withLatestFrom(this.currentOpportunity$),\n map(([newOpp, oldOpp]) => {\n if (!newOpp) {\n this.setSelectedOpportunity(oldOpp);\n } else {\n this.setSelectedOpportunity(newOpp);\n }\n return newOpp;\n }),\n );\n }\n\n updateProbability(opportunity: Opportunity, newProbability: number): void {\n const request = Object.assign({}, opportunity as UpdateRequest);\n request.requestType = UpdateRequestType.PROBABILITY;\n request.probabilityIfUpdateFails = opportunity.probability;\n request.probability = newProbability;\n\n this.updateRequests$$.next(request);\n }\n\n public updateExpectedContractDuration(\n duration: DurationInterface,\n opportunity: Opportunity,\n ): Observable {\n if (!opportunity || !duration) {\n return of(null);\n }\n return this.opportunityApi\n .updateOpportunityDuration(opportunity.opportunityId, opportunity.accountGroupId, undefined, duration)\n .pipe(\n catchError(() => {\n return of(null);\n }),\n withLatestFrom(this.currentOpportunity$),\n map(([newOpp, oldOpp]) => {\n if (!newOpp) {\n this.setSelectedOpportunity(oldOpp);\n } else {\n this.setSelectedOpportunity(newOpp);\n }\n return newOpp;\n }),\n );\n }\n\n public updateExpectedCloseDate(opportunity: Opportunity, newDate: Date): Observable {\n if (!opportunity || !newDate) {\n return of(null);\n }\n return this.opportunityApi\n .updateOpportunityExpectedCloseDate(\n opportunity.accountGroupId,\n opportunity.opportunityId,\n opportunity.salesPersonId,\n newDate,\n true,\n )\n .pipe(\n catchError(() => {\n return of(null);\n }),\n withLatestFrom(this.currentOpportunity$),\n map(([newOpp, oldOpp]) => {\n if (!newOpp) {\n this.setSelectedOpportunity(oldOpp);\n } else {\n this.setSelectedOpportunity(newOpp);\n }\n return newOpp;\n }),\n );\n }\n\n updatePipelineId(opportunity: Opportunity, newPipelineId: string, newProbability: number): void {\n const request = Object.assign({}, opportunity as UpdateRequest);\n request.requestType = UpdateRequestType.PIPELINE_ID;\n request.pipelineIdIfUpdateFails = opportunity.pipelineId;\n request.probabilityIfUpdateFails = opportunity.probability;\n request.pipelineId = newPipelineId;\n request.probability = newProbability;\n this.updateRequests$$.next(request);\n }\n\n public updateType(opportunity: Opportunity, newType: string): Observable {\n if (!opportunity) {\n return of(null);\n }\n return this.opportunityApi\n .updateOpportunityType(opportunity.opportunityId, opportunity.accountGroupId, newType, opportunity.salesPersonId)\n .pipe(\n catchError(() => {\n return of(null);\n }),\n withLatestFrom(this.currentOpportunity$),\n map(([newOpp, oldOpp]) => {\n if (!newOpp) {\n this.setSelectedOpportunity(oldOpp);\n } else {\n this.setSelectedOpportunity(newOpp);\n }\n return newOpp;\n }),\n );\n }\n\n updateTags(tags: string[]): Observable {\n return this.currentOpportunity$.pipe(\n take(1),\n switchMap((o) => this.opportunityApi.updateTags(o.opportunityId, o.accountGroupId, o.salesPersonId, tags)),\n catchError(() => of(null)),\n withLatestFrom(this.currentOpportunity$),\n map(([newOpp, oldOpp]) => {\n this.setSelectedOpportunity(newOpp || oldOpp);\n return newOpp;\n }),\n );\n }\n\n updateSubscribers(subscriberUserIds: string[]): Observable {\n return this.currentOpportunity$.pipe(\n take(1),\n switchMap((o) =>\n this.opportunityApi\n .updateSubscriberUserIdsForOpportunity(o.opportunityId, o.accountGroupId, o.salesPersonId, subscriberUserIds)\n .pipe(\n catchError((err) => {\n this.setSelectedOpportunity(o);\n throw err;\n }),\n switchMap(() => this.opportunityApi.get(o.opportunityId, o.accountGroupId)),\n ),\n ),\n withLatestFrom(this.currentOpportunity$),\n map(([newOpp, oldOpp]) => {\n this.setSelectedOpportunity(newOpp || oldOpp);\n return newOpp;\n }),\n );\n }\n\n setSelectedOpportunity(opportunity: Opportunity): void {\n if (opportunity) {\n this.currentOpportunity$$.next(opportunity);\n } else {\n console.error('cannot set selected opportunity to null');\n }\n }\n\n loadOpportunityAndSetSelected(opportunityId: string, accountId: string): Observable {\n const opp$ = this.opportunityApi.get(opportunityId, accountId);\n const result$ = merge(opp$, this.state.getWorkResults$(opportunityId)).pipe(first());\n result$.subscribe((value) => this.currentOpportunity$$.next(value));\n return result$;\n }\n\n applyForStage$(\n opportunities$: Observable,\n stageStart: number,\n stageEnd: number,\n option?: SortOption,\n ): Observable {\n return combineLatest([opportunities$, this.changes$]).pipe(\n map(([opps, changes]) => {\n const moved = addOrRemoveFromStage(changes, opps, stageStart, stageEnd, option);\n return preferUpdatedOverFetched(changes, moved);\n }),\n );\n }\n\n public updateNote(newNote: string): Observable {\n return this.currentOpportunity$.pipe(\n take(1),\n switchMap((o) =>\n this.opportunityApi.updateOpportunityNotes(o.opportunityId, o.accountGroupId, o.salesPersonId, newNote),\n ),\n catchError(() => of(null)),\n withLatestFrom(this.currentOpportunity$),\n map(([newOpp, oldOpp]) => {\n this.setSelectedOpportunity(newOpp || oldOpp);\n return newOpp;\n }),\n );\n }\n\n public updateName(newName: string): Observable {\n return this.currentOpportunity$.pipe(\n take(1),\n switchMap((o) =>\n this.salesOpportunitiesApiService.updateOpportunityName({\n opportunityId: o.opportunityId,\n accountGroupId: o.accountGroupId,\n editSalesPersonId: o.salesPersonId,\n name: newName,\n }),\n ),\n catchError(() => of(null)),\n map((updateNameResponse) => updateNameResponse?.opportunity),\n withLatestFrom(this.currentOpportunity$),\n map(([newOpp, oldOpp]) => {\n this.setSelectedOpportunity(newOpp || oldOpp);\n return newOpp;\n }),\n );\n }\n\n private doUpdateProbability(req: UpdateRequest, salespersonId: string): void {\n this.workStateMap.startWork(\n req.opportunityId,\n this.opportunityApi\n .updateOpportunityProbability(req.opportunityId, req.accountGroupId, salespersonId, req.probability)\n .pipe(\n catchError((err) => {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.SALES_OPPORTUNITIES.ERRORS.UPDATE_OPPORTUNITY');\n const rollback = Object.assign({}, req);\n rollback.probability = req.probabilityIfUpdateFails;\n this.updateRollbacks$$.next(rollback);\n return throwError(err); // Must rethrow to stop WorkStateMap loading.\n }),\n tap((opp) => {\n if (this.currentOpportunity$$.getValue() !== null) {\n this.setSelectedOpportunity(opp);\n }\n this.updateRevenuesForProbabilityUpdate(req);\n }),\n ),\n );\n }\n\n private doUpdatePipeline(req: UpdateRequest, salespersonId: string): void {\n this.workStateMap.startWork(\n req.opportunityId,\n this.opportunityApi\n .updateOpportunityPipeline(req.opportunityId, req.accountGroupId, salespersonId, req.pipelineId)\n .pipe(\n switchMap(() => {\n return this.opportunityApi.updateOpportunityProbability(\n req.opportunityId,\n req.accountGroupId,\n salespersonId,\n req.probability,\n );\n }),\n tap((opp) => this.currentOpportunity$$.next(opp)),\n catchError((err) => {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.SALES_OPPORTUNITIES.ERRORS.UPDATE_OPPORTUNITY');\n const rollback = Object.assign({}, req);\n rollback.pipelineId = req.pipelineIdIfUpdateFails;\n this.updateRollbacks$$.next(rollback);\n return throwError(err); // Must rethrow to stop WorkStateMap loading.\n }),\n map((opportunity) => {\n this.updateRevenuesForPipelineUpdate(req);\n return opportunity;\n }),\n ),\n );\n }\n\n private updateRevenuesForProbabilityUpdate(request: UpdateRequest): void {\n this.pipelines$.pipe(take(1)).subscribe((pipelines) => {\n const pipeline = pipelines.find((p) => p.id === request.pipelineId);\n const stageToRemoveFrom = pipeline.findStage(request.probabilityIfUpdateFails);\n const stageToAddToo = pipeline.findStage(request.probability);\n this.pipelineRevenue.transferStatsBetweenStages(\n stageToRemoveFrom.stageId,\n stageToAddToo.stageId,\n request.projectedFirstYearValue,\n );\n });\n }\n\n private updateRevenuesForPipelineUpdate(request: UpdateRequest): void {\n this.pipelines$.pipe(take(1)).subscribe((pipelines) => {\n const pipelineToRemoveFrom = pipelines.find((p) => p.id === request.pipelineIdIfUpdateFails);\n const pipelineToMoveTo = pipelines.find((p) => p.id === request.pipelineId);\n\n const stageToRemoveFrom = pipelineToRemoveFrom.findStage(request.probabilityIfUpdateFails);\n const stageToAddToo = pipelineToMoveTo.findStage(request.probability);\n\n this.pipelineRevenue.transferStatsBetweenStages(\n stageToRemoveFrom.stageId,\n stageToAddToo.stageId,\n request.projectedFirstYearValue,\n );\n });\n }\n\n private handleRequest(req: UpdateRequest, userId: string): void {\n switch (req.requestType) {\n case UpdateRequestType.PROBABILITY:\n return this.doUpdateProbability(req, userId);\n case UpdateRequestType.PIPELINE_ID:\n return this.doUpdatePipeline(req, userId);\n default:\n throw new Error(`Unexpected request type: ${req.requestType} [${JSON.stringify(req)}]`);\n }\n }\n}\n\nexport function rollbackProbabilityForFailures(\n opps: Opportunity[],\n oppId: string,\n previousProb: number,\n): Opportunity[] {\n return opps.map((opp) => {\n if (opp.opportunityId === oppId) {\n opp.probability = previousProb;\n }\n return opp;\n });\n}\n\nexport function preferUpdatedOverFetched(updated: Opportunity[], fetched: Opportunity[]): Opportunity[] {\n return fetched.map((fetchedOpp) => {\n const updatedOpp = updated.find((o) => o.opportunityId === fetchedOpp.opportunityId);\n if (!updatedOpp) {\n return fetchedOpp;\n }\n fetchedOpp.probability = updatedOpp.probability;\n return fetchedOpp;\n });\n}\n\nexport function addOrRemoveFromStage(\n changes: Opportunity[],\n opps: Opportunity[],\n stageStart: number,\n stageEnd: number,\n option?: SortOption,\n): Opportunity[] {\n const removedOpps = changes\n .filter((change) => {\n const opp = opps.find((op) => op.opportunityId === change.opportunityId);\n if (!!opp && change.pipelineId !== opp.pipelineId) {\n return true;\n }\n\n return change.probability > stageEnd || change.probability < stageStart;\n })\n .map((u) => u.opportunityId);\n\n const oppsWithRemoved = opps.filter((opp) => removedOpps.indexOf(opp.opportunityId) === -1);\n const addedOpps = changes.filter(\n (change) =>\n change.probability <= stageEnd &&\n change.probability >= stageStart &&\n oppsWithRemoved.findIndex((o) => o.opportunityId === change.opportunityId) === -1,\n );\n\n const opportunities = oppsWithRemoved.concat(addedOpps);\n return sortOpportunitiesByOption(opportunities, option);\n}\n\nfunction sortOpportunitiesByOption(opps: Opportunity[], option?: SortOption): Opportunity[] {\n if (!option) {\n return opps;\n }\n switch (option.field) {\n case SortField.PROJECTED_FIRST_YEAR_VALUE:\n return sortOpportunities(\n opps,\n (o) => (o.projectedFirstYearValue = o.projectedFirstYearValue || 0),\n option.direction,\n );\n case SortField.EXPECTED_CLOSE:\n return sortOpportunities(opps, (o) => o.expectedCloseDate, option.direction);\n case SortField.LAST_CONNECTED:\n return sortOpportunities(opps, (o) => o.lastConnected, option.direction);\n case SortField.LAST_ACTIVITY:\n return sortOpportunities(opps, (o) => o.lastActivityDate, option.direction);\n case SortField.NAME:\n return sortOpportunities(opps, (o) => o.name, option.direction);\n case SortField.CREATED:\n return sortOpportunities(opps, (o) => o.created, option.direction);\n case SortField.MEDDIC:\n return sortOpportunities(opps, (o) => o.scoring, option.direction);\n }\n return opps;\n}\n\nfunction sortOpportunities(\n opps: Opportunity[],\n sortField: (Opportunity) => any,\n direction: SortDirection,\n): Opportunity[] {\n const dir = direction === SortDirection.ASCENDING ? 1 : -1;\n return opps.sort((a, b) => compareBySortDirection(sortField(a), sortField(b), dir));\n}\n\nfunction compareBySortDirection(value1: any, value2: any, direction: number): number {\n if (value1 instanceof Date || value2 instanceof Date) {\n value1 = value1 || new Date(0);\n value2 = value2 || new Date(0);\n }\n\n if (value1 > value2) {\n return direction;\n } else if (value1 < value2) {\n return direction * -1;\n }\n\n return 0;\n}\n\nfunction buildListFromEvents(events: Observable, idExtractor: (e: EVENT) => string): Observable {\n return events.pipe(\n scan((handledSoFar: EVENT[], newUpdate: EVENT) => {\n const i = handledSoFar.findIndex((o) => idExtractor(o) === idExtractor(newUpdate));\n if (i < 0) {\n return handledSoFar.concat([newUpdate]);\n }\n return handledSoFar.map((val, index) => (index === i ? newUpdate : val));\n }, []),\n startWith([]),\n shareReplay(1),\n );\n}\n","export enum LockValue {\n LOCKED = 1,\n UNLOCKED = 0,\n}\n\nexport class LockMap {\n private readonly lockMap = new Map();\n public isLocked(lockId: string): LockValue {\n if (!this.lockMap.has(lockId)) {\n return LockValue.UNLOCKED;\n }\n return this.lockMap.get(lockId);\n }\n\n lock(lockId: string): void {\n this.lockMap.set(lockId, LockValue.LOCKED);\n }\n\n unlock(lockId: string): void {\n this.lockMap.set(lockId, LockValue.UNLOCKED);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AccountGroupApiService,\n GetMultiRequest,\n GetMultiResponseAccountGroupContainer,\n ProjectionFilter,\n GetMultiResponse,\n} from '@vendasta/account-group';\nimport { ObservableWorkState } from '@vendasta/rx-utils/work-state';\nimport { BehaviorSubject, Observable, ReplaySubject, of, throwError } from 'rxjs';\nimport { catchError, filter, map, switchMap, tap, withLatestFrom } from 'rxjs/operators';\nimport { CRMCompanyApiService, CrmObject, GetMultiCrmObjectRequest, GetMultiCrmObjectResponse } from '@vendasta/crm';\nimport { PARTNER_ID_TOKEN } from '../tokens';\nimport { CrmFieldService, PlatformExtensionFieldIds, StandardIds } from '@galaxy/crm/static';\nimport { DETAILS_CONFIG_TOKEN } from '../pipeline-card/tokens';\n\nclass PipelineBusinessIdentifier {\n loading$$ = new BehaviorSubject(true);\n accountGroupName$$ = new ReplaySubject(1);\n companyId$$ = new ReplaySubject(1);\n companyName$$ = new ReplaySubject(1);\n}\n\n@Injectable()\nexport class PipelineBusinessNameService {\n readonly businessIdentifiers = new Map();\n readonly companyLoadingWorkState = new ObservableWorkState();\n readonly accountLoadingWorkState = new ObservableWorkState();\n\n private readonly latestIds$$ = new BehaviorSubject(null);\n\n private readonly accountGroupSDK = inject(AccountGroupApiService);\n private readonly partnerId$ = inject(PARTNER_ID_TOKEN);\n private readonly companyAPIService = inject(CRMCompanyApiService);\n private readonly crmFieldService = inject(CrmFieldService);\n private readonly detailsConfig = inject(DETAILS_CONFIG_TOKEN);\n\n constructor() {\n this.companyLoadingWorkState.workResults$\n .pipe(\n takeUntilDestroyed(),\n map((results) => results.crmObjects ?? []),\n )\n .subscribe((results) => {\n this.setCompanyNames(results);\n });\n this.companyLoadingWorkState.isLoading$\n .pipe(\n takeUntilDestroyed(),\n filter((isLoading) => isLoading === false),\n )\n .subscribe(() => this.businessIdentifiers.forEach((bn) => bn.loading$$.next(false)));\n\n this.accountLoadingWorkState.workResults$\n .pipe(\n takeUntilDestroyed(),\n map((results) => results.accountGroups ?? []),\n )\n .subscribe((results) => {\n this.addInfoFromAGGetMulti(results);\n });\n this.accountLoadingWorkState.isLoading$\n .pipe(\n takeUntilDestroyed(),\n filter((isLoading) => isLoading === false),\n )\n .subscribe(() => this.businessIdentifiers.forEach((bn) => bn.loading$$.next(false)));\n }\n\n public enqueueAccountLoad(agIds: string[]): void {\n const agIdsToGet = [];\n agIds.forEach((agid) => {\n if (!this.businessIdentifiers.has(agid)) {\n agIdsToGet.push(agid);\n }\n });\n\n if (agIdsToGet.length <= 0) {\n return;\n }\n\n this.latestIds$$.next(agIdsToGet);\n\n this.createBusinessObjectsForNewIds(agIdsToGet);\n\n if (this.detailsConfig.showCRMDetails) {\n this.loadCompanies(agIdsToGet);\n } else {\n this.loadAccounts(agIdsToGet);\n }\n }\n\n private loadCompanies(agIds: string[]): void {\n const projectionFilter = new ProjectionFilter({ napData: true, accountGroupExternalIdentifiers: true });\n\n const req = {\n accountGroupIds: agIds,\n projectionFilter,\n };\n\n this.companyLoadingWorkState.startWork(\n this.accountGroupSDK.getMulti(req).pipe(\n catchError((err) => {\n if (err.status === 403) {\n const failedAccountGroupIds = err.error.details[0].failures[0].identifiers.account_group_id.values;\n this.setEmptyBusinessObjectsForIds(failedAccountGroupIds);\n return this.retryGetMulti(failedAccountGroupIds, agIds, projectionFilter);\n }\n return throwError(() => err);\n }),\n tap((res) => {\n this.addInfoFromAGGetMulti(res.accountGroups);\n }),\n withLatestFrom(this.partnerId$),\n switchMap(([res, partnerId]) => {\n const companyIds = res.accountGroups\n ?.filter((ag) => !!ag.accountGroup?.accountGroupExternalIdentifiers?.platformCrmCompanyId)\n .map((ag) => ag.accountGroup?.accountGroupExternalIdentifiers?.platformCrmCompanyId);\n if (!companyIds.length) {\n return of({} as GetMultiCrmObjectResponse);\n }\n const req = {\n namespace: partnerId,\n crmObjectIds: companyIds,\n };\n return this.companyAPIService.getMultiCompany(req);\n }),\n catchError(() => {\n return of({} as GetMultiCrmObjectResponse);\n }),\n ),\n );\n }\n\n private loadAccounts(agIds: string[]): void {\n const projectionFilter = new ProjectionFilter({ napData: true });\n\n const req = {\n accountGroupIds: agIds,\n projectionFilter,\n };\n\n this.accountLoadingWorkState.startWork(\n this.accountGroupSDK.getMulti(req).pipe(\n catchError((err) => {\n if (err.status === 403) {\n const failedAccountGroupIds = err.error.details[0].failures[0].identifiers.account_group_id.values;\n this.setEmptyBusinessObjectsForIds(failedAccountGroupIds);\n return this.retryGetMulti(failedAccountGroupIds, agIds, projectionFilter);\n }\n return throwError(() => err);\n }),\n ),\n );\n }\n\n createBusinessObjectsForNewIds(ids: string[]): void {\n ids.forEach((id) =>\n this.businessIdentifiers.set(id, {\n loading$$: new BehaviorSubject(true),\n accountGroupName$$: new ReplaySubject(1),\n companyId$$: new ReplaySubject(1),\n companyName$$: new ReplaySubject(1),\n }),\n );\n this.setEmptyBusinessObjectsForIds(ids);\n }\n\n private addInfoFromAGGetMulti(newAccountGroups: GetMultiResponseAccountGroupContainer[]): void {\n newAccountGroups.forEach((ag) => {\n if (ag.accountGroup?.accountGroupId) {\n this.getBusinessNameFromMapSafely(ag.accountGroup.accountGroupId).loading$$.next(false);\n this.getBusinessNameFromMapSafely(ag.accountGroup.accountGroupId).accountGroupName$$.next(\n ag.accountGroup.napData.companyName ?? '',\n );\n this.getBusinessNameFromMapSafely(ag.accountGroup.accountGroupId).companyId$$.next(\n ag.accountGroup.accountGroupExternalIdentifiers?.platformCrmCompanyId ?? '',\n );\n }\n });\n }\n\n private setEmptyBusinessObjectsForIds(ids: string[]): void {\n ids.forEach((id) => {\n const business = this.businessIdentifiers.get(id);\n business.accountGroupName$$.next('');\n business.companyId$$.next('');\n business.companyName$$.next('');\n });\n }\n\n private getBusinessNameFromMapSafely(ag: string): PipelineBusinessIdentifier {\n let business = this.businessIdentifiers.get(ag);\n if (!business) {\n business = new PipelineBusinessIdentifier();\n this.businessIdentifiers.set(ag, business);\n }\n return business;\n }\n\n public getCompanyName$(accountGroupId: string): Observable {\n const businessIdentifier = this.businessIdentifiers.get(accountGroupId);\n return businessIdentifier.companyName$$;\n }\n\n public getCompanyId$(accountGroupId: string): Observable {\n const businessIdentifier = this.businessIdentifiers.get(accountGroupId);\n return businessIdentifier.companyId$$;\n }\n\n private setCompanyNames(companies: CrmObject[]): void {\n companies.forEach((company) => {\n const accountGroupId =\n this.crmFieldService.getFieldValueFromCrmObject(company, PlatformExtensionFieldIds.AccountGroupID)\n ?.stringValue ?? '';\n this.getBusinessNameFromMapSafely(accountGroupId).companyName$$.next(\n this.crmFieldService.getFieldValueFromCrmObject(company, StandardIds.CompanyName)?.stringValue ?? '',\n );\n });\n }\n\n private getValidAccountGroupIds(allAccountGroupIds: string[], failedAccountGroupIds: string[]): string[] {\n return allAccountGroupIds.filter((id) => !failedAccountGroupIds.includes(id));\n }\n\n private retryGetMulti(\n failedAccountGroupIds: string[],\n allAccountGroupIds: string[],\n projectionFilter: ProjectionFilter,\n ): Observable {\n const validAccountGroupIds = this.getValidAccountGroupIds(allAccountGroupIds, failedAccountGroupIds);\n if (!validAccountGroupIds.length) {\n return of({} as GetMultiResponse);\n }\n const req = {\n accountGroupIds: validAccountGroupIds,\n projectionFilter,\n };\n return this.accountGroupSDK.getMulti(req);\n }\n}\n","import {\n ListOpportunitiesRequestSortField,\n ListOpportunitiesRequestSortOptionInterface as SortOption,\n SortDirection as ListOpportunitiesSortDirection,\n} from '@vendasta/sales-opportunities';\n\nexport enum PipelineField {\n ACCOUNT = 'account',\n ACTUAL_CLOSE = 'actualClose',\n ASSIGNEE = 'assigneeName',\n ASSIGNED_DATE = 'assignedDate',\n CALLS = 'calls',\n CONNECTIONS = 'connections',\n CREATED = 'created',\n EMAILS = 'emails',\n EXPECTED_CLOSE = 'expectedClose',\n LAST_ACTIVITY = 'lastActivity',\n LAST_CONNECTED = 'lastConnected',\n MEETINGS = 'meetings',\n MONTHLY_REVENUE = 'monthlyRevenue',\n OPPORTUNITY = 'opportunity',\n PIPELINE_NAME = 'pipelineName',\n PIPELINE_STAGE = 'pipelineStage',\n POTENTIAL = 'potentialRevenue',\n STATUS = 'status',\n TOTAL_EFFORTS = 'totalEfforts',\n MEDDIC = 'meddic',\n TYPE = 'type',\n}\n\nexport enum SortDirection {\n ASC = 'asc',\n DESC = 'desc',\n}\n\nexport interface PipelineSort {\n active: PipelineField;\n isAscending: boolean;\n}\n\nexport const defaultSortOption = {\n isAscending: false,\n active: PipelineField.POTENTIAL,\n};\n\nexport function buildSortOptions(sort: PipelineSort): SortOption {\n switch (sort.active) {\n case PipelineField.POTENTIAL:\n return {\n direction: sort.isAscending ? 0 : 1,\n field: ListOpportunitiesRequestSortField.PROJECTED_FIRST_YEAR_VALUE,\n };\n case PipelineField.CREATED:\n return {\n direction: sort.isAscending ? 0 : 1,\n field: ListOpportunitiesRequestSortField.CREATED,\n };\n case PipelineField.EXPECTED_CLOSE:\n return {\n direction: sort.isAscending ? 0 : 1,\n field: ListOpportunitiesRequestSortField.EXPECTED_CLOSE,\n };\n case PipelineField.OPPORTUNITY:\n return {\n direction: sort.isAscending ? 0 : 1,\n field: ListOpportunitiesRequestSortField.NAME,\n };\n case PipelineField.LAST_ACTIVITY:\n return {\n direction: sort.isAscending ? 0 : 1,\n field: ListOpportunitiesRequestSortField.LAST_ACTIVITY,\n };\n case PipelineField.LAST_CONNECTED:\n return {\n direction: sort.isAscending ? 0 : 1,\n field: ListOpportunitiesRequestSortField.LAST_CONNECTED,\n };\n case PipelineField.ACTUAL_CLOSE:\n return {\n direction: sort.isAscending ? 0 : 1,\n field: ListOpportunitiesRequestSortField.ACTUAL_CLOSE,\n };\n case PipelineField.PIPELINE_STAGE:\n return {\n direction: sort.isAscending ? 0 : 1,\n field: ListOpportunitiesRequestSortField.PIPELINE_STAGE,\n };\n case PipelineField.ASSIGNED_DATE:\n return {\n direction: sort.isAscending ? 0 : 1,\n field: ListOpportunitiesRequestSortField.ASSIGNED_DATE,\n };\n case PipelineField.MEDDIC:\n return {\n direction: sort.isAscending ? 0 : 1,\n field: ListOpportunitiesRequestSortField.MEDDIC,\n };\n default:\n console.error('Attempted sort on unknown column: ', sort.active);\n }\n}\n\nexport const defaultPipelineSortOption = PipelineField.OPPORTUNITY;\n\nexport function convertSortOptionToPipelineSort(o: SortOption): PipelineSort {\n const p = {};\n switch (o.field) {\n case ListOpportunitiesRequestSortField.PROJECTED_FIRST_YEAR_VALUE:\n p.active = PipelineField.POTENTIAL;\n break;\n case ListOpportunitiesRequestSortField.CREATED:\n p.active = PipelineField.CREATED;\n break;\n case ListOpportunitiesRequestSortField.EXPECTED_CLOSE:\n p.active = PipelineField.EXPECTED_CLOSE;\n break;\n case ListOpportunitiesRequestSortField.NAME:\n p.active = PipelineField.OPPORTUNITY;\n break;\n case ListOpportunitiesRequestSortField.LAST_ACTIVITY:\n p.active = PipelineField.LAST_ACTIVITY;\n break;\n case ListOpportunitiesRequestSortField.LAST_CONNECTED:\n p.active = PipelineField.LAST_CONNECTED;\n break;\n case ListOpportunitiesRequestSortField.ACTUAL_CLOSE:\n p.active = PipelineField.ACTUAL_CLOSE;\n break;\n case ListOpportunitiesRequestSortField.PIPELINE_STAGE:\n p.active = PipelineField.PIPELINE_STAGE;\n break;\n case ListOpportunitiesRequestSortField.MEDDIC:\n p.active = PipelineField.MEDDIC;\n break;\n case ListOpportunitiesRequestSortField.ASSIGNED_DATE:\n p.active = PipelineField.ASSIGNED_DATE;\n break;\n default:\n p.active = defaultPipelineSortOption;\n break;\n }\n p.isAscending = o.direction === ListOpportunitiesSortDirection.ASCENDING;\n\n return p;\n}\n","import { InjectionToken } from '@angular/core';\nimport { PipelineBoardServiceConfig } from './interfaces';\n\nexport const PIPELINE_BOARD_SERVICE_CONFIG_TOKEN = new InjectionToken(\n 'general dependency data for the pipeline board',\n);\n\nexport const SALESPERSON_ID_TOKEN = new InjectionToken('Salesperson ID for use in the pipeline board service');\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { ObservableWorkStateMap, WorkStateMap, getStates } from '@vendasta/rx-utils/work-state';\nimport { Pipeline } from '@vendasta/sales-common';\nimport {\n DateRangeFilter,\n ListOpportunitiesFilters,\n ListOpportunitiesResponse,\n Opportunity,\n OpportunityRevenuePeriod,\n RevenuePeriodFilter,\n SalesOpportunitiesSdk,\n SalesOpportunitiesService,\n SortDirection,\n ListOpportunitiesRequestSortField as SortField,\n ListOpportunitiesRequestSortOptionInterface as SortOption,\n StageInterface,\n} from '@vendasta/sales-opportunities';\nimport { DateRange } from '@vendasta/uikit';\nimport { BehaviorSubject, Observable, ReplaySubject, Subject, combineLatest, of } from 'rxjs';\nimport { first, map, scan, startWith, switchMap, take, tap, withLatestFrom } from 'rxjs/operators';\nimport { AccountFilterService } from '../../filters/account-filter/account-filter.service';\nimport { PipelineFiltersService } from '../../filters/filters-service/pipeline-filters.service';\nimport { OpportunitiesCommands } from '../../sales-opportunities/interface';\nimport { OpportunityService } from '../../sales-opportunities/opportunity.service';\nimport { LockMap } from '../../utils';\nimport { PipelineBusinessNameService } from '../pipeline-business-name/pipeline-business-name.service';\nimport { PipelineSort, buildSortOptions, convertSortOptionToPipelineSort } from '../pipeline-sort';\nimport { PipelineStats } from '../pipeline-stats/pipeline-stats.service';\nimport { PipelineStatuses } from '../pipeline-status-checkbox/pipeline-status-checkbox.service';\nimport { PipelineServiceInterface, PipelineUIFilters } from '../pipeline/pipeline-service.interface';\nimport { PotentialRevenueService } from '../pipeline/potential-revenue/potential-revenue.service';\nimport { MARKET_ID_TOKEN, PARTNER_ID_TOKEN } from '../tokens';\nimport { DEFAULT_PIPELINE_ID, UserPipelines } from '../user-pipelines/user-pipelines';\nimport { PipelineBoardAction, PipelineBoardEvent, PipelineBoardFilter, SortSelection } from './interfaces';\nimport { SALESPERSON_ID_TOKEN } from './tokens';\n\nexport const INITIAL_SORT: SORT_DIRECTIONS = true;\nexport type SORT_DIRECTIONS = boolean;\n\nfunction pipelineStatusesToListOpportunitiesRequestFilter(statuses: PipelineStatuses): string[] {\n const out = [];\n if (statuses?.open) {\n out.push('open');\n }\n if (statuses?.won) {\n out.push('closed-won');\n }\n if (statuses?.lost) {\n out.push('closed-lost');\n }\n return out;\n}\n\nexport function toBoardFilter(filters: PipelineUIFilters): PipelineBoardFilter {\n const boardFilter = {};\n\n boardFilter.pipelineStages = pipelineStatusesToListOpportunitiesRequestFilter(filters.statuses);\n boardFilter.expectedCloseDateRange = dateRangeToDateRangeFilter(filters.expectedClose);\n boardFilter.actualCloseDateRange = dateRangeToDateRangeFilter(filters.actualClose);\n boardFilter.createdDateRange = dateRangeToDateRangeFilter(filters.createdDate);\n boardFilter.assignedDateRange = dateRangeToDateRangeFilter(filters.assignedDate);\n\n boardFilter.revenuePeriodFilter = filters.monthlyRevenueDate\n ? {\n revenuePeriod: OpportunityRevenuePeriod.SELECTED_MONTH,\n revenueDate: filters.monthlyRevenueDate,\n }\n : { revenuePeriod: null, revenueDate: null };\n boardFilter.pipelineId = filters.pipelines?.length > 0 ? filters.pipelines[0].id : '';\n boardFilter.salesPersonIds = filters.salespeople?.map((s) => s.id) || [];\n boardFilter.salesTeamMemberIds = filters.salesTeamSalespersonIds || [];\n boardFilter.oppTags = filters.oppTags?.map((o) => o.value) || [];\n boardFilter.accountTags = filters.acctTags?.map((o) => o.value) || [];\n boardFilter.packageIds = filters.packages?.map((p) => p.packageId) || [];\n boardFilter.lineItemProductIds = filters.products?.map((p) => p.productId) || [];\n boardFilter.opportunityTypes = filters.types?.map((o) => o.id) || [];\n return boardFilter;\n}\n\nfunction dateRangeToDateRangeFilter(dateRange: DateRange): DateRangeFilter {\n return dateRange ? { beginRange: dateRange.start, endRange: dateRange.end } : null;\n}\n\n@Injectable()\nexport class PipelineBoardService implements OpportunitiesCommands, PipelineServiceInterface, OnDestroy {\n private readonly subscriptions = SubscriptionList.new();\n\n public readonly loadingLockMap = new LockMap();\n private salespersonId: string;\n private readonly opportunitiesPerPage = 100;\n private readonly stageOpportunitiesWorkStateMap = new ObservableWorkStateMap();\n private readonly cursorsByStage = new Map>();\n private readonly salespersonSelections$$ = new ReplaySubject(1);\n readonly salespersonSelections$: Observable;\n private readonly defaultSortDirection$$ = new BehaviorSubject(INITIAL_SORT);\n readonly defaultSortDirection$ = this.defaultSortDirection$$.asObservable();\n private readonly pipelineBoardEvent$$ = new ReplaySubject(1);\n readonly pipelineBoardEvent$: Observable;\n private readonly pipelineBoardAction$$ = new ReplaySubject(1);\n readonly pipelineBoardAction$: Observable;\n private readonly sortSelection$$ = new BehaviorSubject({ potentialRevenue: true });\n readonly sortSelection$: Observable;\n private readonly currentPipelineFilter$$ = new BehaviorSubject({});\n readonly currentPipelineFilter$ = this.currentPipelineFilter$$.asObservable();\n private readonly triggerBoardReload$$ = new Subject();\n readonly triggerBoardReload$ = this.triggerBoardReload$$.asObservable().pipe(startWith({}));\n readonly currentPipeline$ = this.userPipelines.getCurrentPipeline();\n\n // Workaround to make sure revenue dropdown is in sync when revenue date changed on pipeline table\n private readonly selectedRevenueDate$$ = new BehaviorSubject(null);\n\n SORT_DEFAULTS_ARRAY: SortOption[] = [\n { field: SortField.PROJECTED_FIRST_YEAR_VALUE, direction: SortDirection.DESCENDING },\n { field: SortField.EXPECTED_CLOSE, direction: SortDirection.DESCENDING },\n { field: SortField.ACTUAL_CLOSE, direction: SortDirection.DESCENDING },\n { field: SortField.LAST_CONNECTED, direction: SortDirection.ASCENDING },\n { field: SortField.LAST_ACTIVITY, direction: SortDirection.ASCENDING },\n { field: SortField.NAME, direction: SortDirection.ASCENDING },\n { field: SortField.CREATED, direction: SortDirection.DESCENDING },\n { field: SortField.ASSIGNED_DATE, direction: SortDirection.DESCENDING },\n { field: SortField.MEDDIC, direction: SortDirection.DESCENDING },\n ];\n currentSortOption$$ = new BehaviorSubject(this.SORT_DEFAULTS_ARRAY[0]);\n currentSortField$$ = new BehaviorSubject(this.SORT_DEFAULTS_ARRAY[0].field);\n\n lastSearchTerm$: Observable = of('');\n sort$ = this.currentSortOption$$.pipe(map((o) => convertSortOptionToPipelineSort(o)));\n\n selectedUIFilters$: Observable = this.pipelineFiltersService.selectedUIFilters$;\n\n readonly updateOpportunityWorkState: WorkStateMap;\n readonly stageState = (stageId: string) => getStates(this.stageOpportunitiesWorkStateMap, stageId);\n\n constructor(\n private readonly updates: OpportunityService,\n @Inject(SalesOpportunitiesService) private readonly opportunityApi: SalesOpportunitiesSdk,\n private readonly userPipelines: UserPipelines,\n private readonly pipelineStats: PipelineStats,\n private readonly businessNameService: PipelineBusinessNameService,\n private readonly potentialRevenueService: PotentialRevenueService,\n private readonly pipelineFiltersService: PipelineFiltersService,\n private readonly accountFilterService: AccountFilterService,\n private readonly pipelineFilterService: PipelineFiltersService,\n @Inject(SALESPERSON_ID_TOKEN) private readonly salespersonId$: Observable,\n @Inject(PARTNER_ID_TOKEN) private readonly partnerId$: Observable,\n @Inject(MARKET_ID_TOKEN) private readonly marketId$: Observable,\n ) {\n this.sortSelection$ = this.sortSelection$$.asObservable();\n this.pipelineBoardEvent$ = this.pipelineBoardEvent$$.asObservable();\n this.pipelineBoardAction$ = this.pipelineBoardAction$$.asObservable();\n this.salespersonSelections$ = this.salespersonSelections$$.asObservable();\n\n this.subscriptions.add(this.pipelineStats.totalRevenueForAllStages$, (revenue) => {\n this.potentialRevenueService.setPotentialRevenue(revenue);\n });\n\n this.subscriptions.add(this.pipelineStats.totalWeightedRevenueForAllStages$, (revenue) => {\n this.potentialRevenueService.setWeightedRevenue(revenue);\n });\n\n this.subscriptions.add(this.pipelineStats.totalRevenueInPeriodForAllStages$, (revenueInPeriod) => {\n this.potentialRevenueService.setMonthlyRevenue(revenueInPeriod);\n });\n\n this.subscriptions.add(this.pipelineStats.totalWeightedRevenueInPeriodForAllStages$, (revenueInPeriod) => {\n this.potentialRevenueService.setMonthlyWeightedRevenue(revenueInPeriod);\n });\n\n this.potentialRevenueService.selectedDate$.subscribe(this.selectedRevenueDate$$);\n this.potentialRevenueService.selectedDate$.subscribe((selectedDate) => {\n this.setPotentialRevenueFilter(selectedDate);\n });\n\n this.subscriptions.add(this.accountFilterService.selectedAccountGroupId$, (accountGroupId) =>\n this.setAccountGroupFilter(accountGroupId),\n );\n\n this.updateOpportunityWorkState = this.updates.state;\n\n combineLatest([this.salespersonId$, this.currentPipeline$, this.triggerBoardReload$])\n .pipe(\n withLatestFrom(this.currentPipelineFilter$),\n tap(([[salespersonId, pipeline], currentFilter]) => {\n this.salespersonId = salespersonId;\n for (const s of pipeline.stages) {\n if (!this.cursorsByStage.has(s.stageId)) {\n this.cursorsByStage.set(s.stageId, new BehaviorSubject(null));\n }\n }\n this.initPipelineBoardActionAndEvent(pipeline, salespersonId, currentFilter);\n }),\n )\n .subscribe();\n\n this.selectedUIFilters$\n .pipe(\n withLatestFrom(this.currentPipeline$),\n tap(([filters, p]) => {\n this.pipelineBoardEvent$$.next({\n eventType: 'filterOpportunities',\n filters: toBoardFilter(filters),\n pipeline: p,\n });\n }),\n )\n .subscribe();\n\n this.defaultSortDirection$$\n .pipe(withLatestFrom(this.currentSortField$$))\n .subscribe(([direction, sortField]) => this.sortActions(sortField, direction));\n this.currentSortField$$\n .pipe(withLatestFrom(this.defaultSortDirection$$))\n .subscribe(([sortField, defaultDirection]) => this.sortActions(sortField, defaultDirection));\n }\n\n applyFiltersFromQueryParams(): void {\n this.pipelineFilterService.applyFiltersFromQueryParams();\n }\n\n initPipelineBoardActionAndEvent(pipeline: Pipeline, salespersonId: string, currentFilter: PipelineBoardFilter): void {\n currentFilter.salesPersonIds = currentFilter.salesPersonIds || (salespersonId ? [salespersonId] : []);\n currentFilter.pipelineStages = currentFilter.pipelineStages || ['open'];\n currentFilter.salesTeamMemberIds = currentFilter.salesTeamMemberIds || [];\n currentFilter.pipelineId = pipeline.id;\n\n this.pipelineBoardEvent$$.next({\n eventType: 'loadOpportunities',\n pipeline: pipeline,\n filters: currentFilter,\n });\n\n this.pipelineBoardAction$$.next({\n sortOption: this.currentSortOption$$.getValue(),\n filters: currentFilter,\n });\n }\n\n setCurrentPipeline(pipelineID: string): void {\n this.cursorsByStage.forEach((c) => c.next(''));\n this.userPipelines.setCurrentPipelineID(pipelineID);\n }\n\n reloadBoard(): void {\n this.triggerBoardReload$$.next();\n }\n\n loadOpportunitiesInStage(stage: StageInterface): Observable {\n return this.pipelineBoardEvent$.pipe(\n scan((action, event) => {\n action.pipeline = event.pipeline;\n switch (event.eventType) {\n case 'loadOpportunities':\n action.filters = Object.assign(action.filters, event.filters);\n this.doListFor(stage, event.pipeline, action.sortOption, action.filters);\n break;\n case 'sortOpportunities':\n action.sortOption = event.sortOption;\n this.doListFor(stage, event.pipeline, action.sortOption, action.filters);\n break;\n case 'filterOpportunities':\n action.filters = Object.assign(action.filters, event.filters);\n this.doListFor(stage, event.pipeline, action.sortOption, action.filters);\n break;\n case 'loadMoreOpportunities':\n if (event.cursor !== null && event.cursor !== undefined) {\n if (stage === event.stage) {\n this.getNextPageWithCursor(\n event.stage,\n event.cursor,\n event.pipeline,\n action.sortOption,\n action.filters,\n );\n if (event.isLoading === false) {\n this.loadingLockMap.unlock(stage.stageId);\n }\n }\n }\n }\n this.pipelineBoardAction$$.next(action);\n this.currentPipelineFilter$$.next(action.filters);\n return action;\n }, this.getOpportunityActionSeed()),\n withLatestFrom(this.selectedRevenueDate$$),\n tap(([action, revenueDate]) => {\n if (revenueDate !== action.filters.revenuePeriodFilter.revenueDate) {\n this.potentialRevenueService.setDate(revenueDate);\n }\n }),\n switchMap(([action]) => this.applyOpportunities(stage, action.pipeline, action.sortOption)),\n );\n }\n\n getOpportunityActionSeed(): PipelineBoardAction {\n return {\n sortOption: this.currentSortOption$$.getValue(),\n filters: {\n salesPersonIds:\n this.currentPipelineFilter$$.getValue().salesPersonIds || (this.salespersonId ? [this.salespersonId] : []),\n salesTeamMemberIds: this.currentPipelineFilter$$.getValue().salesTeamMemberIds || [],\n pipelineStages: this.currentPipelineFilter$$.getValue().pipelineStages || ['open'],\n expectedCloseDateRange: this.currentPipelineFilter$$.getValue()?.expectedCloseDateRange || null,\n actualCloseDateRange: this.currentPipelineFilter$$.getValue()?.actualCloseDateRange || null,\n createdDateRange: this.currentPipelineFilter$$.getValue()?.createdDateRange || null,\n assignedDateRange: this.currentPipelineFilter$$.getValue()?.assignedDateRange || null,\n revenuePeriodFilter:\n this.currentPipelineFilter$$.getValue().revenuePeriodFilter ??\n new RevenuePeriodFilter({\n revenueDate: null,\n revenuePeriod: OpportunityRevenuePeriod.UNSPECIFIED,\n }),\n },\n };\n }\n\n updateProbability(opportunity: Opportunity, probability: number): void {\n this.updates.updateProbability(opportunity, probability);\n }\n\n updatePipelineId(opportunity: Opportunity, newPipelineId: string, newProbability: number): void {\n this.updates.updatePipelineId(opportunity, newPipelineId, newProbability);\n }\n\n opportunitiesInStage$(stage: StageInterface): Observable {\n return this.currentPipeline$.pipe(\n switchMap((pipeline) => {\n return this.loadOpportunitiesInStage(stage).pipe(\n map((opps) => {\n if (pipeline.id !== DEFAULT_PIPELINE_ID) {\n return opps.filter((opp) => opp.pipelineId === pipeline.id);\n }\n return opps;\n }),\n );\n }),\n );\n }\n\n cursorForStage$(stageId: string): Observable {\n return this.cursorsByStage.get(stageId).asObservable();\n }\n\n applyOpportunities(stage: StageInterface, pipeline: Pipeline, option?: SortOption): Observable {\n const opportunities = this.stageOpportunitiesWorkStateMap.getWorkResults$(stage.stageId);\n const range = pipeline.findProbabilityRangeFromStage(stage);\n return this.updates.applyForStage$(opportunities, range.minimum, range.maximum, option);\n }\n\n public getNextPageWithCursor(\n stage: StageInterface,\n cursor: string,\n pipeline: Pipeline,\n sortOption: SortOption,\n filters: PipelineBoardFilter,\n ): void {\n this.triggerLoadNextPage(stage, pipeline, sortOption, filters, cursor);\n this.applyOpportunities(stage, pipeline, sortOption);\n }\n\n public triggerLoadNextPage(\n stage: StageInterface,\n pipeline: Pipeline,\n sortOption: SortOption,\n filters: PipelineBoardFilter,\n cursor?: string,\n ): void {\n if (cursor !== null && cursor !== undefined) {\n this.stageOpportunitiesWorkStateMap\n .getWorkResults$(stage.stageId)\n .pipe(first())\n .subscribe((currentOpportunities) => {\n this.doListFor(stage, pipeline, sortOption, filters, currentOpportunities, cursor);\n });\n } else {\n this.doListFor(stage, pipeline, sortOption, filters);\n }\n }\n\n private doListFor(\n stage: StageInterface,\n pipeline: Pipeline,\n sortOption: SortOption,\n filters: PipelineBoardFilter,\n currentOpportunities?: Opportunity[],\n cursor?: string,\n ): void {\n const range = pipeline.findProbabilityRangeFromStage(stage);\n const updatedFilter: ListOpportunitiesFilters = {\n probabilityRangeFilter: range,\n salesPersonIds: [...new Set(filters.salesPersonIds.concat(filters.salesTeamMemberIds))],\n pipelineStages: filters.pipelineStages,\n pipelineId: DEFAULT_PIPELINE_ID,\n packageIds: filters.packageIds,\n tags: (filters.oppTags || []).concat(filters.accountTags || []),\n expectedCloseDateFilter: filters.expectedCloseDateRange,\n actualCloseDateFilter: filters.actualCloseDateRange,\n createdDateFilter: filters.createdDateRange,\n assignedDate: filters.assignedDateRange,\n lineItemProductIds: filters.lineItemProductIds,\n revenuePeriodFilter: filters.revenuePeriodFilter,\n accountGroupId: filters.accountGroupId,\n opportunityTypes: filters.opportunityTypes,\n };\n\n if (pipeline.id !== DEFAULT_PIPELINE_ID) {\n updatedFilter.pipelineId = pipeline.id;\n }\n\n const listOpportunityResponse = combineLatest([this.partnerId$, this.marketId$]).pipe(\n switchMap(([partnerId, marketId]) => {\n return this.opportunityApi.list(\n partnerId,\n marketId,\n updatedFilter,\n sortOption,\n '',\n this.opportunitiesPerPage,\n cursor || null,\n );\n }),\n );\n\n listOpportunityResponse.subscribe((response: ListOpportunitiesResponse) => {\n this.pipelineStats.setStatsForStage(stage.stageId, {\n revenue: response.totalProjectedFirstYearValue ?? 0,\n weightedRevenue: (response.totalProjectedFirstYearValue ?? 0) * (stage.probability ?? 1),\n revenueInPeriod: response.totalRevenueForRevenuePeriod ?? 0,\n weightedRevenueInPeriod: (response.totalRevenueForRevenuePeriod ?? 0) * (stage.probability ?? 1),\n totalOpportunities: response.totalResults ?? 0,\n });\n this.cursorsByStage.get(stage.stageId).next(response.nextCursor || null);\n const opps =\n currentOpportunities !== undefined ? currentOpportunities.concat(response.results) : response.results || [];\n const agIds = [...new Set(opps.map((opp) => opp.accountGroupId))];\n this.businessNameService.enqueueAccountLoad(agIds);\n this.loadingLockMap.unlock(stage.stageId);\n this.stageOpportunitiesWorkStateMap.startWork(stage.stageId, of(opps));\n });\n }\n\n doGetNextPageFor(stage: StageInterface): void {\n if (this.loadingLockMap.isLocked(stage.stageId)) {\n return;\n }\n this.loadingLockMap.lock(stage.stageId);\n\n combineLatest([\n this.cursorForStage$(stage.stageId),\n this.stageState(stage.stageId).isLoading$,\n this.currentPipeline$,\n ])\n .pipe(\n first(),\n tap(([cursor, isLoading, pipeline]) => {\n this.pipelineBoardEvent$$.next({\n eventType: 'loadMoreOpportunities',\n stage: stage,\n cursor: cursor,\n isLoading: isLoading,\n pipeline: pipeline,\n });\n }),\n )\n .subscribe();\n }\n\n doLoadMoreIfNecessary(arraySize: number, stage: StageInterface): void {\n if (arraySize <= this.opportunitiesPerPage) {\n this.doGetNextPageFor(stage);\n }\n }\n\n setFilters(filters?: PipelineBoardFilter): void {\n this.currentPipeline$.pipe(take(1)).subscribe((pipeline) => {\n this.pipelineBoardEvent$$.next({\n eventType: 'filterOpportunities',\n filters: filters,\n pipeline: pipeline,\n });\n });\n }\n\n sortActions(field?: SortField, defaultDirection?: SORT_DIRECTIONS): void {\n const sortSelected = this.SORT_DEFAULTS_ARRAY.find((sortFields) => sortFields.field === field);\n const sortConfig = {};\n const sortOption = {\n field: sortSelected ? sortSelected.field : this.currentSortOption$$.getValue().field,\n direction: sortSelected\n ? this.getFieldSpecificSortDirection(sortSelected.direction, defaultDirection)\n : this.currentSortOption$$.getValue().direction,\n };\n switch (sortOption.field) {\n case SortField.EXPECTED_CLOSE:\n sortConfig.expectedCloseDate = true;\n break;\n case SortField.ACTUAL_CLOSE:\n sortConfig.actualCloseDate = true;\n break;\n case SortField.LAST_CONNECTED:\n sortConfig.lastConnected = true;\n break;\n case SortField.LAST_ACTIVITY:\n sortConfig.lastSalesActivity = true;\n break;\n case SortField.PROJECTED_FIRST_YEAR_VALUE:\n sortConfig.potentialRevenue = true;\n break;\n case SortField.NAME:\n sortConfig.name = true;\n break;\n case SortField.CREATED:\n sortConfig.createdDate = true;\n break;\n case SortField.ASSIGNED_DATE:\n sortConfig.assignedDate = true;\n break;\n case SortField.MEDDIC:\n sortConfig.meddic = true;\n break;\n default:\n sortConfig.potentialRevenue = true;\n break;\n }\n\n this.currentPipeline$.pipe(take(1)).subscribe((pipeline) => {\n this.pipelineBoardEvent$$.next({\n eventType: 'sortOpportunities',\n sortOption: sortOption,\n pipeline: pipeline,\n });\n\n this.currentSortOption$$.next(sortOption);\n this.sortSelection$$.next(sortConfig);\n });\n }\n\n getFieldSpecificSortDirection(direction: SortDirection, useDefaultSortDirection: SORT_DIRECTIONS): SortDirection {\n if (!useDefaultSortDirection) {\n return direction === SortDirection.DESCENDING ? SortDirection.ASCENDING : SortDirection.DESCENDING;\n }\n return direction;\n }\n\n resetSortDirection(): SORT_DIRECTIONS {\n return this.setSortDirection(INITIAL_SORT);\n }\n\n reverseSortDirection(): SORT_DIRECTIONS {\n const newSortDirection = !this.defaultSortDirection$$.getValue();\n return this.setSortDirection(newSortDirection);\n }\n\n private setSortDirection(sortDirection: SORT_DIRECTIONS): SORT_DIRECTIONS {\n this.defaultSortDirection$$.next(sortDirection);\n return sortDirection;\n }\n\n sortByExpectedClose(): void {\n this.setSort(SortField.EXPECTED_CLOSE);\n }\n\n sortByActualClose(): void {\n this.setSort(SortField.ACTUAL_CLOSE);\n }\n\n sortByCreatedDate(): void {\n this.setSort(SortField.CREATED);\n }\n\n sortByAssignedDate(): void {\n this.setSort(SortField.ASSIGNED_DATE);\n }\n\n clearExpectedClose(): void {\n if (this.currentSortField$$.getValue() === SortField.EXPECTED_CLOSE) {\n this.currentSortField$$.next(SortField.PROJECTED_FIRST_YEAR_VALUE);\n }\n }\n\n clearActualClose(): void {\n if (this.currentSortField$$.getValue() === SortField.ACTUAL_CLOSE) {\n this.currentSortField$$.next(SortField.PROJECTED_FIRST_YEAR_VALUE);\n }\n }\n\n clearCreatedDate(): void {\n if (this.currentSortField$$.getValue() === SortField.CREATED) {\n this.currentSortField$$.next(SortField.PROJECTED_FIRST_YEAR_VALUE);\n }\n }\n\n clearAssignedDate(): void {\n if (this.currentSortField$$.getValue() === SortField.ASSIGNED_DATE) {\n this.currentSortField$$.next(SortField.PROJECTED_FIRST_YEAR_VALUE);\n }\n }\n\n setFilterAndSort(boardFilter: PipelineBoardFilter, sortField: SortField): void {\n this.setFilters(boardFilter);\n this.setSort(sortField);\n }\n\n setSort(sortField: SortField): void {\n if (this.defaultSortDirection$$.getValue() !== INITIAL_SORT) {\n this.resetSortDirection();\n }\n if (this.currentSortField$$.getValue() !== sortField) {\n this.currentSortField$$.next(sortField);\n }\n }\n\n setSelectedSalespeople(sp: string[]): void {\n const filters = {\n salesPersonIds: sp,\n };\n this.setFilters(filters);\n }\n\n private setPotentialRevenueFilter(selectedDate: Date): void {\n this.setFilters({\n revenuePeriodFilter: new RevenuePeriodFilter({\n revenueDate: selectedDate,\n revenuePeriod: selectedDate ? OpportunityRevenuePeriod.SELECTED_MONTH : OpportunityRevenuePeriod.UNSPECIFIED,\n }),\n });\n }\n\n private setAccountGroupFilter(accountGroupId: string): void {\n const filters = {\n accountGroupId: accountGroupId,\n };\n this.setFilters(filters);\n }\n\n private setOpportunityTypesFilter(opportunityTypes: string[]): void {\n const filters = {\n opportunityTypes: opportunityTypes,\n };\n this.setFilters(filters);\n }\n\n applySavedFiltersFromStorage(searchTerm: string, filters: PipelineUIFilters, sort: PipelineSort): void {\n this.pipelineFiltersService.applySavedFiltersFromStorage(filters);\n const sortOptions = buildSortOptions(sort);\n\n this.setSort(sortOptions.field);\n }\n\n ngOnDestroy(): void {\n this.subscriptions.destroy();\n }\n}\n","import { Observable, of, SchedulerLike } from 'rxjs';\nimport {\n ObservableWorkStateMap,\n WorkStateMap,\n applyFinishedWork,\n startWorkIfNeededForSubscriber,\n} from '@vendasta/rx-utils/work-state';\nimport { map, shareReplay, switchMap } from 'rxjs/operators';\n\nexport function IDENTITY(data: DATA): Observable {\n return of(data);\n}\n\nexport const GLOBAL_INPUT = 'global';\n\n/**\n * External source is the origin of the data. This might be a remote HTTP\n * server or an in-memory service that performs expensive computations.\n */\ninterface ExternalSource {\n /**\n * fetchFn acquires a new copy of the data using the given inputs.\n * The data could come from an HTTP request or an expensive async procedure.\n */\n fetchFn: (i: INPUTS) => Observable;\n /**\n * uploadFn sends the provided data to the external source. It also stores\n * the provided data locally, overwriting any existing data previously\n * computed/fetched/set for the same set of inputs.\n */\n uploadFn: (i: INPUTS, d: DATA) => Observable;\n}\n\ninterface Testing {\n scheduler?: SchedulerLike;\n}\n\n/**\n * Defines how the KeyedDataProvider should acquire data and surface it back to\n * the caller.\n */\nexport interface DataProviderConfig {\n /**\n * externalSource is the origin of the data. This might be a remote HTTP\n * server or an in-memory service that performs expensive computations.\n */\n externalSource: ExternalSource;\n /**\n * convert is a set of functions for transforming data for different use cases\n */\n convert: {\n /**\n * apiDataToAppData is a function that converts from the API's response\n * into an object that can be used for display purposes. It returns an\n * observable in case additional async work is required to produce the\n * final object. For example, an additional HTTP request to acquire display\n * data.\n */\n apiDataToAppData: (API_DATA) => Observable;\n /**\n * inputsToStringKey is a function that converts a set of inputs into a\n * key string in a reproducable way. This key will be used for providing\n * access to loading, error, and success values when multiple sets of\n * inputs have been processed by the Data Provider.\n */\n inputsToStringKey: (INPUTS) => string;\n };\n testing?: Testing;\n}\n\nexport class KeyedDataProvider {\n private readonly stateMap = new ObservableWorkStateMap();\n readonly state: WorkStateMap = this.stateMap;\n private readonly updateStateMap = new ObservableWorkStateMap();\n\n constructor(private readonly config: DataProviderConfig) {}\n\n getCachedOrFetch$(param: INPUTS): Observable {\n const loadDataFn = this.getWorkFn(param);\n const key = this.config.convert.inputsToStringKey(param);\n const scheduler = this.config.testing?.scheduler || undefined;\n return startWorkIfNeededForSubscriber(key, this.stateMap, loadDataFn, scheduler);\n }\n\n requestRefresh(param: INPUTS): void {\n const work = this.getWorkFn(param);\n const key = this.config.convert.inputsToStringKey(param);\n this.stateMap.startWork(key, work());\n }\n\n private getWorkFn(param: INPUTS): () => Observable {\n return () =>\n this.config.externalSource\n .fetchFn(param)\n .pipe(switchMap((v: API_DATA) => this.config.convert.apiDataToAppData(v)));\n }\n\n store(i: INPUTS, data: DATA): void {\n const work = this.config.externalSource.uploadFn(i, data).pipe(shareReplay(1));\n const key = this.config.convert.inputsToStringKey(i);\n applyFinishedWork(this.stateMap, key, data);\n this.updateStateMap.startWork(key, work);\n }\n\n storeStateSuccess$(i: INPUTS): Observable {\n return this.updateStateMap.isSuccess$(this.config.convert.inputsToStringKey(i));\n }\n\n isLoading$(i: INPUTS): Observable {\n return this.state.isLoading$(this.config.convert.inputsToStringKey(i));\n }\n\n isSuccess$(i: INPUTS): Observable {\n return this.state.isSuccess$(this.config.convert.inputsToStringKey(i));\n }\n\n isFailed$(i: INPUTS): Observable {\n return this.isSuccess$(i).pipe(map((v) => !v));\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport {\n MEDDICScores,\n MEDDICSection,\n MEDDICSectionData,\n OpportunityScoring,\n OpportunityScoringService,\n} from '@vendasta/sales-opportunities';\nimport { Observable, SchedulerLike } from 'rxjs';\nimport { ObservableWorkStateMap, WorkStateMap } from '@vendasta/rx-utils/work-state';\n\nimport { map, shareReplay } from 'rxjs/operators';\nimport { DataProviderConfig, IDENTITY, KeyedDataProvider } from '@vendasta/data-providers';\n\nexport function isFailed$(stateMap: WorkStateMap, id: ID): Observable {\n return stateMap.isSuccess$(id).pipe(map((success) => !success));\n}\n\n// Currently equivalent types, but might diverge later\nexport interface MEDDICScoreCommands {\n submitMEDDICScores(accountGroupId: string, opportunityId: string, meddicScores: MEDDICScores): void;\n}\n\nexport interface MEDDICScoreState {\n isSubmitting$(opportunityId: string): Observable;\n\n getCachedScoresOrFetch$(accountGroupId: string, opportunityId: string): Observable;\n}\n\ninterface ScoreInputs {\n accountGroupId: string;\n opportunityId: string;\n}\n\n/**\n * An app-level source of MEDDIC scores for opportunities and commands that can\n * be used to modify them both app-wide and on the backing server.\n */\n@Injectable({ providedIn: 'root' })\nexport class MEDDICScoreSource implements MEDDICScoreCommands, MEDDICScoreState {\n private readonly scores: KeyedDataProvider;\n\n private readonly updateScoresStateMap = new ObservableWorkStateMap();\n private readonly updateNotesStateMap = new ObservableWorkStateMap();\n private readonly getSectionsStateMap = new ObservableWorkStateMap();\n\n constructor(\n @Inject(OpportunityScoringService) private readonly scoreSvc: OpportunityScoring,\n @Inject('scheduler') @Optional() scheduler: SchedulerLike,\n ) {\n const c: DataProviderConfig = {\n externalSource: {\n fetchFn: (i: ScoreInputs) => {\n if (!!i?.accountGroupId && !!i?.opportunityId) {\n return this.scoreSvc.getMEDDICScores(i.accountGroupId, i.opportunityId);\n }\n return null;\n },\n uploadFn: (i: ScoreInputs, d: MEDDICScores) =>\n this.scoreSvc.updateMEDDICScores(i.accountGroupId, i.opportunityId, d),\n },\n convert: {\n inputsToStringKey: (i: ScoreInputs) => i.opportunityId,\n apiDataToAppData: IDENTITY,\n },\n testing: { scheduler: scheduler || undefined },\n };\n this.scores = new KeyedDataProvider(c);\n }\n\n initializeMeddicSections(accountGroupId: string, opportunityId: string): void {\n const getSectionsFn = this.scoreSvc.getMEDDICSections(accountGroupId, opportunityId);\n this.getSectionsStateMap.startWork(opportunityId, getSectionsFn);\n }\n\n getMeddicSections(opportunityId: string): Observable {\n return this.getSectionsStateMap.getWorkResults$(opportunityId);\n }\n\n getCachedScoresOrFetch$(accountGroupId: string, opportunityId: string): Observable {\n return this.scores.getCachedOrFetch$({ accountGroupId: accountGroupId, opportunityId: opportunityId });\n }\n\n submitMEDDICScores(accountGroupId: string, opportunityId: string, meddicScores: MEDDICScores): void {\n this.scores.store({ accountGroupId: accountGroupId, opportunityId: opportunityId }, meddicScores);\n }\n\n submitMEDDICNotes(\n accountGroupId: string,\n opportunityId: string,\n salesPersonId: string,\n meddicSection: MEDDICSection,\n notes: string,\n ): void {\n const work = this.scoreSvc\n .updateMEDDICNotes(accountGroupId, opportunityId, salesPersonId, meddicSection, notes)\n .pipe(shareReplay(1));\n this.updateNotesStateMap.startWork(opportunityId, work);\n }\n\n isSubmitting$(opportunityId: string): Observable {\n return this.updateScoresStateMap.isLoading$(opportunityId);\n }\n\n isSubmitFailed$(id: string): Observable {\n return isFailed$(this.updateScoresStateMap, id);\n }\n\n submissionSuccessEvents$(opportunityId: string): Observable {\n return this.updateScoresStateMap.successEvent$(opportunityId);\n }\n\n isLoading$(id: string): Observable {\n return this.scores.state.isLoading$(id);\n }\n\n isLoadSuccess(id: string): Observable {\n return this.scores.state.isSuccess$(id);\n }\n\n notesSuccessEvent$(id: string): Observable {\n return this.updateNotesStateMap.successEvent$(id);\n }\n\n didNotesSaveSuccessfully$(id: string): Observable {\n return this.updateNotesStateMap.isSuccess$(id);\n }\n\n areNotesCurrentlySaving$(id: string): Observable {\n return this.updateNotesStateMap.isLoading$(id);\n }\n\n areSectionsCurrentlyLoading$(id: string): Observable {\n return this.getSectionsStateMap.isLoading$(id);\n }\n\n didSectionsLoadSuccessfully(id: string): Observable {\n return this.getSectionsStateMap.isSuccess$(id);\n }\n\n notesSaveEvents$(id: string): Observable {\n return this.updateNotesStateMap.successEvent$(id);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable()\nexport class SlideOutPanelService {\n private readonly isSlideOutOpen$$ = new BehaviorSubject(false);\n public readonly isSlideOutOpen$ = this.isSlideOutOpen$$.asObservable();\n\n openSlideOut(): void {\n this.isSlideOutOpen$$.next(true);\n }\n\n closeSlideOut(): void {\n this.isSlideOutOpen$$.next(false);\n }\n}\n","import { MEDDICScores } from '@vendasta/sales-opportunities';\n\nexport function computeProgress(scores: MEDDICScores): number {\n if (!scores) {\n return 0;\n }\n const keys = Object.keys(scores);\n const max: number = keys.reduce((sum: number) => sum + 2, 0);\n const values = keys.map((k) => scores[k]);\n const score = values.reduce((sum, cur) => sum + cur);\n return score / max;\n}\n\nexport function computeScoreSum(scores: MEDDICScores): number {\n if (!scores) {\n return 0;\n }\n const keys = Object.keys(scores);\n const values = keys.map((k) => scores[k]);\n return values.reduce((sum, cur) => sum + cur, 0);\n}\n","import { Component, Input } from '@angular/core';\nimport { MEDDICScores } from '@vendasta/sales-opportunities';\nimport { computeProgress, computeScoreSum } from '../../meddic-scores/meddic-scores';\n\nconst MAX_MEDDIC_SCORE = 2;\n\n@Component({\n selector: 'sales-ui-meddic-progress-bar',\n templateUrl: './meddic-progress-bar.component.html',\n styleUrls: ['./meddic-progress-bar.component.scss'],\n})\nexport class MEDDICProgressBarComponent {\n colorClass: string;\n progress: number;\n categoriesMet: number;\n potentialScoreSum: number;\n\n @Input() loading: boolean;\n\n @Input() set scores(s: MEDDICScores) {\n this.progress = computeProgress(s) * 100;\n if (s) {\n this.colorClass = chooseColorClass(this.progress);\n this.categoriesMet = computeScoreSum(s);\n this.potentialScoreSum = Object.keys(s).length * MAX_MEDDIC_SCORE;\n }\n }\n}\n\nfunction chooseColorClass(progress: number): string {\n if (progress < 50) {\n return 'red';\n }\n if (progress < 100) {\n return 'yellow';\n }\n return 'green';\n}\n","\n
\n {{ categoriesMet }}/{{ potentialScoreSum }} {{ 'FRONTEND.SALES_UI.PIPELINE.MEDDIC.POINTS' | translate }}\n
\n","import { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { MEDDICScores, Opportunity } from '@vendasta/sales-opportunities';\nimport { BehaviorSubject, combineLatest, firstValueFrom, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Salesperson } from '@galaxy/types';\nimport { ALL_SALESPEOPLE, DEFAULT_CURRENCY, DETAILS_CONFIG_TOKEN } from './tokens';\nimport { PipelineBoardService } from '../pipeline-board-service/pipeline-board.service';\nimport { SortSelection } from '../pipeline-board-service/interfaces';\nimport { PipelineBusinessNameService } from '../pipeline-business-name/pipeline-business-name.service';\nimport { MEDDICScoreSource } from '../../meddic/meddic-scores/m-e-d-d-i-c-score-source';\nimport { SlideOutPanelService } from '../../slide-out-panel/slide-out-panel.service';\nimport { DetailsConfig } from '../../sales-opportunities/opportunity';\nimport { OpportunityService } from '../../sales-opportunities/opportunity.service';\nimport { Router } from '@angular/router';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\n\n@Component({\n selector: 'sales-ui-pipeline-card',\n templateUrl: './pipeline-card.component.html',\n styleUrls: ['./pipeline-card.component.scss'],\n})\nexport class PipelineCardComponent implements OnInit {\n @Input() opportunity: Opportunity;\n @Output() selectedOpportunityId = new EventEmitter();\n\n readonly sortSelection$: Observable;\n readonly currency$: Observable = this.defaultCurrency$;\n\n businessName$: Observable;\n error$: Observable;\n isSelectedOpportunity$: Observable;\n salesperson$: Observable;\n nameLoading$ = new BehaviorSubject(false);\n meddicScore = 0;\n MEDDICScores$: Observable;\n MEDDICScoresLoading$: Observable;\n\n constructor(\n private readonly pipelineBoardService: PipelineBoardService,\n private readonly pipelineBusinessNameService: PipelineBusinessNameService,\n private readonly opportunityUpdates: OpportunityService,\n private readonly scoreSvc: MEDDICScoreSource,\n private readonly slideOutPanelService: SlideOutPanelService,\n @Inject(ALL_SALESPEOPLE) private readonly salespeople$: Observable,\n @Inject(DEFAULT_CURRENCY) private readonly defaultCurrency$: Observable,\n @Inject(DETAILS_CONFIG_TOKEN) private readonly detailsConfig: DetailsConfig,\n private readonly router: Router,\n private readonly snackbarService: SnackbarService,\n ) {\n this.sortSelection$ = this.pipelineBoardService.sortSelection$;\n\n this.isSelectedOpportunity$ = combineLatest([\n this.opportunityUpdates.currentOpportunity$,\n this.slideOutPanelService.isSlideOutOpen$,\n ]).pipe(\n map(([selectedOpportunity, isSlideOutOpen]) => {\n const isOpportunitySelected = selectedOpportunity\n ? this.opportunity.opportunityId === selectedOpportunity.opportunityId\n : false;\n return isOpportunitySelected === true && isSlideOutOpen === true;\n }),\n );\n }\n\n ngOnInit(): void {\n const accountGroupId = this.opportunity.accountGroupId;\n this.setBusinessName(this.opportunity, this.detailsConfig);\n\n this.nameLoading$ = this.pipelineBusinessNameService.businessIdentifiers.get(\n this.opportunity.accountGroupId,\n ).loading$$;\n\n this.salesperson$ = this.getSalesperson(this.opportunity.salesPersonId);\n\n this.meddicScore =\n this.opportunity.scoring?.scores.reduce((total, score) => {\n const currentScore = score?.scoreValue || 0;\n return total + currentScore;\n }, 0) ?? 0;\n\n this.MEDDICScores$ = this.scoreSvc.getCachedScoresOrFetch$(accountGroupId, this.opportunity.opportunityId);\n this.MEDDICScoresLoading$ = this.scoreSvc.isLoading$(this.opportunity.opportunityId);\n }\n\n getBusinessName$(accountGroupId: string): Observable {\n const businessObject = this.pipelineBusinessNameService.businessIdentifiers.get(accountGroupId);\n return businessObject.accountGroupName$$;\n }\n\n getBusinessNameError$(accountGroupId: string): Observable {\n const businessObject = this.pipelineBusinessNameService.businessIdentifiers.get(accountGroupId);\n return businessObject.accountGroupName$$.pipe(\n map((bn) => {\n return bn === '';\n }),\n );\n }\n\n getDateOrNull(date: Date): string | null {\n return date.getFullYear() > 1969 ? date.toLocaleDateString() : null;\n }\n\n selected(): void {\n this.selectedOpportunityId.emit(this.opportunity.opportunityId);\n }\n\n getSalesperson(salespersonId: string): Observable {\n return this.salespeople$.pipe(map((sp) => sp.find((s) => s.id === salespersonId)));\n }\n\n setBusinessName(opportunity: Opportunity, details: DetailsConfig): void {\n if (details.showCRMDetails) {\n this.businessName$ = this.pipelineBusinessNameService.getCompanyName$(opportunity.accountGroupId);\n } else {\n this.businessName$ = this.getBusinessName$(opportunity.accountGroupId);\n }\n }\n\n async openDetails(opportunity: Opportunity, event: MouseEvent): Promise {\n event.stopPropagation();\n if (!opportunity.accountGroupId) {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.PIPELINE.TABLE.ERRORS.NAVIGATE_TO_PAGE');\n return;\n }\n if (this.detailsConfig.showCRMDetails) {\n const url = await firstValueFrom(\n this.pipelineBusinessNameService\n .getCompanyId$(opportunity.accountGroupId)\n .pipe(map((id) => this.detailsConfig.getCompanyDetailsUrl(id))),\n );\n this.router.navigate([url], { queryParams: { origin: 'pipeline-card' } });\n } else {\n const url = this.detailsConfig.getAccountDetailsUrl(opportunity);\n this.router.navigate([url], { queryParams: { origin: 'pipeline-card' } });\n }\n }\n}\n","
\n\n
\n \n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.ACCOUNT_LOAD_FAILED' | translate }}\n \n \n \n {{ businessName }}\n \n \n \n \n
\n {{ opportunity.name }}\n
\n
\n \n {{ opportunity.projectedFirstYearValue || 0 | formatCurrency: (currency$ | async) }}\n \n \n \n \n
\n\n \n
\n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.LAST_ACTIVITY' | translate }}:\n {{ getDateOrNull(opportunity.lastActivityDate) || 'FRONTEND.SALES_UI.COMMON.NONE_LABEL' | translate }}\n
\n
\n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.LAST_CONNECTED' | translate }}:\n {{ getDateOrNull(opportunity.lastConnectedDate) || 'FRONTEND.SALES_UI.COMMON.NONE_LABEL' | translate }}\n
\n
\n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.EXPECTED_CLOSE' | translate }}:\n {{ getDateOrNull(opportunity.expectedCloseDate) || 'FRONTEND.SALES_UI.COMMON.NONE_LABEL' | translate }}\n
\n
\n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.ACTUAL_CLOSE' | translate }}:\n {{ getDateOrNull(opportunity.actualClosedDate) || 'FRONTEND.SALES_UI.COMMON.NONE_LABEL' | translate }}\n
\n
\n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.CREATED_DATE' | translate }}:\n {{ getDateOrNull(opportunity.created) || 'FRONTEND.SALES_UI.COMMON.NONE_LABEL' | translate }}\n
\n
\n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.ASSIGNED' | translate }}:\n {{ getDateOrNull(opportunity.assignedDate) || 'FRONTEND.SALES_UI.COMMON.NONE_LABEL' | translate }}\n
\n
0\">\n
{{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.QUALIFICATION' | translate }}:
\n \n
\n
\n
\n\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\nimport { MatSelectChange } from '@angular/material/select';\nimport { MEDDICScores } from '@vendasta/sales-opportunities';\n\n@Component({\n selector: 'sales-ui-meddic-selector',\n templateUrl: './m-e-d-d-i-c-selector.component.html',\n})\nexport class MEDDICSelectorComponent implements OnInit, OnChanges {\n @Input() scores: MEDDICScores;\n @Input() scoresKey: string;\n @Input() scoreI18nKey: string;\n\n @Output() scoresChanged = new EventEmitter();\n scoreValue: number;\n\n handleSelection($event: MatSelectChange): void {\n const newScores = Object.assign({}, this.scores);\n newScores[this.scoresKey] = $event.value;\n this.scoresChanged.emit(newScores);\n }\n\n ngOnChanges(): void {\n this.updateScoreValue();\n }\n\n ngOnInit(): void {\n this.updateScoreValue();\n }\n\n private updateScoreValue(): void {\n if (this.scores && this.scoresKey) {\n this.scoreValue = this.scores[this.scoresKey];\n }\n }\n}\n","\n \n {{ 'MEDDIC.SCORE_OPTIONS.' + scoreI18nKey + '.SCORE_0' | translate }}\n - {{ 'MEDDIC.POINT_VAL_0' | translate }}\n \n \n {{ 'MEDDIC.SCORE_OPTIONS.' + scoreI18nKey + '.SCORE_1' | translate }}\n - {{ 'MEDDIC.POINT_VAL_1' | translate }}\n \n \n {{ 'MEDDIC.SCORE_OPTIONS.' + scoreI18nKey + '.SCORE_2' | translate }}\n - {{ 'MEDDIC.POINT_VAL_2' | translate }}\n \n\n","import { Injectable } from '@angular/core';\nimport { MEDDICScoreSource } from '../meddic-scores/m-e-d-d-i-c-score-source';\nimport { Observable } from 'rxjs';\nimport { MEDDICSection, MEDDICSectionData } from '@vendasta/sales-opportunities';\n\nexport interface SaveMEDDICNotesRequest {\n accountGroupId: string;\n opportunityId: string;\n editSalesPersonId: string;\n section: MEDDICSection;\n notes: string;\n}\n\n@Injectable()\nexport class MeddicNotesService {\n private readonly lastNotesUpdateAttemptedMap = new Map();\n\n constructor(private readonly meddicDataProvider: MEDDICScoreSource) {}\n\n saveMEDDICNotes(request: SaveMEDDICNotesRequest): void {\n this.lastNotesUpdateAttemptedMap.set(request.opportunityId, request);\n this.meddicDataProvider.submitMEDDICNotes(\n request.accountGroupId,\n request.opportunityId,\n request.editSalesPersonId,\n request.section,\n request.notes,\n );\n }\n\n retrySavingMEDDICNotes(id: string): void {\n const request = this.lastNotesUpdateAttemptedMap.get(id);\n this.saveMEDDICNotes(request);\n }\n\n didNotesSaveSuccessfully$(id: string): Observable {\n return this.meddicDataProvider.didNotesSaveSuccessfully$(id);\n }\n\n areNotesCurrentlySaving$(id: string): Observable {\n return this.meddicDataProvider.areNotesCurrentlySaving$(id);\n }\n\n areSectionsCurrentlyLoading$(id: string): Observable {\n return this.meddicDataProvider.areSectionsCurrentlyLoading$(id);\n }\n\n didSectionsLoadSuccessfully(id: string): Observable {\n return this.meddicDataProvider.didSectionsLoadSuccessfully(id);\n }\n\n getMeddicSections(opportunityId: string): Observable {\n return this.meddicDataProvider.getMeddicSections(opportunityId);\n }\n\n initializeMeddicSections(accountGroupId: string, opportunityId: string): void {\n return this.meddicDataProvider.initializeMeddicSections(accountGroupId, opportunityId);\n }\n}\n","import { Component, Inject, Input, OnDestroy } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { MEDDICSection } from '@vendasta/sales-opportunities';\nimport { BehaviorSubject, Observable, ReplaySubject, combineLatest, firstValueFrom, merge, of } from 'rxjs';\nimport { debounceTime, delay, filter, map, switchMap, withLatestFrom } from 'rxjs/operators';\nimport { MeddicNotesService, SaveMEDDICNotesRequest } from '../../meddic-notes.service';\n\nexport const SALESPERSON_ID_TOKEN = 'SALESPERSON_ID_TOKEN';\n\nexport enum MEDDICNoteStatus {\n SAVED = 0,\n SAVING = 1,\n ERROR = 2,\n}\n\nexport interface MEDDICNoteChanges {\n notes: string;\n section: MEDDICSection;\n}\n\nconst DELAY_BEFORE_SAVING_NOTES = 750;\n\n@Component({\n selector: 'sales-ui-meddic-notes-field',\n templateUrl: './meddic-notes-field.component.html',\n styleUrls: ['./meddic-notes-field.component.scss'],\n})\nexport class MeddicNotesFieldComponent implements OnDestroy {\n readonly formControl = new UntypedFormControl('');\n readonly NOTES_STATUS_SAVED = MEDDICNoteStatus.SAVED;\n readonly NOTES_STATUS_SAVING = MEDDICNoteStatus.SAVING;\n readonly NOTES_STATUS_ERROR = MEDDICNoteStatus.ERROR;\n notesSaveStatus$: Observable;\n private readonly accountGroupId$$ = new ReplaySubject(1);\n private readonly accountGroupId$ = this.accountGroupId$$.pipe(filter((id) => !!id));\n private readonly opportunityId$$ = new ReplaySubject(1);\n private readonly opportunityId$ = this.opportunityId$$.pipe(filter((id) => !!id));\n private readonly fallbackSalespersonId$$ = new BehaviorSubject('');\n readonly fallbackSalespersonId$ = this.fallbackSalespersonId$$.pipe(filter((id) => !!id));\n private readonly section$$ = new ReplaySubject(1);\n readonly section$ = this.section$$.asObservable();\n private readonly subscriptions = SubscriptionList.new();\n private readonly noteRecorder$$ = new ReplaySubject(1);\n\n constructor(\n @Inject(SALESPERSON_ID_TOKEN) private readonly salesPersonId$: Observable,\n private readonly notesService: MeddicNotesService,\n ) {\n this.disableNotesFields();\n this.constructNoteChangeObservables();\n this.constructNoteChangeSubscriptions();\n }\n\n @Input() set section(section: MEDDICSection) {\n this.section$$.next(section);\n }\n\n @Input() set accountGroupId(id: string) {\n this.accountGroupId$$.next(id);\n }\n\n @Input() set fallbackSalespersonId(id: string) {\n this.fallbackSalespersonId$$.next(id);\n }\n\n @Input() set opportunityId(id: string) {\n this.opportunityId$$.next(id);\n }\n\n ngOnDestroy(): void {\n this.subscriptions.destroy();\n }\n\n private disableNotesFields(): void {\n this.formControl.disable({ emitEvent: false });\n }\n\n private constructNoteChangeObservables(): void {\n const noteSaveStatus$ = this.opportunityId$.pipe(\n switchMap((id) =>\n combineLatest([\n this.notesService.areNotesCurrentlySaving$(id),\n this.notesService.didNotesSaveSuccessfully$(id),\n ]),\n ),\n switchMap(([isSaving, savedSuccessfully]) => {\n if (!isSaving && !savedSuccessfully) {\n return of(MEDDICNoteStatus.ERROR);\n }\n return isSaving ? of(MEDDICNoteStatus.SAVING) : of(MEDDICNoteStatus.SAVED).pipe(delay(350));\n }),\n );\n\n const loadedSuccessfully$ = this.opportunityId$.pipe(\n switchMap((id) => this.notesService.didSectionsLoadSuccessfully(id)),\n map((success) => (success ? MEDDICNoteStatus.SAVED : MEDDICNoteStatus.ERROR)),\n );\n\n this.notesSaveStatus$ = merge(noteSaveStatus$, loadedSuccessfully$);\n }\n\n private constructNoteChangeSubscriptions(): void {\n this.subscriptions.add(this.noteRecorder$$.asObservable(), (noteChangeRequest) =>\n this.sendMeddicNoteUpdateRequest(noteChangeRequest),\n );\n\n const noteChanges$ = combineLatest([this.formControl.valueChanges, this.section$]).pipe(\n map(([notes, section]) => { notes: notes, section: section }),\n debounceTime(DELAY_BEFORE_SAVING_NOTES),\n );\n\n this.subscriptions.add(noteChanges$, (request) => this.noteRecorder$$.next(request));\n\n const sectionLoadStatus$ = this.opportunityId$.pipe(\n switchMap((id) =>\n combineLatest([\n this.notesService.didSectionsLoadSuccessfully(id),\n this.notesService.areSectionsCurrentlyLoading$(id),\n ]),\n ),\n );\n this.subscriptions.add(sectionLoadStatus$, ([isSuccess, isLoading]) => {\n if (isSuccess && !isLoading) {\n this.formControl.enable({ emitEvent: false });\n } else {\n this.formControl.disable({ emitEvent: false });\n }\n });\n\n const thisSectionsNotes$ = this.opportunityId$.pipe(\n switchMap((id) => this.notesService.getMeddicSections(id)),\n withLatestFrom(this.section$),\n map(([sections, thisSection]) => sections.find((section) => section.sectionName === thisSection)),\n );\n\n this.subscriptions.add(thisSectionsNotes$, (section) => {\n if (section) this.formControl.setValue(section.notes, { emitEvent: false });\n });\n }\n\n private async sendMeddicNoteUpdateRequest(changes: MEDDICNoteChanges): Promise {\n const agid = await firstValueFrom(this.accountGroupId$);\n const oppId = await firstValueFrom(this.opportunityId$);\n const salesPersonId = await firstValueFrom(this.salesPersonId$);\n const fallbackSalespersonId = await firstValueFrom(this.fallbackSalespersonId$);\n\n const req: SaveMEDDICNotesRequest = {\n accountGroupId: agid,\n opportunityId: oppId,\n editSalesPersonId: salesPersonId || fallbackSalespersonId,\n section: changes.section,\n notes: changes.notes,\n };\n this.notesService.saveMEDDICNotes(req);\n }\n}\n","\n {{ 'MEDDIC.REASON_FOR_SCORE' | translate }}\n \n report_problem\n done\n \n\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface TriggerSubject {}\n\n@Component({\n selector: 'sales-ui-meddic-errors',\n templateUrl: './meddic-errors.component.html',\n styleUrls: ['./meddic-errors.component.scss'],\n})\nexport class MeddicErrorsComponent {\n @Input() hasError: boolean;\n @Input() retrying: boolean;\n @Input() errorMessage: string;\n\n @Output() retryRequest = new EventEmitter();\n\n emitRetryEvent(): void {\n this.retryRequest.emit();\n }\n}\n","\n
\n error_outline\n

{{ errorMessage }}

\n \n
\n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { MEDDICScores } from '@vendasta/sales-opportunities';\nimport { isFailed$, WorkStates } from '@vendasta/rx-utils/work-state';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'sales-ui-meddic-title',\n templateUrl: './m-e-d-d-i-c-title.component.html',\n styleUrls: ['./m-e-d-d-i-c-title.component.scss'],\n})\nexport class MEDDICTitleComponent implements OnInit {\n @Input() scoresState: WorkStates;\n @Input() scoresKey: string;\n @Input() scoreI18nKey: string;\n isFailed$: Observable;\n\n ngOnInit(): void {\n this.isFailed$ = isFailed$(this.scoresState);\n }\n}\n","\n \n = 2,\n yellow: 1 <= scores[scoresKey] && scores[scoresKey] < 2,\n red: scores[scoresKey] < 1\n }\"\n >\n {{ scores[scoresKey] }}\n \n \n \n error_outline\n \n\n

{{ 'MEDDIC.SCORE_NAMES.' + scoreI18nKey | translate }}

\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { WorkStates } from '@vendasta/rx-utils/work-state';\nimport { MEDDICScores, MEDDICSection, MEDDICSectionData } from '@vendasta/sales-opportunities';\nimport { EMPTY, Observable, ReplaySubject, combineLatest, firstValueFrom, of } from 'rxjs';\nimport { delay, distinctUntilChanged, filter, map, publishReplay, refCount, switchMap } from 'rxjs/operators';\nimport { MEDDICScoreSource } from '../meddic-scores/m-e-d-d-i-c-score-source';\nimport { computeProgress } from '../meddic-scores/meddic-scores';\nimport { MeddicNotesService } from './meddic-notes.service';\n\n@Component({\n selector: 'sales-ui-meddic-section',\n templateUrl: './meddic-section.component.html',\n styleUrls: ['./meddic-section.component.scss'],\n})\nexport class MeddicSectionComponent implements OnDestroy {\n readonly isSending$: Observable;\n readonly isFailed$: Observable;\n readonly meddicProgress$: Observable;\n readonly scores$: Observable;\n readonly scoresState: WorkStates;\n readonly getSectionsState: WorkStates;\n notesSavedSuccessfully$: Observable;\n notesAreSaving$: Observable;\n MEDDIC_METRICS_SECTION = MEDDICSection.MEDDIC_SECTION_METRICS;\n MEDDIC_ECONOMIC_BUYER_SECTION = MEDDICSection.MEDDIC_SECTION_ECONOMIC_BUYER;\n MEDDIC_DECISION_CRITERIA_SECTION = MEDDICSection.MEDDIC_SECTION_DECISION_CRITERIA;\n MEDDIC_DECISION_PROCESS_SECTION = MEDDICSection.MEDDIC_SECTION_DECISION_PROCESS;\n MEDDIC_IDENTIFY_PAIN_SECTION = MEDDICSection.MEDDIC_SECTION_IDENTIFY_PAIN;\n MEDDIC_CHAMPION_SECTION = MEDDICSection.MEDDIC_SECTION_CHAMPION_SCORE;\n MEDDIC_COMPETITION_SECTION = MEDDICSection.MEDDIC_SECTION_COMPETITION;\n MEDDIC_PAPER_PROCESS_SECTION = MEDDICSection.MEDDIC_SECTION_PAPER_PROCESS;\n private readonly opportunityId$$ = new ReplaySubject(1);\n readonly opportunityId$ = this.opportunityId$$.pipe(\n filter((id) => !!id),\n distinctUntilChanged(),\n );\n private readonly fallbackSalespersonId$$ = new ReplaySubject(1);\n readonly fallbackSalespersonId$ = this.fallbackSalespersonId$$.pipe(\n filter((id) => !!id),\n distinctUntilChanged(),\n );\n private readonly accountGroupId$$ = new ReplaySubject(1);\n readonly accountGroupId$ = this.accountGroupId$$.pipe(filter((id) => !!id));\n private readonly subscriptions = SubscriptionList.new();\n\n constructor(\n private readonly scoreSvc: MEDDICScoreSource,\n private readonly alerts: SnackbarService,\n private readonly notesService: MeddicNotesService,\n ) {\n this.subscriptions.add(\n combineLatest([this.opportunityId$, this.accountGroupId$]),\n ([opportunityId, accountGroupId]) => this.notesService.initializeMeddicSections(accountGroupId, opportunityId),\n );\n\n this.notesSavedSuccessfully$ = this.opportunityId$.pipe(switchMap((id) => this.scoreSvc.notesSuccessEvent$(id)));\n\n const noteSaveEvents$ = this.opportunityId$.pipe(switchMap((id) => this.scoreSvc.notesSaveEvents$(id)));\n\n this.subscriptions.add(noteSaveEvents$, (eventSuccessful) => {\n if (eventSuccessful) {\n this.alerts.openSuccessSnack('MEDDIC.NOTES_SAVED');\n } else {\n this.alerts.openErrorSnack('MEDDIC.PROBLEM_SAVING_NOTES');\n }\n });\n\n this.notesAreSaving$ = this.opportunityId$.pipe(switchMap((id) => this.scoreSvc.areNotesCurrentlySaving$(id)));\n this.scores$ = combineLatest([this.opportunityId$, this.accountGroupId$]).pipe(\n switchMap(([oppId, accountGroupId]) => {\n return scoreSvc.getCachedScoresOrFetch$(accountGroupId, oppId);\n }),\n publishReplay(1),\n refCount(),\n );\n this.meddicProgress$ = this.scores$.pipe(map((scores) => computeProgress(scores) * 100));\n this.scoresState = {\n isLoading$: this.opportunityId$.pipe(switchMap((id) => scoreSvc.isLoading$(id))),\n isSuccess$: this.opportunityId$.pipe(switchMap((id) => scoreSvc.isLoadSuccess(id))),\n workResults$: this.scores$,\n successEvents$: EMPTY,\n };\n\n this.getSectionsState = {\n isLoading$: this.opportunityId$.pipe(switchMap((id) => scoreSvc.areSectionsCurrentlyLoading$(id))),\n isSuccess$: this.opportunityId$.pipe(switchMap((id) => scoreSvc.didSectionsLoadSuccessfully(id))),\n workResults$: this.opportunityId$.pipe(switchMap((id) => scoreSvc.getMeddicSections(id))),\n successEvents$: EMPTY,\n };\n\n this.isSending$ = this.opportunityId$.pipe(\n switchMap((id) => scoreSvc.isSubmitting$(id)),\n switchMap((isSending) => {\n if (isSending) {\n return of(true);\n }\n // More satisfying UX for very fast requests\n return of(false).pipe(delay(350));\n }),\n );\n this.isFailed$ = this.opportunityId$.pipe(switchMap((id) => scoreSvc.isSubmitFailed$(id)));\n const success$ = this.opportunityId$.pipe(switchMap((id) => scoreSvc.submissionSuccessEvents$(id)));\n this.subscriptions.add(success$, (success) => {\n if (success) {\n alerts.openSuccessSnack('MEDDIC scores saved'); // TODO: Translate\n } else {\n alerts.openErrorSnack('Failed to save MEDDIC scores');\n }\n });\n }\n\n @Input() set accountGroupId(id: string) {\n this.accountGroupId$$.next(id);\n }\n\n @Input() set opportunityId(id: string) {\n this.opportunityId$$.next(id);\n }\n\n @Input() set fallbackSalespersonId(id: string) {\n this.fallbackSalespersonId$$.next(id);\n }\n\n ngOnDestroy(): void {\n this.subscriptions.destroy();\n }\n\n async saveMEDDICScores(): Promise {\n const [agid, oppId, scores] = await Promise.all([\n firstValueFrom(this.accountGroupId$),\n firstValueFrom(this.opportunityId$),\n firstValueFrom(this.scores$),\n ]);\n this.scoreSvc.submitMEDDICScores(agid, oppId, scores);\n }\n\n async handleScoresChanged($event: MEDDICScores): Promise {\n const [agid, oppId] = await Promise.all([\n firstValueFrom(this.accountGroupId$),\n firstValueFrom(this.opportunityId$),\n ]);\n this.scoreSvc.submitMEDDICScores(agid, oppId, $event);\n }\n\n async retryGettingMEDDICSections(): Promise {\n const [oppId, accountGroupId] = await Promise.all([\n firstValueFrom(this.opportunityId$),\n firstValueFrom(this.accountGroupId$),\n ]);\n this.scoreSvc.initializeMeddicSections(accountGroupId, oppId);\n }\n\n async retrySavingMEDDICNotes(): Promise {\n const oppId = await firstValueFrom(this.opportunityId$);\n this.notesService.retrySavingMEDDICNotes(oppId);\n }\n}\n","\n\n\n\n\n\n\n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n
\n \n
\n
\n
\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MeddicNotesFieldComponent } from './meddic-notes-field/meddic-notes-field.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n declarations: [MeddicNotesFieldComponent],\n exports: [MeddicNotesFieldComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n TranslateModule,\n MatProgressSpinnerModule,\n MatIconModule,\n ],\n})\nexport class MeddicNotesModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MeddicErrorsComponent } from './meddic-errors.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@NgModule({\n declarations: [MeddicErrorsComponent],\n exports: [MeddicErrorsComponent],\n imports: [CommonModule, TranslateModule, MatProgressSpinnerModule, MatIconModule, MatButtonModule],\n})\nexport class MeddicErrorsModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MEDDICSelectorComponent } from './meddic-selector/m-e-d-d-i-c-selector.component';\nimport { MeddicSectionComponent } from './meddic-section/meddic-section.component';\nimport { MEDDICTitleComponent } from './meddic-title/m-e-d-d-i-c-title.component';\nimport { MEDDICProgressBarComponent } from './meddic-section/meddic-progress-bar/meddic-progress-bar.component';\nimport { AsyncUiModule } from '@vendasta/uikit';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MeddicNotesModule } from './meddic-section/meddic-notes/meddic-notes.module';\nimport { MeddicNotesService } from './meddic-section/meddic-notes.service';\nimport { MeddicErrorsModule } from './meddic-section/meddic-errors/meddic-errors.module';\n\n@NgModule({\n declarations: [MEDDICSelectorComponent, MeddicSectionComponent, MEDDICTitleComponent, MEDDICProgressBarComponent],\n exports: [MeddicSectionComponent, MEDDICProgressBarComponent],\n imports: [\n CommonModule,\n AsyncUiModule,\n MatTooltipModule,\n MatIconModule,\n TranslateModule,\n MatProgressBarModule,\n MatExpansionModule,\n MatButtonModule,\n MatSelectModule,\n TranslateModule,\n MeddicNotesModule,\n MeddicErrorsModule,\n ],\n providers: [MeddicNotesService],\n})\nexport class MeddicModule {}\n","import { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n declarations: [],\n exports: [],\n providers: [],\n imports: [TranslateModule],\n})\nexport class OpportunityServiceModule {}\n","import { NgModule } from '@angular/core';\nimport { PipelineCardComponent } from './pipeline-card.component';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { AsyncUiModule, VaIconModule } from '@vendasta/uikit';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { RouterModule } from '@angular/router';\nimport { PreferredCurrencyModule } from '@vendasta/sales-common';\nimport { FormsModule } from '@angular/forms';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { Observable } from 'rxjs';\nimport {\n ALL_SALESPEOPLE,\n DEFAULT_CURRENCY,\n OPPORTUNITY_INFO_URL_BUILDER,\n OpportunityInfoUrlBuilder,\n PIPELINE_CARD_CONFIG_TOKEN,\n PipelineCardConfig,\n DETAILS_CONFIG_TOKEN,\n} from './tokens';\nimport { Salesperson } from '@galaxy/types';\nimport { MeddicModule } from '../../meddic/meddic.module';\nimport { DetailsConfig } from '../../sales-opportunities/opportunity';\nimport { OpportunityServiceModule } from '../../sales-opportunities/opportunity-service.module';\n\n@NgModule({\n declarations: [PipelineCardComponent],\n exports: [PipelineCardComponent],\n imports: [\n MatCardModule,\n CommonModule,\n AsyncUiModule,\n TranslateModule,\n RouterModule,\n PreferredCurrencyModule,\n MatIconModule,\n MatCheckboxModule,\n FormsModule,\n VaIconModule,\n MatTooltipModule,\n MeddicModule,\n DragDropModule,\n OpportunityServiceModule,\n ],\n providers: [\n { provide: ALL_SALESPEOPLE, deps: [PIPELINE_CARD_CONFIG_TOKEN], useFactory: allSalesPeopleFactory },\n { provide: DEFAULT_CURRENCY, deps: [PIPELINE_CARD_CONFIG_TOKEN], useFactory: defaultCurrencyFactory },\n {\n provide: OPPORTUNITY_INFO_URL_BUILDER,\n deps: [PIPELINE_CARD_CONFIG_TOKEN],\n useFactory: opportunityUrlBuilderFactory,\n },\n {\n provide: DETAILS_CONFIG_TOKEN,\n deps: [PIPELINE_CARD_CONFIG_TOKEN],\n useFactory: detailsConfigFactory,\n },\n ],\n})\nexport class PipelineCardModule {}\nfunction allSalesPeopleFactory(config: PipelineCardConfig): Observable {\n return config.allSalespeople$;\n}\n\nfunction defaultCurrencyFactory(config: PipelineCardConfig): Observable {\n return config.defaultCurrency$;\n}\n\nfunction opportunityUrlBuilderFactory(config: PipelineCardConfig): OpportunityInfoUrlBuilder {\n return config.opportunityInfoUrlBuilder;\n}\n\nfunction detailsConfigFactory(config: PipelineCardConfig): DetailsConfig {\n return config.detailsConfig;\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { AccountGroup, ProjectionFilter } from '@galaxy/account-group';\nimport { Observable } from 'rxjs';\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\nimport { AccountSelectorApiService } from './account-selector-api.service';\n\nexport interface Account {\n companyName: string;\n accountGroupId: string;\n}\n\nconst accountGroupsToUIAccounts = (ags: AccountGroup[]): Account[] => ags.map(accountGroupToUIAccount);\n\nfunction accountGroupToUIAccount(ag: AccountGroup): Account {\n return { companyName: ag.napData.companyName, accountGroupId: ag.accountGroupId };\n}\n\n@Component({\n selector: 'sales-ui-account-selector',\n templateUrl: './account-selector.component.html',\n styleUrls: ['./account-selector.component.scss'],\n})\nexport class AccountSelectorComponent implements OnInit {\n @Input() allowNoneOption: boolean;\n @Input() parentFormCtrl: FormControl;\n\n @Output() selectedAccountGroupId: EventEmitter = new EventEmitter();\n\n filteredAccounts$: Observable;\n accountControl: FormControl;\n\n constructor(private readonly accountSelectorService: AccountSelectorApiService) {}\n\n ngOnInit(): void {\n this.initFormControl();\n this.filteredAccounts$ = this.getFilteredAccounts();\n this.setupValueEmitter();\n }\n\n displayCompanyName(account?: Account): string | undefined {\n return account?.companyName || undefined;\n }\n\n private initFormControl(): void {\n this.accountControl = this.parentFormCtrl || new FormControl(undefined);\n }\n\n private getFilteredAccounts(): Observable {\n const pf = new ProjectionFilter({ napData: true });\n return this.accountControl.valueChanges.pipe(\n startWith(''),\n map((inputTerm) => {\n const noneIsSelected = inputTerm === undefined;\n if (noneIsSelected) {\n return '';\n }\n return typeof inputTerm === 'string' ? inputTerm : inputTerm.companyName;\n }),\n debounceTime(300),\n switchMap((searchTerm) => this.accountSelectorService.search(pf, searchTerm, 20)),\n map(accountGroupsToUIAccounts),\n );\n }\n\n private setupValueEmitter(): void {\n this.accountControl.valueChanges.subscribe((value) => {\n if (typeof value === 'string') {\n return;\n }\n this.selectedAccountGroupId.emit(value.accountGroupId);\n });\n }\n}\n","\n {{ 'FRONTEND.SALES_UI.ACCOUNT' | translate }}\n \n \n \n {{ 'FRONTEND.SALES_UI.COMMON.NONE_LABEL' | translate }}\n \n \n {{ account.companyName }}\n \n \n\n","import { Component, ViewChild } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { AccountFilterService } from './account-filter.service';\nimport { AccountSelectorComponent } from '../../accounts/account-selector/account-selector.component';\n\n@Component({\n selector: 'sales-ui-account-filter',\n templateUrl: './account-filter.component.html',\n})\nexport class AccountFilterComponent {\n private accountGroupId: string;\n private accountGroupName: string;\n\n @ViewChild('accountSelector') accountSelector: AccountSelectorComponent;\n\n constructor(\n private readonly accountFilterService: AccountFilterService,\n public dialogRef: MatDialogRef,\n ) {}\n\n setAccountGroupId(accountGroupId: string): void {\n this.accountGroupId = accountGroupId;\n this.accountGroupName = this.accountSelector.accountControl.value.companyName;\n }\n\n save(): void {\n this.accountFilterService.setAccountGroupId(this.accountGroupId);\n this.dialogRef.close();\n }\n}\n","

{{ 'FRONTEND.SALES_UI.COMMON.SELECT_ACCOUNT' | translate }}

\n\n \n\n\n \n \n\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { OpportunityTypeFilterService } from './opportunity-type-filter.service';\nimport { firstValueFrom, Observable, ReplaySubject } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { OpportunityTypeFilterStoreService } from './opportunity-type-filter-store.service';\nimport { OpportunityType } from '../../sales-opportunities/interface';\n\n@Component({\n selector: 'sales-ui-opportunity-type-filter',\n templateUrl: './opportunity-type-filter.component.html',\n styleUrls: ['./opportunity-type-filter.component.scss'],\n})\nexport class OpportunityTypeFilterComponent {\n private readonly checkedTypes$$ = new ReplaySubject(1);\n readonly checkedTypes$ = this.checkedTypes$$.asObservable();\n availableTypes$: Observable;\n\n constructor(\n private readonly opportunityTypeFilterService: OpportunityTypeFilterService,\n private readonly opportunityTypeFilterStoreService: OpportunityTypeFilterStoreService,\n public dialogRef: MatDialogRef,\n ) {\n this.availableTypes$ = this.opportunityTypeFilterStoreService.availableTypes$;\n this.opportunityTypeFilterService.selectedTypes$\n .pipe(take(1))\n .subscribe((checkedTypes) => this.checkedTypes$$.next(checkedTypes || []));\n }\n\n public typeIdComparison(option: OpportunityType, value: OpportunityType): boolean {\n return Boolean(option) && Boolean(value) ? option.id === value.id : false;\n }\n\n setTypes(types: OpportunityType[]) {\n this.checkedTypes$$.next(types);\n }\n\n async save(): Promise {\n const types = await firstValueFrom(this.checkedTypes$$);\n this.opportunityTypeFilterService.setTypeSelection(types);\n this.dialogRef.close();\n }\n}\n","

{{ 'FRONTEND.SALES_UI.COMMON.SELECT_TYPE' | translate }}

\n\n \n {{ 'FRONTEND.SALES_UI.PIPELINE.TYPE_LABEL' | translate }}\n \n {{ type.displayName }}\n \n \n\n\n \n \n\n","import { Component, Inject } from '@angular/core';\nimport { Package } from '@vendasta/marketplace-packages';\nimport { BehaviorSubject, Observable, combineLatest, firstValueFrom } from 'rxjs';\nimport { PipelineFilterPackageStoreService } from './pipeline-filter-package-store.service';\nimport { MatDialog } from '@angular/material/dialog';\nimport { PipelineFilterPackageSelectionService } from './pipeline-filter-package-selection.service';\nimport { map, take } from 'rxjs/operators';\nimport { SelectedDropdownItem } from '@galaxy/inventory-ui';\nimport { ItemType, ListActivatableItemsFilters } from '@vendasta/marketplace-apps';\nimport { MARKET_ID_TOKEN, PARTNER_ID_TOKEN } from './tokens';\n\n@Component({\n templateUrl: './pipeline-filter-package-selector.html',\n styleUrls: ['./pipeline-filter-package-selector.scss'],\n})\nexport class PipelineFilterPackageSelectorComponent {\n packages$: Observable;\n selectedItems: SelectedDropdownItem[] = [];\n savingFilter$$: BehaviorSubject = new BehaviorSubject(false);\n savingFilter$: Observable = this.savingFilter$$.asObservable();\n itemSelectorFilters = new ListActivatableItemsFilters({\n itemTypes: [ItemType.ITEM_TYPE_PACKAGE],\n });\n readonly userData$ = combineLatest([this.partnerId$, this.marketId$]).pipe(\n map(([partnerId, marketId]) => {\n return {\n partnerId: partnerId,\n marketId: marketId,\n };\n }),\n );\n\n constructor(\n @Inject(PARTNER_ID_TOKEN) readonly partnerId$: Observable,\n @Inject(MARKET_ID_TOKEN) readonly marketId$: Observable,\n private readonly pkgStore: PipelineFilterPackageStoreService,\n private readonly pkgSelection: PipelineFilterPackageSelectionService,\n private readonly dialog: MatDialog,\n ) {\n this.packages$ = this.pkgStore.packages$;\n\n this.pkgSelection.selectedPackages$.pipe(take(1)).subscribe((checkedPkgs) => {\n this.selectedItems = checkedPkgs.map((p) => ({ appId: p.packageId, name: p.name }));\n });\n }\n\n async handlePackageSelection(): Promise {\n this.savingFilter$$.next(true);\n const packages = await firstValueFrom(this.packages$);\n const selectedPackages = packages.filter((p) => this.selectedItems.some((i) => i.appId === p.packageId));\n this.pkgSelection.setPackageSelection(selectedPackages);\n this.savingFilter$$.next(false);\n this.dialog.closeAll();\n }\n\n onSelectionChange(newSelection: SelectedDropdownItem[]): void {\n this.selectedItems = newSelection;\n }\n}\n","

{{'FRONTEND.SALES_UI.COMMON.SELECT_PACKAGES' | translate}}

\n\n \n\n\n \n \n\n","import { Component, Inject } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { BehaviorSubject, Observable, combineLatest, firstValueFrom } from 'rxjs';\nimport { ProductSelectorService } from './product-selector.service';\nimport { ProductInterface } from '@vendasta/marketplace-packages';\nimport { filter, map, take } from 'rxjs/operators';\nimport { ItemType, ListActivatableItemsFilters } from '@vendasta/marketplace-apps';\nimport { SelectedDropdownItem } from '@galaxy/inventory-ui';\nimport { MARKET_ID_TOKEN, PARTNER_ID_TOKEN } from '../../pipelines/tokens';\n\nexport interface ProductDialogData {\n products: ProductInterface[];\n partnerId: string;\n marketId: string;\n}\n\ninterface CheckedProduct {\n checked: boolean;\n product: ProductInterface;\n}\n\n@Component({\n selector: 'sales-ui-product-selector',\n templateUrl: './product-selector.component.html',\n styleUrls: ['./product-selector.component.scss'],\n})\nexport class ProductSelectorComponent {\n readonly products$: Observable;\n checkedProducts: CheckedProduct[];\n savingFilter$$: BehaviorSubject = new BehaviorSubject(false);\n savingFilter$: Observable = this.savingFilter$$.asObservable();\n\n itemSelectorFilters = new ListActivatableItemsFilters({\n itemTypes: [ItemType.ITEM_TYPE_APP],\n });\n selectedItems: SelectedDropdownItem[] = [];\n\n readonly userData$ = combineLatest([this.partnerId$, this.marketId$]).pipe(\n map(([partnerId, marketId]) => {\n return {\n partnerId: partnerId,\n marketId: marketId,\n };\n }),\n );\n\n constructor(\n @Inject(PARTNER_ID_TOKEN) readonly partnerId$: Observable,\n @Inject(MARKET_ID_TOKEN) readonly marketId$: Observable,\n private readonly dialog: MatDialog,\n private readonly productsService: ProductSelectorService,\n ) {\n this.productsService.selectedProducts$.pipe(take(1)).subscribe((selectedProducts) => {\n this.selectedItems = selectedProducts.map((p) => ({ appId: p.productId, name: p.name }));\n });\n this.products$ = productsService.products$.pipe(filter((p) => !!p));\n }\n\n onSelectionChange(newSelection: SelectedDropdownItem[]): void {\n this.selectedItems = newSelection;\n }\n\n async saveItemSelection(): Promise {\n this.savingFilter$$.next(true);\n const products = await firstValueFrom(this.products$);\n const productsToSearch = [];\n for (const product of products) {\n if (this.selectedItems.find((p) => p.appId === product.productId)) {\n productsToSearch.push(product);\n }\n }\n this.productsService.setProductSelection(productsToSearch);\n this.savingFilter$$.next(true);\n this.dialog.closeAll();\n }\n}\n","

{{ 'FRONTEND.SALES_UI.COMMON.SELECT_PRODUCTS' | translate }}

\n\n \n\n\n \n \n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { Option } from '@vendasta/forms';\nimport { Observable } from 'rxjs';\nimport { SalespersonMultiSelectStoreService } from './salesperson-multi-select.store.service';\nimport { map, take } from 'rxjs/operators';\nimport { UntypedFormControl } from '@angular/forms';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { SalespersonOption } from '../filter-options/salesperson-option.model';\n\n@Component({\n templateUrl: './salesperson-multi-select.component.html',\n styleUrls: ['./salesperson-multi-select.component.scss'],\n})\nexport class SalespersonMultiSelectComponent implements OnInit, OnDestroy {\n selectableSalespeople$: Observable;\n readonly formControl: UntypedFormControl = new UntypedFormControl([], []);\n private readonly subscriptions = SubscriptionList.new();\n\n constructor(\n public dialogRef: MatDialogRef,\n private readonly store: SalespersonMultiSelectStoreService,\n ) {}\n\n ngOnInit(): void {\n this.selectableSalespeople$ = this.store.selectableSalespeople$.pipe(\n map((sp: SalespersonOption[]): Option[] => sp.map((s) => ({ name: s.fullName, value: s.toOptionValue() }))),\n map((sp) => {\n // remove duplicates\n const options = new Set();\n return sp.filter((obj) => {\n if (!options.has(obj.name)) {\n options.add(obj.name);\n return true;\n }\n return false;\n });\n }),\n );\n // set the selected value if the store has a previous value\n this.subscriptions.add(\n this.store.selectedSalespeople$.pipe(\n take(1),\n map((sp: SalespersonOption[]): string[] => sp.map((s) => s.toOptionValue())),\n ),\n (sp) => this.formControl.setValue(sp),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.destroy();\n }\n\n cancel(): void {\n this.dialogRef.close();\n }\n\n save(): void {\n this.store.setSelectedSalespeople(this.formControl.value);\n this.dialogRef.close();\n }\n}\n","

{{ 'FRONTEND.SALES_UI.COMMON.SALESPEOPLE_LABEL' | translate }}

\n\n \n\n\n \n \n\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { Option } from '@vendasta/forms';\nimport { Observable } from 'rxjs';\nimport { SalesTeamMultiSelectStoreService } from './sales-team-multi-select-store.service';\nimport { map, take } from 'rxjs/operators';\nimport { UntypedFormControl } from '@angular/forms';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { SalesTeamOption } from '../filter-options/sales-team-option.model';\n\n@Component({\n selector: 'sales-ui-sales-team-multi-select',\n templateUrl: './sales-team-multi-select.component.html',\n styleUrls: ['./sales-team-multi-select.component.scss'],\n})\nexport class SalesTeamMultiSelectComponent implements OnInit, OnDestroy {\n selectableSalesTeams$: Observable;\n readonly formControl: UntypedFormControl = new UntypedFormControl([], []);\n private readonly subscriptions = SubscriptionList.new();\n\n constructor(\n public dialogRef: MatDialogRef,\n private readonly store: SalesTeamMultiSelectStoreService,\n ) {}\n\n ngOnInit(): void {\n this.selectableSalesTeams$ = this.store.selectableSalesTeams$.pipe(\n map((st: SalesTeamOption[]): Option[] => st.map((s) => ({ name: s.teamName, value: s.toOptionValue() }))),\n );\n this.subscriptions.add(\n this.store.selectedSalesTeams$.pipe(\n take(1),\n map((st: SalesTeamOption[]): string[] => st.map((s) => s.toOptionValue())),\n ),\n (st) => this.formControl.setValue(st),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.destroy();\n }\n\n cancel(): void {\n this.dialogRef.close();\n }\n\n save(): void {\n this.store.setSelectedSalesTeams(this.formControl.value);\n this.dialogRef.close();\n }\n}\n","

{{ 'FRONTEND.SALES_UI.COMMON.SALES_TEAM_LABEL' | translate }}

\n\n \n\n\n \n \n\n","import { Component, OnDestroy } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { combineLatest, Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { UntypedFormControl } from '@angular/forms';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { MultiSelectTag, sortTagOptions } from './tag';\nimport { TagMultiSelectionStoreService } from './tag-multi-selection.service';\n\n@Component({\n selector: 'sales-ui-tag-multi-select',\n templateUrl: './tag-multi-selector.component.html',\n styleUrls: ['./tag-multi-selector.component.scss'],\n})\nexport class TagMultiSelectComponent implements OnDestroy {\n readonly tagOptions$: Observable;\n private readonly subscriptions = SubscriptionList.new();\n readonly formControl: UntypedFormControl = new UntypedFormControl([], []);\n\n constructor(\n public dialogRef: MatDialogRef,\n private readonly store: TagMultiSelectionStoreService,\n ) {\n const oppTags$ = this.store.selectableOppTags$;\n const accTags$ = this.store.selectableAccTags$;\n\n this.tagOptions$ = combineTags(oppTags$, accTags$);\n\n this.subscriptions.add(\n combineLatest([this.store.selectedOppTags$, this.store.selectedAccountTags$]),\n ([oppTags, accTags]) => {\n this.formControl.setValue(oppTags.concat(accTags));\n },\n );\n }\n\n compareObjects(x: any, y: any): boolean {\n return !!x && !!y && JSON.stringify(x) === JSON.stringify(y);\n }\n\n ngOnDestroy(): void {\n this.subscriptions.destroy();\n }\n\n cancel(): void {\n this.dialogRef.close();\n }\n\n save(): void {\n this.store.setTagsSelection(this.formControl.value);\n this.dialogRef.close();\n }\n}\n\nexport function combineTags(\n oppTags$: Observable,\n accTags$: Observable,\n): Observable {\n return combineLatest([oppTags$.pipe(startWith([])), accTags$.pipe(startWith([]))]).pipe(\n map(([oppTags, accTags]) => sortTagOptions(oppTags.concat(accTags))),\n );\n}\n","

{{ 'FRONTEND.SALES_UI.SELECT_TAG' | translate }}

\n\n \n {{ 'FRONTEND.SALES_UI.TAG' | translate }}\n \n \n {{ tag.name }}\n \n \n \n\n\n \n \n\n","import { Component, Inject, OnDestroy } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Package, ProductInterface } from '@vendasta/marketplace-packages';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { DateRange } from '@vendasta/uikit';\nimport { addWeeks, addYears, startOfMonth } from 'date-fns';\nimport { Observable, ReplaySubject, combineLatest, firstValueFrom } from 'rxjs';\nimport { filter, map, shareReplay, skipWhile, startWith } from 'rxjs/operators';\nimport { AccountFilterComponent } from '../../../../filters/account-filter/account-filter.component';\nimport { AccountFilterService } from '../../../../filters/account-filter/account-filter.service';\nimport {\n ActualCloseFilterService,\n AssignedDateFilterService,\n CreatedDateFilterService,\n DateFilterServiceInterface,\n ExpectedCloseFilterService,\n} from '../../../../filters/date-filters/date-filters.service';\nimport {\n DateRangeSelectorDialogComponent,\n DateRangeSelectorDialogData,\n} from '../../../../filters/date-range-selector-dialog/date-range-selector-dialog.component';\nimport { SalesTeamOption } from '../../../../filters/filter-options/sales-team-option.model';\nimport { SalespersonOption } from '../../../../filters/filter-options/salesperson-option.model';\nimport { OpportunityTypeFilterComponent } from '../../../../filters/opportunity-type-filter/opportunity-type-filter.component';\nimport { OpportunityTypeFilterService } from '../../../../filters/opportunity-type-filter/opportunity-type-filter.service';\nimport { PipelineFilterPackageSelectionService } from '../../../../filters/package-selector/pipeline-filter-package-selection.service';\nimport { PipelineFilterPackageSelectorComponent } from '../../../../filters/package-selector/pipeline-filter-package-selector.component';\nimport { ProductSelectorComponent } from '../../../../filters/product-selector/product-selector.component';\nimport { ProductSelectorService } from '../../../../filters/product-selector/product-selector.service';\nimport { SalespersonMultiSelectComponent } from '../../../../filters/salesperson-multi-select/salesperson-multi-select.component';\nimport { SalespersonMultiSelectStoreService } from '../../../../filters/salesperson-multi-select/salesperson-multi-select.store.service';\nimport { SalesTeamMultiSelectStoreService } from '../../../../filters/salesteam-multi-select/sales-team-multi-select-store.service';\nimport { SalesTeamMultiSelectComponent } from '../../../../filters/salesteam-multi-select/sales-team-multi-select.component';\nimport { SALES_TEAMS_SERVICE_TOKEN, SalesTeamsService } from '../../../../filters/salesteam-multi-select/tokens';\nimport { TagMultiSelectionStoreService } from '../../../../filters/tag-selector/tag-multi-selection.service';\nimport { TagMultiSelectComponent } from '../../../../filters/tag-selector/tag-multi-selector.component';\nimport { PipelineBoardService } from '../../../pipeline-board-service/pipeline-board.service';\nimport { PipelineStatusCheckboxComponent } from '../../../pipeline-status-checkbox/pipeline-status-checkbox.component';\nimport {\n PipelineStatusCheckboxService,\n PipelineStatuses,\n} from '../../../pipeline-status-checkbox/pipeline-status-checkbox.service';\nimport { HAS_ACCESS_TO_ALL_ACCOUNTS_IN_MARKET_TOKEN, MARKET_ID_TOKEN, PARTNER_ID_TOKEN } from '../../../tokens';\n\nconst NO_SALESPEOPLE_IN_TEAM_PLACEHOLDER = 'NO-ID';\n\ninterface UserData {\n partnerId: string;\n marketId: string;\n}\n\n@Component({\n selector: 'sales-ui-pipeline-board-filter-chips',\n templateUrl: './pipeline-board-filter-chips.component.html',\n styleUrls: ['./pipeline-board-filter-chips.scss'],\n})\nexport class PipelineBoardFilterChipsComponent implements OnDestroy {\n selectedSalespeopleNames$: Observable;\n selectedSalesTeamNames$: Observable;\n showSalespeopleAndTeams$: Observable;\n private readonly subscriptions = SubscriptionList.new();\n readonly expectedCloseFilter$ = this.expectedCloseFilterService.dateRange$.pipe(\n startWith(null),\n shareReplay(1),\n );\n readonly isExpectedCloseFilterSet$ = this.expectedCloseFilter$.pipe(\n map((boardFilter: DateRange) => !!boardFilter?.start && !!boardFilter?.end),\n );\n readonly expectedCloseFilterDateRange$ = this.expectedCloseFilterService.dateFilterToString$;\n\n readonly actualCloseFilter$: Observable = this.actualCloseFilterService.dateRange$.pipe(\n startWith(null),\n shareReplay(1),\n );\n readonly isActualCloseFilterSet$ = this.actualCloseFilter$.pipe(\n map((boardFilter: DateRange) => !!boardFilter?.start && !!boardFilter?.end),\n );\n readonly actualCloseFilterToString$ = this.actualCloseFilterService.dateFilterToString$;\n readonly selectedAccountGroupName$ = this.accountFilterService.selectedAccountGroupName$;\n\n readonly selectedTypes$ = this.opportunityTypeFilterService.selectedTypes$;\n readonly selectedTypeNames$ = this.opportunityTypeFilterService.selectedTypeNames$;\n\n readonly createdDateFilter$: Observable = this.createdDateFilterService.dateRange$.pipe(\n startWith(null),\n shareReplay(1),\n );\n readonly isCreatedDateFilterSet$ = this.createdDateFilter$.pipe(\n map((boardFilter: DateRange) => !!boardFilter?.start && !!boardFilter?.end),\n );\n readonly createdDateFilterToString$: Observable = this.createdDateFilterService.dateFilterToString$;\n\n readonly assignedDateFilter$: Observable = this.assignedDateFilterService.dateRange$.pipe(\n startWith(null),\n shareReplay(1),\n );\n readonly isAssignedDateFilterSet$ = this.assignedDateFilter$.pipe(\n map((boardFilter: DateRange) => !!boardFilter?.start && !!boardFilter?.end),\n );\n readonly assignedDateFilterToString$: Observable = this.assignedDateFilterService.dateFilterToString$;\n\n private readonly today = new Date();\n private readonly CALENDAR_DEFAULTS = {\n TODAY: this.today,\n ADD_ONE_WEEK: addWeeks(this.today, 1),\n ADD_TWO_YEARS: addYears(this.today, 2),\n START_OF_MONTH: startOfMonth(this.today),\n };\n readonly selectedPackages$: Observable;\n readonly selectedPackagesNames$: Observable;\n readonly selectedProducts$: Observable;\n readonly selectedProductNames$: Observable;\n readonly selectedStatusesNames$: Observable;\n private readonly selectedTags$$ = new ReplaySubject(1);\n readonly selectedTags$: Observable = this.selectedTags$$.asObservable();\n private readonly selectedStatuses$: Observable = this.statusesFilterStore.statuses$;\n readonly hasSelectedStatuses$: Observable = this.selectedStatuses$.pipe(\n map((s: PipelineStatuses): boolean => s?.won || s?.lost || s?.open),\n );\n readonly userData$: Observable;\n\n constructor(\n private readonly dialog: MatDialog,\n private readonly spStore: SalespersonMultiSelectStoreService,\n private readonly tagStore: TagMultiSelectionStoreService,\n private readonly stStore: SalesTeamMultiSelectStoreService,\n @Inject(SALES_TEAMS_SERVICE_TOKEN) private salesTeamsService: SalesTeamsService,\n private readonly store: PipelineBoardService,\n private readonly expectedCloseFilterService: ExpectedCloseFilterService,\n private readonly actualCloseFilterService: ActualCloseFilterService,\n private readonly createdDateFilterService: CreatedDateFilterService,\n private readonly assignedDateFilterService: AssignedDateFilterService,\n private readonly pkgStore: PipelineFilterPackageSelectionService,\n private readonly productSelectorService: ProductSelectorService,\n private readonly accountFilterService: AccountFilterService,\n private readonly opportunityTypeFilterService: OpportunityTypeFilterService,\n @Inject(HAS_ACCESS_TO_ALL_ACCOUNTS_IN_MARKET_TOKEN) private hasAccessToAllAccountsInMarket$: Observable,\n @Inject(PARTNER_ID_TOKEN) readonly partnerId$: Observable,\n @Inject(MARKET_ID_TOKEN) readonly marketId$: Observable,\n private readonly statusesFilterStore: PipelineStatusCheckboxService,\n private readonly i18n: TranslateService,\n ) {\n this.userData$ = combineLatest([this.partnerId$, this.marketId$]).pipe(\n map(([partnerId, marketId]) => {\n return {\n partnerId: partnerId,\n marketId: marketId,\n };\n }),\n );\n this.selectedSalespeopleNames$ = this.spStore.selectedSalespeople$.pipe(\n map((sp: SalespersonOption[]): string => {\n return sp.map((s) => s?.fullName).join(', ');\n }),\n );\n\n this.subscriptions.add(this.salesTeamsService.arrayOfSalesTeamMembers$, (arrayOfSalesPersonIds: string[][]) => {\n return this.filterBySalesTeamMemberIds(arrayOfSalesPersonIds);\n });\n\n this.selectedSalesTeamNames$ = this.stStore.selectedSalesTeams$.pipe(\n map((sp: SalesTeamOption[]): string => sp.map((s) => s.teamName).join(', ')),\n );\n\n this.showSalespeopleAndTeams$ = this.hasAccessToAllAccountsInMarket$;\n this.subscriptions.add(\n combineLatest([this.tagStore.selectedOppTags$, this.tagStore.selectedAccountTags$]),\n ([oppTags, accTags]) => {\n if ((oppTags || []).length === 0 && (accTags || []).length === 0) {\n this.selectedTags$$.next(null);\n } else {\n this.selectedTags$$.next(oppTags.concat(accTags).map((t) => t.name));\n }\n this.dialog.closeAll();\n },\n );\n this.selectedPackages$ = this.pkgStore.selectedPackages$;\n this.selectedPackagesNames$ = this.selectedPackages$.pipe(\n filter((p) => Boolean(p)),\n map((packages) => packages.map((p) => p.name).join(', ')),\n );\n\n this.selectedProducts$ = this.productSelectorService.selectedProducts$;\n this.selectedProductNames$ = this.productSelectorService.selectedProducts$.pipe(\n map((products) => {\n return products.map((p) => p.name).join(', ');\n }),\n );\n\n this.selectedStatusesNames$ = this.buildStatusFitlerChipNames();\n\n const cleanSelectedPackage$ = this.selectedPackages$.pipe(\n // Cast to unknown because Typescript thinks we are using the startWith that accepts a scheduler.\n // null is of type scheduler, so we cast it to unknown to avoid that issue\n startWith(null as unknown),\n map((p) => p || null),\n ) as Observable;\n const selectedProducts$ = this.productSelectorService.selectedProducts$;\n\n cleanSelectedPackage$.pipe(skipWhile((packages) => packages === null));\n selectedProducts$.subscribe(() => this.dialog.closeAll());\n }\n\n private filterBySalesTeamMemberIds(arrayOfSalesPersonIds: string[][]): void {\n const spIds = [];\n this.convert2DSalesTeamMembersToSalespeople(arrayOfSalesPersonIds, spIds);\n if (arrayOfSalesPersonIds && arrayOfSalesPersonIds.length > 0 && spIds.length === 0) {\n this.setSelectedSalesTeamMembers([NO_SALESPEOPLE_IN_TEAM_PLACEHOLDER]);\n } else {\n this.setSelectedSalesTeamMembers(spIds);\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.destroy();\n }\n\n private setSelectedSalespeople(salesPersonIds: string[]): void {\n this.spStore.setSelectedSalespeople(salesPersonIds);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n private setSelectedSalesTeamMembers(salesTeamMemberIds: string[]): void {}\n\n openAccountGroupFilter(): void {\n this.dialog.open(AccountFilterComponent, { width: '400px' });\n }\n\n clearAccountGroupFilter(): void {\n this.accountFilterService.clearAccountGroupFilter();\n }\n\n openOpportunityTypeFilter(): void {\n this.dialog.open(OpportunityTypeFilterComponent, { width: '400px' });\n }\n\n clearOpportunityTypeFilter(): void {\n this.opportunityTypeFilterService.clearOpportunityTypeSelection();\n }\n\n openSalespeopleSelector(): void {\n this.dialog.open(SalespersonMultiSelectComponent, { width: '400px' });\n }\n\n openSalesTeamSelector(): void {\n this.dialog.open(SalesTeamMultiSelectComponent, { width: '400px' });\n }\n\n clearSalespeopleFilters(): void {\n this.spStore.setSelectedSalespeople([]);\n }\n\n openPipelineStatusSelector(): void {\n this.dialog.open(PipelineStatusCheckboxComponent, { width: '400px' });\n }\n\n clearPipelineStatuses(): void {\n this.statusesFilterStore.resetFilter();\n }\n\n openTagSelector(): void {\n this.dialog.open(TagMultiSelectComponent, { width: '400px' });\n }\n clearSalesTeamFilters(): void {\n this.stStore.setSelectedSalesTeams([]);\n }\n\n clearTagFilter(): void {\n this.tagStore.clearTagsSelection();\n }\n\n clearExpectedRangeFilter(): void {\n this.expectedCloseFilterService.clearSelection();\n this.store.clearExpectedClose();\n }\n\n clearActualCloseFilter(): void {\n this.actualCloseFilterService.clearSelection();\n this.store.clearActualClose();\n }\n\n clearCreatedDateFilter(): void {\n this.createdDateFilterService.clearSelection();\n this.store.clearCreatedDate();\n }\n\n clearAssignedDateFilter(): void {\n this.assignedDateFilterService.clearSelection();\n this.store.clearAssignedDate();\n }\n\n async openExpectedCloseDateSelector(): Promise {\n const expectedCloseFilter = await firstValueFrom(this.expectedCloseFilter$);\n\n const data: DateRangeSelectorDialogData = {\n beginDate: expectedCloseFilter?.start ?? this.CALENDAR_DEFAULTS.TODAY,\n endDate: expectedCloseFilter?.end ?? this.CALENDAR_DEFAULTS.ADD_ONE_WEEK,\n maxDate: this.CALENDAR_DEFAULTS.ADD_TWO_YEARS,\n };\n await this.dialogResultsToDateService(data, this.expectedCloseFilterService);\n this.store.sortByExpectedClose();\n }\n\n async openActualCloseSelector(): Promise {\n const actualCloseFilter = await firstValueFrom(this.actualCloseFilter$);\n\n const dateRangeSelectorData = {\n beginDate: actualCloseFilter?.start ?? this.CALENDAR_DEFAULTS.TODAY,\n endDate: actualCloseFilter?.end ?? this.CALENDAR_DEFAULTS.ADD_ONE_WEEK,\n maxDate: this.CALENDAR_DEFAULTS.ADD_TWO_YEARS,\n };\n await this.dialogResultsToDateService(dateRangeSelectorData, this.actualCloseFilterService);\n this.store.sortByActualClose();\n }\n\n async openCreatedDateSelector(): Promise {\n const createdDateFilter = await firstValueFrom(this.createdDateFilter$);\n\n const dateRangeSelectorData = {\n beginDate: createdDateFilter?.start ?? this.CALENDAR_DEFAULTS.START_OF_MONTH,\n endDate: createdDateFilter?.end ?? this.CALENDAR_DEFAULTS.TODAY,\n maxDate: this.CALENDAR_DEFAULTS.TODAY,\n };\n await this.dialogResultsToDateService(dateRangeSelectorData, this.createdDateFilterService);\n this.store.sortByCreatedDate();\n }\n\n async openAssignedDateSelector(): Promise {\n const assignedDateFilter = await firstValueFrom(this.assignedDateFilter$);\n\n const dateRangeSelectorData = {\n maxDate: this.CALENDAR_DEFAULTS.TODAY,\n beginDate: assignedDateFilter?.start ?? this.CALENDAR_DEFAULTS.START_OF_MONTH,\n endDate: assignedDateFilter?.end ?? this.CALENDAR_DEFAULTS.TODAY,\n };\n await this.dialogResultsToDateService(dateRangeSelectorData, this.assignedDateFilterService);\n this.store.sortByAssignedDate();\n }\n\n private async dialogResultsToDateService(\n dateRangeSelectorData: DateRangeSelectorDialogData,\n dateService: DateFilterServiceInterface,\n ): Promise {\n const dialogRef = this.dialog.open(DateRangeSelectorDialogComponent, { data: dateRangeSelectorData });\n return firstValueFrom(\n dialogRef.afterClosed().pipe(\n filter((d) => Boolean(d)),\n map((results: DateRangeSelectorDialogData) => dateService.setDateRange(results.beginDate, results.endDate)),\n ),\n );\n }\n\n public openPackageSelector(): void {\n this.dialog.open(PipelineFilterPackageSelectorComponent, { width: '400px' });\n }\n\n public openProductSelector(): void {\n this.dialog.open(ProductSelectorComponent, {\n width: '400px',\n });\n }\n\n private convert2DSalesTeamMembersToSalespeople(salesTeamMembers: string[][], salespeople: string[]): void {\n for (const idx in salesTeamMembers) {\n if (salesTeamMembers[idx]) {\n salesTeamMembers[idx].map((newId) => {\n if (!salespeople.includes(newId)) {\n salespeople.push(newId);\n }\n });\n }\n }\n }\n\n clearPackageFilter(): void {\n this.pkgStore.clearPackageSelection();\n }\n\n clearProductsFilter(): void {\n this.productSelectorService.clearProductSelection();\n }\n\n private buildStatusFitlerChipNames(): Observable {\n const i18nWonKey = 'FRONTEND.SALES_OPPORTUNITIES.WON_FILTER';\n const i18nLostKey = 'FRONTEND.SALES_OPPORTUNITIES.LOST_FILTER';\n const i18nOpenKey = 'FRONTEND.SALES_OPPORTUNITIES.OPEN_FILTER';\n return combineLatest([this.i18n.stream([i18nWonKey, i18nLostKey, i18nOpenKey]), this.selectedStatuses$]).pipe(\n map(([translations, s]: [any, PipelineStatuses]): string => {\n const won = s?.won ? translations[i18nWonKey] : '';\n const lost = s?.lost ? translations[i18nLostKey] : '';\n const open = s?.open ? translations[i18nOpenKey] : '';\n return [won, lost, open].filter(Boolean).join(', ');\n }),\n );\n }\n}\n","\n \n {{ 'FRONTEND.SALES_UI.COMMON.SALESPEOPLE_LABEL' | translate }}:\n {{ names }}\n
\n \n {{ 'FRONTEND.SALES_UI.COMMON.SALES_TEAM_LABEL' | translate }}:\n {{ names }}\n \n 0\"\n [canRemove]=\"true\"\n (clicked)=\"openPackageSelector()\"\n (delete)=\"clearPackageFilter()\"\n >\n {{ 'FRONTEND.SALES_UI.COMMON.PACKAGES_LABEL' | translate }}:\n \n {{ selectedPackagesNames$ | async }}\n \n \n 0\"\n [canRemove]=\"true\"\n (clicked)=\"openProductSelector()\"\n (delete)=\"clearProductsFilter()\"\n >\n {{ 'FRONTEND.SALES_UI.COMMON.PRODUCTS_LABEL' | translate }}:\n \n {{ selectedProductNames$ | async }}\n \n \n\n \n {{ 'FRONTEND.SALES_UI.PIPELINE.STATUS_LABEL' | translate }}:\n \n {{ selectedStatusesNames$ | async }}\n \n \n\n \n {{ 'FRONTEND.SALES_UI.COMMON.TAG' | translate }}:\n {{ tags }}\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.EXPECTED_CLOSE_LABEL' | translate }}:\n \n {{ expectedCloseFilterDateRange$ | async }}\n \n \n\n \n {{ 'FRONTEND.SALES_UI.PIPELINE.ACTUAL_CLOSE_LABEL' | translate }}:\n \n {{ actualCloseFilterToString$ | async }}\n \n \n\n \n {{ 'FRONTEND.SALES_UI.ACCOUNT' | translate }}:\n \n {{ selectedAccountGroupName$ | async }}\n \n \n\n 0\"\n [canRemove]=\"true\"\n >\n {{ 'FRONTEND.SALES_UI.PIPELINE.TYPE_LABEL' | translate }}:\n \n {{ selectedTypeNames$ | async }}\n \n \n\n \n {{ 'FRONTEND.SALES_UI.PIPELINE.CREATED_DATE_LABEL' | translate }}:\n \n {{ createdDateFilterToString$ | async }}\n \n \n\n \n {{ 'FRONTEND.SALES_UI.PIPELINE.ASSIGNED_DATE_LABEL' | translate }}:\n \n {{ assignedDateFilterToString$ | async }}\n \n \n\n \n \n \n \n \n \n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.STATUS_LABEL' | translate }}...\n \n \n \n \n \n \n \n \n \n\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { SalesTeamsService } from '../../../../filters/salesteam-multi-select/tokens';\nimport { PipelineCardConfig } from '../../../pipeline-card/tokens';\n\nexport interface PipelineBoardFilterChipsConfig extends PipelineCardConfig {\n hasAccessToAllAccountsInMarket$: Observable;\n salesTeamsService: SalesTeamsService;\n}\n\nexport const PIPELINE_BOARD_FILTER_CHIPS_CONFIG_TOKEN = new InjectionToken(\n 'general dependency data for the pipeline table filter chips',\n);\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { OpportunitiesForStage } from '../pipeline-board/interfaces';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { PipelineBoardService } from '../pipeline-board-service/pipeline-board.service';\nimport { WorkStates } from '@vendasta/rx-utils/work-state';\nimport { Opportunity } from '@vendasta/sales-opportunities';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { filter, map, mergeMap, publishReplay, refCount, switchMap, take } from 'rxjs/operators';\nimport { StageInterface } from '@vendasta/sales-opportunities';\n\n@Component({\n selector: 'sales-ui-pipeline-stage',\n templateUrl: './stage.component.html',\n styleUrls: ['./stage.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class StageComponent {\n @Output() draggedOpportunityId = new EventEmitter();\n @Output() selectedOpportunity = new EventEmitter();\n\n _stage: StageInterface;\n state: WorkStates;\n readonly opportunities$: Observable;\n readonly opportunitiesWithStage$: Observable;\n private readonly stage$$ = new ReplaySubject(1);\n\n constructor(readonly store: PipelineBoardService) {\n this.opportunities$ = this.stage$$.asObservable().pipe(\n filter((s) => !!s),\n take(1),\n mergeMap((stage) => this.store.opportunitiesInStage$(stage)),\n publishReplay(1),\n refCount(),\n );\n\n this.opportunitiesWithStage$ = this.stage$$.pipe(\n switchMap((stage) =>\n this.opportunities$.pipe(\n map(\n (opps) =>\n {\n stage: stage,\n opportunities: opps,\n },\n ),\n ),\n ),\n );\n }\n\n @Input() set stage(stage: StageInterface) {\n this.stage$$.next(stage);\n this._stage = stage;\n this.state = this.store.stageState(stage.stageId);\n }\n\n drop(event: CdkDragDrop): void {\n if (event.previousContainer !== event.container) {\n const col: OpportunitiesForStage = event.previousContainer.data;\n const opp = col.opportunities[event.previousIndex];\n this.draggedOpportunityId.emit(opp.opportunityId);\n const newProb = event.container.data.stage.probability;\n\n // TODO: Disable movement until update finishes.\n this.store.updateProbability(opp, newProb);\n this.store.doLoadMoreIfNecessary(\n event.previousContainer.data.opportunities.length,\n event.previousContainer.data.stage,\n );\n }\n }\n\n @HostListener('scroll', ['$event'])\n getNextPage(event: any): void {\n if (event.target.offsetHeight + event.target.scrollTop >= event.target.scrollHeight) {\n this.store.doGetNextPageFor(this._stage);\n }\n }\n\n handleOpportunitySelected(opportunity: Opportunity): void {\n this.selectedOpportunity.emit(opportunity);\n }\n}\n","\n \n \n \n
\n \n
\n
\n \n
\n\n","import { Component, EventEmitter, Inject, Output } from '@angular/core';\nimport { CURRENT_PIPELINE, Pipeline, USER_PIPELINES_TOKEN } from '@vendasta/sales-common';\nimport { Opportunity, StageInterface } from '@vendasta/sales-opportunities';\nimport { combineLatest, firstValueFrom, Observable, startWith } from 'rxjs';\nimport { map, shareReplay, switchMap } from 'rxjs/operators';\nimport { SortSelection } from '../../pipeline-board-service/interfaces';\nimport { PipelineBoardService, SORT_DIRECTIONS } from '../../pipeline-board-service/pipeline-board.service';\nimport { PipelineField, PipelineSort } from '../../pipeline-sort';\nimport { PipelineStageStats, PipelineStats } from '../../pipeline-stats/pipeline-stats.service';\nimport {\n PIPELINE_SETTINGS_ACCESS_TOKEN,\n DEFAULT_CURRENCY_CODE_TOKEN,\n PARTNER_ID_TOKEN,\n PIPELINE_SETTINGS_URL_TOKEN,\n} from '../../tokens';\nimport { FeatureFlagService } from '@galaxy/partner';\nimport { Router } from '@angular/router';\n@Component({\n selector: 'sales-ui-pipeline-board-filtered',\n templateUrl: './pipeline-board-filtered.component.html',\n styleUrls: ['./pipeline-board-filtered.component.scss'],\n})\nexport class PipelineBoardFilteredComponent {\n @Output() sortAction = new EventEmitter();\n @Output() draggedOpportunityId = new EventEmitter();\n @Output() selectedOpportunity = new EventEmitter();\n @Output() sortDirection = new EventEmitter();\n @Output() changePipeline = new EventEmitter();\n\n protected readonly currency$: Observable = this.defaultCurrencyCode$;\n protected readonly statsMap = new Map>();\n\n protected readonly pipelineField = PipelineField;\n protected readonly sortSelection$: Observable;\n protected readonly sortDirection$: Observable;\n protected readonly sortDirectionIcon$: Observable;\n\n protected readonly opportunitiesVisibleCount$: Observable;\n protected readonly stages$: Observable;\n private readonly pipelineSettingsFeatureFlag = 'pcc_pipeline_settings';\n protected readonly hasAccessToPipelineSettings$: Observable;\n\n constructor(\n private readonly pipelineStats: PipelineStats,\n @Inject(USER_PIPELINES_TOKEN) protected readonly pipelines$: Observable,\n @Inject(DEFAULT_CURRENCY_CODE_TOKEN) private readonly defaultCurrencyCode$: Observable,\n @Inject(PIPELINE_SETTINGS_URL_TOKEN) private readonly pipelineSettingsURL: string,\n @Inject(PIPELINE_SETTINGS_ACCESS_TOKEN) private readonly canAccessPipelineSettings$: Observable,\n @Inject(CURRENT_PIPELINE) protected readonly currentPipeline$: Observable,\n @Inject(PARTNER_ID_TOKEN) private readonly partnerId$: Observable,\n private readonly pipelineBoardService: PipelineBoardService,\n private readonly featureFlagService: FeatureFlagService,\n private readonly router: Router,\n ) {\n const hasPipelineSettingsFeatureFlag$ = this.partnerId$.pipe(\n switchMap((partnerId) =>\n this.featureFlagService.batchGetStatus(partnerId, '', [this.pipelineSettingsFeatureFlag]),\n ),\n map((featureFlags) => featureFlags?.[this.pipelineSettingsFeatureFlag] || false),\n startWith(false),\n );\n\n this.hasAccessToPipelineSettings$ = combineLatest([\n hasPipelineSettingsFeatureFlag$,\n this.canAccessPipelineSettings$,\n ]).pipe(\n map(([featureFlag, hasAccess]) => featureFlag && !!this.pipelineSettingsURL && hasAccess),\n startWith(false),\n );\n\n this.opportunitiesVisibleCount$ = this.pipelineStats.totalVisibleOpportunitiesForAllStages$.pipe(shareReplay(1));\n\n this.sortSelection$ = this.pipelineBoardService.sortSelection$;\n this.sortDirection$ = this.pipelineBoardService.defaultSortDirection$;\n\n this.sortDirectionIcon$ = this.sortDirection$.pipe(\n map((defaultSortDirection) => (defaultSortDirection ? 'arrow_downwards' : 'arrow_upwards')),\n );\n\n this.stages$ = this.currentPipeline$.pipe(map((pipeline) => pipeline.stages));\n const root = document.documentElement;\n\n this.stages$.subscribe((stages) => {\n root.style.setProperty('--stage-count', `${stages.length}`);\n for (const stage of stages) {\n this.statsMap.set(stage.stageId, this.pipelineStats.getStatsForStage$(stage.stageId));\n }\n });\n\n this.pipelineBoardService.applyFiltersFromQueryParams();\n }\n\n protected changeSelectedPipeline(pipelineID: string): void {\n this.changePipeline.emit(pipelineID);\n }\n\n protected async openPipelineSettings(): Promise {\n const hasAccess = await firstValueFrom(this.canAccessPipelineSettings$);\n if (hasAccess) {\n const pipeline = await firstValueFrom(this.currentPipeline$);\n if (pipeline.id !== 'DEFAULT') {\n this.router.navigateByUrl(this.pipelineSettingsURL + pipeline.id);\n } else {\n this.router.navigateByUrl(this.pipelineSettingsURL);\n }\n }\n }\n\n protected sortActions(action: PipelineField): void {\n this.sortAction.emit({ active: action });\n }\n\n protected dropOpportunity($event: string): void {\n this.draggedOpportunityId.emit($event);\n }\n\n protected changeSortDirection(): void {\n this.sortDirection.emit();\n }\n\n protected handleOpportunitySelected($event: Opportunity): void {\n this.selectedOpportunity.emit($event);\n }\n}\n","\n \n \n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.PIPELINE_BOARD.SORT_ACTIONS.EXPECTED_CLOSE_DATE' | translate }}\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.PIPELINE_BOARD.SORT_ACTIONS.ACTUAL_CLOSE_DATE' | translate }}\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.PIPELINE_BOARD.SORT_ACTIONS.LAST_CONNECTED_DATE' | translate }}\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.PIPELINE_BOARD.SORT_ACTIONS.LAST_SALES_ACTIVITY' | translate }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ pipeline.name }}\n \n \n @if (hasAccessToPipelineSettings$ | async) {\n \n \n }\n \n \n \n \n\n \n\n
\n
\n \n
\n \n
\n
\n
\n
\n \n
\n
\n {{ stage.name }}\n
\n \n {{ stats.totalOpportunities }}\n \n
\n
\n {{ stats.revenue | formatCurrency: (currency$ | async) }}\n 0\">\n \n balance\n \n {{ stats.weightedRevenue | formatCurrency: (currency$ | async) }}\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n","import { NgModule } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { FilterModule } from '@vendasta/va-filter2';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { PipelineBoardFilterChipsComponent } from './pipeline-board-filter-chips/pipeline-board-filter-chips.component';\nimport { FilterChipsModule } from '../../../filters/filter-chips/filter-chips.module';\nimport { MatMenuModule } from '@angular/material/menu';\nimport {\n PIPELINE_BOARD_FILTER_CHIPS_CONFIG_TOKEN,\n PipelineBoardFilterChipsConfig,\n} from './pipeline-board-filter-chips/tokens';\nimport {\n HAS_ACCESS_TO_ALL_ACCOUNTS_IN_MARKET_TOKEN,\n SALES_TEAM_SERVICE_TOKEN,\n SalesTeamServiceInterface,\n} from '../../tokens';\nimport { PipelineBoardFilteredComponent } from './pipeline-board-filtered.component';\nimport { GalaxyPageModule } from '@vendasta/galaxy/page';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { PipelineSavedFiltersModule } from '../../pipeline-saved-filters/pipeline-saved-filters.module';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { EmptyStateModule, VaBadgeModule } from '@vendasta/uikit';\nimport { PreferredCurrencyModule } from '@vendasta/sales-common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { StageComponent } from '../../pipeline-board-stage/stage.component';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PipelineCardModule } from '../../pipeline-card/pipeline-card.module';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { PIPELINE_CARD_CONFIG_TOKEN, PipelineCardConfig } from '../../pipeline-card/tokens';\nimport { MatDivider } from '@angular/material/divider';\n\n@NgModule({\n declarations: [PipelineBoardFilterChipsComponent, PipelineBoardFilteredComponent, StageComponent],\n exports: [PipelineBoardFilterChipsComponent, PipelineBoardFilteredComponent, StageComponent],\n providers: [\n {\n provide: HAS_ACCESS_TO_ALL_ACCOUNTS_IN_MARKET_TOKEN,\n deps: [PIPELINE_BOARD_FILTER_CHIPS_CONFIG_TOKEN],\n useFactory: hasAccessToAllAccountsInMarketFactory,\n },\n {\n provide: SALES_TEAM_SERVICE_TOKEN,\n deps: [PIPELINE_BOARD_FILTER_CHIPS_CONFIG_TOKEN],\n useFactory: salesTeamsServiceFactory,\n },\n {\n provide: PIPELINE_CARD_CONFIG_TOKEN,\n deps: [PIPELINE_BOARD_FILTER_CHIPS_CONFIG_TOKEN],\n useFactory: pipelineCardConfigFactory,\n },\n ],\n imports: [\n CommonModule,\n FilterChipsModule,\n FilterModule,\n MatDialogModule,\n TranslateModule,\n MatMenuModule,\n GalaxyPageModule,\n MatInputModule,\n MatIconModule,\n PipelineSavedFiltersModule,\n MatTooltipModule,\n VaBadgeModule,\n PreferredCurrencyModule,\n EmptyStateModule,\n DragDropModule,\n MatButtonModule,\n MatFormFieldModule,\n PipelineCardModule,\n MatProgressSpinnerModule,\n MatDivider,\n ],\n})\nexport class PipelineBoardFiltersModule {}\n\nfunction hasAccessToAllAccountsInMarketFactory(config: PipelineBoardFilterChipsConfig): Observable {\n return config.hasAccessToAllAccountsInMarket$;\n}\n\nfunction salesTeamsServiceFactory(config: PipelineBoardFilterChipsConfig): SalesTeamServiceInterface {\n return config.salesTeamsService;\n}\n\nfunction pipelineCardConfigFactory(config: PipelineBoardFilterChipsConfig): PipelineCardConfig {\n return {\n allSalespeople$: config.allSalespeople$,\n defaultCurrency$: config.defaultCurrency$,\n opportunityInfoUrlBuilder: config.opportunityInfoUrlBuilder,\n detailsConfig: config.detailsConfig,\n };\n}\n","import { Injectable } from '@angular/core';\nimport { AppCacheService, CacheEntry, ClientOrigin } from '../../../cache/app-cache.service';\n\nconst LAST_VIEWED_PIPELINE_ORIGIN_KEY = ClientOrigin.PIPELINE_PAGE_VIEW;\n\nexport enum PipelineBoardViews {\n DEFAULT_TABLE = 'default-table',\n DEFAULT_BOARD = 'default-board',\n}\n\n@Injectable()\nexport class PipelinePageCacheService {\n constructor(private readonly appCache: AppCacheService) {}\n\n get lastViewedPipelinePageView(): PipelineBoardViews {\n const cacheEntry = this.appCache.get(LAST_VIEWED_PIPELINE_ORIGIN_KEY);\n return cacheEntry.isCacheHit\n ? this.appCache.get(LAST_VIEWED_PIPELINE_ORIGIN_KEY).value\n : PipelineBoardViews.DEFAULT_BOARD;\n }\n\n setLastViewedPipelinePageView(view: PipelineBoardViews): void {\n const entry = {\n origin: LAST_VIEWED_PIPELINE_ORIGIN_KEY,\n value: JSON.stringify(view),\n };\n this.appCache.add(entry);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { PipelinePageCacheService } from './pipeline-page-cache.service';\nimport { SelectedPipelineCacheService } from './selected-pipeline-cache.service';\n\n@NgModule({\n providers: [PipelinePageCacheService, SelectedPipelineCacheService],\n})\nexport class PipelineCacheModule {}\n","import { NgModule } from '@angular/core';\nimport { UserPipelines } from './user-pipelines';\nimport { Observable } from 'rxjs';\nimport { PARTNER_ID_TOKEN, USER_PIPELINES_SERVICE_CONFIG_TOKEN, UserPipelinesServiceConfig } from './tokens';\nimport { PipelineCacheModule } from '../pipeline/cache/pipeline-cache.module';\n\n@NgModule({\n imports: [PipelineCacheModule],\n providers: [\n UserPipelines,\n { provide: PARTNER_ID_TOKEN, deps: [USER_PIPELINES_SERVICE_CONFIG_TOKEN], useFactory: partnerIdFactory },\n ],\n})\nexport class UserPipelinesModule {}\n\nfunction partnerIdFactory(config: UserPipelinesServiceConfig): Observable {\n return config.partnerId$;\n}\n","import { Component, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { addMonths, format, getYear, isEqual } from 'date-fns';\nimport { getUTCEndOfMonth } from '@vendasta/galaxy/utility/date-utils';\nimport { PotentialRevenueService } from '../potential-revenue.service';\nimport { RevenueSelectorChoice } from './revenue-date-dropdown.component.interfaces';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { getLocale } from '@vendasta/galaxy/utility/locale';\n\nconst MAX_MONTHS_TO_DISPLAY = 6;\n\n@Component({\n selector: 'sales-ui-revenue-date-selector',\n templateUrl: './revenue-date-selector.component.html',\n styleUrls: ['./revenue-date-selector.component.scss'],\n})\nexport class RevenueDateSelectorComponent implements OnInit {\n monthYearRevenueFilterList: RevenueSelectorChoice[];\n currentSelection$: Observable;\n\n private readonly initialSelection = {\n monthYear: null,\n displayString: this.translate.stream('FRONTEND.SALES_UI.PIPELINE.REVENUE_FOR_DATE_PERIOD', {\n date: getYear(new Date()),\n }),\n };\n\n constructor(\n private readonly translate: TranslateService,\n private readonly revenueDateService: PotentialRevenueService,\n ) {}\n\n ngOnInit(): void {\n this.monthYearRevenueFilterList = this.generateMonthYearRevenueList();\n\n this.currentSelection$ = this.revenueDateService.selectedDate$.pipe(\n map((d) => {\n if (d === null) {\n return this.initialSelection;\n }\n\n return this.monthYearRevenueFilterList.find((m) => isEqual(m.monthYear, d));\n }),\n );\n }\n\n changeDate($event: RevenueSelectorChoice): void {\n this.revenueDateService.setDate($event.monthYear);\n }\n\n private generateMonthYearRevenueList(): RevenueSelectorChoice[] {\n const options = [this.initialSelection];\n\n for (let i = 0; i < MAX_MONTHS_TO_DISPLAY; i++) {\n const temp = getUTCEndOfMonth(addMonths(new Date(), i));\n options.push({\n monthYear: temp,\n displayString: of(format(temp, 'MMMM yyyy', { locale: getLocale() })),\n });\n }\n\n return options;\n }\n}\n","\n \n \n {{ monthYear.displayString | async }}\n \n \n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RevenueDateSelectorComponent } from './revenue-date-selector.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatSelectModule } from '@angular/material/select';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\n\n@NgModule({\n declarations: [RevenueDateSelectorComponent],\n imports: [CommonModule, ReactiveFormsModule, TranslateModule, MatSelectModule, FormsModule, GalaxyFormFieldModule],\n exports: [RevenueDateSelectorComponent],\n})\nexport class RevenueDateDropdownModule {}\n","import { Component, Pipe, PipeTransform } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { PotentialRevenueService } from './potential-revenue.service';\nimport format from 'date-fns/format';\nimport { getLocale } from '@vendasta/galaxy/utility/locale';\n\n@Component({\n selector: 'sales-ui-potential-revenue',\n templateUrl: './potential-revenue.component.html',\n styleUrls: ['./potential-revenue.component.scss'],\n})\nexport class PotentialRevenueComponent {\n potentialRevenue$ = this.potentialRevenueService.potentialRevenue$;\n weightedPotentialRevenue$ = this.potentialRevenueService.weightedPotentialRevenue$;\n monthlyRevenue$ = this.potentialRevenueService.monthlyRevenue$;\n monthlyWeightedRevenue$ = this.potentialRevenueService.monthlyWeightedRevenue$;\n currency$ = this.potentialRevenueService.currency$;\n isPotentialRevenueLoaded$ = this.potentialRevenueService.isPotentialRevenueLoaded$;\n readonly selectedDate$ = this.potentialRevenueService.selectedDate$;\n showMonthlyRevenue$ = this.selectedDate$.pipe(map((date) => !!date));\n\n constructor(private readonly potentialRevenueService: PotentialRevenueService) {}\n}\n\n@Pipe({\n name: 'monthYear',\n})\nexport class MonthYearPipe implements PipeTransform {\n transform(date: Date): string {\n if (!date) {\n return '';\n }\n\n return format(date, 'MMMM yyyy', { locale: getLocale() });\n }\n}\n","
\n \n
\n
\n {{ selectedDate$ | async | monthYear }}\n {{ 'FRONTEND.SALES_UI.PROJECTED_MONTHLY_REVENUE' | translate }}:\n
\n
\n {{ monthlyRevenue$ | async | formatCurrency : prefCurrency }}\n
\n
0\" class=\"value\">\n balance\n {{ monthlyWeightedRevenue$ | async | formatCurrency : prefCurrency }}\n
\n
\n
\n
{{ 'FRONTEND.SALES_UI.PIPELINE.POTENTIAL_REVENUE' | translate }}:
\n
\n {{ potentialRevenue$ | async | formatCurrency : prefCurrency }}\n
\n
0\" class=\"value\">\n balance\n {{ weightedPotentialRevenue$ | async | formatCurrency : prefCurrency }}\n
\n
\n
\n
\n\n\n \n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MonthYearPipe, PotentialRevenueComponent } from './potential-revenue.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PreferredCurrencyModule } from '@vendasta/sales-common';\nimport { RevenueDateDropdownModule } from './revenue-date-dropdown/revenue-date-dropdown.module';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { PotentialRevenueService } from './potential-revenue.service';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n providers: [PotentialRevenueService],\n declarations: [PotentialRevenueComponent, MonthYearPipe],\n imports: [\n CommonModule,\n TranslateModule,\n PreferredCurrencyModule,\n RevenueDateDropdownModule,\n MatProgressSpinnerModule,\n MatIconModule,\n ],\n exports: [PotentialRevenueComponent],\n})\nexport class PotentialRevenueModule {}\n","{\n \"FRONTEND\": {\n \"SALES_UI\": {\n \"OPPORTUNITY_ATTACHMENT\": {\n \"ADD_ATTACHMENT\": \"Add attachment\",\n \"FILE\": \"file\",\n \"ATTACHMENT_ADDING_ERROR\": \"There was an error adding the attachment to the opportunity. Please try again\",\n \"ATTACHMENT_UPLOAD_ERROR\": \"Something went wrong uploading the attachment\",\n \"ATTACHMENT_UPLOAD_SUCCESS\": \"Successfully added attachment\",\n \"ATTACHMENTS\": \"Attachments\",\n \"NO_ATTACHMENTS_MESSAGE\": \"There are no attachments for this opportunity.\"\n },\n \"SALES_OPPORTUNITIES\": {\n \"REOPENING_OPPORTUNITIES\": {\n \"MUST_ENTER_REASON_ON_REOPEN\": \"You must enter a reason for reopening this opportunity.\",\n \"REOPEN_OPPORTUNITY_ACTION\": \"Reopen opportunity ({{ opportunityName }})\",\n \"OPPORTUNITY_REOPEN_DETAILS\": \"This will reopen the opportunity and allow you to edit its details.\",\n \"OPPORTUNITY_REOPEN_REASON\": \"Reason for reopening opportunity\",\n \"CANNOT_REOPEN_OPPORTUNITY\": \"Unable to reopen opportunity. Please try again.\"\n },\n \"OPPORTUNITY_VALUE\": \"Opportunity value\",\n \"REOPEN\": \"Reopen\",\n \"ADD_PACKAGES\": \"Add packages\",\n \"OPPORTUNITIES_LABEL\": \"Opportunities\",\n \"SUCCESSFUL_CREATION\": \"Successfully created opportunity\",\n \"OPPORTUNITY_CREATE\": \"Create sales opportunity\",\n \"OPPORTUNITY_NAME\": \"Opportunity name\",\n \"EMPTY_OPPORTUNITIES_DESCRIPTION\": \"There are no opportunities.\",\n \"POTENTIAL_REVENUE\": \"Potential revenue\",\n \"PROJECTED_MONTHLY_REVENUE\": \"Monthly revenue\",\n \"MONTHLY_REVENUE\": \"Monthly revenue\",\n \"PROBABILITY_TO_CLOSE\": \"{{percentage}}% probability.\",\n \"NO_ASSIGNEE_TEXT\": \"Salesperson deleted\",\n \"NO_PACKAGES_TIP\": \"Create sales opportunities using the packages in your store. Come back to begin tracking your opportunities as packages become available.\",\n \"PROBABILITY_OF_CLOSE\": \"Probability of close\",\n \"PIPELINE_STAGE\": \"Pipeline stage\",\n \"EXPECTED_CLOSE_PLACEHOLDER\": \"Expected close date\",\n \"SELECT_PACKAGES\": \"Select packages *\",\n \"SELECT_A_PACKAGE_ERROR\": \"At least one package must be selected\",\n \"SELECT_QUANTITIES\": \"Select package quantities\",\n \"NO_NOTES_FOR_OPPORTUNITY\": \"There are no notes for this opportunity.\",\n \"NO_PACKAGES_FOR_OPPORTUNITY\": \"There are no packages for this opportunity.\",\n \"REMOVE_PACKAGE_CONFIRMATION\": \"Are you sure you want to remove {{ packageName }}?\",\n \"PACKAGE_WILL_BE_REMOVED\": \"The package will be removed from this opportunity.\",\n \"REVENUE_TOOLTIP\": \"This adds up all one-time fees and calculates all recurring revenue for the contract length. To change this value, edit the revenue for the packages below.\",\n \"QUANTITIES\": \"Quantities\",\n \"QUANTITY\": \"Quantity\",\n \"DETAILS\": \"Details\",\n \"ACTIVITY\": \"Activity\",\n \"ASSIGNED_TO\": \"Assigned to {{ person }}\",\n \"ASSIGN_TO\": \"Assign to\",\n \"SUBSCRIBERS\": \"Subscribers\",\n \"OVERVIEW\": \"Overview\",\n \"BUSINESS\": \"Business:\",\n \"CONTRACT_DURATION_REVENUE\": \"{{ durationAndPeriod }} revenue\",\n \"DEFAULT_DURATION_REVENUE\": \"Per year\",\n \"ADD_OPPORTUNITY_TAGS\": \"Add opportunity tags\",\n \"CLOSED_WON\": \"Closed won\",\n \"CLOSED_LOST\": \"Closed lost\",\n \"WON\": \"Won\",\n \"LOST\": \"Lost\",\n \"OPEN\": \"Open\",\n \"WON_FILTER\": \"closed-won\",\n \"LOST_FILTER\": \"closed-lost\",\n \"OPEN_FILTER\": \"open\",\n \"STAGE\": \"Stage\",\n \"ACTUAL_CLOSE_DATE_UPDATED\": \"Actual close date updated\",\n \"OPPS_NOT_ON_PIPELINE\": \"Migrate opportunities\",\n \"HIDE_ORPHANED_OPPORTUNITIES\": \"Show pipeline\",\n \"SUCCESSFULLY_ASSIGNED_OPPORTUNITIES\": \"Successfully assigned all selected opportunities\",\n \"FAILED_TO_ASSIGNED_OPPORTUNITIES\": \"Failed to assign one or more opportunities, please try again\",\n \"OPPORTUNITY_ITEMS_REQUIRED\": \"You must add at least one item to the opportunity contents\",\n \"ACCOUNT_REQUIRED\": \"You must select an account for the opportunity\",\n \"OPPORTUNITY_CONTENTS\": \"Items\",\n \"CLOSE\": {\n \"CLOSE_OPPORTUNITY\": \"Close opportunity\",\n \"TITLE\": \"Close opportunity\",\n \"CLOSE_STATE\": \"Close state\",\n \"MESSAGE\": \"This will close the opportunity with the current revenue and packages. The opportunity will no longer be editable.\",\n \"OPPORTUNITY_CLOSE\": \"Close opportunity\",\n \"SELECT_STATE\": \"Select state\",\n \"CLOSED_LOST\": {\n \"REASON\": \"Reason\",\n \"SELECT_REASON\": \"Select reason\",\n \"PRICE\": \"Price\",\n \"NO_BUDGET\": \"No budget\",\n \"LOST_TO_COMPETITOR\": \"Lost to competitor\",\n \"NOT_READY\": \"Not ready\",\n \"OTHER\": \"Other\"\n }\n },\n \"OPPORTUNITY_INFO\": \"Opportunity info\",\n \"ACCOUNT_INFO\": \"Account info\",\n \"ITEMS\": \"Items\",\n \"ERRORS\": {\n \"BAD_DATE_ERROR\": \"Date cannot be before today\",\n \"INCORRECT_DATE_FORMAT\": \"Date must be in the form of MM/DD/YYYY\",\n \"EXCEED_SUBSCRIBERS_LIMIT\": \"Subscribers must be less than or equal to 5\",\n \"INVALID_ASSIGNEE_AND_SUBSCRIBERS\": \"Account assignee cannot be a subscriber to an opportunity\",\n \"GENERIC_ERROR\": \"An error occurred\",\n \"PIPELINE_STAGE_SELECTION\": \"Select a pipeline stage\",\n \"UPDATE_OPPORTUNITY\": \"Failed to update opportunity. Make sure the opportunity has all required information and try again.\"\n },\n \"ADD_SUBSCRIBER_PLACEHOLDER\": \"Add subscribers\",\n \"SUBSCRIBERS_UPDATED\": \"Subscribers updated\",\n \"SUBSCRIBERS_UPDATE_ERROR\": \"Failed to update opportunity subscribers\",\n \"NAME_UPDATED\": \"Opportunity name updated\",\n \"NAME_UPDATE_ERROR\": \"Failed to update opportunity name\",\n \"ADD_TAG_PLACEHOLDER\": \"Add tag\",\n \"LOG_ACTIVITY\": \"Log activity\",\n \"EDIT_BILLING_TERMS\": \"Edit billing terms\",\n \"ADD_BILLING_TERMS\": \"Add billing terms\",\n \"REMOVE_ITEM\": \"Remove item\"\n },\n \"OPPORTUNITY_DETAILS\": {\n \"CREATE_ORDER\": \"Create order\"\n },\n \"ACCOUNT_DETAILS\": {\n \"TITLE\": \"General info\",\n \"BUSINESS_CATEGORY_LABEL\": \"Business category\",\n \"SERVICE_CATEGORY_LABEL\": \"Service categories\",\n \"TAGS_LABEL\": \"Tags\",\n \"EDIT_ACCOUNT_INFO\": \"Edit account info\",\n \"BREADCRUMBS\": {\n \"PREVIOUS_PAGE\": \"Previous page\"\n },\n \"LOCAL_TIME\": {\n \"TITLE\": \"Local time\",\n \"ADD_TIMEZONE\": \"Add timezone\"\n }\n },\n \"OPPORTUNITY_TAGS\": {\n \"TITLE\": \"Tags\",\n \"EMPTY_STATE\": {\n \"DESCRIPTION\": \"There are no tags for this opportunity.\",\n \"ACTION\": \"Add tags\"\n },\n \"ADD_DIALOG\": {\n \"TITLE\": \"Add opportunity tags\",\n \"LABEL\": \"Add tag\"\n }\n },\n \"VIEW_ALL\": \"View all\",\n \"ORDERS\": \"Orders\",\n \"PACKAGES\": \"Packages\",\n \"PACKAGE\": \"Package\",\n \"PRODUCTS\": \"Products\",\n \"PRODUCT\": \"Product\",\n \"ADDONS\": \"Add-ons\",\n \"ADDON\": \"Add-on\",\n \"ITEMS\": \"Items\",\n \"ITEM\": \"Item\",\n \"ATTACHMENTS\": \"Attachments\",\n \"CUSTOMER_AGREEMENTS\": \"Customer agreements\",\n \"LAST_ACCEPTED\": \"Accepted on\",\n \"ADMIN\": \"Admin\",\n \"ORDER_ID\": \"Order ID\",\n \"ACCOUNT\": \"Account\",\n \"ORDER_FILTERS\": \"Order filters\",\n \"TOTAL_ORDERS\": \"Total orders\",\n \"PENDING_APPROVAL\": \"Pending approval\",\n \"STATUS\": \"Status\",\n \"PENDING\": \"Pending\",\n \"RESUBMITTED\": \"Resubmitted\",\n \"AWAITING_CUSTOMER_APPROVAL\": \"Awaiting customer approval\",\n \"APPROVED\": \"Approved\",\n \"PROCESSING\": \"Processing\",\n \"ACTIVATION_ERRORS\": \"Activation errors\",\n \"ARCHIVED\": \"Archived\",\n \"ACTIVATED\": \"Activated\",\n \"FULFILLED\": \"Activated\",\n \"DECLINED\": \"Declined\",\n \"DRAFTED\": \"Drafted\",\n \"SCHEDULED_ACTIVATION\": \"Scheduled activation\",\n \"CANCELLATION_REQUESTED\": \"Cancellation requested\",\n \"CANCELLATION_DECLINED\": \"Cancellation declined\",\n \"CANCELLED\": \"Cancelled\",\n \"AWAITING_PAYMENT\": \"Awaiting payment\",\n \"PROCESSING_PAYMENT\": \"Processing payment\",\n \"PRODUCT_ACTIVATION_INITIATED\": \"Product activation initiated\",\n \"TAG\": \"Tag\",\n \"TAGS\": \"Tags\",\n \"ADD_TAG\": \"Add tag\",\n \"INCLUDED_TAG\": \"Included tag\",\n \"UNTAGGED\": \"Untagged\",\n \"NO_TAGS_FOUND\": \"No tags found\",\n \"NO_TAGS\": \"No tags\",\n \"TAGS_ERROR\": \"Error updating tags\",\n \"MAX_TAGS\": \"Cannot submit more than {{maxTags}} tags\",\n \"SUBMITTED\": \"Submitted\",\n \"SUBMITTED_FOR_ADMIN_APPROVAL\": \"Submitted for admin approval\",\n \"SUBMITTED_FOR_CUSTOMER_APPROVAL\": \"Submitted for customer approval\",\n \"CONTRACT_START\": \"Contract start\",\n \"CONTRACT_START_DATE\": \"Contract start {{startDate}}\",\n \"CONTRACT_START_HINT\": \"Scheduled contracts will be automatically activated at 7 AM local time\",\n \"CONTRACT_START_FORMAT\": \"Contract start date\",\n \"CONTRACT_START_ERROR\": \"We couldn't update the contract start date. Refresh the page to try again.\",\n \"UPDATED_TAGS\": \"Updated tags\",\n \"UPDATED_NOTES\": \"Updated admin notes\",\n \"UPDATED_SALESPERSON\": \"Updated the salesperson\",\n \"UPDATED_CUSTOMER_NOTES\": \"Updated customer notes\",\n \"UPDATED_CONTRACT_START\": \"Updated contract start\",\n \"UPDATED_CONTRACT_LENGTH\": \"Updated contract length\",\n \"UPDATED_DRAFT\": \"Updated draft\",\n \"UPDATED_PRICING\": \"Updated pricing\",\n \"UPDATED_CONTENTS\": \"Updated contents\",\n \"UPDATE_ORDER_FORM_ANSWERS\": \"Update order form answers\",\n \"ORDER_FORM_ANSWERS_UPDATED\": \"The order form answers were updated\",\n \"CONTENTS_UPDATED\": \"Contents updated\",\n \"OFFER_EXPIRY\": \"Offer expiry\",\n \"FROM\": \"From\",\n \"TO\": \"To\",\n \"CLIENT\": \"Client\",\n \"SALESPERSON\": \"Salesperson\",\n \"SALES_TEAM\": \"Sales team\",\n \"BUSINESS\": \"Business\",\n \"ERROR_LOADING_SALESPEOPLE\": \"Something went wrong when loading your salespeople. Refreshing the page might help.\",\n \"MARKET\": \"Market\",\n \"ERROR_LOADING_MARKETS\": \"Something went wrong. You might want to try refreshing the page.\",\n \"ERROR_LOADING_SALES_TEAMS\": \"Something went wrong when loading your sales teams. Refreshing the page might help.\",\n \"EXPIRY\": \"Expiry\",\n \"EXPIRED\": \"Expired\",\n \"ALREADY_ACTIVATED_TOOLTIP\": \"This product is already active on this account.\",\n \"IGNORE_ERRORS\": \"Ignore errors\",\n \"ERRORS_IGNORED\": \"Errors ignored\",\n \"PENDING_ACTIVATION\": \"Pending activation\",\n \"ACTIVATION_WARNINGS\": \"Activation warnings\",\n \"MESSAGE\": \"Enter more information for the salesperson\",\n \"CONTRACT_LENGTH\": \"Contract length\",\n \"NO_CONTRACT_LENGTH\": \"No contract length\",\n \"NO_ORDERS\": \"There are no orders\",\n \"ORDER_FORM_LABEL\": \"Order form\",\n \"ERROR_RETRIEVING_ORDERS\": \"We couldn't retrieve your orders. Refresh the page to try again.\",\n \"SHOW_MORE\": \"Show more\",\n \"CONTRACT_LENGTH_ERROR\": \"Error updating the contract length\",\n \"LENGTH\": \"Length\",\n \"PERIOD\": \"Period\",\n \"NUMBER_HIGHER_THAN\": \"Must be a valid number higher than {{minNumber}}\",\n \"DURATION_WARNING\": \"Use this field for reference only. Orders and product expiration dates will not be impacted by this timeframe.\",\n \"REMOVE\": \"Remove\",\n \"SAVE\": \"Save\",\n \"SELECT\": \"Select\",\n \"CANCEL\": \"Cancel\",\n \"DECLINE\": \"Decline order\",\n \"REASON_FOR_DECLINE\": \"Reason for decline\",\n \"DECLINE_MESSAGE_VALIDATION\": \"Enter a decline message\",\n \"DECLINE_REASON_VALIDATION\": \"Select a decline reason\",\n \"DAYS_PLURAL_OR_SINGULAR\": \"{{duration}} days\",\n \"WEEKS_PLURAL_OR_SINGULAR\": \"{{duration}} weeks\",\n \"MONTHS_PLURAL_OR_SINGULAR\": \"{{duration}} months\",\n \"YEARS_PLURAL_OR_SINGULAR\": \"{{duration}} years\",\n \"DAYS_PLURAL_OR_SINGULAR_LABEL\": \"Days\",\n \"WEEKS_PLURAL_OR_SINGULAR_LABEL\": \"Weeks\",\n \"MONTHS_PLURAL_OR_SINGULAR_LABEL\": \"Months\",\n \"YEARS_PLURAL_OR_SINGULAR_LABEL\": \"Years\",\n \"NOTES\": \"Admin notes\",\n \"NOTES_HINT\": \"Only admins and salespeople can see these.\",\n \"NOTES_ERROR\": \"The admin notes couldn't be saved.\",\n \"CUSTOMER_NOTES\": \"Customer notes\",\n \"CUSTOMER_NOTES_HINT\": \"These notes will be visible to the customer\",\n \"CUSTOMER_NOTES_ERROR\": \"The customer notes couldn't be saved\",\n \"EDITION\": \"Edition\",\n \"CHANGES_EDITION_FROM\": \"(Changes edition from {{previousEditionName}})\",\n \"QUANTITY\": \"Quantity\",\n \"QUANTITY_ERROR\": \"You'll need to add a quantity to continue\",\n \"QUANTITY_DISABLED\": \"You can only activate one of these at a time\",\n \"REVENUE\": \"Revenue\",\n \"NAME\": \"Name\",\n \"BILL_FOR_RECURRING_CHARGES\": \"Bill for recurring charges\",\n \"RETAIL_PRICE\": \"Retail price\",\n \"WHOLESALE_COST\": \"Wholesale cost\",\n \"ADD_ITEMS\": \"Add items\",\n \"ARCHIVE\": \"Archive\",\n \"SEARCH\": \"Search\",\n \"DUPLICATE\": \"Duplicate order\",\n \"CHANGE_SALESPERSON\": \"Change salesperson\",\n \"EDIT_CUSTOM_FIELDS\": \"Edit custom fields\",\n \"SELECT_SALESPERSON\": \"Select Salesperson\",\n \"MAX_ONE_SALESPERSON\": \"Max one. Leave blank to unselect.\",\n \"ORDER_PERMISSION_ERROR\": \"You do not have permission to view this order\",\n \"FULFILLMENT_BANNER_TEXT\": \"Fulfillment information is required.\",\n \"FULFILLMENT_BANNER_BUTTON\": \"View\",\n \"FULFILLMENT\": \"Fulfillment\",\n \"FULFILLMENT_STATUS_UNSET\": \"Status unset\",\n \"FULFILLMENT_STATUS_DETAILS_NEEDED\": \"Details needed\",\n \"FULFILLMENT_STATUS_IN_REVIEW\": \"Vendor review\",\n \"FULFILLMENT_STATUS_IN_PROGRESS\": \"In progress\",\n \"FULFILLMENT_STATUS_COMPLETED\": \"Completed\",\n \"FULFILLMENT_STATUS_CANCELLED\": \"Cancelled\",\n \"TABLE_PRESETS\": {\n \"UPCOMING_EXPIRATION\": \"Upcoming expirations\",\n \"UPCOMING_EXPIRATION_DESC\": \"Orders with upcoming expirations in next 3 months\"\n },\n \"ORDER_DETAILS\": {\n \"TITLE\": \"Order details\",\n \"OFFER_WILL_EXPIRE\": \"This offer expires on {{date}}\",\n \"OFFER_EXPIRED\": \"This offer expired on {{date}}\",\n \"SUBTITLE\": \"The following information is an overview of the order\",\n \"SUBMITTED_BY\": \"submitted by {{name}}\",\n \"CREATED_BY\": \"created by {{name}}\",\n \"ORDER_INFO_ERROR\": \"There was a problem loading order info. Try refreshing the page.\",\n \"UPDATED_TO\": \"Updated to {{value}}\",\n \"UPDATED_FROM_TO\": \"Updated from {{fromValue}} to {{toValue}}\",\n \"ATTACHMENTS_UPDATED_SUCCESSFULLY\": \"Attachments were saved\",\n \"ALL_TAGS_REMOVED\": \"All tags removed\",\n \"NO_CONTRACT_START_DATE\": \"no contract start date\",\n \"NO_CONTRACT_LENGTH\": \"no contract length\",\n \"DATE_BY_USER\": \"{{date}} by {{user}}\",\n \"SYSTEM\": \"system\"\n },\n \"CUSTOMER_EVENTS\": {\n \"SENDING\": \"Sending\",\n \"PROCESSING\": \"Processing\",\n \"DELIVERED\": \"Delivered\",\n \"BOUNCED\": \"Bounced\",\n \"DROPPED\": \"Dropped\",\n \"UNSUBSCRIBED\": \"Unsubscribed\",\n \"DEFERRED\": \"Deferred\",\n \"SPAM_REPORT\": \"Spam report\",\n \"EMAIL_OPENED\": \"Email opened\",\n \"EMAIL_CLICKED\": \"Email clicked\",\n \"UPDATED_ANSWERS\": \"Updated answers\",\n \"UNKNOWN\": \"Unknown\"\n },\n \"ORDER_FORM\": {\n \"CUSTOM_ENTRY_URL\": \"Custom entry URL\",\n \"CUSTOM_ENTRY_URL_REGEX_ERROR\": \"Not in correct format. Should be prefixed with https or http.\"\n },\n \"PRICING\": {\n \"STARTING_PRICE\": \"Starting price\",\n \"STARTING_PRICE_TOOLTIP\": \"Specifies whether or not the price varies based on usage, list size, or other special considerations\",\n \"REVENUE_REQUIRED\": \"Price is required\",\n \"GREATER_THAN_OR_EQUAL_TO_ZERO\": \"Must be greater than or equal to zero\",\n \"MUST_BE_NUM\": \"Must be a number\",\n \"PERIOD_REQUIRED\": \"Period is required\",\n \"ADD_ROW\": \"Add row\",\n \"PRICE\": \"Price\",\n \"PERIOD\": \"Period\",\n \"PRICING_UPDATED\": \"Pricing updated\",\n \"ERROR_UPDATING_PRICING\": \"There was an error updating the pricing\"\n },\n \"ERRORS\": {\n \"ERROR_UPDATING_CONTENTS\": \"There was an error updating the contents of the order\",\n \"ERROR_MUST_HAVE_ITEMS\": \"The order must contain at least one item\",\n \"ERROR_MUST_HAVE_PRICING\": \"Order items must have at least one row of pricing\",\n \"ERROR_ARCHIVING\": \"There was an error archiving the order\",\n \"ERROR_CANCELLING\": \"There was an error cancelling the order\",\n \"ERROR_IGNORING_ERRORS\": \"There was an error ignoring the activation errors of the order\",\n \"ERROR_UPDATING_ORDER_FORM\": \"There was an error updating the answers of the order form\",\n \"ERROR_UPDATING_SALESPERSON\": \"There was an error updating the salesperson of the order\",\n \"ERROR_FORM_NOT_VALID\": \"Form is not valid\",\n \"ERROR_EXPORT_ALL\": \"There was a problem downloading data. Please try again\",\n \"ERROR_EXPORT_TOO_MANY_REQUESTS\": \"Already processing a similar export request\",\n \"ERROR_ATTACHMENT_GENERIC\": \"There was an error uploading the attachment\",\n \"ERROR_DUPLICATE_FILE_ATTEMPT\": \"This file has already been uploaded\",\n \"ERROR_MAX_FILE_SIZE_EXCEEDED\": \"Max file size exceeded\",\n \"ERROR_MAX_FILES_EXCEEDED\": \"Max files exceeded\",\n \"UNABLE_TO_UPDATE_OVERVIEW\": \"Failed to update opportunity notes\",\n \"UNABLE_TO_LOAD_DISPLAY_VALUE\": \"There was a problem loading the display name for this {{value}}.\",\n \"ERROR_UPDATING_TAGS\": \"There was an error updating the tags\"\n },\n \"ACTIVATION_STATUS\": {\n \"ACTIVATED\": \"Activated\",\n \"ALREADY_ACTIVATED\": \"Already activated\",\n \"ACTIVATION_ERRORS\": \"Activation errors\",\n \"ACTIVATION_WARNINGS\": \"Activation warnings\",\n \"ERRORS_IGNORED\": \"Errors ignored\"\n },\n \"ACTIONS\": \"Actions\",\n \"EDITION_REQUIRED_FOR_PRICE\": \"Edition required to set price\",\n \"EXPORT\": {\n \"SUCCESS_EXPORT_ALL\": \"Download started\",\n \"ERROR_TOO_MANY_ROWS\": \"Please use filters to narrow results, or contact support if this size export is intended.\",\n \"ERROR_NO_RESULTS\": \"No results to export.\",\n \"EXPORT_HEADER\": \"Generate CSV file for sales orders\",\n \"EXPORT_DESCRIPTION\": \"Which data would you like to export?\",\n \"ALL_ORDER_OPTION_LABEL\": \"All order data\",\n \"ALL_ORDER_OPTION_DESCRIPTION\": \"Outputs all orders matching your filters with additional columns. You'll receive a download notification when your file is ready.\",\n \"ALL_ORDER_WITH_PRODUCT_DATA_OPTION_LABEL\": \"All orders with product data\",\n \"ALL_ORDER_WITH_PRODUCT_DATA_OPTION_DESCRIPTION\": \"This option will export one row per product included in the order. You'll receive a download notification when your file is ready.\"\n },\n \"DECLINE_REASON\": {\n \"ERROR\": \"Something went wrong\",\n \"TRY_AGAIN\": \"Try again\",\n \"MESSAGE\": \"Decline message\",\n \"REASONS_TITLE\": \"Why are you declining this order?\",\n \"REQUIRED\": \"Required\",\n \"MANAGE_REASONS\": \"Manage reasons\"\n },\n \"PIPELINE\": {\n \"PERCENTAGE_OF\": \"% of\",\n \"SETTINGS\": {\n \"PAGE_TITLE\": \"Manage pipelines\",\n \"EMPTY_STATE\": {\n \"TITLE\": \"Create your first custom pipeline\",\n \"MESSAGE\": \"Track and manage your sales opportunities from start to close\"\n },\n \"MODALS\": {\n \"DELETE_TITLE\": \"Delete pipeline?\",\n \"DELETE_MESSAGE\": \"Deleting a pipeline with opportunities in it will cause them to no longer show on the pipeline board. Ensure that you have removed all opportunities from this pipeline before deleting it.\",\n \"UNSAVED_CHANGES_TITLE\": \"Unsaved changes\",\n \"UNSAVED_CHANGES_MESSAGE\": \"Are you sure you want to leave? You will lose any unsaved changes.\",\n \"UNSAVED_CHANGES_CONFIRM\": \"Discard changes\"\n },\n \"BUTTONS\": {\n \"CREATE\": \"Create pipeline\",\n \"SAVE\": \"Save\",\n \"CANCEL\": \"Cancel\",\n \"DELETE\": \"Delete\",\n \"DELETE_PIPELINE\": \"Delete pipeline\",\n \"CREATE_NEW\": \"Create new pipeline\",\n \"ADD_STAGE\": \"Add stage\"\n },\n \"FORMS\": {\n \"NAME_TITLE\": \"Pipeline name\",\n \"NAME_PLACEHOLDER\": \"New pipeline\",\n \"STAGES_TITLE\": \"Pipeline stages\",\n \"STAGES_SUBTITLE\": \"Opportunities may shift within the pipeline if you delete a stage or change its probability.\",\n \"STAGE_NAME\": \"Stage name\",\n \"STAGE_PROBABILITY\": \"Close probability\"\n },\n \"SNACKBARS\": {\n \"CREATE_FAILED\": \"Failed to create a new pipeline, please try again later.\",\n \"CREATE_SUCCESS\": \"Successfully created a new pipeline\",\n \"DELETE_FAILED\": \"Failed to delete pipeline, please try again later.\",\n \"DELETE_SUCCESS\": \"Successfully deleted pipeline\",\n \"PIPELINE_NAME_UPDATE_FAILED\": \"Failed to update pipeline name, please try again later.\",\n \"STAGE_DELETE_FAILED\": \"Failed to delete stage, please try again later.\",\n \"STAGE_NAME_UPDATE_FAILED\": \"Failed to update stage name, please try again later.\",\n \"STAGE_PROBABILITY_UPDATE_FAILED\": \"Failed to update stage probability, please try again later.\",\n \"STAGE_CREATE_FAILED\": \"Failed to create stages, please try again later.\",\n \"FORM_INVALID\": \"Failed to update pipeline, please make sure all fields are correct.\"\n },\n \"DEFAULTS\": {\n \"NAME\": \"My new pipeline\",\n \"STAGE_ONE\": \"Stage one\",\n \"STAGE_TWO\": \"Stage two\",\n \"STAGE_THREE\": \"Stage three\"\n }\n },\n \"EMPTY_PIPELINE_FILTERED_OR_NO_OPPS\": \"No opportunities to show. You may need to adjust your filters or add an opportunity to an account.\",\n \"SAVE_FILTER_DIALOG_TITLE\": \"Choose filter group name\",\n \"FILTER_NAME_INPUT\": \"Filter group name\",\n \"FILTER_OVERWRITTEN_WARNING\": \"A filter group named {{ filterGroupName }} already exists. Clicking save will overwrite it.\",\n \"SAVE_FILTER_SUCCESS\": \"Filter group saved\",\n \"SAVED_FILTERS\": \"Saved filters\",\n \"SAVE_CURRENT_FILTERS\": \"Save current filters\",\n \"PIPELINES\": \"Pipelines\",\n \"EXPORT_AS_CSV\": \"Export as CSV\",\n \"PREPARING_CSV\": \"Preparing CSV\",\n \"CSV_EXPORT_ERROR\": \"There was an issue trying to start the export CSV process, please try again.\",\n \"PREPARING_DOWNLOAD\": \"We'll notify you when your file is ready to download.\",\n \"OK_TO_LEAVE_PAGE\": \"Navigating away from the page won't interrupt this process.\",\n \"FILTERS_RETURNED_ZERO_RESULTS_TITLE\": \"We couldn't find any opportunities that fit your search\",\n \"FILTERS_RETURNED_ZERO_RESULTS_DESCRIPTION\": \"You may need to adjust your filters or search terms\",\n \"PIPELINE_NOT_FOUND\": \"Pipeline unavailable\",\n \"REVENUE_FOR_DATE_PERIOD\": \"Revenue for {{ date }}\",\n \"MEDDIC\": {\n \"POINTS\": \"Points\"\n },\n \"COLUMN_LABELS\": {\n \"ACTUAL_CLOSE\": \"Actual close\",\n \"ASSIGNED\": \"Assigned\",\n \"CALLS\": \"Calls\",\n \"CONNECTIONS\": \"Connections\",\n \"EXPECTED_CLOSE\": \"Expected close\",\n \"LAST_ACTIVITY\": \"Last activity\",\n \"LAST_CONNECTED\": \"Last connected\",\n \"OPPORTUNITY\": \"Opportunity\",\n \"QUALIFICATION\": \"Qualification\",\n \"OPPORTUNITY_QUALIFICATION\": \"Opportunity qualification\",\n \"POTENTIAL\": \"Potential\",\n \"MONTHLY_REVENUE\": \"Monthly revenue\",\n \"STAGE\": \"Pipeline stage\",\n \"PIPELINE_NAME\": \"Pipeline name\",\n \"STATUS\": \"Status\",\n \"TOTAL_EFFORTS\": \"Total efforts\",\n \"CREATED_DATE\": \"Created date\",\n \"TYPE\": \"Type\"\n },\n \"ACCOUNT_DELETED\": \"Account deleted\",\n \"PIPELINE_STAGE_LABEL\": \"Pipeline stage\",\n \"PIPELINE_STAGE_TOOLTIP\": \"Select a single pipeline to enable pipeline stage selection\",\n \"EXPECTED_CLOSE_LABEL\": \"Expected close\",\n \"ASSIGNED_DATE_LABEL\": \"Assigned\",\n \"STATUS_TITLE\": \"Pipeline status\",\n \"STATUS_LABEL\": \"Status\",\n \"ACTUAL_CLOSE_LABEL\": \"Actual close\",\n \"CREATED_DATE_LABEL\": \"Created\",\n \"TYPE_LABEL\": \"Type\",\n \"POTENTIAL_REVENUE\": \"Potential revenue\",\n \"PIPELINE_BOARD\": {\n \"BOARD\": \"Board\",\n \"TABLE\": \"Table\",\n \"SORT\": \"Sort\",\n \"MANAGE_PIPELINES\": \"Manage pipelines\",\n \"SORT_ACTIONS\": {\n \"EXPECTED_CLOSE_DATE\": \"Expected close date\",\n \"ACTUAL_CLOSE_DATE\": \"Actual close date\",\n \"POTENTIAL_REVENUE\": \"Potential revenue\",\n \"LAST_CONNECTED_DATE\": \"Last connected date\",\n \"LAST_SALES_ACTIVITY\": \"Last sales activity\",\n \"CREATED_DATE\": \"Created date\",\n \"ASSIGNED_DATE\": \"Assigned date\",\n \"NAME\": \"Opportunity name\",\n \"QUALIFICATION\": \"Qualification\"\n }\n },\n \"TABLE\": {\n \"EXPORT_CSV\": {\n \"TITLE\": \"Select files to export\",\n \"PIPELINE\": \"Pipeline\",\n \"OPPORTUNITY_HISTORY\": \"Opportunity history\"\n },\n \"ERRORS\": {\n \"FETCH_OPPORTUNITIES_ERROR_TITLE\": \"An error occurred when fetching your opportunities\",\n \"FETCH_OPPORTUNITIES_ERROR_DESCRIPTION\": \"Refresh your page or adjust your search to try again\",\n \"NAVIGATE_TO_PAGE\": \"Unable to open the page. Reload the page and try again.\"\n }\n }\n },\n \"COMMON\": {\n \"NOTES\": \"Notes\",\n \"LOST\": \"Lost\",\n \"WON\": \"Won\",\n \"TAG\": \"Tag\",\n \"SELECT_PACKAGES\": \"Select packages\",\n \"SELECT_PRODUCTS\": \"Select products\",\n \"SELECT_ACCOUNT\": \"Select account\",\n \"SELECT_TYPE\": \"Select type\",\n \"PACKAGES_LABEL\": \"Packages\",\n \"PRODUCTS_LABEL\": \"Products\",\n \"SALESPEOPLE_LABEL\": \"Salespeople\",\n \"SALES_TEAM_LABEL\": \"Sales team\",\n \"WARNING\": \"Warning\",\n \"ASSIGNEE\": \"Assignee\",\n \"EMAILS\": \"Emails\",\n \"MEETINGS\": \"Meetings\",\n \"NOT_APPLICABLE_LABEL\": \"N/A\",\n \"NONE_LABEL\": \"None\",\n \"MARKET_LABEL\": \"Market\",\n \"DELETED\": \"Deleted\",\n \"ACTION_LABELS\": {\n \"ACTIVE\": \"active\",\n \"ADD\": \"Add\",\n \"ADD_NEW\": \"Add new\",\n \"ADD_ATTACHMENT\": \"Add attachment\",\n \"APPLY\": \"Apply\",\n \"BACK\": \"Back\",\n \"BOOKING_LINK\": \"Booking link\",\n \"CALL\": \"Call\",\n \"CANCEL\": \"Cancel\",\n \"CLICK_TO_REFRESH\": \"Click to refresh\",\n \"CLICK_TO_RETRY\": \"Click to retry\",\n \"CLOSE\": \"Close\",\n \"COMPOSE_MESSAGE\": \"Compose message\",\n \"ERROR_SENDING_MESSAGE\": \"An error occurred while sending the message\",\n \"MESSAGE_SENT_SUCCESSFULLY\": \"Message sent successfully\",\n \"CONTACT_EMAILS\": \"Send contact email\",\n \"CONTINUE\": \"Continue\",\n \"COPY\": \"Copy\",\n \"COPY_LINK\": \"Copy link\",\n \"CREATE\": \"Create\",\n \"DELETE\": \"Delete\",\n \"EDIT\": \"Edit\",\n \"EMAIL\": \"Email\",\n \"JOIN\": \"Join\",\n \"LEARN_MORE\": \"Learn more\",\n \"LOAD_MORE\": \"Load more\",\n \"MORE_ACTIONS\": \"More actions\",\n \"NEXT\": \"Next\",\n \"PAUSE\": \"Pause\",\n \"PREVIEW\": \"Preview\",\n \"REFRESH\": \"Refresh\",\n \"RESUME\": \"Resume\",\n \"RETRY\": \"Retry\",\n \"SAVE\": \"Save\",\n \"SELECT_ALL\": \"Select all\",\n \"SELECT_DATE\": \"Select date\",\n \"SEND\": \"Send\",\n \"SUBMIT\": \"Submit\",\n \"TRY_AGAIN\": \"Try again\",\n \"UPDATE\": \"Update\",\n \"UNDO\": \"Undo\",\n \"UNDO_ARCHIVE\": \"Unarchive\",\n \"UNSAVED_CHANGE\": \"You have unsaved changes\",\n \"VIEW\": \"View\",\n \"VIEW_ALL\": \"View all\",\n \"VIEW_MORE\": \"View more\",\n \"VIEW_LESS\": \"View less\",\n \"PRINT\": \"Print\",\n \"ACTIONS\": \"Actions\",\n \"OK\": \"OK\",\n \"EXPORT\": \"Export\",\n \"START\": \"Start\",\n \"SHOW_MORE\": \"Show more\"\n },\n \"BILLING_FREQUENCIES\": {\n \"ONE_TIME\": \"One time\",\n \"MONTHLY\": \"Monthly\",\n \"YEARLY\": \"Yearly\"\n },\n \"LOADING\": \"Loading...\",\n \"NAME\": \"Name\",\n \"ACCOUNT_NAME\": \"Account name\",\n \"PROBABILITY\": \"Probability\",\n \"DATES\": {\n \"FROM_LABEL\": \"From\",\n \"TO_LABEL\": \"To\",\n \"NEVER\": \"Never\",\n \"CUSTOM\": \"Custom\",\n \"DATE_RANGE\": \"Date range\",\n \"CREATED_ON\": \"Created on {{date}}\",\n \"TODAY\": \"Today\",\n \"INVALID_DATE_RANGE\": \"Invalid date range\"\n }\n },\n \"FILTER_BY_SALESPEOPLE\": \"Filter by salespeople\",\n \"FILTER_BY_SALES_TEAM\": \"Filter by sales team\",\n \"FILTER_BY_PIPELINES\": \"Filter by pipelines\",\n \"TASK_STATUS\": {\n \"OPEN\": \"Open\",\n \"IN_PROGRESS\": \"In progress\",\n \"WAITING_ON_CUSTOMER\": \"Waiting on customer\",\n \"COMPLETED\": \"Completed\"\n },\n \"SELECT_TAG\": \"Select tag\",\n \"PROJECTED_MONTHLY_REVENUE\": \"Monthly revenue\",\n \"FORMS\": {\n \"CHOOSE_ACCOUNT\": \"Choose an account\",\n \"CHOOSE_LINE_ITEMS\": \"Choose products and packages\",\n \"ADDITIONAL_INFO\": \"Additional info\",\n \"INVALID_FORM\": \"Form is invalid\",\n \"INVALID_CONTACT_DURATION\": \"Contract length is invalid\"\n }\n },\n \"SALES_OPPORTUNITIES\": {\n \"ADD_PACKAGES\": \"Add packages\",\n \"OPPORTUNITY_VALUE\": \"Opportunity value\",\n \"ACCOUNT_INFO\": \"Account info\",\n \"OPPORTUNITY_INFO\": \"Opportunity info\",\n \"OPPORTUNITIES_LABEL\": \"Opportunities\",\n \"SUCCESSFUL_CREATION\": \"Successfully created opportunity\",\n \"OPPORTUNITY_CREATE\": \"Create sales opportunity\",\n \"OPPORTUNITY_NAME\": \"Opportunity name\",\n \"EMPTY_OPPORTUNITIES_DESCRIPTION\": \"There are no opportunities.\",\n \"POTENTIAL_REVENUE\": \"Potential revenue\",\n \"PROJECTED_MONTHLY_REVENUE\": \"Monthly revenue\",\n \"MONTHLY_REVENUE\": \"Monthly revenue\",\n \"PROBABILITY_TO_CLOSE\": \"{{percentage}}% probability.\",\n \"NO_ASSIGNEE_TEXT\": \"Salesperson deleted\",\n \"NO_PACKAGES_TIP\": \"Create sales opportunities using the packages in your store. Come back to begin tracking your opportunities as packages become available.\",\n \"PROBABILITY_OF_CLOSE\": \"Probability of close\",\n \"PIPELINE_STAGE\": \"Pipeline stage\",\n \"EXPECTED_CLOSE_PLACEHOLDER\": \"Expected close date\",\n \"SELECT_PACKAGES\": \"Select packages *\",\n \"SELECT_A_PACKAGE_ERROR\": \"At least one package must be selected\",\n \"SELECT_QUANTITIES\": \"Select package quantities\",\n \"NO_NOTES_FOR_OPPORTUNITY\": \"There are no notes for this opportunity.\",\n \"NO_PACKAGES_FOR_OPPORTUNITY\": \"There are no packages for this opportunity.\",\n \"REMOVE_PACKAGE_CONFIRMATION\": \"Are you sure you want to remove {{ packageName }}?\",\n \"PACKAGE_WILL_BE_REMOVED\": \"The package will be removed from this opportunity.\",\n \"REVENUE_TOOLTIP\": \"This adds up all one-time fees and calculates all recurring revenue for the contract length. To change this value, edit the revenue for the packages below.\",\n \"QUANTITIES\": \"Quantities\",\n \"QUANTITY\": \"Quantity\",\n \"DETAILS\": \"Details\",\n \"ACTIVITY\": \"Activity\",\n \"ASSIGNED_TO\": \"Assigned to {{ person }}\",\n \"ASSIGN_TO\": \"Assign to\",\n \"OVERVIEW\": \"Overview\",\n \"BUSINESS\": \"Business:\",\n \"REOPEN\": \"Reopen\",\n \"CONTRACT_DURATION_REVENUE\": \"{{ durationAndPeriod }} revenue\",\n \"DEFAULT_DURATION_REVENUE\": \"Per year\",\n \"ADD_OPPORTUNITY_TAGS\": \"Add opportunity tags\",\n \"CLOSED_WON\": \"Closed won\",\n \"CLOSED_LOST\": \"Closed lost\",\n \"WON\": \"Won\",\n \"LOST\": \"Lost\",\n \"OPEN\": \"Open\",\n \"WON_FILTER\": \"closed-won\",\n \"LOST_FILTER\": \"closed-lost\",\n \"OPEN_FILTER\": \"open\",\n \"STAGE\": \"Stage\",\n \"ACTUAL_CLOSE_DATE_UPDATED\": \"Actual close date updated\",\n \"OPPS_NOT_ON_PIPELINE\": \"Migrate opportunities\",\n \"HIDE_ORPHANED_OPPORTUNITIES\": \"Show pipeline\",\n \"SUCCESSFULLY_ASSIGNED_OPPORTUNITIES\": \"Successfully assigned all selected opportunities\",\n \"FAILED_TO_ASSIGNED_OPPORTUNITIES\": \"Failed to assign one or more opportunities, please try again\",\n \"OPPORTUNITY_ITEMS_REQUIRED\": \"You must add at least one item to the opportunity contents\",\n \"ACCOUNT_REQUIRED\": \"You must select an account for the opportunity\",\n \"OPPORTUNITY_CONTENTS\": \"Items\",\n \"PIPELINE\": \"Pipeline\",\n \"CLOSE\": {\n \"CLOSE_OPPORTUNITY\": \"Close opportunity\",\n \"TITLE\": \"Close opportunity\",\n \"CLOSE_STATE\": \"Close state\",\n \"MESSAGE\": \"This will close the opportunity with the current revenue and packages. The opportunity will no longer be editable.\",\n \"OPPORTUNITY_CLOSE\": \"Close opportunity\",\n \"SELECT_STATE\": \"Select state\",\n \"CLOSED_LOST\": {\n \"REASON\": \"Reason\",\n \"SELECT_REASON\": \"Select reason\",\n \"PRICE\": \"Price\",\n \"NO_BUDGET\": \"No budget\",\n \"LOST_TO_COMPETITOR\": \"Lost to competitor\",\n \"NOT_READY\": \"Not ready\",\n \"OTHER\": \"Other\"\n }\n },\n \"OPPORTUNITY_TYPE\": {\n \"NOT_SPECIFIED\": \"Not specified\",\n \"NEW_BUSINESS\": \"New business\",\n \"EXISTING_BUSINESS\": \"Existing business\",\n \"PLACEHOLDER\": \"Type\",\n \"SUCCESS\": \"Successfully changed opportunity type.\",\n \"ERROR\": \"Unable to change opportunity type.\"\n }\n }\n },\n \"MEDDIC\": {\n \"POINTS\": \"Points\",\n \"PROBLEM_SAVING_SCORES\": \"There was a problem storing your MEDDIC scores\",\n \"PROBLEM_SAVING_NOTES\": \"There was a problem storing your MEDDIC notes\",\n \"PROBLEM_LOADING_NOTES\": \"There was a problem loading the MEDDIC notes\",\n \"NOTES_SAVED\": \"Your notes were saved\",\n \"SCORE_NAMES\": {\n \"METRIC\": \"Metrics\",\n \"ECONOMIC_BUYER\": \"Economic buyer\",\n \"DECISION_CRITERIA\": \"Decision criteria\",\n \"DECISION_PROCESS\": \"Decision process\",\n \"IDENTIFY_PAIN\": \"Identify pain\",\n \"CHAMPION\": \"Champion\",\n \"COMPETITION\": \"Competition\",\n \"PAPER_PROCESS\": \"Paper process\"\n },\n \"SCORE_DESCRIPTIONS\": {\n \"METRIC\": \"Metrics are the criteria your prospect uses to determine the success of this solution. This helps you prove return on investment (ROI) to your prospect.\",\n \"ECONOMIC_BUYER\": \"The economic buyer is the person that can ultimately approve the purchase of this solution. If possible, try to establish a relationship directly with this person.\",\n \"DECISION_CRITERIA\": \"Decision criteria are factors that impact whether your prospect purchases your solution. Common examples include budget constraints, potential return on investment (ROI), learning curve, and integration options.\",\n \"DECISION_PROCESS\": \"The decision process covers how your prospect decides to purchase new solutions. Examples include who makes decisions, what formalities are involved, and general turn-around time. This is useful in ensuring your deal won't fall apart or end up in limbo.\",\n \"IDENTIFY_PAIN\": \"When you identify pain, you know exactly which problems your solution solves for your prospect. Try to be as specific as possible to best pitch your solution.\",\n \"CHAMPION\": \"A champion is a well-respected advocate within the prospect's company. They are invested in your solution and will push for the company to purchase.\"\n },\n \"SCORE_OPTIONS\": {\n \"PLACEHOLDER\": \"Select an option\",\n \"METRIC\": {\n \"SCORE_0\": \"I have no idea\",\n \"SCORE_1\": \"I know some of the metrics, but details are still fuzzy\",\n \"SCORE_2\": \"I know exactly how the company will validate this solution\"\n },\n \"ECONOMIC_BUYER\": {\n \"SCORE_0\": \"I'm not sure\",\n \"SCORE_1\": \"I have the names of some people that can potentially purchase\",\n \"SCORE_2\": \"I know who approves purchases\"\n },\n \"DECISION_CRITERIA\": {\n \"SCORE_0\": \"I don't know\",\n \"SCORE_1\": \"I know some of the criteria, but not all\",\n \"SCORE_2\": \"I know exactly how they're evaluating my solution\"\n },\n \"DECISION_PROCESS\": {\n \"SCORE_0\": \"I'm not sure\",\n \"SCORE_1\": \"I know some of the process, but not the whole thing\",\n \"SCORE_2\": \"I know every step involved\"\n },\n \"IDENTIFY_PAIN\": {\n \"SCORE_0\": \"I haven't learned that yet\",\n \"SCORE_1\": \"I understand some of it, but I'm not clear on the specifics\",\n \"SCORE_2\": \"I fully understand the pain my prospect is trying to alleviate\"\n },\n \"CHAMPION\": {\n \"SCORE_0\": \"There's no one that I know of\",\n \"SCORE_1\": \"There's a few people who might, but no one concrete\",\n \"SCORE_2\": \"I know my champion\"\n },\n \"COMPETITION\": {\n \"SCORE_0\": \"Unaware of competitors\",\n \"SCORE_1\": \"Know competitors, lack comparison\",\n \"SCORE_2\": \"Understand competitors and differentiation\"\n },\n \"PAPER_PROCESS\": {\n \"SCORE_0\": \"No defined paper process\",\n \"SCORE_1\": \"Some steps identified, but not fully defined\",\n \"SCORE_2\": \"Clearly defined paper process from decision to signature\"\n }\n },\n \"POINT_VAL_0\": \"0 Points\",\n \"POINT_VAL_1\": \"1 Point\",\n \"POINT_VAL_2\": \"2 Points\",\n \"FAILED_TO_LOAD\": \"There was a problem loading the MEDDIC scores for this opportunity\",\n \"REASON_FOR_SCORE\": \"Reason for score\"\n },\n \"SALES_EXPECTED_CLOSE\": {\n \"UNABLE_TO_UPDATE_EXPECTED_CLOSE\": \"Failed to update expected close date\",\n \"EXPECTED_CLOSE_UPDATED\": \"Expected close date updated\",\n \"PLACEHOLDER\": \"Select a date\"\n },\n \"SALES_CONTRACT_DURATION\": {\n \"TITLE\": \"Expected contract length\",\n \"DETAILS_SECTION_TITLE\": \"Contract length\",\n \"ENTER_DURATION\": \"enter length\",\n \"PERIOD\": \"Period\",\n \"DURATION\": \"Length\",\n \"HINT\": \"Use this field for reference only. Orders and product expiration dates will not be impacted by this timeframe.\",\n \"DURATION_UPDATED\": \"Contract duration updated\",\n \"ERRORS\": {\n \"INVALID_FORMAT\": \"Must be a valid number higher than 0\",\n \"UNABLE_TO_UPDATE_DURATION\": \"Failed to update contract duration\"\n },\n \"DURATIONS\": {\n \"DAY\": \"day(s)\",\n \"WEEK\": \"week(s)\",\n \"MONTH\": \"month(s)\",\n \"YEAR\": \"year(s)\",\n \"DAY_SINGULAR\": \"day\",\n \"WEEK_SINGULAR\": \"week\",\n \"MONTH_SINGULAR\": \"month\",\n \"YEAR_SINGULAR\": \"year\"\n },\n \"TOOLTIP\": {\n \"CLEAR\": \"Remove contract length\",\n \"EDIT\": \"Edit contract length\"\n }\n },\n \"SALES_ACTIVITY\": {\n \"ADD_NOTES\": \"Add notes\"\n }\n}\n","export const WEBLATE_COMPONENT_NAME = 'common/sales-ui';\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ProductSelectorComponent } from './product-selector.component';\nimport { ProductSelectorService } from './product-selector.service';\nimport { Observable } from 'rxjs';\nimport { ProductInterface } from '@vendasta/marketplace-packages';\nimport { PRODUCT_SELECTOR_CONFIG_TOKEN, PRODUCTS_TOKEN, ProductSelectorConfig } from './tokens';\nimport { ItemSearchSelectFilterModule } from '@galaxy/inventory-ui';\n\n@NgModule({\n declarations: [ProductSelectorComponent],\n exports: [ProductSelectorComponent],\n imports: [\n CommonModule,\n TranslateModule,\n MatSelectModule,\n MatButtonModule,\n MatDialogModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n ItemSearchSelectFilterModule,\n ],\n providers: [\n ProductSelectorService,\n {\n provide: PRODUCTS_TOKEN,\n deps: [PRODUCT_SELECTOR_CONFIG_TOKEN],\n useFactory: productsFactory,\n },\n ],\n})\nexport class ProductSelectorModule {}\n\nfunction productsFactory(config: ProductSelectorConfig): Observable {\n return config.products$;\n}\n","import { Component, Inject, OnDestroy } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { Pipeline } from '@vendasta/sales-common';\nimport { StageInterface } from '@vendasta/sales-opportunities';\nimport { Observable, ReplaySubject, firstValueFrom } from 'rxjs';\nimport { map, withLatestFrom } from 'rxjs/operators';\nimport { PipelineMultiSelectService } from './pipeline-multi-select.service';\n\nexport interface PipelineDialogData {\n pipelines: Pipeline[];\n pipelineStage: StageInterface;\n}\n\n@Component({\n selector: 'sales-ui-pipeline-multi-select',\n templateUrl: './pipeline-multi-select.component.html',\n styleUrls: ['./pipeline-multi-select.component.scss'],\n})\nexport class PipelineMultiSelectComponent implements OnDestroy {\n selectablePipelines$: Observable;\n pipelineControl: UntypedFormControl;\n pipelineStageControl: UntypedFormControl;\n private readonly subscriptions = SubscriptionList.new();\n\n private selectablePipelinesStages$$ = new ReplaySubject(1);\n public selectablePipelinesStages$ = this.selectablePipelinesStages$$.asObservable();\n private checkedPipelinesIds$$ = new ReplaySubject(1);\n public checkedPipelinesIds$ = this.checkedPipelinesIds$$\n .asObservable()\n .pipe(map((checkedPipelinesIds) => checkedPipelinesIds.map((pipeline) => pipeline.id)));\n private selectedPipelineStage$$ = new ReplaySubject(1);\n public selectedPipelineStage$ = this.selectedPipelineStage$$.asObservable();\n\n constructor(\n @Inject(MAT_DIALOG_DATA) readonly data: PipelineDialogData,\n private readonly store: PipelineMultiSelectService,\n private readonly dialog: MatDialog,\n ) {\n this.selectablePipelines$ = this.store.selectablePipelines$;\n this.checkedPipelinesIds$$.next(data.pipelines);\n this.pipelineControl = new UntypedFormControl(data.pipelines);\n this.pipelineStageControl = new UntypedFormControl(data.pipelineStage, []);\n this.selectablePipelinesStages$ = this.checkedPipelinesIds$$.pipe(\n map((pipelineIds) => (pipelineIds.length !== 1 ? null : pipelineIds[0])),\n withLatestFrom(this.selectablePipelines$),\n map(([selectedPipeline, pipelines]) => pipelines.find((pipeline) => pipeline?.id === selectedPipeline?.id)),\n map((pipeline) => pipeline?.stages),\n );\n this.pipelineControl.valueChanges.subscribe((selectedPipelines) => {\n if (selectedPipelines.length === 1) {\n return this.pipelineStageControl.enable();\n }\n this.pipelineStageControl.disable();\n });\n }\n\n ngOnDestroy(): void {\n this.subscriptions.destroy();\n }\n\n public pipelineIdComparison(option: Pipeline, value: Pipeline): boolean {\n return Boolean(option) && Boolean(value) ? option.id === value.id : false;\n }\n\n async handlePipelineSelection(pipelineIds: string[]): Promise {\n const pipelines = await firstValueFrom(this.selectablePipelines$);\n\n const selectedPipelines: Pipeline[] = [];\n for (const pipelineId of pipelineIds) {\n const found = pipelines.find((p) => p.id === pipelineId);\n if (found !== undefined) {\n selectedPipelines.push(found);\n }\n }\n this.store.setPipelineSelection(selectedPipelines);\n this.store.setPipelineStageSelection(this.pipelineStageControl.value);\n this.dialog.closeAll();\n }\n\n setCheckedPipelines(selectedPipelines: Pipeline[]): void {\n this.checkedPipelinesIds$$.next(selectedPipelines);\n if (selectedPipelines.length > 1) {\n this.pipelineStageControl.setValue(null);\n }\n }\n\n setSelectedPipelineStage(selectedStage: StageInterface): void {\n this.selectedPipelineStage$$.next(selectedStage);\n }\n}\n","

{{ 'FRONTEND.SALES_UI.PIPELINE.PIPELINES' | translate }}

\n\n \n {{ 'FRONTEND.SALES_UI.PIPELINE.PIPELINES' | translate }}\n \n \n {{ pipeline.name }}\n \n \n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.PIPELINE_STAGE_LABEL' | translate }}\n \n \n \n {{ pipelineStage.name }}\n \n \n \n \n\n\n \n \n {{ 'FRONTEND.SALES_UI.COMMON.ACTION_LABELS.SAVE' | translate }}\n \n\n","import { NgModule } from '@angular/core';\nimport { PipelineMultiSelectComponent } from './pipeline-multi-select.component';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { VaFormsModule } from '@vendasta/forms';\nimport { PipelineMultiSelectService } from './pipeline-multi-select.service';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n declarations: [PipelineMultiSelectComponent],\n exports: [PipelineMultiSelectComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatButtonModule,\n MatDialogModule,\n TranslateModule,\n VaFormsModule,\n MatSelectModule,\n MatCheckboxModule,\n MatTooltipModule,\n ],\n providers: [PipelineMultiSelectService],\n})\nexport class PipelineMultiSelectModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Status } from '@vendasta/task';\n\n@Injectable()\nexport class StatusSelectService {\n private readonly selectedStatus$$ = new BehaviorSubject([]);\n readonly selectedStatus$ = this.selectedStatus$$.asObservable();\n\n setStatus(statuses: Status[]): void {\n this.selectedStatus$$.next(statuses);\n }\n\n clearStatus(): void {\n this.selectedStatus$$.next([]);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { StatusSelectComponent } from './status-select.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { StatusSelectService } from './status-select.service';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@NgModule({\n declarations: [StatusSelectComponent],\n imports: [CommonModule, TranslateModule, MatDialogModule, MatButtonModule, MatSelectModule, MatCheckboxModule],\n providers: [StatusSelectService],\n})\nexport class StatusSelectModule {}\n","import { NgModule } from '@angular/core';\nimport { SalesTeamMultiSelectComponent } from './sales-team-multi-select.component';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { VaFormsModule } from '@vendasta/forms';\nimport { SalesTeamMultiSelectStoreService } from './sales-team-multi-select-store.service';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { Observable } from 'rxjs';\nimport {\n MARKET_ID_TOKEN,\n PARTNER_ID_TOKEN,\n SALES_TEAM_MULTI_SELECT_CONFIG_TOKEN,\n SALES_TEAMS_SERVICE_TOKEN,\n SalesTeamMultiSelectConfig,\n SalesTeamsService,\n} from './tokens';\n\n@NgModule({\n declarations: [SalesTeamMultiSelectComponent],\n exports: [SalesTeamMultiSelectComponent],\n imports: [CommonModule, ReactiveFormsModule, MatButtonModule, MatDialogModule, TranslateModule, VaFormsModule],\n providers: [\n SalesTeamMultiSelectStoreService,\n { provide: PARTNER_ID_TOKEN, deps: [SALES_TEAM_MULTI_SELECT_CONFIG_TOKEN], useFactory: partnerIdFactory },\n { provide: MARKET_ID_TOKEN, deps: [SALES_TEAM_MULTI_SELECT_CONFIG_TOKEN], useFactory: marketIdFactory },\n {\n provide: SALES_TEAMS_SERVICE_TOKEN,\n deps: [SALES_TEAM_MULTI_SELECT_CONFIG_TOKEN],\n useFactory: salesTeamsServiceFactory,\n },\n ],\n})\nexport class SalesTeamMultiSelectModule {}\n\nfunction partnerIdFactory(config: SalesTeamMultiSelectConfig): Observable {\n return config.partnerId$;\n}\n\nfunction marketIdFactory(config: SalesTeamMultiSelectConfig): Observable {\n return config.marketId$;\n}\n\nfunction salesTeamsServiceFactory(config: SalesTeamMultiSelectConfig): SalesTeamsService {\n return config.salesTeamsService;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { VaFormsModule } from '@vendasta/forms';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { TagMultiSelectComponent } from './tag-multi-selector.component';\nimport { TagMultiSelectionStoreService } from './tag-multi-selection.service';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { Observable } from 'rxjs';\nimport { TagService } from './interface';\nimport {\n MARKET_ID_TOKEN,\n PARTNER_ID_TOKEN,\n TAG_MULTI_SELECT_CONFIG_TOKEN,\n TAG_SERVICE_TOKEN,\n TagMultiSelectConfig,\n} from './tokens';\n\n@NgModule({\n declarations: [TagMultiSelectComponent],\n exports: [TagMultiSelectComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatButtonModule,\n MatDialogModule,\n MatFormFieldModule,\n MatSelectModule,\n MatOptionModule,\n TranslateModule,\n VaFormsModule,\n ],\n providers: [\n TagMultiSelectionStoreService,\n { provide: PARTNER_ID_TOKEN, deps: [TAG_MULTI_SELECT_CONFIG_TOKEN], useFactory: partnerIdFactory },\n { provide: MARKET_ID_TOKEN, deps: [TAG_MULTI_SELECT_CONFIG_TOKEN], useFactory: marketIdFactory },\n {\n provide: TAG_SERVICE_TOKEN,\n deps: [TAG_MULTI_SELECT_CONFIG_TOKEN],\n useFactory: tagServiceFactory,\n },\n ],\n})\nexport class TagMultiSelectModule {}\n\nfunction partnerIdFactory(config: TagMultiSelectConfig): Observable {\n return config.partnerId$;\n}\n\nfunction marketIdFactory(config: TagMultiSelectConfig): Observable {\n return config.marketId$;\n}\n\nfunction tagServiceFactory(config: TagMultiSelectConfig): TagService {\n return config.tagService;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n ActualCloseFilterService,\n ExpectedCloseFilterService,\n CreatedDateFilterService,\n AssignedDateFilterService,\n} from './date-filters.service';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n providers: [\n ExpectedCloseFilterService,\n ActualCloseFilterService,\n CreatedDateFilterService,\n AssignedDateFilterService,\n ],\n})\nexport class DateFiltersModule {}\n","import { NgModule } from '@angular/core';\nimport { SalespersonMultiSelectComponent } from './salesperson-multi-select.component';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { VaFormsModule } from '@vendasta/forms';\nimport { SalespersonMultiSelectStoreService } from './salesperson-multi-select.store.service';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { Observable } from 'rxjs';\nimport { Salesperson } from '@galaxy/types';\nimport {\n ALL_SALESPEOPLE_TOKEN,\n INIT_WITH_CUR_SALESPERSON_TOKEN,\n SALESPERSON_ID_TOKEN,\n SALESPERSON_MULTI_SELECT_CONFIG_TOKEN,\n SALESPERSON_NAME_TOKEN,\n SalespersonMultiSelectConfig,\n} from './tokens';\n\n@NgModule({\n declarations: [SalespersonMultiSelectComponent],\n imports: [CommonModule, ReactiveFormsModule, MatButtonModule, MatDialogModule, TranslateModule, VaFormsModule],\n providers: [\n SalespersonMultiSelectStoreService,\n {\n provide: ALL_SALESPEOPLE_TOKEN,\n deps: [SALESPERSON_MULTI_SELECT_CONFIG_TOKEN],\n useFactory: salespersonFactory,\n },\n {\n provide: SALESPERSON_ID_TOKEN,\n deps: [SALESPERSON_MULTI_SELECT_CONFIG_TOKEN],\n useFactory: salespersonIdFactory,\n },\n {\n provide: SALESPERSON_NAME_TOKEN,\n deps: [SALESPERSON_MULTI_SELECT_CONFIG_TOKEN],\n useFactory: salespersonNameFactory,\n },\n {\n provide: INIT_WITH_CUR_SALESPERSON_TOKEN,\n deps: [SALESPERSON_MULTI_SELECT_CONFIG_TOKEN],\n useFactory: initWithCurSalespersonFactory,\n },\n ],\n})\nexport class SalespersonMultiSelectModule {}\n\nfunction salespersonFactory(config: SalespersonMultiSelectConfig): Observable {\n return config.allSalespeople$;\n}\n\nfunction salespersonIdFactory(config: SalespersonMultiSelectConfig): Observable {\n return config.salespersonId$;\n}\n\nfunction salespersonNameFactory(config: SalespersonMultiSelectConfig): Observable {\n return config.salespersonName$;\n}\n\nfunction initWithCurSalespersonFactory(config: SalespersonMultiSelectConfig): boolean {\n return config.initWithLoggedInSalesperson;\n}\n","import { NgModule } from '@angular/core';\nimport { PipelineFilterPackageSelectorComponent } from './pipeline-filter-package-selector.component';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PipelineFilterPackageStoreService } from './pipeline-filter-package-store.service';\nimport { FormsModule } from '@angular/forms';\nimport { PipelineFilterPackageSelectionService } from './pipeline-filter-package-selection.service';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { ItemSearchSelectFilterModule } from '@galaxy/inventory-ui';\nimport { Observable } from 'rxjs';\nimport { MARKET_ID_TOKEN, PACKAGE_SELECT_CONFIG_TOKEN, PARTNER_ID_TOKEN, PackageSelectConfig } from './tokens';\n\n@NgModule({\n declarations: [PipelineFilterPackageSelectorComponent],\n imports: [\n CommonModule,\n TranslateModule,\n MatSelectModule,\n MatButtonModule,\n MatDialogModule,\n FormsModule,\n ItemSearchSelectFilterModule,\n ],\n providers: [\n PipelineFilterPackageStoreService,\n PipelineFilterPackageSelectionService,\n { provide: PARTNER_ID_TOKEN, deps: [PACKAGE_SELECT_CONFIG_TOKEN], useFactory: partnerIdFactory },\n { provide: MARKET_ID_TOKEN, deps: [PACKAGE_SELECT_CONFIG_TOKEN], useFactory: marketIdFactory },\n ],\n})\nexport class PipelineFilterPackageSelectorModule {}\n\nfunction partnerIdFactory(config: PackageSelectConfig): Observable {\n return config.partnerId$;\n}\n\nfunction marketIdFactory(config: PackageSelectConfig): Observable {\n return config.marketId$;\n}\n","import { NgModule } from '@angular/core';\nimport { PipelineFiltersService } from './pipeline-filters.service';\nimport { PipelineMultiSelectModule } from '../pipeline-multi-select/pipeline-multi-select.module';\nimport { StatusSelectModule } from '../status-select/status-select.module';\nimport { SalesTeamMultiSelectModule } from '../salesteam-multi-select/sales-team-multi-select.module';\nimport { TagMultiSelectModule } from '../tag-selector/tag-multi-selector.module';\nimport { DateFiltersModule } from '../date-filters/date-filters.module';\nimport { SalespersonMultiSelectModule } from '../salesperson-multi-select/salesperson-multi-select.module';\nimport { PipelineFilterPackageSelectorModule } from '../package-selector/pipeline-filter-package-selector.module';\nimport { ProductSelectorModule } from '../product-selector/product-selector.module';\n\n@NgModule({\n imports: [\n PipelineMultiSelectModule,\n StatusSelectModule,\n TagMultiSelectModule,\n SalesTeamMultiSelectModule,\n DateFiltersModule,\n SalespersonMultiSelectModule,\n PipelineFilterPackageSelectorModule,\n ProductSelectorModule,\n ],\n providers: [PipelineFiltersService],\n})\nexport class PipelineFiltersServiceModule {}\n","import { NgModule } from '@angular/core';\nimport { PIPELINE_SERVICE_INJECTION_TOKEN } from '../pipeline/pipeline-service.interface';\nimport { PIPELINE_BOARD_SERVICE_CONFIG_TOKEN, SALESPERSON_ID_TOKEN } from './tokens';\nimport { MARKET_ID_TOKEN, PARTNER_ID_TOKEN } from '../tokens';\nimport { PipelineBoardService } from './pipeline-board.service';\nimport { PipelineFiltersServiceModule } from '../../filters/filters-service/pipeline-filters-service.module';\nimport { PipelineBoardServiceConfig } from './interfaces';\nimport { Observable } from 'rxjs';\nimport { OpportunityServiceModule } from '../../sales-opportunities/opportunity-service.module';\n\n@NgModule({\n imports: [PipelineFiltersServiceModule, OpportunityServiceModule],\n providers: [\n PipelineBoardService,\n {\n provide: PIPELINE_SERVICE_INJECTION_TOKEN,\n useExisting: PipelineBoardService,\n },\n { provide: PARTNER_ID_TOKEN, deps: [PIPELINE_BOARD_SERVICE_CONFIG_TOKEN], useFactory: partnerIdFactory },\n { provide: MARKET_ID_TOKEN, deps: [PIPELINE_BOARD_SERVICE_CONFIG_TOKEN], useFactory: marketIdFactory },\n { provide: SALESPERSON_ID_TOKEN, deps: [PIPELINE_BOARD_SERVICE_CONFIG_TOKEN], useFactory: salespersonIdFactory },\n ],\n})\nexport class PipelineBoardServiceModule {}\n\nfunction partnerIdFactory(config: PipelineBoardServiceConfig): Observable {\n return config.partnerId$;\n}\n\nfunction marketIdFactory(config: PipelineBoardServiceConfig): Observable {\n return config.marketId$;\n}\n\nfunction salespersonIdFactory(config: PipelineBoardServiceConfig): Observable {\n return config.salespersonId$;\n}\n","import { Observable } from 'rxjs';\nimport { SalesTeamMultiSelectConfig } from '../filters/salesteam-multi-select/tokens';\nimport { PackageSelectConfig } from '../filters/package-selector/tokens';\nimport { ProductSelectorConfig } from '../filters/product-selector/tokens';\nimport { TagMultiSelectConfig } from '../filters/tag-selector/tokens';\nimport { PipelineConfig } from './interfaces';\n\nexport function defaultCurrencyCodeFactory(config: PipelineConfig): Observable {\n return config.defaultCurrency$;\n}\n\nexport function pipelineSettingsURLFactory(config: PipelineConfig): string {\n return config.pipelineSettingsURL;\n}\n\nexport function pipelineSettingsAccessFactory(config: PipelineConfig): Observable {\n return config.pipelineSettingsAccess$;\n}\n\nexport function packageSelectConfigFactory(config: PipelineConfig): PackageSelectConfig {\n return {\n partnerId$: config.partnerId$,\n marketId$: config.marketId$,\n };\n}\n\nexport function salesTeamMultiSelectConfigFactory(config: PipelineConfig): SalesTeamMultiSelectConfig {\n return {\n partnerId$: config.partnerId$,\n marketId$: config.marketId$,\n salesTeamsService: config.salesTeamsService,\n };\n}\n\nexport function productSelectorConfigFactory(config: PipelineConfig): ProductSelectorConfig {\n return {\n products$: config.products$,\n };\n}\n\nexport function tagMultiSelectConfigFactory(config: PipelineConfig): TagMultiSelectConfig {\n return {\n marketId$: config.marketId$,\n partnerId$: config.partnerId$,\n tagService: config.tagService,\n };\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n PIPELINE_BOARD_FILTER_CHIPS_CONFIG_TOKEN,\n PipelineBoardFilterChipsConfig,\n} from './filter/pipeline-board-filter-chips/tokens';\nimport { PIPELINE_BOARD_SERVICE_CONFIG_TOKEN } from '../pipeline-board-service/tokens';\nimport {\n PIPELINE_SETTINGS_ACCESS_TOKEN,\n DEFAULT_CURRENCY_CODE_TOKEN,\n MARKET_ID_TOKEN,\n PARTNER_ID_TOKEN,\n PIPELINE_SETTINGS_URL_TOKEN,\n} from '../tokens';\nimport { UserPipelinesModule } from '../user-pipelines/user-pipelines.module';\nimport { PipelineStatusCheckboxModule } from '../pipeline-status-checkbox/pipeline-status-checkbox.module';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport baseTranslation from '../../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../../shared/constants';\nimport { PipelineStats } from '../pipeline-stats/pipeline-stats.service';\nimport { PACKAGE_SELECT_CONFIG_TOKEN } from '../../filters/package-selector/tokens';\nimport { SALES_TEAM_MULTI_SELECT_CONFIG_TOKEN } from '../../filters/salesteam-multi-select/tokens';\nimport { TAG_MULTI_SELECT_CONFIG_TOKEN } from '../../filters/tag-selector/tokens';\nimport { PRODUCT_SELECTOR_CONFIG_TOKEN } from '../../filters/product-selector/tokens';\nimport { ProductSelectorModule } from '../../filters/product-selector/product-selector.module';\nimport { PotentialRevenueModule } from '../pipeline/potential-revenue/potential-revenue.module';\nimport { REVENUE_DEFAULT_CURRENCY_CODE_TOKEN } from '../pipeline/potential-revenue/tokens';\nimport {\n FILTERS_CACHE_SERVICE_TOKEN,\n PipelineFiltersCacheService,\n} from '../pipeline-filters-cache/pipeline-filters-cache.service';\nimport { PIPELINE_SERVICE_INJECTION_TOKEN } from '../pipeline/pipeline-service.interface';\nimport { PipelineBoardService } from '../pipeline-board-service/pipeline-board.service';\nimport { PipelineBusinessNameService } from '../pipeline-business-name/pipeline-business-name.service';\nimport { PipelineBoardServiceModule } from '../pipeline-board-service/pipeline-board-service.module';\nimport { PipelineBoardConfig } from './interfaces';\nimport {\n pipelineSettingsAccessFactory,\n defaultCurrencyCodeFactory,\n packageSelectConfigFactory,\n pipelineSettingsURLFactory,\n productSelectorConfigFactory,\n salesTeamMultiSelectConfigFactory,\n tagMultiSelectConfigFactory,\n} from '../shared';\nimport { PipelineBoardServiceConfig } from '../pipeline-board-service/interfaces';\nimport { PipelineCardModule } from '../pipeline-card/pipeline-card.module';\nimport {\n SALESPERSON_MULTI_SELECT_CONFIG_TOKEN,\n SalespersonMultiSelectConfig,\n} from '../../filters/salesperson-multi-select/tokens';\nimport { PipelineBoardFiltersModule } from './filter/pipeline-board-filters.module';\nimport { CURRENT_PIPELINE, Pipeline, USER_PIPELINES_TOKEN } from '@vendasta/sales-common';\n\nexport const PIPELINE_BOARD_CONFIG_TOKEN = new InjectionToken(\n 'general dependency data for the pipeline board config',\n);\n\n@NgModule({\n imports: [\n UserPipelinesModule,\n PipelineStatusCheckboxModule,\n ProductSelectorModule,\n PotentialRevenueModule,\n PipelineBoardServiceModule,\n PipelineCardModule,\n PipelineBoardFiltersModule,\n LexiconModule.forChild({\n componentName: WEBLATE_COMPONENT_NAME,\n baseTranslation: baseTranslation,\n }),\n ],\n exports: [],\n providers: [PipelineStats],\n})\nexport class PipelineBoardModule {\n static forRoot(config: InjectionToken): ModuleWithProviders {\n return {\n ngModule: PipelineBoardModule,\n providers: [\n { provide: PIPELINE_BOARD_CONFIG_TOKEN, useExisting: config },\n {\n provide: FILTERS_CACHE_SERVICE_TOKEN,\n useExisting: PipelineFiltersCacheService,\n },\n { provide: PIPELINE_SERVICE_INJECTION_TOKEN, useExisting: PipelineBoardService },\n {\n provide: REVENUE_DEFAULT_CURRENCY_CODE_TOKEN,\n deps: [PIPELINE_BOARD_CONFIG_TOKEN],\n useFactory: defaultCurrencyCodeFactory,\n },\n {\n provide: PACKAGE_SELECT_CONFIG_TOKEN,\n deps: [PIPELINE_BOARD_CONFIG_TOKEN],\n useFactory: packageSelectConfigFactory,\n },\n {\n provide: SALESPERSON_MULTI_SELECT_CONFIG_TOKEN,\n deps: [PIPELINE_BOARD_CONFIG_TOKEN],\n useFactory: salespersonMultiSelectConfigFactory,\n },\n {\n provide: SALES_TEAM_MULTI_SELECT_CONFIG_TOKEN,\n deps: [PIPELINE_BOARD_CONFIG_TOKEN],\n useFactory: salesTeamMultiSelectConfigFactory,\n },\n {\n provide: PRODUCT_SELECTOR_CONFIG_TOKEN,\n deps: [PIPELINE_BOARD_CONFIG_TOKEN],\n useFactory: productSelectorConfigFactory,\n },\n {\n provide: TAG_MULTI_SELECT_CONFIG_TOKEN,\n deps: [PIPELINE_BOARD_CONFIG_TOKEN],\n useFactory: tagMultiSelectConfigFactory,\n },\n {\n provide: DEFAULT_CURRENCY_CODE_TOKEN,\n deps: [PIPELINE_BOARD_CONFIG_TOKEN],\n useFactory: defaultCurrencyCodeFactory,\n },\n {\n provide: PIPELINE_SETTINGS_URL_TOKEN,\n deps: [PIPELINE_BOARD_CONFIG_TOKEN],\n useFactory: pipelineSettingsURLFactory,\n },\n {\n provide: PIPELINE_SETTINGS_ACCESS_TOKEN,\n deps: [PIPELINE_BOARD_CONFIG_TOKEN],\n useFactory: pipelineSettingsAccessFactory,\n },\n {\n provide: PIPELINE_BOARD_SERVICE_CONFIG_TOKEN,\n deps: [PIPELINE_BOARD_CONFIG_TOKEN],\n useFactory: pipelineBoardServiceConfigFactory,\n },\n { provide: PARTNER_ID_TOKEN, deps: [PIPELINE_BOARD_CONFIG_TOKEN], useFactory: partnerIdFactory },\n { provide: MARKET_ID_TOKEN, deps: [PIPELINE_BOARD_CONFIG_TOKEN], useFactory: marketIdFactory },\n {\n provide: PIPELINE_BOARD_FILTER_CHIPS_CONFIG_TOKEN,\n deps: [PIPELINE_BOARD_CONFIG_TOKEN],\n useFactory: pipelineBoardFilterChipsConfigFactory,\n },\n {\n provide: USER_PIPELINES_TOKEN,\n deps: [PIPELINE_BOARD_CONFIG_TOKEN],\n useFactory: userPipelinesFactory,\n },\n {\n provide: CURRENT_PIPELINE,\n deps: [PIPELINE_BOARD_CONFIG_TOKEN],\n useFactory: currentPipelineFactory,\n },\n {\n provide: 'SALESPERSON_ID_TOKEN',\n deps: [PIPELINE_BOARD_CONFIG_TOKEN],\n useFactory: (config: PipelineBoardConfig) => config.salespersonId$,\n },\n PipelineBusinessNameService,\n ],\n };\n }\n}\n\nfunction pipelineBoardServiceConfigFactory(config: PipelineBoardConfig): PipelineBoardServiceConfig {\n return {\n marketId$: config.marketId$,\n partnerId$: config.partnerId$,\n salespersonId$: config.salespersonId$,\n pipelines$: config.pipelines$,\n currentPipeline$: config.currentPipeline$,\n };\n}\n\nfunction partnerIdFactory(config: PipelineBoardConfig): Observable {\n return config.partnerId$;\n}\n\nfunction marketIdFactory(config: PipelineBoardConfig): Observable {\n return config.marketId$;\n}\n\nfunction pipelineBoardFilterChipsConfigFactory(config: PipelineBoardConfig): PipelineBoardFilterChipsConfig {\n return {\n allSalespeople$: config.allSalespeople$,\n defaultCurrency$: config.defaultCurrency$,\n opportunityInfoUrlBuilder: config.opportunityInfoUrlBuilder,\n hasAccessToAllAccountsInMarket$: config.hasAccessToAllAccountsInMarket$,\n salesTeamsService: config.salesTeamsService,\n detailsConfig: config.detailsConfig,\n };\n}\n\nfunction userPipelinesFactory(config: PipelineBoardConfig): Observable {\n return config.pipelines$;\n}\n\nexport function salespersonMultiSelectConfigFactory(config: PipelineBoardConfig): SalespersonMultiSelectConfig {\n return {\n allSalespeople$: config.allSalespeople$,\n salespersonId$: config.salespersonId$,\n salespersonName$: config.salespersonName$,\n initWithLoggedInSalesperson: config.initWithLoggedInSalesperson,\n };\n}\n\nfunction currentPipelineFactory(config: PipelineBoardConfig): Observable {\n return config.currentPipeline$;\n}\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { Router } from '@angular/router';\nimport { PipelineBoardViews, PipelinePageCacheService } from '../pipeline/cache/pipeline-page-cache.service';\n\nexport enum PipelinePageUrls {\n BOARD = '/pipeline/board',\n TABLE = '/pipeline/table',\n}\n\n@Injectable({ providedIn: 'root' })\nexport class PipelineSwitcherService {\n private readonly cachedPipelinePage$$ = new ReplaySubject(1);\n readonly cachedPipelinePage$ = this.cachedPipelinePage$$.asObservable();\n\n constructor(\n private readonly router: Router,\n private readonly cache: PipelinePageCacheService,\n ) {\n if (this.cache.lastViewedPipelinePageView === PipelineBoardViews.DEFAULT_BOARD) {\n this.cachedPipelinePage$$.next(PipelinePageUrls.BOARD);\n } else {\n this.cachedPipelinePage$$.next(PipelinePageUrls.TABLE);\n }\n }\n\n navigateToTable(): void {\n this.router.navigate([PipelinePageUrls.TABLE], { queryParamsHandling: 'preserve' });\n this.cachedPipelinePage$$.next(PipelinePageUrls.TABLE);\n this.cache.setLastViewedPipelinePageView(PipelineBoardViews.DEFAULT_TABLE);\n }\n\n navigateToBoard(): void {\n this.router.navigate([PipelinePageUrls.BOARD], { queryParamsHandling: 'preserve' });\n this.cachedPipelinePage$$.next(PipelinePageUrls.BOARD);\n this.cache.setLastViewedPipelinePageView(PipelineBoardViews.DEFAULT_BOARD);\n }\n\n navigateToTableWithAccountFilter(accountGroupId: string): void {\n const params = {\n filters: JSON.stringify({ status: { open: true }, accountGroupId: accountGroupId }),\n };\n this.router.navigate([PipelinePageUrls.TABLE], { queryParams: params });\n this.cachedPipelinePage$$.next(PipelinePageUrls.TABLE);\n this.cache.setLastViewedPipelinePageView(PipelineBoardViews.DEFAULT_TABLE);\n }\n}\n","import { Component } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { PipelinePageUrls, PipelineSwitcherService } from './pipeline-switcher.service';\nimport { PipelineBoardViews, PipelinePageCacheService } from '../pipeline/cache/pipeline-page-cache.service';\n\n@Component({\n selector: 'sales-ui-pipeline-switcher',\n templateUrl: './pipeline-switcher.component.html',\n styleUrls: ['./pipeline-switcher.component.scss'],\n})\nexport class PipelineSwitcherComponent {\n readonly currentPage$: Observable;\n pipelineView: PipelineBoardViews;\n\n constructor(\n private readonly pipelineSwitcherService: PipelineSwitcherService,\n private readonly cache: PipelinePageCacheService,\n ) {\n this.pipelineView = this.cache.lastViewedPipelinePageView || PipelineBoardViews.DEFAULT_TABLE;\n this.currentPage$ = this.pipelineSwitcherService.cachedPipelinePage$;\n }\n\n navigateToTable(): void {\n this.pipelineView = PipelineBoardViews.DEFAULT_TABLE;\n this.pipelineSwitcherService.navigateToTable();\n }\n\n navigateToBoard(): void {\n this.pipelineView = PipelineBoardViews.DEFAULT_BOARD;\n this.pipelineSwitcherService.navigateToBoard();\n }\n}\n","\n\n \n table_rows\n {{ 'FRONTEND.SALES_UI.PIPELINE.PIPELINE_BOARD.TABLE' | translate }}\n \n\n \n grid_view\n {{ 'FRONTEND.SALES_UI.PIPELINE.PIPELINE_BOARD.BOARD' | translate }}\n \n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PipelineSwitcherComponent } from './pipeline-switcher.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n declarations: [PipelineSwitcherComponent],\n providers: [],\n exports: [PipelineSwitcherComponent],\n imports: [CommonModule, MatIconModule, MatButtonToggleModule, TranslateModule],\n})\nexport class PipelineSwitcherModule {}\n","import { Component, Inject, OnDestroy } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Package, ProductInterface } from '@vendasta/marketplace-packages';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { Pipeline } from '@vendasta/sales-common';\nimport { StageInterface } from '@vendasta/sales-opportunities';\nimport { DateRange } from '@vendasta/uikit';\nimport { addWeeks, addYears, startOfMonth } from 'date-fns';\nimport { Observable, ReplaySubject, combineLatest, firstValueFrom } from 'rxjs';\nimport { filter, map, shareReplay, startWith } from 'rxjs/operators';\nimport {\n ActualCloseFilterService,\n AssignedDateFilterService,\n CreatedDateFilterService,\n DateFilterServiceInterface,\n ExpectedCloseFilterService,\n} from '../../filters/date-filters/date-filters.service';\nimport {\n DateRangeSelectorDialogComponent,\n DateRangeSelectorDialogData,\n} from '../../filters/date-range-selector-dialog/date-range-selector-dialog.component';\nimport { SalesTeamOption } from '../../filters/filter-options/sales-team-option.model';\nimport { SalespersonOption } from '../../filters/filter-options/salesperson-option.model';\nimport { OpportunityTypeFilterComponent } from '../../filters/opportunity-type-filter/opportunity-type-filter.component';\nimport { OpportunityTypeFilterService } from '../../filters/opportunity-type-filter/opportunity-type-filter.service';\nimport { PipelineFilterPackageSelectionService } from '../../filters/package-selector/pipeline-filter-package-selection.service';\nimport { PipelineFilterPackageSelectorComponent } from '../../filters/package-selector/pipeline-filter-package-selector.component';\nimport {\n PipelineDialogData,\n PipelineMultiSelectComponent,\n} from '../../filters/pipeline-multi-select/pipeline-multi-select.component';\nimport { PipelineMultiSelectService } from '../../filters/pipeline-multi-select/pipeline-multi-select.service';\nimport { ProductSelectorComponent } from '../../filters/product-selector/product-selector.component';\nimport { ProductSelectorService } from '../../filters/product-selector/product-selector.service';\nimport { SalespersonMultiSelectComponent } from '../../filters/salesperson-multi-select/salesperson-multi-select.component';\nimport { SalespersonMultiSelectStoreService } from '../../filters/salesperson-multi-select/salesperson-multi-select.store.service';\nimport { SalesTeamMultiSelectStoreService } from '../../filters/salesteam-multi-select/sales-team-multi-select-store.service';\nimport { SalesTeamMultiSelectComponent } from '../../filters/salesteam-multi-select/sales-team-multi-select.component';\nimport { TagMultiSelectionStoreService } from '../../filters/tag-selector/tag-multi-selection.service';\nimport { TagMultiSelectComponent } from '../../filters/tag-selector/tag-multi-selector.component';\nimport { PipelineStatusCheckboxComponent } from '../../pipelines/pipeline-status-checkbox/pipeline-status-checkbox.component';\nimport {\n PipelineStatusCheckboxService,\n PipelineStatuses,\n} from '../../pipelines/pipeline-status-checkbox/pipeline-status-checkbox.service';\nimport {\n HAS_ACCESS_TO_ALL_ACCOUNTS_IN_MARKET_TOKEN,\n SALES_TEAM_SERVICE_TOKEN,\n SalesTeamServiceInterface,\n} from '../tokens';\nimport { AccountFilterComponent } from '../../filters/account-filter/account-filter.component';\nimport { AccountFilterService } from '../../filters/account-filter/account-filter.service';\n\n@Component({\n selector: 'sales-ui-pipeline-table-filter-chips',\n templateUrl: './pipeline-table-filter-chips.component.html',\n styleUrls: ['./pipeline-table-filter-chips.component.scss'],\n})\nexport class PipelineTableFilterChipsComponent implements OnDestroy {\n selectedSalespeopleNames$: Observable;\n selectedSalesTeamNames$: Observable;\n showSalespeopleAndTeams$: Observable;\n readonly pipelinesSelectedFilter$: Observable = this.pipelineMultiSelectService.selectedPipelines$.pipe(\n startWith([]),\n shareReplay(1),\n );\n readonly pipelineStageSelectedFilter$: Observable =\n this.pipelineMultiSelectService.selectedPipelineStage$.pipe(shareReplay(1));\n readonly selectedPipelineNames$: Observable;\n readonly expectedCloseFilter$: Observable = this.expectedCloseFilterService.dateRange$.pipe(\n startWith(null),\n shareReplay(1),\n );\n\n readonly selectedTypes$ = this.opportunityTypeFilterService.selectedTypes$;\n readonly selectedTypeNames$ = this.opportunityTypeFilterService.selectedTypeNames$;\n\n readonly expectedCloseFilterToString$: Observable = this.expectedCloseFilterService.dateFilterToString$;\n readonly createdDateFilter$: Observable = this.createdDateFilterService.dateRange$.pipe(\n startWith(null),\n shareReplay(1),\n );\n readonly createdDateFilterToString$: Observable = this.createdDateFilterService.dateFilterToString$;\n readonly actualCloseFilter$: Observable = this.actualCloseFilterService.dateRange$.pipe(\n startWith(null),\n shareReplay(1),\n );\n readonly actualCloseFilterToString$: Observable = this.actualCloseFilterService.dateFilterToString$;\n readonly assignedDateFilter$: Observable = this.assignedDateFilterService.dateRange$.pipe(\n startWith(null),\n shareReplay(1),\n );\n readonly assignedDateFilterToString$: Observable = this.assignedDateFilterService.dateFilterToString$;\n readonly selectedPackages$: Observable;\n readonly selectedPackagesNames$: Observable;\n readonly selectedProducts$: Observable;\n readonly selectedProductNames$: Observable;\n readonly selectedStatusesNames$: Observable;\n readonly selectedAccountGroupName$ = this.accountFilterService.selectedAccountGroupName$;\n\n private readonly subscriptions = SubscriptionList.new();\n private readonly today = new Date();\n private readonly CALENDAR_DEFAULTS = {\n NOW: this.today,\n ADD_ONE_WEEK: addWeeks(this.today, 1),\n ADD_TWO_YEARS: addYears(this.today, 2),\n START_OF_MONTH: startOfMonth(this.today),\n };\n private readonly selectedTags$$ = new ReplaySubject(1);\n readonly selectedTags$: Observable = this.selectedTags$$.asObservable();\n private readonly selectedStatuses$: Observable = this.statusesFilterStore.statuses$;\n readonly hasSelectedStatuses$: Observable = this.selectedStatuses$.pipe(\n map((s: PipelineStatuses): boolean => s?.won || s?.lost || s?.open),\n );\n\n constructor(\n private readonly dialog: MatDialog,\n private readonly spStore: SalespersonMultiSelectStoreService,\n private readonly tagStore: TagMultiSelectionStoreService,\n private readonly stStore: SalesTeamMultiSelectStoreService,\n private readonly pkgStore: PipelineFilterPackageSelectionService,\n private readonly productSelectorService: ProductSelectorService,\n private readonly pipelineMultiSelectService: PipelineMultiSelectService,\n private readonly statusesFilterStore: PipelineStatusCheckboxService,\n private readonly expectedCloseFilterService: ExpectedCloseFilterService,\n private readonly actualCloseFilterService: ActualCloseFilterService,\n private readonly createdDateFilterService: CreatedDateFilterService,\n private readonly assignedDateFilterService: AssignedDateFilterService,\n private readonly opportunityTypeFilterService: OpportunityTypeFilterService,\n private readonly accountFilterService: AccountFilterService,\n private readonly i18n: TranslateService,\n @Inject(SALES_TEAM_SERVICE_TOKEN) private salesTeamsService: SalesTeamServiceInterface,\n @Inject(HAS_ACCESS_TO_ALL_ACCOUNTS_IN_MARKET_TOKEN) private hasAccessToAllAccountsInMarket$: Observable,\n ) {\n this.subscriptions.add(this.stStore.selectedSalesTeams$.pipe(map((st) => st.map((s) => s.id))), (ids) =>\n this.salesTeamsService.salesTeamIdsToArrayOfSalesPeopleIds(ids),\n );\n\n this.selectedSalespeopleNames$ = this.spStore.selectedSalespeople$.pipe(\n map((sp: SalespersonOption[]): string => sp.map((s) => s.fullName).join(', ')),\n );\n\n this.selectedPipelineNames$ = this.pipelinesSelectedFilter$.pipe(\n filter((p) => Boolean(p)),\n map((pipelines) => pipelines.map((p) => p.name).join(', ')),\n );\n\n this.selectedSalesTeamNames$ = this.stStore.selectedSalesTeams$.pipe(\n map((sp: SalesTeamOption[]): string => sp.map((s) => s.teamName).join(', ')),\n );\n this.showSalespeopleAndTeams$ = this.hasAccessToAllAccountsInMarket$;\n this.subscriptions.add(\n combineLatest([this.tagStore.selectedOppTags$, this.tagStore.selectedAccountTags$]),\n ([oppTags, accTags]) => {\n if ((oppTags || []).length === 0 && (accTags || []).length === 0) {\n this.selectedTags$$.next(null);\n } else {\n this.selectedTags$$.next(oppTags.concat(accTags).map((t) => t.name));\n }\n },\n );\n this.selectedPackages$ = this.pkgStore.selectedPackages$;\n this.selectedPackagesNames$ = this.selectedPackages$.pipe(\n filter((p) => Boolean(p)),\n map((packages) => packages.map((p) => p.name).join(', ')),\n );\n\n this.selectedProducts$ = this.productSelectorService.selectedProducts$;\n this.selectedProductNames$ = this.productSelectorService.selectedProducts$.pipe(\n map((products) => {\n return products.map((p) => p.name).join(', ');\n }),\n );\n\n this.selectedStatusesNames$ = this.buildStatusFitlerChipNames();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.destroy();\n }\n\n openSalespeopleSelector(): void {\n this.dialog.open(SalespersonMultiSelectComponent, { width: '400px' });\n }\n\n openAccountGroupFilter(): void {\n this.dialog.open(AccountFilterComponent, { width: '400px' });\n }\n\n openOpportunityTypeFilter(): void {\n this.dialog.open(OpportunityTypeFilterComponent, { width: '400px' });\n }\n\n async openPipelineSelector(): Promise {\n const pipelines = await firstValueFrom(this.pipelinesSelectedFilter$);\n const pipelineStage = await firstValueFrom(this.pipelineStageSelectedFilter$);\n this.dialog.open(PipelineMultiSelectComponent, {\n width: '400px',\n data: { pipelines: pipelines, pipelineStage: pipelineStage },\n });\n }\n\n async openExpectedCloseSelector(): Promise {\n const expectedCloseFilter = await firstValueFrom(this.expectedCloseFilter$);\n const dateRangeSelectorData = {\n maxDate: this.CALENDAR_DEFAULTS.ADD_TWO_YEARS,\n beginDate: expectedCloseFilter?.start ?? this.CALENDAR_DEFAULTS.NOW,\n endDate: expectedCloseFilter?.end ?? this.CALENDAR_DEFAULTS.ADD_ONE_WEEK,\n };\n await this.dialogResultsToDateService(dateRangeSelectorData, this.expectedCloseFilterService);\n }\n\n async openAssignedDateSelector(): Promise {\n const assignedDateFilter = await firstValueFrom(this.assignedDateFilter$);\n const dateRangeSelectorData = {\n maxDate: this.CALENDAR_DEFAULTS.NOW,\n beginDate: assignedDateFilter?.start ?? this.CALENDAR_DEFAULTS.START_OF_MONTH,\n endDate: assignedDateFilter?.end ?? this.CALENDAR_DEFAULTS.NOW,\n };\n await this.dialogResultsToDateService(dateRangeSelectorData, this.assignedDateFilterService);\n }\n\n async openActualCloseSelector(): Promise {\n const actualCloseFilter = await firstValueFrom(this.actualCloseFilter$);\n const dateRangeSelectorData = {\n maxDate: this.CALENDAR_DEFAULTS.ADD_TWO_YEARS,\n beginDate: actualCloseFilter?.start ?? this.CALENDAR_DEFAULTS.NOW,\n endDate: actualCloseFilter?.end ?? this.CALENDAR_DEFAULTS.ADD_ONE_WEEK,\n };\n\n await this.dialogResultsToDateService(dateRangeSelectorData, this.actualCloseFilterService);\n }\n\n async openCreatedDateSelector(): Promise {\n const createdDateFilter = await firstValueFrom(this.createdDateFilter$);\n const dateRangeSelectorData = {\n maxDate: this.CALENDAR_DEFAULTS.NOW,\n beginDate: createdDateFilter?.start ?? this.CALENDAR_DEFAULTS.START_OF_MONTH,\n endDate: createdDateFilter?.end ?? this.CALENDAR_DEFAULTS.NOW,\n };\n await this.dialogResultsToDateService(dateRangeSelectorData, this.createdDateFilterService);\n }\n\n clearPipelinesFilter(): void {\n this.pipelineMultiSelectService.clearPipelineSelection();\n this.pipelineMultiSelectService.clearPipelineStageSelection();\n }\n\n clearExpectedCloseFilter(): void {\n this.expectedCloseFilterService.clearSelection();\n }\n\n clearActualCloseFilter(): void {\n this.actualCloseFilterService.clearSelection();\n }\n\n clearAssignedDateFilter(): void {\n this.assignedDateFilterService.clearSelection();\n }\n\n clearCreatedDateFilter(): void {\n this.createdDateFilterService.clearSelection();\n }\n\n clearAccountGroupFilter(): void {\n this.accountFilterService.clearAccountGroupFilter();\n }\n\n openSalesTeamSelector(): void {\n this.dialog.open(SalesTeamMultiSelectComponent, { width: '400px' });\n }\n\n clearSalespeopleFilters(): void {\n this.spStore.setSelectedSalespeople([]);\n }\n\n clearOpportunityTypeFilter(): void {\n this.opportunityTypeFilterService.clearOpportunityTypeSelection();\n }\n\n openTagSelector(): void {\n this.dialog.open(TagMultiSelectComponent, { width: '400px' });\n }\n\n clearSalesTeamFilters(): void {\n this.stStore.setSelectedSalesTeams([]);\n }\n\n clearTagFilter(): void {\n this.tagStore.clearTagsSelection();\n }\n\n openPipelineStatusSelector(): void {\n this.dialog.open(PipelineStatusCheckboxComponent, { width: '400px' });\n }\n\n clearPipelineStatuses(): void {\n this.statusesFilterStore.resetFilter();\n }\n\n public openPackageSelector(): void {\n this.dialog.open(PipelineFilterPackageSelectorComponent, {\n width: '400px',\n });\n }\n\n public openProductSelector(): void {\n this.dialog.open(ProductSelectorComponent, {\n width: '400px',\n });\n }\n\n clearPackageFilter(): void {\n this.pkgStore.clearPackageSelection();\n }\n\n clearProductsFilter(): void {\n this.productSelectorService.clearProductSelection();\n }\n\n private buildStatusFitlerChipNames(): Observable {\n const i18nWonKey = 'FRONTEND.SALES_OPPORTUNITIES.WON_FILTER';\n const i18nLostKey = 'FRONTEND.SALES_OPPORTUNITIES.LOST_FILTER';\n const i18nOpenKey = 'FRONTEND.SALES_OPPORTUNITIES.OPEN_FILTER';\n return combineLatest([this.i18n.stream([i18nWonKey, i18nLostKey, i18nOpenKey]), this.selectedStatuses$]).pipe(\n map(([translations, s]: [any, PipelineStatuses]): string => {\n const won = s?.won ? translations[i18nWonKey] : '';\n const lost = s?.lost ? translations[i18nLostKey] : '';\n const open = s?.open ? translations[i18nOpenKey] : '';\n return [won, lost, open].filter(Boolean).join(', ');\n }),\n );\n }\n\n private async dialogResultsToDateService(\n dateRangeSelectorData: DateRangeSelectorDialogData,\n dateService: DateFilterServiceInterface,\n ): Promise {\n const dialogRef = this.dialog.open(DateRangeSelectorDialogComponent, { data: dateRangeSelectorData });\n await firstValueFrom(\n dialogRef.afterClosed().pipe(\n map((results: DateRangeSelectorDialogData) => {\n if (results != null) {\n dateService.setDateRange(results.beginDate, results.endDate);\n }\n }),\n ),\n );\n }\n}\n","\n \n {{ 'FRONTEND.SALES_UI.COMMON.SALESPEOPLE_LABEL' | translate }}:\n {{ names }}\n \n\n \n {{ 'FRONTEND.SALES_UI.COMMON.SALES_TEAM_LABEL' | translate }}:\n {{ names }}\n \n\n \n {{ 'FRONTEND.SALES_UI.PIPELINE.ASSIGNED_DATE_LABEL' | translate }}:\n \n {{ assignedDateFilterToString$ | async }}\n \n \n\n \n {{ 'FRONTEND.SALES_UI.PIPELINE.STATUS_LABEL' | translate }}:\n \n {{ selectedStatusesNames$ | async }}\n \n \n\n 0\"\n [canRemove]=\"true\"\n >\n {{ 'FRONTEND.SALES_UI.COMMON.PACKAGES_LABEL' | translate }}:\n \n {{ selectedPackagesNames$ | async }}\n \n \n\n 0\"\n [canRemove]=\"true\"\n >\n {{ 'FRONTEND.SALES_UI.COMMON.PRODUCTS_LABEL' | translate }}:\n \n {{ selectedProductNames$ | async }}\n \n \n\n \n {{ 'FRONTEND.SALES_UI.TAG' | translate }}:\n {{ tags }}\n \n\n 0\"\n [canRemove]=\"true\"\n >\n {{ 'FRONTEND.SALES_UI.PIPELINE.PIPELINES' | translate }}:\n {{ selectedPipelineNames$ | async }}\n \n\n \n {{ 'FRONTEND.SALES_UI.PIPELINE.EXPECTED_CLOSE_LABEL' | translate }}:\n \n {{ expectedCloseFilterToString$ | async }}\n \n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.CREATED_DATE_LABEL' | translate }}:\n \n {{ createdDateFilterToString$ | async }}\n \n \n\n 0\"\n [canRemove]=\"true\"\n >\n {{ 'FRONTEND.SALES_UI.PIPELINE.TYPE_LABEL' | translate }}:\n \n {{ selectedTypeNames$ | async }}\n \n \n\n \n {{ 'FRONTEND.SALES_UI.PIPELINE.ACTUAL_CLOSE_LABEL' | translate }}:\n \n {{ actualCloseFilterToString$ | async }}\n \n \n\n \n {{ 'FRONTEND.SALES_UI.ACCOUNT' | translate }}:\n \n {{ selectedAccountGroupName$ | async }}\n \n \n\n \n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.TYPE_LABEL' | translate }}...\n \n \n \n {{ 'FRONTEND.SALES_UI.COMMON.SALESPEOPLE_LABEL' | translate }}...\n \n \n {{ 'FRONTEND.SALES_UI.COMMON.SALES_TEAM_LABEL' | translate }}...\n \n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.STATUS_LABEL' | translate }}...\n \n \n {{ 'FRONTEND.SALES_UI.COMMON.PACKAGES_LABEL' | translate }}...\n \n \n {{ 'FRONTEND.SALES_UI.COMMON.PRODUCTS_LABEL' | translate }}...\n \n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.PIPELINES' | translate }}...\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.EXPECTED_CLOSE_LABEL' | translate }}...\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.ACTUAL_CLOSE_LABEL' | translate }}...\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.CREATED_DATE_LABEL' | translate }}...\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.ASSIGNED_DATE_LABEL' | translate }}...\n \n \n\n","import { Observable } from 'rxjs';\nimport { SalesTeamsService } from '../../filters/salesteam-multi-select/tokens';\nimport { InjectionToken } from '@angular/core';\n\nexport interface PipelineTableFilterChipsConfig {\n hasAccessToAllAccountsInMarket$: Observable;\n salesTeamsService: SalesTeamsService;\n}\n\nexport const PIPELINE_TABLE_FILTER_CHIPS_CONFIG_TOKEN = new InjectionToken(\n 'general dependency data for the pipeline table filter chips',\n);\n","import { NgModule } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { FilterModule } from '@vendasta/va-filter2';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { PipelineTableFilterChipsComponent } from './pipeline-table-filter-chips.component';\nimport { FilterChipsModule } from '../../filters/filter-chips/filter-chips.module';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { PIPELINE_TABLE_FILTER_CHIPS_CONFIG_TOKEN, PipelineTableFilterChipsConfig } from './tokens';\nimport {\n HAS_ACCESS_TO_ALL_ACCOUNTS_IN_MARKET_TOKEN,\n SALES_TEAM_SERVICE_TOKEN,\n SalesTeamServiceInterface,\n} from '../tokens';\n\n@NgModule({\n declarations: [PipelineTableFilterChipsComponent],\n exports: [PipelineTableFilterChipsComponent],\n imports: [CommonModule, FilterChipsModule, FilterModule, MatDialogModule, TranslateModule, MatMenuModule],\n providers: [\n {\n provide: HAS_ACCESS_TO_ALL_ACCOUNTS_IN_MARKET_TOKEN,\n deps: [PIPELINE_TABLE_FILTER_CHIPS_CONFIG_TOKEN],\n useFactory: hasAccessToAllAccountsInMarketFactory,\n },\n {\n provide: SALES_TEAM_SERVICE_TOKEN,\n deps: [PIPELINE_TABLE_FILTER_CHIPS_CONFIG_TOKEN],\n useFactory: salesTeamsServiceFactory,\n },\n ],\n})\nexport class PipelineTableFilterChipsModule {}\n\nfunction hasAccessToAllAccountsInMarketFactory(config: PipelineTableFilterChipsConfig): Observable {\n return config.hasAccessToAllAccountsInMarket$;\n}\n\nfunction salesTeamsServiceFactory(config: PipelineTableFilterChipsConfig): SalesTeamServiceInterface {\n return config.salesTeamsService;\n}\n","import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\n\n@Injectable()\nexport class SearchbarService {\n private readonly searchTerm$$ = new ReplaySubject(1);\n readonly searchTerm$ = this.searchTerm$$.asObservable();\n\n setSearchTerm(term: string): void {\n this.searchTerm$$.next(term);\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { Observable } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { SearchbarService } from './searchbar.service';\n\n@Component({\n selector: 'sales-ui-searchbar',\n templateUrl: './searchbar.component.html',\n styleUrls: [],\n})\nexport class SearchbarComponent implements OnInit, OnDestroy {\n @Input() i18nPlaceholderToken: string;\n\n readonly currentTerm$: Observable = this.store.searchTerm$.pipe(startWith(''));\n readonly searchCtrl = new UntypedFormControl();\n private readonly subscriptions: SubscriptionList = SubscriptionList.new();\n\n constructor(private readonly store: SearchbarService) {}\n\n ngOnInit(): void {\n this.subscriptions.add(this.searchCtrl.valueChanges, (change: string) => this.store.setSearchTerm(change));\n }\n\n ngOnDestroy(): void {\n this.subscriptions.destroy();\n }\n}\n","\n \n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SearchbarComponent } from './searchbar.component';\nimport { SearchbarService } from './searchbar.service';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [SearchbarComponent],\n exports: [SearchbarComponent],\n providers: [SearchbarService],\n imports: [CommonModule, TranslateModule, GalaxyFormFieldModule, ReactiveFormsModule],\n})\nexport class SearchbarModule {}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Salesperson } from '@galaxy/types';\nimport { AccountUrlFunction, OpportunityUrlFunction } from '../../sales-opportunities/opportunity';\n\nexport const PIPELINE_TABLE_SERVICE_CONFIG_TOKEN = new InjectionToken(\n 'general dependency data for the pipeline table',\n);\n\nexport interface PipelineTableServiceConfig {\n getOpportunityDetailsUrl?: OpportunityUrlFunction;\n getAccountDetailsUrl?: AccountUrlFunction;\n partnerId$: Observable;\n marketId$: Observable;\n defaultCurrency$: Observable;\n allSalespeople$: Observable;\n}\n\nexport const ALL_SALESPEOPLE_TOKEN: InjectionToken> = new InjectionToken(\n 'token for all salespeople',\n);\nexport const DEFAULT_CURRENCY_TOKEN: InjectionToken> = new InjectionToken(\n 'token for default currency',\n);\nexport const OPPORTUNITY_DETAILS_URL_TOKEN: InjectionToken = new InjectionToken(\n 'token for opportunity details URL generator',\n);\nexport const ACCOUNT_DETAILS_URL_TOKEN: InjectionToken = new InjectionToken(\n 'token for account details URL generator',\n);\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Sort } from '@angular/material/sort';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { Salesperson } from '@galaxy/types';\nimport { SwitchingWorkState } from '@vendasta/rx-utils/work-state';\nimport {\n DateRangeFilter,\n ListOpportunitiesRequestFilters,\n ListOpportunitiesRequestSortField,\n ListOpportunitiesRequestSortOptionInterface,\n Opportunity,\n OpportunityRevenuePeriod,\n SalesOpportunitiesService,\n} from '@vendasta/sales-opportunities';\nimport { DateRange } from '@vendasta/uikit';\nimport { BehaviorSubject, Observable, ReplaySubject, Subject, combineLatest, firstValueFrom, merge } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n map,\n scan,\n shareReplay,\n startWith,\n switchMap,\n take,\n tap,\n} from 'rxjs/operators';\nimport { PipelineFiltersService, PipelineTableFilters } from '../../filters/filters-service/pipeline-filters.service';\nimport { PipelineField, PipelineSort, SortDirection, buildSortOptions, defaultSortOption } from '../pipeline-sort';\nimport { PipelineStatuses } from '../pipeline-status-checkbox/pipeline-status-checkbox.service';\nimport { PipelineUIFilters } from '../pipeline/pipeline-service.interface';\nimport { PotentialRevenueService } from '../pipeline/potential-revenue/potential-revenue.service';\nimport { SearchbarService } from '../searchbar/searchbar.service';\nimport { MARKET_ID_TOKEN, PARTNER_ID_TOKEN } from '../tokens';\nimport { OpportunityRow, PipelineTableServiceInterface } from './pipeline-table.service.interface';\nimport {\n ACCOUNT_DETAILS_URL_TOKEN,\n ALL_SALESPEOPLE_TOKEN,\n DEFAULT_CURRENCY_TOKEN,\n OPPORTUNITY_DETAILS_URL_TOKEN,\n} from './tokens';\n\nconst DEFAULT_SEARCH_TERM = '';\n\nconst DIRECTION_PROPERTY = 'direction';\n\nenum queryConstants {\n SORT_DIRECTION = 'sortDir',\n ACTIVE_COLUMN = 'sortCol',\n SEARCH_TERM = 'searchTerm',\n}\n\nexport interface SearchRequest {\n filters: ListOpportunitiesRequestFilters;\n partnerId: string;\n marketId: string;\n sort: ListOpportunitiesRequestSortOptionInterface;\n searchTerm: string;\n}\n\ninterface InternalSearchRequest extends SearchRequest {\n cursor: string;\n reset: boolean;\n}\n\ninterface OpportunitiesSearchResponse {\n rows: OpportunityRow[];\n reset: boolean;\n}\n\nexport const PAGE_SIZE = 20;\n\nexport const calculateRevenueInMonth = (\n initialRevenue: number,\n recurringRevenue: number,\n oppCloseDate: Date,\n filterDate: Date,\n) => {\n const safeInitialRevenue = initialRevenue || 0;\n const safeRecurringRevenue = recurringRevenue || 0;\n\n if (!filterDate) {\n return 0;\n }\n if (oppCloseDate.getMonth() === filterDate.getMonth() && oppCloseDate.getFullYear() === filterDate.getFullYear()) {\n return safeInitialRevenue + safeRecurringRevenue;\n }\n return safeRecurringRevenue;\n};\n\nfunction pipelineStatusesToListOpportunitiesRequestFilter(statuses: PipelineStatuses): string[] {\n const out = [];\n if (statuses?.open) {\n out.push('open');\n }\n if (statuses?.won) {\n out.push('closed-won');\n }\n if (statuses?.lost) {\n out.push('closed-lost');\n }\n return out;\n}\n\n@Injectable()\nexport class PipelineTableService implements PipelineTableServiceInterface {\n readonly selectedFilters$: Observable;\n readonly resetToFirstPage$: Observable;\n\n readonly opportunities$: Observable;\n\n private readonly totalItems$$ = new ReplaySubject(1);\n readonly totalItems$ = this.totalItems$$.asObservable().pipe(startWith(0));\n\n private readonly nextCursor$$ = new ReplaySubject(1);\n // WARNING: do not use outside this class, only public for tests\n // TODO (SSC-3893): make private\n readonly nextCursor$ = this.nextCursor$$.asObservable();\n\n private readonly triggerCursorUpdate$$ = new ReplaySubject(1);\n private readonly triggerCursorUpdate$ = this.triggerCursorUpdate$$.pipe(startWith({}));\n\n private readonly triggerTableReload$$ = new Subject();\n readonly triggerTableReload$ = this.triggerTableReload$$.asObservable().pipe(startWith({}));\n\n private readonly searchTerm$: Observable;\n private readonly lastSearchTerm$$ = new BehaviorSubject(DEFAULT_SEARCH_TERM);\n readonly lastSearchTerm$ = this.lastSearchTerm$$.asObservable();\n\n private readonly sort$$ = new ReplaySubject(1);\n readonly sort$: Observable;\n private lastSort$$ = new BehaviorSubject({} as PipelineSort);\n\n private lastMarketId$$ = new BehaviorSubject('');\n\n private readonly enabledColumns$$ = new ReplaySubject(1);\n readonly enabledColumns$ = this.enabledColumns$$.asObservable();\n\n private readonly isMonthlyFilterSet$ = this.potentialRevenueService.selectedDate$.pipe(\n startWith(false),\n map((selectedDate) => !!selectedDate),\n );\n\n private readonly listOpportunitiesState = new SwitchingWorkState(\n (e) => this.searchOpportunities(e),\n );\n\n readonly loading$ = this.listOpportunitiesState.isLoading$.pipe(shareReplay(1));\n readonly listOpportunityError$ = this.listOpportunitiesState.isSuccess$.pipe(map((s) => !s));\n\n readonly preferredCurrency$: Observable = this.defaultCurrency$;\n\n // WARNING: do not use outside this class, only public for tests\n // TODO (SSC-3893): have only in a constant in the constructor again\n readonly listOpportunityTrigger$: Observable;\n\n selectedUIFilters$ = this.pipelineFiltersService.selectedUIFilters$;\n\n constructor(\n @Inject(PARTNER_ID_TOKEN) private readonly partnerId$: Observable,\n @Inject(MARKET_ID_TOKEN) private readonly marketId$: Observable,\n @Inject(ALL_SALESPEOPLE_TOKEN) private readonly allSalespeople$: Observable,\n @Inject(DEFAULT_CURRENCY_TOKEN) private readonly defaultCurrency$: Observable,\n @Inject(OPPORTUNITY_DETAILS_URL_TOKEN)\n @Optional()\n private readonly generateOpportunityDetailsUrl: (opp: Opportunity) => string,\n @Inject(ACCOUNT_DETAILS_URL_TOKEN) private readonly generateAccountDetailsUrl: (opp: Opportunity) => string,\n private readonly salesOpportunitiesService: SalesOpportunitiesService,\n private readonly searchbarStore: SearchbarService,\n private readonly potentialRevenueService: PotentialRevenueService,\n private readonly pipelineFiltersService: PipelineFiltersService,\n private readonly activatedRoute: ActivatedRoute,\n private readonly router: Router,\n ) {\n this.selectedFilters$ = this.pipelineFiltersService.selectedFiltersListRequestData$.pipe(\n tap(() => this.nextCursor$$.next(null)),\n );\n\n this.searchTerm$ = this.searchbarStore.searchTerm$.pipe(debounceTime(400), startWith(DEFAULT_SEARCH_TERM));\n\n const routeParams = this.activatedRoute?.snapshot?.queryParams;\n this.sort$ = this.setInitialSort(routeParams);\n this.setInitialSearchTerm(routeParams);\n this.setupLiveQueryParams();\n\n this.resetToFirstPage$ = combineLatest([this.searchTerm$, this.selectedFilters$, this.sort$]).pipe(map(() => 0));\n\n this.opportunities$ = this.getOpportunities$();\n\n this.listOpportunityTrigger$ = combineLatest([\n this.triggerTableReload$,\n this.marketId$,\n this.selectedFilters$,\n this.searchTerm$,\n this.triggerCursorUpdate$,\n this.sort$,\n ]).pipe(\n switchMap(([triggerReload, marketId, filters, searchTerm, triggerCursor, sort]) => {\n return combineLatest([this.partnerId$, this.nextCursor$]).pipe(\n take(1),\n map(([partnerId, cursor]) => {\n return [triggerReload, filters, partnerId, marketId, searchTerm, cursor, triggerCursor, sort];\n }),\n );\n }),\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)),\n map(\n ([, filters, partnerId, marketId, searchTerm, cursor, , sort]: [\n void,\n PipelineTableFilters,\n string,\n string,\n string,\n string,\n void,\n PipelineSort,\n ]) => {\n let shouldGoToFirstPage = false;\n const lastSortValue = this.lastSort$$.getValue();\n const hasSortChanged =\n lastSortValue?.isAscending !== sort.isAscending || lastSortValue?.active !== sort.active;\n if (\n this.cursorIsEmpty(cursor) ||\n this.searchChanged(searchTerm) ||\n hasSortChanged ||\n this.marketIdChanged(marketId)\n ) {\n cursor = null;\n shouldGoToFirstPage = true;\n }\n\n this.lastSort$$.next(sort);\n this.lastSearchTerm$$.next(searchTerm);\n this.lastMarketId$$.next(marketId);\n\n return {\n filters: this.getUpdatedFilters(filters),\n partnerId: partnerId,\n marketId: marketId,\n sort: buildSortOptions(sort),\n searchTerm: searchTerm,\n cursor: cursor,\n reset: shouldGoToFirstPage,\n };\n },\n ),\n );\n\n this.listOpportunityTrigger$.subscribe((req) => this.listOpportunitiesState.startWork(req));\n }\n\n applyFiltersFromQueryParams(): void {\n this.pipelineFiltersService.applyFiltersFromQueryParams();\n }\n\n applySavedFiltersFromStorage(searchTerm: string, filters: PipelineUIFilters, sort: PipelineSort | Sort): void {\n this.searchbarStore.setSearchTerm(searchTerm);\n this.pipelineFiltersService.applySavedFiltersFromStorage(filters);\n if (DIRECTION_PROPERTY in sort) {\n const legacySort = {\n active: sort.active as PipelineField,\n isAscending: sort.direction === SortDirection.ASC,\n };\n this.applySorting(legacySort);\n } else {\n this.applySorting(sort as PipelineSort);\n }\n }\n\n getOpportunities$(): Observable {\n return this.listOpportunitiesState.workResults$.pipe(\n scan(\n (accumulator, response) => {\n if (response.reset === true) {\n return response.rows;\n }\n return accumulator.concat(response.rows);\n },\n [],\n ),\n shareReplay(1),\n );\n }\n\n reloadTable(): void {\n this.triggerTableReload$$.next();\n }\n\n applySorting(sort: PipelineSort): void {\n this.sort$$.next(sort);\n }\n\n async getNextPage(): Promise {\n const next = await firstValueFrom(this.nextCursor$);\n if (next !== '' && !!next) {\n this.triggerCursorUpdate$$.next();\n }\n return;\n }\n\n setEnabledColumns$(): Observable {\n const alwaysVisibleColumns = [\n PipelineField.OPPORTUNITY,\n PipelineField.ACCOUNT,\n PipelineField.PIPELINE_NAME,\n PipelineField.PIPELINE_STAGE,\n PipelineField.POTENTIAL,\n PipelineField.TYPE,\n PipelineField.STATUS,\n PipelineField.MEDDIC,\n PipelineField.CREATED,\n PipelineField.EXPECTED_CLOSE,\n PipelineField.ACTUAL_CLOSE,\n PipelineField.ASSIGNEE,\n PipelineField.ASSIGNED_DATE,\n PipelineField.CALLS,\n PipelineField.EMAILS,\n PipelineField.MEETINGS,\n PipelineField.TOTAL_EFFORTS,\n PipelineField.CONNECTIONS,\n PipelineField.LAST_ACTIVITY,\n PipelineField.LAST_CONNECTED,\n ];\n\n return this.isMonthlyFilterSet$.pipe(\n map((isMonthlyColumnSet) => {\n const defaultColumns = Object.assign([], alwaysVisibleColumns);\n\n if (isMonthlyColumnSet) {\n const potentialColumnPosition = defaultColumns.indexOf(PipelineField.POTENTIAL);\n defaultColumns.splice(potentialColumnPosition + 1, 0, PipelineField.MONTHLY_REVENUE);\n }\n\n this.enabledColumns$$.next(defaultColumns);\n }),\n );\n }\n\n private cursorIsEmpty(cursor: string): boolean {\n return !cursor;\n }\n\n private searchChanged(term: string): boolean {\n const lastSearchTerm = this.lastSearchTerm$$.getValue();\n return term !== lastSearchTerm;\n }\n\n private marketIdChanged(marketId: string): boolean {\n const lastMarketId = this.lastMarketId$$.getValue();\n return !!lastMarketId && lastMarketId != marketId;\n }\n\n private getUpdatedFilters(filters: PipelineTableFilters): ListOpportunitiesRequestFilters {\n const revDate = filters.monthlyRevenueDate\n ? { revenueDate: filters.monthlyRevenueDate, revenuePeriod: OpportunityRevenuePeriod.SELECTED_MONTH }\n : null;\n const statuses = pipelineStatusesToListOpportunitiesRequestFilter(filters.statuses);\n\n const tags = [];\n if (filters?.oppTags?.length > 0) {\n tags.push(...filters.oppTags);\n }\n if (filters?.acctTags?.length > 0) {\n tags.push(...filters.acctTags);\n }\n\n let probabilityRange = null;\n if (filters?.pipelines?.length === 1 && !!filters.pipelineStage) {\n probabilityRange = filters.pipelines[0].findProbabilityRangeFromStage(filters.pipelineStage);\n }\n\n return {\n accountGroupId: filters.accountGroupId !== null ? filters.accountGroupId : null,\n salesPersonIds: filters.salespeopleIds?.length > 0 ? filters.salespeopleIds : null,\n pipelineIds: filters.pipelines ? filters.pipelines.map((p) => p.id) : null,\n tags: tags.length > 0 ? tags : null,\n lineItemProductIds: filters.products?.length > 0 ? filters.products.map((p) => p.productId) : null,\n packageIds: filters.packages?.length > 0 ? filters.packages.map((p) => p.packageId) : null,\n actualCloseDateFilter: this.dateRangeToDateRangeFilter(filters.actualClose),\n expectedCloseDateFilter: this.dateRangeToDateRangeFilter(filters.expectedClose),\n createdDateFilter: this.dateRangeToDateRangeFilter(filters.createdDate),\n probabilityRangeFilter: probabilityRange,\n revenuePeriodFilter: revDate,\n pipelineStages: statuses,\n assignedDate: this.dateRangeToDateRangeFilter(filters.assignedDate),\n opportunityTypes: filters.types?.length > 0 ? filters.types.map((t) => t.id) : null,\n };\n }\n\n private dateRangeToDateRangeFilter(dateRange: DateRange): DateRangeFilter {\n return dateRange ? { beginRange: dateRange.start, endRange: dateRange.end } : null;\n }\n\n private search(req: InternalSearchRequest): Observable {\n return combineLatest([\n this.salesOpportunitiesService.list(\n req.partnerId,\n req.marketId,\n req.filters,\n req.sort,\n req.searchTerm,\n PAGE_SIZE,\n req.cursor,\n ),\n this.allSalespeople$,\n ]).pipe(\n map(([response, salespeople]) => {\n this.totalItems$$.next(response.totalResults);\n this.nextCursor$$.next(response.nextCursor);\n this.potentialRevenueService.setMonthlyRevenue(response.totalRevenueForRevenuePeriod || 0);\n this.potentialRevenueService.setPotentialRevenue(response.totalProjectedFirstYearValue || 0);\n const rows = this.rawOpportunitiesToRows(\n response.results || [],\n salespeople || [],\n req.filters?.revenuePeriodFilter?.revenueDate,\n );\n return {\n rows: rows,\n reset: req.reset,\n };\n }),\n );\n }\n\n private rawOpportunitiesToRows(\n rawOpps: Opportunity[],\n salespeople: Salesperson[],\n revenueMonth?: Date,\n ): OpportunityRow[] {\n return rawOpps.map((opp) => {\n return {\n id: opp.opportunityId,\n name: opp.name,\n opportunityUrl: this.generateOpportunityDetailsUrl ? this.generateOpportunityDetailsUrl(opp) : null,\n accountUrl: this.generateAccountDetailsUrl(opp),\n accountGroupId: opp.accountGroupId,\n\n pipelineId: opp.pipelineId,\n probability: opp.probability,\n\n potentialRevenue: opp.projectedFirstYearValue,\n monthlyRevenue: calculateRevenueInMonth(\n opp?.forecasting?.revenueInMonth?.initialRevenue,\n opp?.forecasting?.revenueInMonth?.recurringRevenue,\n opp.expectedCloseDate,\n revenueMonth,\n ),\n status: opp.pipelineStage,\n score:\n opp.scoring?.scores.reduce((total, score) => {\n const currentScore = score?.scoreValue || 0;\n return total + currentScore;\n }, 0) ?? 0,\n\n createdDate: opp.created,\n expectedCloseDate: opp.expectedCloseDate,\n actualCloseDate: opp.actualClosedDate?.getFullYear() ? opp.actualClosedDate : null,\n lastActivityDate: opp.lastActivityDate?.getFullYear() ? opp.lastActivityDate : null,\n lastConnectedDate: opp.lastConnectedDate?.getFullYear() ? opp.lastConnectedDate : null,\n assignedDate: opp.assignedDate?.getFullYear() ? opp.assignedDate : null,\n\n assigneeName: salespeople.length > 0 ? salespeople.find((sp) => sp.id === opp.salesPersonId)?.fullName : '',\n calls: -1,\n emails: -1,\n meetings: -1,\n totalEfforts: -1,\n connections: -1,\n\n type: opp.opportunityType,\n };\n });\n }\n\n private searchOpportunities(req: InternalSearchRequest): Observable {\n return this.search(req);\n }\n\n private setupLiveQueryParams(): void {\n merge(\n this.sort$.pipe(\n map(\n (sort) =>\n {\n [queryConstants.SORT_DIRECTION]: JSON.stringify(sort?.isAscending),\n [queryConstants.ACTIVE_COLUMN]: JSON.stringify(sort?.active, (_, v) => v || undefined),\n },\n ),\n ),\n // This is debounced by the searchTerm observable already\n this.searchTerm$.pipe(\n map(\n (st) =>\n {\n [queryConstants.SEARCH_TERM]: st || undefined,\n },\n ),\n ),\n ).subscribe((params: Params) => {\n this.router.navigate([], {\n relativeTo: this.activatedRoute,\n queryParams: params,\n queryParamsHandling: 'merge',\n });\n });\n }\n\n private setInitialSort(routeParams: Params): Observable {\n const directionFromUrl: boolean = JSON.parse(routeParams?.[queryConstants.SORT_DIRECTION] || null);\n const columnFromUrl: PipelineField = JSON.parse(\n routeParams?.[queryConstants.ACTIVE_COLUMN] || ListOpportunitiesRequestSortField.PROJECTED_FIRST_YEAR_VALUE,\n );\n\n this.sort$$.next(null);\n\n if (directionFromUrl || columnFromUrl) {\n this.sort$$.next({ isAscending: directionFromUrl, active: columnFromUrl });\n } else {\n this.sort$$.next(defaultSortOption);\n }\n\n return this.sort$$.asObservable();\n }\n\n private setInitialSearchTerm(routeParams: Params): void {\n const searchTermFromUrl: string = routeParams?.[queryConstants.SEARCH_TERM] || '';\n this.searchbarStore.setSearchTerm(searchTermFromUrl);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Salesperson } from '@galaxy/types';\nimport { PipelineTableService } from './pipeline-table.service';\nimport { SearchbarModule } from '../searchbar/searchbar.module';\nimport {\n ALL_SALESPEOPLE_TOKEN,\n DEFAULT_CURRENCY_TOKEN,\n PipelineTableServiceConfig,\n PIPELINE_TABLE_SERVICE_CONFIG_TOKEN,\n OPPORTUNITY_DETAILS_URL_TOKEN,\n ACCOUNT_DETAILS_URL_TOKEN,\n} from './tokens';\nimport { MARKET_ID_TOKEN, PARTNER_ID_TOKEN } from '../tokens';\nimport { OpportunityUrlFunction } from '../../sales-opportunities/opportunity';\nimport { PipelineFiltersServiceModule } from '../../filters/filters-service/pipeline-filters-service.module';\nimport { PIPELINE_SERVICE_INJECTION_TOKEN } from '../pipeline/pipeline-service.interface';\n\n@NgModule({\n imports: [SearchbarModule, PipelineFiltersServiceModule],\n providers: [\n PipelineTableService,\n {\n provide: PIPELINE_SERVICE_INJECTION_TOKEN,\n useExisting: PipelineTableService,\n },\n { provide: PARTNER_ID_TOKEN, deps: [PIPELINE_TABLE_SERVICE_CONFIG_TOKEN], useFactory: partnerIdFactory },\n { provide: MARKET_ID_TOKEN, deps: [PIPELINE_TABLE_SERVICE_CONFIG_TOKEN], useFactory: marketIdFactory },\n { provide: ALL_SALESPEOPLE_TOKEN, deps: [PIPELINE_TABLE_SERVICE_CONFIG_TOKEN], useFactory: allSalespeopleFactory },\n {\n provide: DEFAULT_CURRENCY_TOKEN,\n deps: [PIPELINE_TABLE_SERVICE_CONFIG_TOKEN],\n useFactory: defaultCurrencyFactory,\n },\n {\n provide: OPPORTUNITY_DETAILS_URL_TOKEN,\n deps: [PIPELINE_TABLE_SERVICE_CONFIG_TOKEN],\n useFactory: opportunityDetailsUrlGeneratorFactory,\n },\n {\n provide: ACCOUNT_DETAILS_URL_TOKEN,\n deps: [PIPELINE_TABLE_SERVICE_CONFIG_TOKEN],\n useFactory: accountDetailsUrlGeneratorFactory,\n },\n ],\n})\nexport class PipelineTableServiceModule {}\n\nfunction partnerIdFactory(config: PipelineTableServiceConfig): Observable {\n return config.partnerId$;\n}\n\nfunction marketIdFactory(config: PipelineTableServiceConfig): Observable {\n return config.marketId$;\n}\n\nfunction allSalespeopleFactory(config: PipelineTableServiceConfig): Observable {\n return config.allSalespeople$;\n}\n\nfunction defaultCurrencyFactory(config: PipelineTableServiceConfig): Observable {\n return config.defaultCurrency$;\n}\n\nfunction opportunityDetailsUrlGeneratorFactory(config: PipelineTableServiceConfig): OpportunityUrlFunction {\n return config.getOpportunityDetailsUrl;\n}\n\nfunction accountDetailsUrlGeneratorFactory(config: PipelineTableServiceConfig): OpportunityUrlFunction {\n return config.getAccountDetailsUrl;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { OpportunityType } from '../../sales-opportunities/interface';\n\n@Pipe({\n name: 'getTypeNameFromId',\n})\nexport class GetTypeNameFromIdPipe implements PipeTransform {\n transform(id, types: OpportunityType[]): OpportunityType | null {\n return findTypeNameFromId(types, id);\n }\n}\n\nfunction findTypeNameFromId(types: OpportunityType[], id: string): OpportunityType | null {\n return types.find((type) => type.id === id) || null;\n}\n","import { Component, OnDestroy, ViewChild } from '@angular/core';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { Sort } from '@angular/material/sort';\nimport { ActivatedRoute } from '@angular/router';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { EffortAggregate, SalespeopleService } from '@vendasta/sales-v2';\nimport { BehaviorSubject, Observable, combineLatest, firstValueFrom, iif, of } from 'rxjs';\nimport { map, startWith, switchMap } from 'rxjs/operators';\nimport { OpportunityTypeFilterStoreService } from '../../filters/opportunity-type-filter/opportunity-type-filter-store.service';\nimport { PipelineField, PipelineSort, SortDirection } from '../pipeline-sort';\nimport { PAGE_SIZE, PipelineTableService } from '../pipeline-table-service/pipeline-table.service';\nimport { OpportunityRow } from '../pipeline-table-service/pipeline-table.service.interface';\nimport { UserPipelines } from '../user-pipelines/user-pipelines';\n\nexport type OpportunityId = string;\nexport type EffortType = string;\ninterface MultiOpportunityEfforts {\n [key: string]: EffortAggregate;\n}\n\n@Component({\n selector: 'sales-ui-pipeline-table',\n templateUrl: './pipeline-table.component.html',\n styleUrls: ['./pipeline-table.component.scss'],\n})\nexport class PipelineTableComponent implements OnDestroy {\n private readonly subscriptions = SubscriptionList.new();\n public readonly opportunities$: Observable;\n public readonly totalItems$: Observable;\n\n public readonly COLUMNS = PipelineField;\n\n public readonly sortDir$ = this.pipelineTableService.sort$.pipe(\n map((s) => (s?.isAscending ? SortDirection.ASC : SortDirection.DESC)),\n );\n public readonly sortActive$ = this.pipelineTableService.sort$.pipe(\n map((sort) => sort?.active),\n startWith(this.COLUMNS.POTENTIAL),\n );\n\n readonly pageIndex$: Observable;\n\n public readonly displayedColumns$;\n\n public readonly displayedOpportunities$: Observable;\n\n private readonly currentPageStartIndex$$ = new BehaviorSubject(0);\n readonly currentPageStartIndex$ = this.currentPageStartIndex$$.asObservable();\n\n public readonly PAGE_SIZE = PAGE_SIZE;\n\n @ViewChild('paginator', { static: false }) readonly paginator: MatPaginator;\n\n readonly loadingOpportunities$: Observable;\n readonly loadingError$: Observable;\n\n readonly disablePagination$: Observable;\n\n readonly opportunityMetaTemplateData$: Observable<{ preferredCurrency: string; efforts: MultiOpportunityEfforts }>;\n\n readonly CLOSEDWON = 'closed-won';\n readonly CLOSEDLOST = 'closed-lost';\n userPipelines$ = this.userPipelines.partnerPipelines$;\n availableTypes$ = this.opportunityTypeStoreService.availableTypes$;\n constructor(\n private readonly pipelineTableService: PipelineTableService,\n private readonly userPipelines: UserPipelines,\n private readonly effortsGetter: SalespeopleService,\n private readonly opportunityTypeStoreService: OpportunityTypeFilterStoreService,\n private readonly activatedRoute: ActivatedRoute,\n ) {\n this.loadingOpportunities$ = this.pipelineTableService.loading$;\n this.loadingError$ = this.pipelineTableService.listOpportunityError$;\n\n this.opportunities$ = this.pipelineTableService.opportunities$;\n this.totalItems$ = this.pipelineTableService.totalItems$;\n\n this.displayedOpportunities$ = combineLatest([this.opportunities$, this.currentPageStartIndex$]).pipe(\n map(([opps, pageIndex]) => {\n return opps.slice(pageIndex * PAGE_SIZE, PAGE_SIZE * (pageIndex + 1));\n }),\n );\n\n const preferredCurrency$: Observable = this.pipelineTableService.preferredCurrency$;\n const opportunityEfforts$: Observable = this.displayedOpportunities$.pipe(\n map((opps: OpportunityRow[]): string[] => (opps || []).map((o) => o.id)),\n switchMap((ids: string[]): Observable<{ [key: string]: EffortAggregate }> => {\n return iif(() => ids.length > 0, this.effortsGetter.getMultiOpportunitySalespersonEfforts(ids), of({}));\n }),\n startWith({}),\n );\n this.opportunityMetaTemplateData$ = combineLatest([preferredCurrency$, opportunityEfforts$]).pipe(\n map(([c, e]) => ({ preferredCurrency: c, efforts: e })),\n );\n\n this.disablePagination$ = combineLatest([this.loadingOpportunities$, this.loadingError$]).pipe(\n map(([loading, error]) => loading || error),\n );\n\n this.subscriptions.add(this.pipelineTableService.resetToFirstPage$, () => {\n if (this.paginator) {\n this.paginator.firstPage();\n }\n });\n\n this.subscriptions.add(this.pipelineTableService.setEnabledColumns$());\n\n this.displayedColumns$ = combineLatest([\n this.opportunityMetaTemplateData$,\n this.pipelineTableService.enabledColumns$,\n ]).pipe(map(([, columns]) => columns));\n\n this.pipelineTableService.applyFiltersFromQueryParams();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.destroy();\n }\n\n sortChanged(sort: Sort): void {\n const s = {\n active: sort.active as PipelineField,\n isAscending: sort.direction === SortDirection.ASC,\n };\n\n this.pipelineTableService.applySorting(s);\n }\n\n async pageUpdated(event: PageEvent): Promise {\n const oppsLength = (await firstValueFrom(this.opportunities$)).length;\n\n // Check if they went forward a page\n if (event.pageIndex > event.previousPageIndex) {\n const maxItemIndex = event.pageIndex * event.pageSize + (event.pageSize - 1);\n\n if (maxItemIndex >= oppsLength - 1) {\n this.pipelineTableService.getNextPage().then(() => {\n this.currentPageStartIndex$$.next(event.pageIndex);\n });\n } else {\n this.currentPageStartIndex$$.next(event.pageIndex);\n }\n } else {\n this.currentPageStartIndex$$.next(event.pageIndex);\n }\n }\n}\n","
\n \n \n \n \n\n \n\n \n \n \n \n
\n\n\n\n\n \n \n \n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.FILTERS_RETURNED_ZERO_RESULTS_TITLE' | translate }}\n \n

\n {{ 'FRONTEND.SALES_UI.PIPELINE.FILTERS_RETURNED_ZERO_RESULTS_DESCRIPTION' | translate }}\n

\n
\n
\n\n\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.TABLE.ERRORS.FETCH_OPPORTUNITIES_ERROR_TITLE' | translate }}\n \n {{ 'FRONTEND.SALES_UI.PIPELINE.TABLE.ERRORS.FETCH_OPPORTUNITIES_ERROR_DESCRIPTION' | translate }}\n \n\n\n\n \n \n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.OPPORTUNITY' | translate }}\n \n \n \n \n {{ opportunity.name }}\n \n \n \n {{ opportunity.name }}\n \n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.ACCOUNT' | translate }}\n \n \n \n \n \n {{ account }}\n \n \n \n \n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.ACCOUNT_DELETED' | translate }}\n \n \n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.PIPELINE_NAME' | translate }}\n \n \n \n {{\n (opportunity.pipelineId | getPipelineFromId : (userPipelines$ | async))?.name ||\n 'FRONTEND.SALES_UI.PIPELINE.PIPELINE_NOT_FOUND' | translate\n }}\n \n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.STAGE' | translate }}\n \n \n \n {{\n (\n opportunity.pipelineId\n | getPipelineFromId : (userPipelines$ | async)\n | pipelineStage : opportunity.probability\n )?.name || 'FRONTEND.SALES_UI.COMMON.NOT_APPLICABLE_LABEL' | translate\n }}\n \n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.TYPE' | translate }}\n \n \n \n {{\n (opportunity.type ?? '' | getTypeNameFromId : availableTypes)?.displayName ||\n 'FRONTEND.SALES_UI.COMMON.NOT_APPLICABLE_LABEL' | translate\n }}\n \n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.POTENTIAL' | translate }}\n \n \n {{ opportunity.potentialRevenue || 0 | formatCurrency : templateData.preferredCurrency }}\n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.QUALIFICATION' | translate }}\n \n \n {{ opportunity.score }}\n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.MONTHLY_REVENUE' | translate }}\n \n \n {{ opportunity.monthlyRevenue || 0 | formatCurrency : templateData.preferredCurrency }}\n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.STATUS' | translate }}\n \n \n {{ opportunity.status }}\n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.CREATED_DATE' | translate }}\n \n \n {{ opportunity.createdDate | date : 'mediumDate' }}\n \n {{ opportunity.createdDate | daysAgo }}\n \n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.EXPECTED_CLOSE' | translate }}\n \n \n {{\n (opportunity.expectedCloseDate | date : 'mediumDate') ||\n ('FRONTEND.SALES_UI.COMMON.NOT_APPLICABLE_LABEL' | translate)\n }}\n \n \n \n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.ACTUAL_CLOSE' | translate }}\n \n \n {{\n (opportunity.actualCloseDate | date : 'mediumDate') ||\n ('FRONTEND.SALES_UI.COMMON.NOT_APPLICABLE_LABEL' | translate)\n }}\n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.COMMON.ASSIGNEE' | translate }}\n \n \n {{ opportunity.assigneeName }}\n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.ASSIGNED' | translate }}\n \n \n {{ (opportunity.assignedDate | date : 'mediumDate') || '-' }}\n \n {{ opportunity.assignedDate | daysAgo }}\n \n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.CALLS' | translate }}\n \n \n {{ templateData.efforts ? templateData.efforts[opportunity.id]?.efforts['call_efforts'] || 0 : 0 }}\n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.COMMON.EMAILS' | translate }}\n \n \n {{ templateData.efforts ? templateData.efforts[opportunity.id]?.efforts['email_efforts'] || 0 : 0 }}\n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.COMMON.MEETINGS' | translate }}\n \n \n {{ templateData.efforts ? templateData.efforts[opportunity.id]?.efforts['meetings_efforts'] || 0 : 0 }}\n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.TOTAL_EFFORTS' | translate }}\n \n \n {{\n (templateData.efforts ? templateData.efforts[opportunity.id]?.efforts['meetings_efforts'] || 0 : 0) +\n (templateData.efforts ? templateData.efforts[opportunity.id]?.efforts['email_efforts'] || 0 : 0) +\n (templateData.efforts ? templateData.efforts[opportunity.id]?.efforts['call_efforts'] || 0 : 0)\n }}\n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.CONNECTIONS' | translate }}\n \n \n {{ templateData.efforts ? templateData.efforts[opportunity.id]?.efforts['connections'] || 0 : 0 }}\n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.LAST_ACTIVITY' | translate }}\n \n \n {{\n (opportunity.lastActivityDate | date : 'mediumDate') || ('FRONTEND.SALES_UI.COMMON.DATES.NEVER' | translate)\n }}\n \n {{ opportunity.lastActivityDate | daysAgo }}\n \n \n \n\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.LAST_CONNECTED' | translate }}\n \n \n {{\n (opportunity.lastConnectedDate | date : 'mediumDate') ||\n ('FRONTEND.SALES_UI.COMMON.DATES.NEVER' | translate)\n }}\n \n {{ opportunity.lastConnectedDate | daysAgo }}\n \n \n \n \n\n \n \n \n\n","import { NgModule } from '@angular/core';\nimport { CommonModule, CurrencyPipe, DatePipe } from '@angular/common';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { RouterModule } from '@angular/router';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSortModule } from '@angular/material/sort';\nimport { TranslateModule } from '@ngx-translate/core';\nimport {\n AccountNameGetterModule,\n DaysAgoPipeModule,\n DaysAwayModule,\n PreferredCurrencyModule,\n PipelineSelectorPipeModule,\n SalesOpportunitiesPipesModule,\n} from '@vendasta/sales-common';\nimport { AsyncUiModule, EmptyStateModule, VaStencilsModule, VImgModule } from '@vendasta/uikit';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { MatCardModule } from '@angular/material/card';\nimport { PipelineTableComponent } from './pipeline-table.component';\nimport { PipelineTableServiceModule } from '../pipeline-table-service/pipeline-table-service.module';\nimport { GetTypeNameFromIdPipe } from './type-name.pipe';\n\n@NgModule({\n declarations: [PipelineTableComponent, GetTypeNameFromIdPipe],\n exports: [PipelineTableComponent, GetTypeNameFromIdPipe],\n providers: [DatePipe, CurrencyPipe],\n imports: [\n CommonModule,\n AsyncUiModule,\n VaStencilsModule,\n TranslateModule,\n GalaxyEmptyStateModule,\n EmptyStateModule,\n VImgModule,\n MatMenuModule,\n RouterModule,\n MatTableModule,\n MatSortModule,\n DaysAwayModule,\n MatCardModule,\n PreferredCurrencyModule,\n DaysAgoPipeModule,\n AccountNameGetterModule,\n MatProgressSpinnerModule,\n MatPaginatorModule,\n PipelineSelectorPipeModule,\n SalesOpportunitiesPipesModule,\n PipelineTableServiceModule,\n ],\n})\nexport class PipelineTableModule {}\n","import { Component } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n templateUrl: './export-csv-notification-dialog.component.html',\n styleUrls: ['./export-csv-notification-dialog.component.scss'],\n})\nexport class ExportCsvNotificationDialogComponent {\n constructor(public dialogRef: MatDialogRef) {}\n\n closeDialog(): void {\n this.dialogRef.close();\n }\n}\n","

{{ 'FRONTEND.SALES_UI.PIPELINE.PREPARING_CSV' | translate }}

\n\n
\n circle_notifications\n
\n

{{ 'FRONTEND.SALES_UI.PIPELINE.PREPARING_DOWNLOAD' | translate }}

\n

{{ 'FRONTEND.SALES_UI.PIPELINE.OK_TO_LEAVE_PAGE' | translate }}

\n
\n\n \n\n","import { InjectionToken } from '@angular/core';\nimport { ClientOrigin } from '@vendasta/sales-opportunities';\n\nexport const CLIENT_ORIGIN_TOKEN = new InjectionToken('client origin token');\n","import { Inject, Injectable } from '@angular/core';\nimport { DateRange } from '@vendasta/uikit';\nimport { switchMap } from 'rxjs/operators';\nimport {\n ClientOrigin,\n CSVExports,\n CSVFormatOptions,\n DateRangeFilter,\n ListOpportunitiesRequestFilters,\n ListOpportunitiesRequestSortField,\n ListOpportunitiesRequestSortOption,\n OpportunityRevenuePeriod,\n RevenuePeriodFilter,\n SalesOpportunitiesService,\n SortDirection,\n} from '@vendasta/sales-opportunities';\nimport { combineLatest, Observable } from 'rxjs';\nimport { PipelineField, PipelineSort } from '../../../../pipelines/pipeline-sort';\nimport { PipelineStatuses } from '../../../pipeline-status-checkbox/pipeline-status-checkbox.service';\nimport { PipelineTableFilters } from '../../../../filters/filters-service/pipeline-filters.service';\nimport { PipelineTableService } from '../../../pipeline-table-service/pipeline-table.service';\nimport { DEFAULT_CURRENCY_CODE_TOKEN } from '../../../tokens';\nimport { MARKET_ID_TOKEN, PARTNER_ID_TOKEN } from '../../../../filters/tag-selector/tokens';\nimport { CLIENT_ORIGIN_TOKEN } from './tokens';\n\n@Injectable()\nexport class PipelineExportCsvService {\n readonly currency$ = this.defaultCurrency$;\n\n constructor(\n private readonly pipelineTableService: PipelineTableService,\n private readonly salesOpportunitiesService: SalesOpportunitiesService,\n @Inject(PARTNER_ID_TOKEN) private readonly partnerId$: Observable,\n @Inject(MARKET_ID_TOKEN) private readonly marketId$: Observable,\n @Inject(DEFAULT_CURRENCY_CODE_TOKEN) private readonly defaultCurrency$: Observable,\n @Inject(CLIENT_ORIGIN_TOKEN) private readonly clientOrigin: ClientOrigin,\n ) {}\n\n public static getListFilters(filters: PipelineTableFilters): ListOpportunitiesRequestFilters {\n if (!filters) {\n return new ListOpportunitiesRequestFilters();\n }\n\n const listFilters = new ListOpportunitiesRequestFilters();\n if (filters.salespeopleIds) {\n listFilters.salesPersonIds = filters.salespeopleIds;\n }\n\n if (filters.statuses) {\n listFilters.pipelineStages = PipelineExportCsvService.getPipelinesStatuses(filters.statuses);\n }\n\n const createdDateRange = PipelineExportCsvService.buildDateRange(filters.createdDate);\n const expectedCloseRange = PipelineExportCsvService.buildDateRange(filters.expectedClose);\n const actualCloseRange = PipelineExportCsvService.buildDateRange(filters.actualClose);\n const assignedDateRange = PipelineExportCsvService.buildDateRange(filters.assignedDate);\n\n if (createdDateRange) {\n listFilters.createdDateFilter = createdDateRange;\n }\n\n if (expectedCloseRange) {\n listFilters.expectedCloseDateFilter = expectedCloseRange;\n }\n\n if (actualCloseRange) {\n listFilters.actualCloseDateFilter = actualCloseRange;\n }\n\n if (assignedDateRange) {\n listFilters.assignedDate = assignedDateRange;\n }\n\n if (filters.packages) {\n listFilters.packageIds = filters.packages.map((p) => p.packageId);\n }\n\n if (filters.oppTags) {\n listFilters.tags = (listFilters.tags ?? []).concat(filters.oppTags);\n }\n\n if (filters.acctTags) {\n listFilters.tags = (listFilters.tags ?? []).concat(filters.acctTags);\n }\n\n if (filters.pipelines) {\n listFilters.pipelineIds = filters.pipelines.map((p) => p.id);\n }\n if (listFilters.pipelineIds?.length === 1) {\n if (filters.pipelineStage) {\n const probs = filters.pipelines[0].findProbabilityRangeFromStage(filters.pipelineStage);\n listFilters.probabilityRangeFilter = {\n maximum: probs.maximum,\n minimum: probs.minimum,\n // DISCLAIMER: DON'T DO THIS AT HOME (thanks copilot)\n // I mean this type assertion only works because the typescript SDKs will handle this for us.\n // But it's not a good idea to do this in your own code as the funtions not implemented may throw errors.\n } as unknown as ListOpportunitiesRequestFilters['probabilityRangeFilter']; // TODO: export ProbabilityRangeFilter from sales-opportunities\n }\n }\n\n if (filters.products) {\n listFilters.lineItemProductIds = filters.products.map((p) => p.productId);\n }\n\n if (filters.monthlyRevenueDate) {\n const revenue = new RevenuePeriodFilter({\n revenueDate: filters.monthlyRevenueDate,\n revenuePeriod: OpportunityRevenuePeriod.SELECTED_MONTH,\n });\n listFilters.revenuePeriodFilter = revenue;\n }\n\n if (filters.types) {\n listFilters.opportunityTypes = filters.types.map((type) => type.id);\n }\n\n return listFilters;\n }\n\n public static buildDateRange(inputDateRange: DateRange): DateRangeFilter {\n let returnDateRange: DateRangeFilter;\n if (!!inputDateRange && (!!inputDateRange.start || !!inputDateRange.end)) {\n returnDateRange = new DateRangeFilter();\n if (inputDateRange?.start) {\n returnDateRange.beginRange = inputDateRange.start;\n }\n if (inputDateRange?.end) {\n returnDateRange.endRange = inputDateRange.end;\n }\n } else {\n return null;\n }\n return returnDateRange;\n }\n\n public static getPipelinesStatuses(pipelineStatuses: PipelineStatuses): string[] {\n const statuses: string[] = [];\n if (!pipelineStatuses) {\n return [];\n }\n\n if (pipelineStatuses.open === true) {\n statuses.push('open');\n }\n\n if (pipelineStatuses.won === true) {\n statuses.push('closed-won');\n }\n\n if (pipelineStatuses.lost === true) {\n statuses.push('closed-lost');\n }\n return statuses;\n }\n\n public static getSortOption(sort: PipelineSort): ListOpportunitiesRequestSortOption {\n const sortOption = new ListOpportunitiesRequestSortOption();\n switch (sort.active) {\n case PipelineField.POTENTIAL: {\n sortOption.field = ListOpportunitiesRequestSortField.PROJECTED_FIRST_YEAR_VALUE;\n break;\n }\n\n case PipelineField.PIPELINE_STAGE: {\n sortOption.field = ListOpportunitiesRequestSortField.PROBABILITY;\n break;\n }\n\n case PipelineField.CREATED: {\n sortOption.field = ListOpportunitiesRequestSortField.CREATED;\n break;\n }\n\n case PipelineField.EXPECTED_CLOSE: {\n sortOption.field = ListOpportunitiesRequestSortField.EXPECTED_CLOSE;\n break;\n }\n\n case PipelineField.ASSIGNED_DATE: {\n sortOption.field = ListOpportunitiesRequestSortField.ASSIGNED_DATE;\n break;\n }\n\n case PipelineField.ACCOUNT: {\n sortOption.field = ListOpportunitiesRequestSortField.NAME;\n break;\n }\n\n case PipelineField.LAST_ACTIVITY: {\n sortOption.field = ListOpportunitiesRequestSortField.LAST_ACTIVITY;\n break;\n }\n\n case PipelineField.LAST_CONNECTED: {\n sortOption.field = ListOpportunitiesRequestSortField.LAST_CONNECTED;\n break;\n }\n\n case PipelineField.ACTUAL_CLOSE: {\n sortOption.field = ListOpportunitiesRequestSortField.ACTUAL_CLOSE;\n break;\n }\n\n case PipelineField.STATUS: {\n sortOption.field = ListOpportunitiesRequestSortField.PIPELINE_STAGE;\n break;\n }\n\n default: {\n sortOption.field = ListOpportunitiesRequestSortField.NAME;\n break;\n }\n }\n\n if (sort.isAscending === undefined || sort.isAscending === null || sort.isAscending === true) {\n sortOption.direction = SortDirection.ASCENDING;\n } else {\n sortOption.direction = SortDirection.DESCENDING;\n }\n\n return sortOption;\n }\n\n initiateCSVExport(csvExports: CSVExports): Observable {\n return combineLatest([\n this.partnerId$,\n this.marketId$,\n this.pipelineTableService.selectedFilters$,\n this.pipelineTableService.sort$,\n this.pipelineTableService.lastSearchTerm$,\n this.currency$,\n ]).pipe(\n switchMap(([partnerId, marketId, pipelineFilters, sort, searchTerm, currency]) => {\n const listFilters = PipelineExportCsvService.getListFilters(pipelineFilters);\n const pipelineSort = PipelineExportCsvService.getSortOption(sort);\n\n const csvOptions = new CSVFormatOptions({\n currencyCode: currency,\n });\n\n return this.salesOpportunitiesService.initiateOpportunityExport(\n partnerId,\n marketId,\n listFilters,\n pipelineSort,\n searchTerm,\n csvExports,\n csvOptions,\n this.clientOrigin,\n );\n }),\n );\n }\n}\n","import { Component } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { CSVExports } from '@vendasta/sales-opportunities';\nimport { BehaviorSubject, firstValueFrom } from 'rxjs';\nimport { ExportCsvNotificationDialogComponent } from '../export-csv-notification-dialog/export-csv-notification-dialog.component';\nimport { PipelineExportCsvService } from '../pipeline-export-csv/pipeline-export-csv.service';\n\nconst requireOneValidator: ValidatorFn = (formGroup: FormGroup): ValidationErrors | null => {\n const controls = formGroup.controls;\n\n // Check if at least one control is filled in\n const isOneControlFilled = Object.values(controls).some((control: FormControl) => !!control.value);\n\n // Return validation error if the condition is not met\n return isOneControlFilled ? null : { requireOneFilled: true };\n};\n\ninterface ExportForm {\n opportunities: FormControl;\n history: FormControl;\n}\n\n@Component({\n selector: 'sales-ui-export-csv-selection-dialog',\n templateUrl: './export-csv-selection-dialog.component.html',\n styleUrls: ['./export-csv-selection-dialog.component.scss'],\n})\nexport class ExportCsvSelectionDialogComponent {\n private readonly isLoading$$ = new BehaviorSubject(false);\n protected readonly isLoading$ = this.isLoading$$;\n\n protected readonly exportForm = this.formBuilder.group(\n {\n opportunities: new FormControl(false),\n history: new FormControl(false),\n },\n { validators: requireOneValidator },\n );\n\n constructor(\n public dialogRef: MatDialogRef,\n private readonly i18n: TranslateService,\n private readonly pipelineExportCsvService: PipelineExportCsvService,\n private readonly alertService: SnackbarService,\n private readonly dialog: MatDialog,\n private readonly formBuilder: FormBuilder,\n ) {}\n\n closeDialog(): void {\n this.dialogRef.close();\n }\n\n async onSubmit(): Promise {\n if (this.exportForm.valid) {\n this.isLoading$$.next(true);\n const i18nString = await firstValueFrom(this.i18n.stream('FRONTEND.SALES_UI.PIPELINE.CSV_EXPORT_ERROR'));\n const req = new CSVExports({\n opportunities: this.exportForm.value.opportunities,\n opportunityHistory: this.exportForm.value.history,\n });\n firstValueFrom(this.pipelineExportCsvService.initiateCSVExport(req))\n .then(() => {\n this.dialogRef.close();\n this.openCSVNotificationDialog();\n })\n .catch(() => {\n this.alertService.openErrorSnack(i18nString);\n })\n .finally(() => {\n this.isLoading$$.next(false);\n });\n }\n }\n\n private openCSVNotificationDialog(): void {\n this.dialog.open(ExportCsvNotificationDialogComponent, {\n width: '350px',\n });\n }\n}\n","

{{ 'FRONTEND.SALES_UI.PIPELINE.EXPORT_AS_CSV' | translate }}

\n\n
\n \n {{ 'FRONTEND.SALES_UI.PIPELINE.TABLE.EXPORT_CSV.TITLE' | translate }}\n
\n \n {{ 'FRONTEND.SALES_UI.PIPELINE.TABLE.EXPORT_CSV.PIPELINE' | translate }}\n \n
\n
\n \n {{ 'FRONTEND.SALES_UI.PIPELINE.TABLE.EXPORT_CSV.OPPORTUNITY_HISTORY' | translate }}\n \n
\n
\n\n \n \n \n \n
\n","import { Component } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ExportCsvSelectionDialogComponent } from './export-csv-selection-dialog/export-csv-selection-dialog.component';\n\n@Component({\n selector: 'sales-ui-pipeline-export-csv',\n templateUrl: './pipeline-export-csv.component.html',\n styleUrls: ['./pipeline-export-csv.component.scss'],\n})\nexport class PipelineExportCSVComponent {\n constructor(private readonly dialog: MatDialog) {}\n\n openCSVSelectionDialog(): void {\n this.dialog.open(ExportCsvSelectionDialogComponent, {\n width: '350px',\n });\n }\n}\n","
\n \n
\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CsvModule } from '@ctrl/ngx-csv';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { GalaxyWrapModule } from '@vendasta/galaxy/galaxy-wrap';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { GalaxyButtonLoadingIndicatorModule } from '@vendasta/galaxy/button-loading-indicator';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ExportCsvSelectionDialogComponent } from './export-csv-selection-dialog/export-csv-selection-dialog.component';\nimport { PipelineExportCSVComponent } from './pipeline-export-csv.component';\nimport { PipelineExportCsvService } from './pipeline-export-csv/pipeline-export-csv.service';\nimport { ExportCsvNotificationDialogComponent } from './export-csv-notification-dialog/export-csv-notification-dialog.component';\n\n@NgModule({\n declarations: [ExportCsvNotificationDialogComponent, PipelineExportCSVComponent, ExportCsvSelectionDialogComponent],\n imports: [\n CommonModule,\n FormsModule,\n TranslateModule,\n CsvModule,\n MatButtonModule,\n MatDialogModule,\n MatIconModule,\n GalaxyWrapModule,\n MatCheckboxModule,\n GalaxyButtonLoadingIndicatorModule,\n ReactiveFormsModule,\n ],\n exports: [PipelineExportCSVComponent],\n providers: [PipelineExportCsvService],\n})\nexport class PipelineCSVModule {}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport {\n PIPELINE_TABLE_FILTER_CHIPS_CONFIG_TOKEN,\n PipelineTableFilterChipsConfig,\n} from './pipeline-table-filter-chips/tokens';\nimport { PIPELINE_TABLE_SERVICE_CONFIG_TOKEN, PipelineTableServiceConfig } from './pipeline-table-service/tokens';\nimport { PIPELINE_SETTINGS_ACCESS_TOKEN, DEFAULT_CURRENCY_CODE_TOKEN, PIPELINE_SETTINGS_URL_TOKEN } from './tokens';\nimport { USER_PIPELINES_SERVICE_CONFIG_TOKEN, UserPipelinesServiceConfig } from './user-pipelines/tokens';\nimport { UserPipelinesModule } from './user-pipelines/user-pipelines.module';\nimport { PipelineStatusCheckboxModule } from './pipeline-status-checkbox/pipeline-status-checkbox.module';\nimport { PipelineTableModule } from './pipeline-table/pipeline-table.module';\nimport { PipelineTableComponent } from './pipeline-table/pipeline-table.component';\nimport { AccountUrlFunction, OpportunityUrlFunction } from '../sales-opportunities/opportunity';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport baseTranslation from '../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../shared/constants';\nimport { PipelineStats } from './pipeline-stats/pipeline-stats.service';\nimport {\n SALESPERSON_MULTI_SELECT_CONFIG_TOKEN,\n SalespersonMultiSelectConfig,\n} from '../filters/salesperson-multi-select/tokens';\nimport { PACKAGE_SELECT_CONFIG_TOKEN } from '../filters/package-selector/tokens';\nimport { SALES_TEAM_MULTI_SELECT_CONFIG_TOKEN } from '../filters/salesteam-multi-select/tokens';\nimport { TAG_MULTI_SELECT_CONFIG_TOKEN } from '../filters/tag-selector/tokens';\nimport { PRODUCT_SELECTOR_CONFIG_TOKEN } from '../filters/product-selector/tokens';\nimport { ProductSelectorModule } from '../filters/product-selector/product-selector.module';\nimport { PotentialRevenueModule } from './pipeline/potential-revenue/potential-revenue.module';\nimport { REVENUE_DEFAULT_CURRENCY_CODE_TOKEN } from './pipeline/potential-revenue/tokens';\nimport { PipelineTableConfig } from './pipeline-table/interfaces';\nimport {\n pipelineSettingsAccessFactory,\n defaultCurrencyCodeFactory,\n packageSelectConfigFactory,\n pipelineSettingsURLFactory,\n productSelectorConfigFactory,\n salesTeamMultiSelectConfigFactory,\n tagMultiSelectConfigFactory,\n} from './shared';\nimport { CLIENT_ORIGIN_TOKEN } from './pipeline/csv/pipeline-export-csv/tokens';\nimport { ClientOrigin } from '@vendasta/sales-opportunities';\n\nexport const PIPELINE_CONFIG_TOKEN = new InjectionToken(\n 'general dependency data for the pipeline table config',\n);\n\nexport const OPPORTUNITY_DETAILS_URL_TOKEN: InjectionToken = new InjectionToken(\n 'token for opportunity details URL generator',\n);\nexport const ACCOUNT_DETAILS_URL_TOKEN: InjectionToken = new InjectionToken(\n 'token for account details URL generator',\n);\n\n@NgModule({\n imports: [\n UserPipelinesModule,\n PipelineStatusCheckboxModule,\n PipelineTableModule,\n ProductSelectorModule,\n PotentialRevenueModule,\n LexiconModule.forChild({\n componentName: WEBLATE_COMPONENT_NAME,\n baseTranslation: baseTranslation,\n }),\n ],\n exports: [PipelineTableComponent],\n providers: [PipelineStats],\n})\nexport class PipelinesModule {\n static forRoot(config: InjectionToken): ModuleWithProviders {\n return {\n ngModule: PipelinesModule,\n providers: [\n { provide: PIPELINE_CONFIG_TOKEN, useExisting: config, deps: [] },\n { provide: DEFAULT_CURRENCY_CODE_TOKEN, deps: [PIPELINE_CONFIG_TOKEN], useFactory: defaultCurrencyCodeFactory },\n { provide: PIPELINE_SETTINGS_URL_TOKEN, deps: [PIPELINE_CONFIG_TOKEN], useFactory: pipelineSettingsURLFactory },\n {\n provide: PIPELINE_SETTINGS_ACCESS_TOKEN,\n deps: [PIPELINE_CONFIG_TOKEN],\n useFactory: pipelineSettingsAccessFactory,\n },\n {\n provide: REVENUE_DEFAULT_CURRENCY_CODE_TOKEN,\n deps: [PIPELINE_CONFIG_TOKEN],\n useFactory: defaultCurrencyCodeFactory,\n },\n {\n provide: SALESPERSON_MULTI_SELECT_CONFIG_TOKEN,\n deps: [PIPELINE_CONFIG_TOKEN],\n useFactory: salespersonMultiSelectConfigFactory,\n },\n {\n provide: SALES_TEAM_MULTI_SELECT_CONFIG_TOKEN,\n deps: [PIPELINE_CONFIG_TOKEN],\n useFactory: salesTeamMultiSelectConfigFactory,\n },\n {\n provide: PACKAGE_SELECT_CONFIG_TOKEN,\n deps: [PIPELINE_CONFIG_TOKEN],\n useFactory: packageSelectConfigFactory,\n },\n {\n provide: PRODUCT_SELECTOR_CONFIG_TOKEN,\n deps: [PIPELINE_CONFIG_TOKEN],\n useFactory: productSelectorConfigFactory,\n },\n {\n provide: PIPELINE_TABLE_SERVICE_CONFIG_TOKEN,\n deps: [PIPELINE_CONFIG_TOKEN],\n useFactory: pipelineTableServiceConfigFactory,\n },\n {\n provide: TAG_MULTI_SELECT_CONFIG_TOKEN,\n deps: [PIPELINE_CONFIG_TOKEN],\n useFactory: tagMultiSelectConfigFactory,\n },\n {\n provide: PIPELINE_TABLE_FILTER_CHIPS_CONFIG_TOKEN,\n deps: [PIPELINE_CONFIG_TOKEN],\n useFactory: pipelineTableFilterChipsConfigFactory,\n },\n {\n provide: USER_PIPELINES_SERVICE_CONFIG_TOKEN,\n deps: [PIPELINE_CONFIG_TOKEN],\n useFactory: userPipelinesConfigFactory,\n },\n {\n provide: OPPORTUNITY_DETAILS_URL_TOKEN,\n deps: [PIPELINE_CONFIG_TOKEN],\n useFactory: opportunityDetailsUrlGeneratorFactory,\n },\n {\n provide: ACCOUNT_DETAILS_URL_TOKEN,\n deps: [PIPELINE_CONFIG_TOKEN],\n useFactory: accountDetailsUrlGeneratorFactory,\n },\n {\n provide: CLIENT_ORIGIN_TOKEN,\n deps: [PIPELINE_CONFIG_TOKEN],\n useFactory: clientOriginFactory,\n },\n ],\n };\n }\n}\n\nfunction salespersonMultiSelectConfigFactory(config: PipelineTableConfig): SalespersonMultiSelectConfig {\n return {\n allSalespeople$: config.allSalespeople$,\n initWithLoggedInSalesperson: config.initWithLoggedInSalesperson,\n salespersonId$: config.salespersonId$,\n salespersonName$: config.salespersonName$,\n };\n}\n\nfunction pipelineTableServiceConfigFactory(config: PipelineTableConfig): PipelineTableServiceConfig {\n return {\n getOpportunityDetailsUrl: config.getOpportunityDetailsUrl,\n getAccountDetailsUrl: config.getAccountDetailsUrl,\n allSalespeople$: config.allSalespeople$,\n defaultCurrency$: config.defaultCurrency$,\n marketId$: config.marketId$,\n partnerId$: config.partnerId$,\n };\n}\n\nfunction pipelineTableFilterChipsConfigFactory(config: PipelineTableConfig): PipelineTableFilterChipsConfig {\n return {\n hasAccessToAllAccountsInMarket$: config.hasAccessToAllAccountsInMarket$,\n salesTeamsService: config.salesTeamsService,\n };\n}\n\nfunction userPipelinesConfigFactory(config: PipelineTableConfig): UserPipelinesServiceConfig {\n return {\n partnerId$: config.partnerId$,\n };\n}\n\nfunction opportunityDetailsUrlGeneratorFactory(config: PipelineTableConfig): OpportunityUrlFunction {\n return config.getOpportunityDetailsUrl;\n}\n\nfunction accountDetailsUrlGeneratorFactory(config: PipelineTableConfig): AccountUrlFunction {\n return config.getAccountDetailsUrl;\n}\n\nfunction clientOriginFactory(config: PipelineTableConfig): ClientOrigin {\n return config.clientOrigin;\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Pipeline } from '@vendasta/sales-common';\n\nexport const PIPELINE_SETTINGS_CONFIG_TOKEN = new InjectionToken(\n 'general dependency data for pipeline settings',\n);\n\nexport interface PipelineSettingsConfig {\n partnerId$: Observable;\n currentPipeline$: Observable;\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { PIPELINE_SETTINGS_CONFIG_TOKEN, PipelineSettingsConfig } from './tokens';\nimport { SalesPipelinesService, PipelineInterface, StageInterface } from '@vendasta/sales-opportunities';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable()\nexport class PipelineSettingsService {\n readonly partnerId$: Observable;\n readonly currentPipeline$$ = new BehaviorSubject({});\n readonly currentPipeline$ = this.currentPipeline$$.asObservable();\n private readonly redirectRequests$$ = new BehaviorSubject(false);\n readonly redirectRequests$ = this.redirectRequests$$.asObservable();\n\n private readonly defaultPipelineName = this.translateService.instant(\n 'FRONTEND.SALES_UI.PIPELINE.SETTINGS.DEFAULTS.NAME',\n );\n private readonly defaultPipelineStages: StageInterface[] = [\n {\n name: this.translateService.instant('FRONTEND.SALES_UI.PIPELINE.SETTINGS.DEFAULTS.STAGE_ONE'),\n probability: 0.1,\n },\n {\n name: this.translateService.instant('FRONTEND.SALES_UI.PIPELINE.SETTINGS.DEFAULTS.STAGE_TWO'),\n probability: 0.3,\n },\n {\n name: this.translateService.instant('FRONTEND.SALES_UI.PIPELINE.SETTINGS.DEFAULTS.STAGE_THREE'),\n probability: 0.99,\n },\n ];\n\n constructor(\n @Inject(PIPELINE_SETTINGS_CONFIG_TOKEN) private readonly config: PipelineSettingsConfig,\n private readonly salesPipelinesService: SalesPipelinesService,\n private translateService: TranslateService,\n ) {\n this.partnerId$ = this.config.partnerId$;\n }\n\n list(partnerId: string): Observable {\n return this.salesPipelinesService.list(partnerId);\n }\n\n updatePipelineName(pipelineId: string, pipelineName: string): Observable {\n if (!pipelineId || !pipelineName) {\n return of(false);\n }\n return this.partnerId$.pipe(\n switchMap((partnerId) => this.salesPipelinesService.updatePipelineName(partnerId, pipelineId, pipelineName)),\n map((_) => {\n return true;\n }),\n catchError(() => of(false)),\n );\n }\n\n deletePipeline(pipelineId: string): Observable {\n if (!pipelineId) {\n return of(false);\n }\n return this.partnerId$.pipe(\n switchMap((partnerId) => this.salesPipelinesService.deletePipeline(partnerId, pipelineId)),\n map((_) => {\n return true;\n }),\n catchError(() => of(false)),\n );\n }\n\n createDefaultPipeline(): Observable {\n return this.partnerId$.pipe(\n switchMap((partnerId) =>\n this.salesPipelinesService.createPipeline(partnerId, this.defaultPipelineName, this.defaultPipelineStages),\n ),\n map((resp) => {\n if (resp?.pipelineId) {\n return resp.pipelineId;\n } else {\n return '';\n }\n }),\n catchError(() => of('')),\n );\n }\n\n deleteStage(pipelineId: string, stageId: string): Observable {\n if (!stageId || !pipelineId) {\n return of(false);\n }\n return this.partnerId$.pipe(\n switchMap((partnerId) => this.salesPipelinesService.removePipelineStages(partnerId, pipelineId, [stageId])),\n map((_) => {\n return true;\n }),\n catchError(() => of(false)),\n );\n }\n\n updateStageName(pipelineId: string, stageId: string, stageName: string): Observable {\n if (!stageId || !pipelineId || !stageName) {\n return of(false);\n }\n return this.partnerId$.pipe(\n switchMap((partnerId) =>\n this.salesPipelinesService.updatePipelineStageName(partnerId, pipelineId, stageId, stageName),\n ),\n map((_) => {\n return true;\n }),\n catchError(() => of(false)),\n );\n }\n\n updateStageProbability(pipelineId: string, stageId: string, probability: number): Observable {\n if (!stageId || !pipelineId || probability < 0 || 1 < probability) {\n return of(false);\n }\n return this.partnerId$.pipe(\n switchMap((partnerId) =>\n this.salesPipelinesService.updatePipelineStageProbability(partnerId, pipelineId, stageId, probability),\n ),\n map((_) => {\n return true;\n }),\n catchError(() => of(false)),\n );\n }\n addStages(pipelineId: string, stages: StageInterface[]): Observable {\n return this.partnerId$.pipe(\n switchMap((partnerId) => {\n const newStages: any[] = stages.map((stage) => {\n return {\n name: stage.name,\n probability: stage.probability,\n };\n });\n return this.salesPipelinesService.addPipelineStages(partnerId, pipelineId, newStages);\n }),\n map((_) => {\n return true;\n }),\n catchError(() => of(false)),\n );\n }\n\n requestReload(): void {\n this.redirectRequests$$.next(true);\n }\n}\n","export const settingsPagePreviousUrl = '/pipeline/board';\n","import { Component } from '@angular/core';\nimport { PipelineSettingsService } from './pipeline-settings.service';\nimport { combineLatest, firstValueFrom, Observable } from 'rxjs';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { PipelineInterface } from '@vendasta/sales-opportunities';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { distinctUntilChanged, map, shareReplay, switchMap, withLatestFrom } from 'rxjs/operators';\nimport { settingsPagePreviousUrl } from './constants';\n\n@Component({\n selector: 'sales-ui-pipeline-settings',\n templateUrl: './pipeline-settings.component.html',\n styleUrl: './pipeline-settings.component.scss',\n})\nexport class PipelineSettingsComponent {\n protected readonly pipelines$: Observable;\n protected previousPageUrl = settingsPagePreviousUrl;\n constructor(\n private readonly pipelineSettingsService: PipelineSettingsService,\n private readonly snackbarService: SnackbarService,\n private readonly route: ActivatedRoute,\n private readonly router: Router,\n ) {\n const reloadRequests$ = this.pipelineSettingsService.redirectRequests$;\n const partnerId$ = this.pipelineSettingsService.partnerId$;\n const pipelineId$ = this.getPipelineIdFromRoute();\n this.pipelines$ = this.listAndSortPipelines(pipelineId$, partnerId$, reloadRequests$);\n\n const pipelinesMap$ = this.pipelines$.pipe(\n map((pipelines) => new Map(pipelines.map((pipeline) => [pipeline.pipelineId, pipeline]))),\n );\n pipelinesMap$.pipe(takeUntilDestroyed(), withLatestFrom(pipelineId$)).subscribe(([pipelines, pipelineId]) => {\n const found = this.setCurrentPipeline(pipelineId, pipelines);\n if (!found) {\n const fallbackFound = this.setCurrentPipelineToFallback(pipelines);\n if (!fallbackFound) {\n this.setCurrentPipelineToEmpty();\n }\n }\n });\n }\n\n private setCurrentPipelineToFallback(pipelines: Map): boolean {\n if (pipelines.size > 0) {\n const fallback: PipelineInterface = pipelines.values().next().value;\n const fallbackId = fallback.pipelineId;\n this.loadPipeline(fallbackId).then((_) => {\n this.pipelineSettingsService.currentPipeline$$.next(fallback);\n });\n return true;\n }\n return false;\n }\n\n private setCurrentPipelineToEmpty(): void {\n this.loadPipeline('create').then((_) => {\n this.pipelineSettingsService.currentPipeline$$.next({});\n });\n }\n\n private setCurrentPipeline(pipelineId: string, pipelines: Map): boolean {\n const found = pipelines.get(pipelineId);\n if (found) {\n this.pipelineSettingsService.currentPipeline$$.next(found);\n return true;\n }\n return false;\n }\n private getPipelineIdFromRoute(): Observable {\n return this.route.firstChild.params.pipe(\n map((params) => params['pipelineId']),\n shareReplay(1),\n distinctUntilChanged(),\n );\n }\n\n private listAndSortPipelines(\n pipelineId$: Observable,\n partnerId$: Observable,\n reloadRequests$: Observable,\n ): Observable {\n return combineLatest([pipelineId$, partnerId$, reloadRequests$]).pipe(\n switchMap(([_, partnerId]) => this.pipelineSettingsService.list(partnerId)),\n map((pipelines) => pipelines.filter((pipeline) => pipeline.pipelineId !== 'DEFAULT')),\n map((pipelines) => pipelines.sort((a, b) => (a.name < b.name ? -1 : 1))),\n );\n }\n\n private async loadPipeline(pipelineId: string): Promise {\n this.router.navigate([`${pipelineId}`], {\n relativeTo: this.route,\n });\n }\n\n protected async createNewPipeline(): Promise {\n const newPipelineId = await firstValueFrom(this.pipelineSettingsService.createDefaultPipeline());\n if (newPipelineId) {\n this.snackbarService.openSuccessSnack('FRONTEND.SALES_UI.PIPELINE.SETTINGS.SNACKBARS.CREATE_SUCCESS');\n await this.loadPipeline(newPipelineId);\n } else {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.PIPELINE.SETTINGS.SNACKBARS.CREATE_FAILED');\n }\n }\n}\n","\n \n {{ 'FRONTEND.SALES_UI.PIPELINE.SETTINGS.PAGE_TITLE' | translate }} \n \n \n \n \n \n \n \n @if (pipelines$ | async; as pipelines) {\n \n \n {{\n pipeline.name\n }}\n \n
\n \n
\n
\n } @else {\n \n }\n
\n","import { Component } from '@angular/core';\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { whitespaceValidator } from '@vendasta/forms';\nimport { PipelineSettingsService } from '../pipeline-settings.service';\nimport { BehaviorSubject, combineLatest, firstValueFrom, Observable, of } from 'rxjs';\nimport { PipelineInterface, StageInterface } from '@vendasta/sales-opportunities';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { OpenConfirmationModalService } from '@vendasta/galaxy/confirmation-modal';\nimport { map, switchMap } from 'rxjs/operators';\n\nfunction DisplayPercentageToStored(display: number): number {\n return display / 100;\n}\n\nfunction StoredPercentageToDisplay(stored: number): number {\n return stored * 100;\n}\n@Component({\n selector: 'sales-ui-pipeline-settings-form',\n templateUrl: './pipeline-settings-form.component.html',\n styleUrls: ['./pipeline-settings-form.component.scss'],\n})\nexport class PipelineSettingsFormComponent {\n protected readonly pipelineForm = new FormGroup({\n stages: new FormArray([]),\n name: new FormControl('', {\n validators: whitespaceValidator(),\n }),\n });\n protected readonly currentPipeline$: Observable;\n private readonly savingChanges$$ = new BehaviorSubject(false);\n protected readonly savingChanges$ = this.savingChanges$$.asObservable();\n private readonly resetRequests$$ = new BehaviorSubject(false);\n private readonly pendingChanges$$ = new BehaviorSubject(false);\n\n constructor(\n private readonly pipelineSettingsService: PipelineSettingsService,\n private readonly snackbarService: SnackbarService,\n private readonly confirmationModal: OpenConfirmationModalService,\n ) {\n this.pipelineForm.valueChanges.pipe(takeUntilDestroyed()).subscribe((_) => this.pendingChanges$$.next(true));\n this.currentPipeline$ = this.pipelineSettingsService.currentPipeline$;\n combineLatest([this.currentPipeline$, this.resetRequests$$])\n .pipe(takeUntilDestroyed())\n .subscribe(([pipeline, _]) => {\n if (pipeline?.pipelineId) {\n this.setFormValues(pipeline);\n }\n });\n }\n\n private setFormValues(pipeline: PipelineInterface): void {\n this.pipelineForm.controls.name.setValue(pipeline.name, { emitEvent: false });\n this.stages.clear();\n pipeline.stages\n .sort((a, b) => (a.probability < b.probability ? -1 : 1))\n .forEach((stage) => {\n const newStage = new FormGroup({\n name: new FormControl(stage.name, whitespaceValidator()),\n probability: new FormControl(StoredPercentageToDisplay(stage.probability), [\n Validators.min(0),\n Validators.max(99),\n ]),\n id: new FormControl(stage.stageId),\n });\n this.stages.push(newStage, { emitEvent: false });\n });\n this.pendingChanges$$.next(false);\n }\n\n protected get stages(): FormArray {\n return this.pipelineForm.controls['stages'] as FormArray;\n }\n\n protected addStage(): void {\n const newStage = new FormGroup({\n name: new FormControl('', whitespaceValidator()),\n probability: new FormControl(0, [Validators.min(0), Validators.max(99)]),\n id: new FormControl(''),\n });\n this.stages.push(newStage);\n }\n\n protected deleteDisplayStage(stageIndex: number): void {\n this.stages.removeAt(stageIndex);\n }\n\n protected async deleteStage(pipelineId: string, stageId: string): Promise {\n const success = await firstValueFrom(this.pipelineSettingsService.deleteStage(pipelineId, stageId));\n if (!success) {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.PIPELINE.SETTINGS.SNACKBARS.STAGE_DELETE_FAILED');\n }\n }\n\n protected async setPipelineName(pipelineId: string): Promise {\n if (this.pipelineForm.controls.name.valid && this.pipelineForm.controls.name.dirty) {\n const newName = this.pipelineForm.controls.name.value;\n const success = await firstValueFrom(this.pipelineSettingsService.updatePipelineName(pipelineId, newName));\n if (!success) {\n this.snackbarService.openErrorSnack(\n 'FRONTEND.SALES_UI.PIPELINE.SETTINGS.SNACKBARS.PIPELINE_NAME_UPDATE_FAILED',\n );\n }\n }\n }\n\n protected async setStageName(pipelineId: string, stageId: string, newName: string): Promise {\n const success = await firstValueFrom(this.pipelineSettingsService.updateStageName(pipelineId, stageId, newName));\n if (!success) {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.PIPELINE.SETTINGS.SNACKBARS.STAGE_NAME_UPDATE_FAILED');\n }\n }\n\n protected async setStageProbability(pipelineId: string, stageId: string, newProbability: number): Promise {\n const success = await firstValueFrom(\n this.pipelineSettingsService.updateStageProbability(\n pipelineId,\n stageId,\n DisplayPercentageToStored(newProbability),\n ),\n );\n if (!success) {\n this.snackbarService.openErrorSnack(\n 'FRONTEND.SALES_UI.PIPELINE.SETTINGS.SNACKBARS.STAGE_PROBABILITY_UPDATE_FAILED',\n );\n }\n }\n\n protected async addStages(pipelineId: string, stages: StageInterface[]): Promise {\n const success = await firstValueFrom(this.pipelineSettingsService.addStages(pipelineId, stages));\n if (!success) {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.PIPELINE.SETTINGS.SNACKBARS.STAGE_CREATE_FAILED');\n }\n }\n\n private buildUpdates(currentPipeline: PipelineInterface): Promise[] {\n const promises: Promise[] = [];\n const pipelineStagesForLookup = new Map(currentPipeline.stages.map((stage) => [stage.stageId, false]));\n const stagesToCreate: StageInterface[] = [];\n\n this.stages.controls.map((stage) => {\n const nameForm = stage.get('name');\n const probForm = stage.get('probability');\n const id = stage.get('id')?.value || '';\n const exists = pipelineStagesForLookup.has(id);\n if (exists) {\n if (nameForm.dirty) {\n promises.push(this.setStageName(currentPipeline.pipelineId, id, nameForm.value));\n }\n if (probForm.dirty) {\n promises.push(this.setStageProbability(currentPipeline.pipelineId, id, probForm.value));\n }\n pipelineStagesForLookup.set(id, true);\n } else {\n stagesToCreate.push({\n name: nameForm.value,\n probability: DisplayPercentageToStored(probForm.value),\n });\n }\n });\n pipelineStagesForLookup.forEach((found, id) => {\n if (!found) {\n promises.push(this.deleteStage(currentPipeline.pipelineId, id));\n }\n });\n if (stagesToCreate.length > 0) {\n promises.push(this.addStages(currentPipeline.pipelineId, stagesToCreate));\n }\n promises.push(this.setPipelineName(currentPipeline.pipelineId));\n return promises;\n }\n protected async saveChanges(): Promise {\n if (this.pipelineForm.valid && this.pipelineForm.dirty) {\n this.savingChanges$$.next(true);\n const currentPipeline = await firstValueFrom(this.currentPipeline$);\n await Promise.all(this.buildUpdates(currentPipeline));\n this.pipelineSettingsService.requestReload();\n this.pendingChanges$$.next(false);\n this.savingChanges$$.next(false);\n } else if (this.pipelineForm.dirty) {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.PIPELINE.SETTINGS.SNACKBARS.FORM_INVALID');\n }\n }\n\n protected async deletePipeline(pipelineId: string): Promise {\n const proceed = await firstValueFrom(\n this.confirmationModal.openModal({\n type: 'warn',\n title: 'FRONTEND.SALES_UI.PIPELINE.SETTINGS.MODALS.DELETE_TITLE',\n message: 'FRONTEND.SALES_UI.PIPELINE.SETTINGS.MODALS.DELETE_MESSAGE',\n confirmButtonText: 'FRONTEND.SALES_UI.COMMON.ACTION_LABELS.DELETE',\n cancelButtonText: 'FRONTEND.SALES_UI.COMMON.ACTION_LABELS.CANCEL',\n actionOnEnterKey: false,\n }),\n );\n if (proceed) {\n const success = await firstValueFrom(this.pipelineSettingsService.deletePipeline(pipelineId));\n if (success) {\n this.snackbarService.openSuccessSnack('FRONTEND.SALES_UI.PIPELINE.SETTINGS.SNACKBARS.DELETE_SUCCESS');\n this.pipelineSettingsService.requestReload();\n } else {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.PIPELINE.SETTINGS.SNACKBARS.DELETE_FAILED');\n }\n }\n }\n protected cancelChanges(): void {\n this.resetRequests$$.next(true);\n }\n\n canDeactivate(): Observable {\n return this.pendingChanges$$.pipe(\n switchMap((pendingChanges) => {\n if (pendingChanges) {\n return this.confirmationModal\n .openModal({\n type: 'warn',\n title: 'FRONTEND.SALES_UI.PIPELINE.SETTINGS.MODALS.UNSAVED_CHANGES_TITLE',\n message: 'FRONTEND.SALES_UI.PIPELINE.SETTINGS.MODALS.UNSAVED_CHANGES_MESSAGE',\n confirmButtonText: 'FRONTEND.SALES_UI.PIPELINE.SETTINGS.MODALS.UNSAVED_CHANGES_CONFIRM',\n })\n .pipe(map((confirmation) => !!confirmation));\n } else {\n return of(true);\n }\n }),\n );\n }\n}\n","@if (currentPipeline$ | async; as currentPipeline) {\n @if (currentPipeline.pipelineId) {\n @if (savingChanges$ | async) {\n \n } @else {\n
\n \n {{ 'FRONTEND.SALES_UI.PIPELINE.SETTINGS.FORMS.NAME_TITLE' | translate }}\n \n \n
\n
\n {{ 'FRONTEND.SALES_UI.PIPELINE.SETTINGS.FORMS.STAGES_TITLE' | translate }}\n
\n
\n {{ 'FRONTEND.SALES_UI.PIPELINE.SETTINGS.FORMS.STAGES_SUBTITLE' | translate }}\n
\n
\n \n
\n
\n
\n {{ 'FRONTEND.SALES_UI.PIPELINE.SETTINGS.FORMS.STAGE_NAME' | translate }}\n
\n
\n {{ 'FRONTEND.SALES_UI.PIPELINE.SETTINGS.FORMS.STAGE_PROBABILITY' | translate }}\n
\n
\n
\n \n \n @for (stageForm of stages.controls; track stageForm; let i = $index, last = $last) {\n
\n
\n \n \n \n
\n
\n
\n \n \n \n \n
\n
\n
\n @if (!last) {\n \n }\n }\n
\n \n \n \n
\n
\n \n \n \n \n \n \n \n }\n } @else {\n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.SETTINGS.EMPTY_STATE.TITLE' | translate }}\n \n

\n {{ 'FRONTEND.SALES_UI.PIPELINE.SETTINGS.EMPTY_STATE.MESSAGE' | translate }}\n

\n
\n }\n} @else {\n \n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyPageModule } from '@vendasta/galaxy/page';\nimport { MatButtonModule } from '@angular/material/button';\nimport { GalaxyStickyFooterModule } from '@vendasta/galaxy/sticky-footer';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatInput } from '@angular/material/input';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDivider } from '@angular/material/divider';\nimport { PipelineSettingsComponent } from './pipeline-settings.component';\nimport { PipelineSettingsService } from './pipeline-settings.service';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { PipelineSettingsFormComponent } from './pipeline-settings-form/pipeline-settings-form.component';\nimport { RouterOutlet, Routes } from '@angular/router';\nimport { GalaxyPageNavModule } from '@vendasta/galaxy/page-nav';\nimport { GalaxyNavLayoutModule } from '@vendasta/galaxy/nav-layout';\n\nexport const PipelineSettingsRoutes: Routes = [\n {\n path: '',\n component: PipelineSettingsComponent,\n children: [\n {\n path: ':pipelineId',\n component: PipelineSettingsFormComponent,\n canDeactivate: [(c: PipelineSettingsFormComponent) => c.canDeactivate()],\n },\n { path: '', component: PipelineSettingsFormComponent },\n ],\n },\n];\n@NgModule({\n declarations: [PipelineSettingsComponent, PipelineSettingsFormComponent],\n exports: [],\n providers: [PipelineSettingsService],\n imports: [\n CommonModule,\n GalaxyPageModule,\n TranslateModule,\n MatButtonModule,\n GalaxyStickyFooterModule,\n GalaxyFormFieldModule,\n ReactiveFormsModule,\n MatInput,\n MatIcon,\n MatCardModule,\n MatDivider,\n GalaxyLoadingSpinnerModule,\n GalaxyEmptyStateModule,\n RouterOutlet,\n GalaxyPageNavModule,\n GalaxyNavLayoutModule,\n ],\n})\nexport class PipelineSettingsModule {}\n","/**\n * This library has external dependencies that need to be provided by the host app in the module.\n * Provided type for PARTNER_ID_TOKEN, MARKET_ID_TOKEN, and BUSINESS_ID_TOKEN is `Observable`.\n *\n * Example:\n * @NgModule({\n * declarations: [MyHostComponent],\n * providers: [\n * {provide: PARTNER_ID_TOKEN, useExisting: MY_EXISTING_PROVIDED_PARTNER_ID},\n * {provide: MARKET_ID_TOKEN, useValue: of('my-market-id')},\n * {provide: BUSINESS_ID_TOKEN, useFactory: myFactoryFn(myDep: MyServiceDep), deps: [MyServiceDep]},\n * ],\n * })\n * export class MyHostModule {}\n *\n *\n * @Component({\n * selector: 'my-host-component',\n * template: `\n * \n * `,\n * })\n * export class MyHostComponent {}\n */\nexport const PARTNER_ID_TOKEN = 'partnerId$';\nexport const MARKET_ID_TOKEN = 'marketId$';\n\n/*\n * BUSINESS_ID_TOKEN is an OPTIONAL value provided to the SalesOrderLineitemSelector. If provided it will lookup\n * the apps that a business already has activated and mark those rows as already activated in the products table.\n */\nexport const BUSINESS_ID_TOKEN = 'businessId$';\n\n/**\n * Provided type is `Observable`, where Market is defined as\n * export interface Market {\n * name: string;\n * marketId: string;\n * }\n */\nexport const MARKET_IDS_TOKEN = 'markets$';\n\n/**\n * Provided type is `Observable`, where Salesperson is defined as\n * export interface Salesperson {\n * name: string;\n * salespersonId: string;\n * }\n */\nexport const SALESPEOPLE_TOKEN = 'salespeople$';\n\n/**\n * Provided type is `Observable`, where Salesteam has value\n * export interface Salesteam {\n * id: string;\n * teamName: string;\n * }\n */\nexport const SALES_TEAMS_TOKEN = 'salesTeams$';\n","import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { skipWhile, take, tap } from 'rxjs/operators';\nimport { Opportunity, SalesOpportunitiesService } from '@vendasta/sales-opportunities';\n\ninterface SalesOpportunity {\n get(opportunityId, accountGroupId): Observable;\n}\n\ninterface OpportunityState {\n opportunity: Opportunity;\n loading: boolean;\n}\n\n@Injectable()\nexport class SalesOpportunityStoreService {\n private opportunityStore: Map> = new Map<\n string,\n BehaviorSubject\n >();\n\n constructor(@Inject(SalesOpportunitiesService) private readonly salesOpportunityService: SalesOpportunity) {}\n\n buildId(accountGroupId: string, opportunityId: string): string {\n return [accountGroupId, opportunityId].join(':');\n }\n\n public getOpportunityState(opportunityId: string, accountGroupId: string): Observable {\n const id = this.buildId(accountGroupId, opportunityId);\n if (!this.opportunityStore.has(id)) {\n this.fetchOpportunity(opportunityId, accountGroupId);\n }\n return this.opportunityStore.get(id).pipe(skipWhile((o) => o === undefined));\n }\n\n fetchOpportunity(opportunityId: string, accountGroupId: string): void {\n const id = this.buildId(accountGroupId, opportunityId);\n if (!this.opportunityStore.has(id)) {\n this.opportunityStore.set(id, new BehaviorSubject(undefined));\n }\n if (!accountGroupId || !opportunityId) {\n this.opportunityStore.get(id).next({ opportunity: null, loading: false });\n return;\n }\n const currentValue = this.opportunityStore.get(id).getValue();\n if (currentValue) {\n this.opportunityStore.get(id).next({ opportunity: currentValue.opportunity, loading: true });\n }\n this.salesOpportunityService\n .get(opportunityId, accountGroupId)\n .pipe(\n tap((o) => this.opportunityStore.get(id).next({ opportunity: o, loading: false })),\n take(1),\n )\n .subscribe();\n }\n\n public refreshOpportunity(opportunityId: string, accountGroupId: string): void {\n this.fetchOpportunity(opportunityId, accountGroupId);\n }\n}\n","import { SelectedItem } from '@galaxy/inventory-ui';\nimport { AppKey } from '@vendasta/marketplace-apps';\n\nexport function convertItemsToAppKeys(items: SelectedItem[]): AppKey[] {\n return items.map((item) => {\n return new AppKey({\n appId: item.itemId,\n editionId: item.type === 'app' ? item.edition?.editionId : undefined,\n });\n });\n}\n\nexport function mapify(array: any[], keyFn: (item: any) => string): Map {\n return array.reduce((map, item) => {\n map.set(keyFn(item), item);\n return map;\n }, new Map());\n}\n","import { LineItem, Revenue, RevenueComponent, RevenuePeriod, Status } from '@vendasta/sales-orders';\nimport { Currency as PackageCurrency, Frequency, Package, Pricing } from '@vendasta/marketplace-packages';\nimport { App, AppPrice, UnitBillingFrequency } from '@galaxy/marketplace-apps';\nimport { BadgeColor } from '@vendasta/galaxy/badge/src/badge.component';\nimport { LineItem as OpportunityLineItem } from '@vendasta/sales-opportunities';\n\nexport interface Badge {\n text: string;\n color: BadgeColor;\n}\n\nexport const StatusToBadgeMapping = new Map([\n [Status.ACTIVATION_ERRORS, { text: 'FRONTEND.SALES_UI.ACTIVATION_ERRORS', color: 'red' }],\n [Status.APPROVED, { text: 'FRONTEND.SALES_UI.APPROVED', color: 'green' }],\n [Status.DECLINED, { text: 'FRONTEND.SALES_UI.DECLINED', color: 'dark-grey-solid' }],\n [Status.FULFILLED, { text: 'FRONTEND.SALES_UI.ACTIVATED', color: 'blue' }],\n [Status.PROCESSING, { text: 'FRONTEND.SALES_UI.PRODUCT_ACTIVATION_INITIATED', color: 'yellow' }],\n [Status.SUBMITTED, { text: 'FRONTEND.SALES_UI.SUBMITTED_FOR_ADMIN_APPROVAL', color: 'blue' }],\n [Status.DRAFTED, { text: 'FRONTEND.SALES_UI.DRAFTED', color: 'grey' }],\n [Status.ARCHIVED, { text: 'FRONTEND.SALES_UI.ARCHIVED', color: 'blue-solid' }],\n [\n Status.SUBMITTED_FOR_CUSTOMER_APPROVAL,\n { text: 'FRONTEND.SALES_UI.SUBMITTED_FOR_CUSTOMER_APPROVAL', color: 'yellow' },\n ],\n [Status.CANCELLATION_REQUESTED, { text: 'FRONTEND.SALES_UI.CANCELLATION_REQUESTED', color: 'red' }],\n [Status.CANCELLED, { text: 'FRONTEND.SALES_UI.CANCELLED', color: 'blue' }],\n [Status.SCHEDULED_ACTIVATION, { text: 'FRONTEND.SALES_UI.SCHEDULED_ACTIVATION', color: 'yellow' }],\n // No default color defined, defaulting to grey.\n [Status.AWAITING_PAYMENT, { text: 'FRONTEND.SALES_UI.AWAITING_PAYMENT', color: 'grey' }],\n [Status.PROCESSING_PAYMENT, { text: 'FRONTEND.SALES_UI.PROCESSING_PAYMENT', color: 'grey' }],\n [undefined, { text: 'FRONTEND.SALES_UI.SUBMITTED_FOR_ADMIN_APPROVAL', color: 'grey' }],\n]);\n\nexport function convertPackagePricingToSalesOrderRevenue(pricing: Pricing): Revenue {\n const prices = !!pricing && !!pricing.prices ? pricing.prices : [];\n return new Revenue({\n revenueComponents: prices.map(\n (p) =>\n new RevenueComponent({\n value: p.price,\n period: packageFrequencyToSalesOrderPeriod(p.frequency),\n isStartingRevenue: p.isStartingPrice,\n }),\n ),\n });\n}\n\nfunction packageFrequencyToSalesOrderPeriod(f: Frequency): RevenuePeriod {\n switch (f) {\n case Frequency.DAILY:\n return RevenuePeriod.DAILY;\n case Frequency.MONTHLY:\n return RevenuePeriod.MONTHLY;\n case Frequency.ONCE:\n return RevenuePeriod.ONETIME;\n case Frequency.WEEKLY:\n return RevenuePeriod.WEEKLY;\n case Frequency.YEARLY:\n return RevenuePeriod.YEARLY;\n default:\n return RevenuePeriod.MONTHLY;\n }\n}\n\nexport function packageCurrencyToCurrencyCode(currency: PackageCurrency): string {\n if (!currency || !PackageCurrency[currency]) {\n return 'USD';\n }\n return PackageCurrency[currency];\n}\n\nexport function packageToSalesOrderLineItem(pkg: Package): LineItem {\n return new LineItem({\n packageId: pkg.packageId,\n currencyCode: packageCurrencyToCurrencyCode(pkg.pricing ? pkg.pricing.currency : null),\n currentRevenue: convertPackagePricingToSalesOrderRevenue(pkg.pricing),\n quantity: 1,\n });\n}\n\nexport function OpportunityToOrderLineItems(lineItems: OpportunityLineItem[]): LineItem[] {\n if (!lineItems) return [];\n return lineItems.map((li) => new LineItem({ ...li })) ?? [];\n}\n\nexport function OrderToOpportunityLineItems(lineItems: LineItem[]): OpportunityLineItem[] {\n if (!lineItems) return [];\n return lineItems.map((li) => new OpportunityLineItem({ ...li }));\n}\n\nexport function appToSalesOrderLineItem(app: App, currency: string): LineItem {\n return new LineItem({\n appKey: app.key,\n currencyCode: currency,\n currentRevenue: new Revenue({\n revenueComponents: [\n new RevenueComponent({\n value: 0,\n period: null, // Period is not set here to force the user to interact with this price before saving\n isStartingRevenue: false,\n }),\n ],\n }),\n quantity: 1,\n });\n}\n\nexport function convertMarketplaceFreqToRevenueFreq(freq: UnitBillingFrequency): RevenuePeriod {\n if (freq === UnitBillingFrequency.UNIT_BILLING_FREQUENCY_MONTHLY) {\n return RevenuePeriod.MONTHLY;\n } else if (freq === UnitBillingFrequency.UNIT_BILLING_FREQUENCY_ONETIME) {\n return RevenuePeriod.ONETIME;\n } else if (freq === UnitBillingFrequency.UNIT_BILLING_FREQUENCY_YEARLY) {\n return RevenuePeriod.YEARLY;\n }\n return RevenuePeriod.MONTHLY;\n}\n\nexport function convertAppPriceToRevenuePrice(appPrice: AppPrice, currencyCode: string, editionID: string): Revenue {\n const frequencyPrice =\n appPrice?.pricesForEditions?.[editionID]?.pricesForCurrencies?.[currencyCode]?.pricesForFrequencies?.[0];\n const pricingRules = frequencyPrice?.pricingRules?.[0];\n if (currencyCode === '' || !pricingRules) {\n return new Revenue({\n revenueComponents: [\n new RevenueComponent({\n value: 0,\n }),\n ],\n });\n }\n\n const revenueComponents = [\n new RevenueComponent({\n value: pricingRules.price,\n period: convertMarketplaceFreqToRevenueFreq(frequencyPrice.frequency),\n isStartingRevenue: false,\n }),\n ];\n\n if (frequencyPrice.setupFee > 0) {\n revenueComponents.push(\n new RevenueComponent({\n value: frequencyPrice.setupFee,\n period: RevenuePeriod.ONETIME,\n isStartingRevenue: false,\n }),\n );\n }\n\n return new Revenue({ revenueComponents });\n}\n","import { Injectable } from '@angular/core';\nimport { SelectedItem, ToInventoryItem } from '@galaxy/inventory-ui';\nimport { App, AppPrices, FieldMask } from '@vendasta/marketplace-apps';\nimport { AppPartnerService, AppPricingService } from '@galaxy/marketplace-apps';\nimport { MarketplacePackagesApiService, Package } from '@vendasta/marketplace-packages';\nimport { convertItemsToAppKeys, mapify } from './utils';\nimport { combineLatest, map, Observable, of } from 'rxjs';\nimport { getPartnerCurrency } from '@vendasta/billing-ui';\nimport { convertAppPriceToRevenuePrice } from '../../conversion-utils';\nimport { AppWithRetailPricing } from '../sales-order-line-item-selector.component';\n\n@Injectable()\nexport class ItemSelectorAdapterService {\n constructor(\n private appPartnerService: AppPartnerService,\n private appPricingService: AppPricingService,\n private readonly marketplacePackagesApiService: MarketplacePackagesApiService,\n ) {}\n\n public static convertAppsToItems(apps: App[]): SelectedItem[] {\n return apps.map((a) => ToInventoryItem(a));\n }\n\n public static convertAppsAndPackagesToItems(apps: App[], packages: Package[]): SelectedItem[] {\n const selectedItems = apps.map((a) => ToInventoryItem(a));\n selectedItems.push(...packages.map((p) => ToInventoryItem(p)));\n return selectedItems;\n }\n\n public getMarketplaceApps(items: SelectedItem[], partnerId: string, marketId: string): Observable> {\n const appItems = items.filter((item) => item.type === 'app' || item.type === 'addon');\n if (!appItems.length) return of(new Map());\n\n return this.appPartnerService\n .getMulti(convertItemsToAppKeys(appItems), partnerId, marketId, null, true)\n .pipe(map((apps) => mapify(apps, (app: App) => app.key.appId)));\n }\n\n public getMarketplacePackages(items: SelectedItem[]): Observable {\n const packageIds = items.filter((item) => item.type === 'package').map((item) => item.itemId);\n if (!packageIds.length) return of([]);\n\n return this.marketplacePackagesApiService\n .getMultiPackages({ packageIds: packageIds })\n .pipe(map((resp) => resp.packageContainers.map((container) => container.package)));\n }\n\n public getRetailPricing(appIds: string[], partnerId: string, marketId: string): Observable> {\n return this.appPricingService\n .getMultiPricing(appIds, new FieldMask({ paths: ['retail'] }), partnerId, marketId)\n .pipe(map((appPrices) => mapify(appPrices, (ap: AppPrices) => ap.appId)));\n }\n\n public getAppsWithRetailPricing(\n selectedItems: SelectedItem[],\n partnerId: string,\n marketId: string,\n ): Observable {\n const items = selectedItems.filter((item) => item.type === 'app' || item.type === 'addon');\n if (!items.length) {\n return of([]);\n }\n\n const itemIds: string[] = items.map((item) => item.itemId);\n return combineLatest([\n this.getMarketplaceApps(items, partnerId, marketId),\n this.getRetailPricing(itemIds, partnerId, marketId),\n ]).pipe(\n map(([apps, appPrices]) =>\n items.map((item) => {\n const app = apps.get(item.itemId);\n const appPrice = appPrices.get(item.itemId);\n const partnerCurrency = getPartnerCurrency(appPrice.pricesForContexts['retail']);\n const appWithRetailPrice = app as AppWithRetailPricing;\n appWithRetailPrice.retailPricing = {\n currencyCode: partnerCurrency,\n revenue: convertAppPriceToRevenuePrice(\n appPrice.pricesForContexts['retail'],\n partnerCurrency,\n app.key.editionId ?? '',\n ),\n };\n return appWithRetailPrice;\n }),\n ),\n );\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { App } from '@galaxy/marketplace-apps';\nimport { Package } from '@vendasta/marketplace-packages';\nimport { ItemSelectorConfig, SelectedItem, SelectionChange } from '@galaxy/inventory-ui';\nimport { ItemSelectorAdapterService } from './item-selector-adapter.service';\nimport { Observable } from 'rxjs';\nimport { AppWithRetailPricing } from '../sales-order-line-item-selector.component';\n\n@Component({\n selector: 'sales-ui-sales-order-item-selector-adapter',\n templateUrl: './item-selector-adapter.component.html',\n providers: [ItemSelectorAdapterService],\n})\nexport class ItemSelectorAdapterComponent implements OnInit {\n @Input() config: ItemSelectorConfig;\n @Input() selectedApps: App[];\n @Input() selectedPackages: Package[];\n\n selectedItems: SelectedItem[];\n\n constructor(private itemSelectorAdapterService: ItemSelectorAdapterService) {}\n\n ngOnInit() {\n this.selectedItems = ItemSelectorAdapterService.convertAppsAndPackagesToItems(\n this.selectedApps,\n this.selectedPackages,\n );\n }\n\n itemSelectionChanged(selectionChange: SelectionChange): void {\n this.selectedItems = selectionChange.selectedItems;\n }\n\n getAppsWithRetailPricing(): Observable {\n return this.itemSelectorAdapterService.getAppsWithRetailPricing(\n this.selectedItems,\n this.config.partnerId,\n this.config.marketId,\n );\n }\n\n getMarketplacePackages(): Observable {\n return this.itemSelectorAdapterService.getMarketplacePackages(this.selectedItems);\n }\n}\n","\n","import { Directive, EventEmitter, Input } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ColumnDefinition, CustomCellComponent } from '@vendasta/va-filter2-table';\nimport { PackageWithPrice } from '../package-with-price';\n\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: '[packageSelectorCustomComponentSelector]' })\nexport class PackageSelectorCustomComponentDirective implements CustomCellComponent {\n @Input() columnDefinition: ColumnDefinition;\n @Input() translateService: TranslateService;\n @Input() element: PackageWithPrice;\n @Input() eventEmitter: EventEmitter;\n}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { PackageSelectorCustomComponentDirective } from './package-selector-custom.component';\n\n@Component({\n selector: 'sales-ui-package-name-cell',\n template: `\n \n \n \n \n {{ title }}\n \n \n \n `,\n styles: [\n `\n .va-dropdown-list-item__icon-title {\n display: flex;\n width: 100%;\n justify-content: flex-start;\n }\n\n .va-dropdown-list-item__icon {\n margin-right: 16px;\n }\n\n .va-dropdown-list-item__title-container {\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PackageNameCellComponent extends PackageSelectorCustomComponentDirective implements OnInit {\n iconUrl: string;\n title: string;\n\n ngOnInit(): void {\n this.iconUrl = this.element.package.icon;\n this.title = this.element.package.name;\n }\n}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { packageCurrencyToCurrencyCode } from '../../../conversion-utils';\nimport { PackageSelectorCustomComponentDirective } from './package-selector-custom.component';\nimport { AppPrice } from '@vendasta/marketplace-apps';\n\n@Component({\n selector: 'sales-ui-package-revenue-cell',\n template: `\n
\n \n
\n `,\n styles: [\n `\n .revenue {\n text-align: right;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PackageRevenueCellComponent extends PackageSelectorCustomComponentDirective implements OnInit {\n appPrice: AppPrice;\n currencyCode: string;\n\n constructor() {\n super();\n }\n\n ngOnInit(): void {\n this.currencyCode = packageCurrencyToCurrencyCode(this.element.package.pricing?.currency);\n this.appPrice = this.element.price;\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { PackageSelectorCustomComponentDirective } from './package-selector-custom.component';\n\n@Component({\n selector: 'sales-ui-package-revenue-header-cell',\n template: `\n
\n {{ 'FRONTEND.SALES_UI.RETAIL_PRICE' | translate }}\n
\n `,\n styles: [\n `\n .title {\n text-align: right;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PackageRevenueHeaderCellComponent extends PackageSelectorCustomComponentDirective {\n constructor() {\n super();\n }\n}\n","import { ColumnType, Pinned, TableDefinition } from '@vendasta/va-filter2-table';\nimport { PackageNameCellComponent } from './cells/package-name-cell.component';\nimport { PackageRevenueCellComponent } from './cells/package-revenue-cell.component';\nimport { PackageRevenueHeaderCellComponent } from './cells/package-revenue-header-cell.component';\nimport { PackageSelectorService } from './package-selector.service';\nimport { PackageWithPrice } from './package-with-price';\n\nconst PACKAGE_SELECTOR_TABLE_DEF: TableDefinition = {\n id: 'package-selector',\n labels: {\n noResults: 'No results',\n cancel: 'Cancel',\n none: 'None',\n update: 'Update',\n sortBy: 'Sort By',\n thenSortBy: 'Then Sort By',\n addAnotherSortColumn: 'Add another column to sort on',\n chooseColumnToSortBy: 'Choose a column to sort on',\n columnSorting: {\n date: {\n ascending: 'Earliest first',\n descending: 'Latest first',\n },\n number: {\n ascending: '1 to 9',\n descending: '9 to 1',\n },\n string: {\n ascending: 'A to Z',\n descending: 'Z to A',\n },\n default: {\n ascending: 'ascending',\n descending: 'descending',\n },\n },\n export: {\n buttonText: 'Export',\n buttonTooltipBeforeCount: 'Export',\n buttonTooltipAfterCount: 'items',\n },\n },\n options: {\n selectableRows: true,\n },\n columns: [\n {\n id: 'name',\n displayName: 'FRONTEND.SALES_UI.NAME',\n field: 'name',\n pinned: Pinned.PINNED_LEFT,\n type: ColumnType.COLUMN_TYPE_STRING,\n cellComponent: PackageNameCellComponent,\n },\n {\n id: 'retail-price',\n displayName: 'FRONTEND.SALES_UI.RETAIL_PRICE',\n field: 'name',\n cellComponent: PackageRevenueCellComponent,\n headerComponent: PackageRevenueHeaderCellComponent,\n },\n ],\n rowEqualityFunc: (row1: PackageWithPrice, row2: PackageWithPrice) =>\n row1.package.packageId === row2.package.packageId,\n};\n\nexport const tableDefinitionFactory = (packageSelectorService: PackageSelectorService) => {\n const tableDefinition = PACKAGE_SELECTOR_TABLE_DEF;\n tableDefinition.filters = packageSelectorService.filters;\n return tableDefinition;\n};\n","import { LoadRequest, TableDataService } from '@vendasta/va-filter2-table';\nimport { catchError, map, switchMap, take, withLatestFrom } from 'rxjs/operators';\nimport { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, of, share } from 'rxjs';\nimport { PackageService, Status } from '@vendasta/marketplace-packages';\nimport { FilterGroup, SearchFilterControl } from '@vendasta/va-filter2';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MARKET_ID_TOKEN, PARTNER_ID_TOKEN } from '../../external-dependencies/provider-tokens';\nimport { AppPricingService } from '@galaxy/marketplace-apps';\nimport { AppPrices, FieldMask } from '@vendasta/marketplace-apps';\nimport { PackageWithPrice } from './package-with-price';\n\n@Injectable()\nexport class PackageSelectorService implements TableDataService {\n private readonly totalResults$$: BehaviorSubject = new BehaviorSubject(0);\n public readonly totalResults$: Observable = this.totalResults$$.asObservable();\n\n public filters: FilterGroup;\n\n private marketIdOverride: string;\n\n constructor(\n @Inject(PARTNER_ID_TOKEN) private readonly partnerId$: Observable,\n @Inject(MARKET_ID_TOKEN) private readonly marketId$: Observable,\n private readonly packageService: PackageService,\n private readonly pricingService: AppPricingService,\n private readonly translateService: TranslateService,\n ) {\n this.filters = new FilterGroup('package-selector').addToolbarSection(\n new SearchFilterControl('search', this.translateService.instant('FRONTEND.SALES_UI.SEARCH')),\n );\n }\n\n load(request: LoadRequest): Observable {\n const cursor = btoa((request.pageIndex * request.pageSize).toString());\n const packages$ = combineLatest([this.partnerId$, this.marketId$]).pipe(\n switchMap(([partnerId, marketId]) => {\n if (!this.marketIdOverride) {\n this.marketIdOverride = marketId;\n }\n const filterTerm = request.filters['search'] ? request.filters['search'] : '';\n return this.packageService.list(\n partnerId,\n [Status.PUBLISHED],\n this.marketIdOverride,\n request.pageSize,\n cursor,\n null,\n true,\n filterTerm,\n );\n }),\n take(1),\n map((results) => {\n if (!results || !results.packages) {\n this.totalResults$$.next(results.totalResults);\n return [];\n }\n this.totalResults$$.next(results.totalResults);\n return results.packages;\n }),\n );\n const packagePrices$ = combineLatest([this.partnerId$, this.marketId$, packages$]).pipe(\n switchMap(([partnerId, marketId, packages]) => {\n const ids = packages.map((pkg) => pkg.packageId);\n return this.pricingService.getMultiPricing(ids, new FieldMask({ paths: ['retail'] }), partnerId, marketId).pipe(\n catchError((error) => {\n console.error('Error fetching pricing data:', error);\n const appPrices: AppPrices[] = [];\n return of(appPrices);\n }),\n share(),\n );\n }),\n );\n\n return packagePrices$.pipe(\n take(1),\n withLatestFrom(packages$),\n map(([prices, packages]) => {\n return packages.map((pkg) => {\n for (const price of prices) {\n if (price.appId === pkg.packageId) {\n return {\n package: pkg,\n price: price.pricesForContexts['retail'],\n } as PackageWithPrice;\n }\n }\n\n return {\n package: pkg,\n price: null,\n };\n });\n }),\n );\n }\n\n setMarketId(id: string): void {\n this.marketIdOverride = id;\n }\n}\n","import { Component, Input, OnChanges, OnInit, ViewChild } from '@angular/core';\nimport { TABLE_DEFINITION, VaFilteredMatTableService, VaTableSortService } from '@vendasta/va-filter2-table';\nimport { tableDefinitionFactory } from './package-selector-table-model';\nimport { PackageSelectorService } from './package-selector.service';\nimport { FilterService } from '@vendasta/va-filter2';\nimport { VaFilteredMatTableComponent } from '@vendasta/va-filter2-table';\nimport { Package } from '@vendasta/marketplace-packages';\nimport { PackageWithPrice } from './package-with-price';\n\n@Component({\n selector: 'sales-ui-sales-order-package-selector',\n templateUrl: './package-selector.component.html',\n providers: [\n VaTableSortService,\n PackageSelectorService,\n VaFilteredMatTableService,\n FilterService,\n { provide: TABLE_DEFINITION, useFactory: tableDefinitionFactory, deps: [PackageSelectorService] },\n ],\n})\nexport class PackageSelectorComponent implements OnInit, OnChanges {\n @Input() preselectedPackages: Package[];\n @Input() marketId: string;\n\n @ViewChild('table') table: VaFilteredMatTableComponent;\n\n preselectedPackagesWithPrices: PackageWithPrice[];\n\n constructor(readonly dataService: PackageSelectorService) {}\n\n ngOnInit(): void {\n this.dataService.setMarketId(this.marketId);\n }\n\n ngOnChanges(): void {\n this.preselectedPackagesWithPrices = this.preselectedPackages.map((pkg) => {\n return {\n package: pkg,\n price: null,\n };\n });\n }\n\n getSelectedRows(): Package[] {\n return this.table.getSelectedRows().map((row) => {\n return row.package;\n });\n }\n}\n","
\n \n
\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { App } from '@galaxy/marketplace-apps';\nimport { Package } from '@vendasta/marketplace-packages';\nimport { Revenue } from '@vendasta/sales-orders';\nimport { Observable, of } from 'rxjs';\nimport { AppSelectorComponent } from './app-selector/app-selector.component';\nimport { ItemSelectorAdapterComponent } from './item-selector-adapter/item-selector-adapter.component';\nimport { PackageSelectorComponent } from './package-selector/package-selector.component';\nimport { ItemSelectorFilterType } from '@galaxy/inventory-ui';\n\n// This can also hold wholesale information if wholesalePricing is true\nexport class AppWithRetailPricing extends App {\n retailPricing: {\n currencyCode: string;\n revenue: Revenue;\n };\n}\n\n@Component({\n selector: 'sales-ui-sales-order-line-item-selector',\n templateUrl: './sales-order-line-item-selector.component.html',\n styleUrls: ['./sales-order-line-item-selector.component.scss'],\n})\nexport class SalesOrderLineItemSelectorComponent implements OnInit {\n @Input() partnerId: string;\n @Input() marketId: string;\n @Input() preselectedPackages: Package[] = [];\n @Input() preselectedApps: App[] = [];\n @Input() hideSellingStandaloneProducts: boolean;\n @Input() hidePackages: boolean;\n @Input() hideOwnerName: boolean;\n @Input() hideOrderFormProducts: boolean;\n @Input() wholesalePricing: boolean;\n @Input() itemSelectorIncludesPackages: boolean;\n\n @ViewChild('apps') app: AppSelectorComponent;\n @ViewChild('itemSelectorAdapter') itemSelectorAdapter: ItemSelectorAdapterComponent;\n @ViewChild('packages') package: PackageSelectorComponent;\n\n itemTypesAvailable: ItemSelectorFilterType[] = ['products'];\n\n ngOnInit(): void {\n if (this.itemSelectorIncludesPackages) {\n this.itemTypesAvailable.push('packages');\n }\n if (this.hidePackages) {\n this.itemTypesAvailable = this.itemTypesAvailable.filter((itemType) => itemType !== 'packages');\n }\n if (this.hideSellingStandaloneProducts) {\n this.itemTypesAvailable = this.itemTypesAvailable.filter((itemType) => itemType !== 'products');\n }\n }\n\n getSelectedAppsWithRetailPricing(): Observable {\n if (this.hideSellingStandaloneProducts) {\n return of([]);\n }\n return this.itemSelectorAdapter.getAppsWithRetailPricing();\n }\n\n getSelectedPackages(): Observable {\n return this.itemSelectorIncludesPackages\n ? this.itemSelectorAdapter.getMarketplacePackages()\n : of(this.package?.getSelectedRows());\n }\n}\n","\n\n \n \n \n \n \n
\n \n
\n
\n
\n
\n\n\n \n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { ItemSelectorModule } from '@galaxy/inventory-ui';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BillingUiModule } from '@vendasta/billing-ui';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { VaPricingModule } from '@vendasta/store';\nimport { VaBadgeModule, VaIconModule } from '@vendasta/uikit';\nimport { Filter2TableModule } from '@vendasta/va-filter2-table';\nimport baseTranslation from '../../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../../shared/constants';\nimport { AppSelectorComponent } from './app-selector/app-selector.component';\nimport { AppNameCellComponent } from './app-selector/cells/app-name-cell.component';\nimport { AppRevenueCellComponent } from './app-selector/cells/app-revenue-cell.component';\nimport { AppRevenueHeaderCellComponent } from './app-selector/cells/app-revenue-header-cell.component';\nimport { AppSelectorCustomComponentDirective } from './app-selector/cells/app-selector-custom.component';\nimport { AppWholesaleHeaderCellComponent } from './app-selector/cells/app-wholesale-header-cell.component';\nimport { ItemSelectorAdapterComponent } from './item-selector-adapter/item-selector-adapter.component';\nimport { ItemSelectorAdapterService } from './item-selector-adapter/item-selector-adapter.service';\nimport { PackageNameCellComponent } from './package-selector/cells/package-name-cell.component';\nimport { PackageRevenueCellComponent } from './package-selector/cells/package-revenue-cell.component';\nimport { PackageRevenueHeaderCellComponent } from './package-selector/cells/package-revenue-header-cell.component';\nimport { PackageSelectorCustomComponentDirective } from './package-selector/cells/package-selector-custom.component';\nimport { PackageSelectorComponent } from './package-selector/package-selector.component';\nimport { SalesOrderLineItemSelectorComponent } from './sales-order-line-item-selector.component';\n\n@NgModule({\n imports: [\n CommonModule,\n Filter2TableModule,\n MatTabsModule,\n VaIconModule,\n VaPricingModule,\n VaBadgeModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: WEBLATE_COMPONENT_NAME,\n baseTranslation: baseTranslation,\n }),\n MatSelectModule,\n BillingUiModule,\n GalaxyBadgeModule,\n ItemSelectorModule,\n ],\n declarations: [\n SalesOrderLineItemSelectorComponent,\n PackageSelectorComponent,\n AppSelectorComponent,\n ItemSelectorAdapterComponent,\n AppNameCellComponent,\n AppRevenueCellComponent,\n AppRevenueHeaderCellComponent,\n AppWholesaleHeaderCellComponent,\n PackageNameCellComponent,\n PackageRevenueCellComponent,\n PackageRevenueHeaderCellComponent,\n AppSelectorCustomComponentDirective,\n PackageSelectorCustomComponentDirective,\n ],\n exports: [SalesOrderLineItemSelectorComponent],\n providers: [ItemSelectorAdapterService],\n})\nexport class SalesOrderLineItemSelectorModule {}\n","import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { CustomerSalesOrdersService, Order, SalesOrdersService } from '@vendasta/sales-orders';\nimport { catchError, skipWhile, take, tap } from 'rxjs/operators';\n\ninterface OrderState {\n order: Order;\n loading: boolean;\n}\n\nexport interface SalesOrders {\n get(orderId, businessId): Observable;\n}\n\n@Injectable()\nexport class SalesOrderStoreService {\n private ordersStore: Map> = new Map>();\n\n constructor(\n @Inject(SalesOrdersService) private salesOrdersService: SalesOrders,\n @Inject(CustomerSalesOrdersService) private customerSalesOrdersService: SalesOrders,\n ) {}\n\n buildId(businessId: string, orderId: string): string {\n return [businessId, orderId].join(':');\n }\n\n public getOrderState(orderId: string, businessId: string): Observable {\n const id = this.buildId(businessId, orderId);\n if (!this.ordersStore.has(id)) {\n this.fetchOrder(orderId, businessId);\n }\n return this.ordersStore.get(id).pipe(skipWhile((o) => o === undefined));\n }\n\n fetchOrder(orderId: string, businessId: string): void {\n const id = this.buildId(businessId, orderId);\n if (!this.ordersStore.has(id)) {\n this.ordersStore.set(id, new BehaviorSubject(undefined));\n }\n const order$$ = this.ordersStore.get(id);\n if (!businessId || !orderId) {\n order$$.next({ order: null, loading: false });\n return;\n }\n const currentValue = this.ordersStore.get(id).getValue();\n if (currentValue) {\n order$$.next({ order: currentValue.order, loading: true });\n }\n this.salesOrdersService\n .get(orderId, businessId)\n .pipe(\n catchError(() => {\n return this.customerSalesOrdersService.get(orderId, businessId);\n }),\n tap((o) => order$$.next({ order: o, loading: false })),\n take(1),\n )\n .subscribe();\n }\n\n public refreshOrder(orderId: string, businessId: string): void {\n this.fetchOrder(orderId, businessId);\n }\n\n public clearOrderStateCache(): void {\n this.ordersStore.clear();\n }\n}\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { TaxRateService } from '@galaxy/billing';\nimport { App, AppKey, AppPartnerService, FieldMaskInterface } from '@galaxy/marketplace-apps';\nimport { Package, PackageService } from '@vendasta/marketplace-packages';\nimport { Opportunity, SalesOpportunitiesService } from '@vendasta/sales-opportunities';\nimport { DurationInterface, LineItem, Order, Origin, Revenue, SalesOrdersService } from '@vendasta/sales-orders';\nimport { TaxOption, UILineItem, DurationTotal } from '@vendasta/store';\nimport { BehaviorSubject, Observable, Subscription, combineLatest, of, zip } from 'rxjs';\nimport { catchError, filter, map, publishReplay, refCount, skipWhile, switchMap, take, tap } from 'rxjs/operators';\nimport {\n OpportunityToOrderLineItems,\n OrderToOpportunityLineItems,\n appToSalesOrderLineItem,\n packageToSalesOrderLineItem,\n} from '../conversion-utils';\nimport { SalesOpportunityStoreService } from '../sales-opportunity-store.service';\nimport { AppWithRetailPricing } from '../sales-order-line-item-selector/sales-order-line-item-selector.component';\nimport { SalesOrderStoreService } from '../sales-order-store.service';\n\nexport interface PackageApiService {\n getMulti(packageIds: string[]): Observable;\n}\n\nexport interface AppSdkService {\n getMulti(\n appKeys: AppKey[],\n partnerId: string,\n marketId: string,\n projectionFilter: FieldMaskInterface,\n includeNotEnabled?: boolean,\n ): Observable;\n}\n\nconst INVALID_ITEM: UILineItem = {\n name: 'Invalid Item',\n iconUrl: null,\n lineItem: null,\n};\n\nexport interface UILineItemWithEditionPricing extends UILineItem {\n possibleRevenue?: {\n [editionId: string]: {\n currencyCode: string;\n revenue: Revenue;\n };\n };\n}\n\n@Injectable()\nexport class SalesOrderConfirmationService implements OnDestroy {\n partnerId: string;\n marketId: string;\n businessId: string;\n defaultDisplayCurrency: string;\n\n orderId$$: BehaviorSubject = new BehaviorSubject(null);\n orderId$: Observable = this.orderId$$.asObservable();\n\n opportunityId$$: BehaviorSubject = new BehaviorSubject(null);\n opportunityId$: Observable = this.opportunityId$$.asObservable();\n\n specifiedLineItems$$: BehaviorSubject = new BehaviorSubject([]);\n specifiedLineItems$: Observable = this.specifiedLineItems$$.asObservable();\n\n uiLineItems$: Observable;\n\n loading$$: BehaviorSubject = new BehaviorSubject(true);\n loading$: Observable = this.loading$$.asObservable();\n\n taxOptions$: Observable;\n contractDuration$: Observable;\n\n orderOrigin$: Observable;\n\n private subscriptions: Subscription[] = [];\n\n readonly order$: Observable;\n private readonly opportunity$: Observable;\n private readonly confirmation$: Observable;\n readonly estimatedTotal$: Observable;\n\n constructor(\n @Inject(PackageService) private readonly packageSdk: PackageApiService,\n @Inject(AppPartnerService) private readonly appSdk: AppSdkService,\n private readonly salesOrdersSdk: SalesOrdersService,\n private readonly salesOrderStoreService: SalesOrderStoreService,\n private readonly taxRateService: TaxRateService,\n private readonly salesOpportunityStoreService: SalesOpportunityStoreService,\n private readonly salesOpportunitiesSdk: SalesOpportunitiesService,\n ) {\n const orderState$ = this.orderId$.pipe(\n skipWhile((orderId) => orderId === null),\n switchMap((orderId) => this.salesOrderStoreService.getOrderState(orderId, this.businessId)),\n publishReplay(1),\n refCount(),\n );\n\n const opportunityState$ = this.opportunityId$.pipe(\n skipWhile((opportunityId) => opportunityId === null),\n switchMap((opportunityId) =>\n this.salesOpportunityStoreService.getOpportunityState(opportunityId, this.businessId),\n ),\n publishReplay(1),\n refCount(),\n );\n\n this.subscriptions.push(\n orderState$\n .pipe(\n tap((orderState) => {\n if (orderState.loading) {\n this.loading$$.next(true);\n }\n }),\n )\n .subscribe(),\n );\n\n this.subscriptions.push(\n opportunityState$\n .pipe(\n tap((oppState) => {\n if (oppState.loading) {\n this.loading$$.next(true);\n }\n }),\n )\n .subscribe(),\n );\n\n this.order$ = orderState$.pipe(\n filter((orderState) => !orderState.loading),\n map((orderState) => orderState.order),\n publishReplay(1),\n refCount(),\n );\n\n this.opportunity$ = opportunityState$.pipe(\n filter((oppState) => !oppState.loading),\n map((oppState) => oppState.opportunity),\n publishReplay(1),\n refCount(),\n );\n\n this.taxOptions$ = this.order$.pipe(\n switchMap((order) => {\n if (order) {\n return of(order.taxOptions);\n }\n return this.taxRateService.calculate(this.partnerId, this.businessId, 0).pipe(\n catchError(() => []),\n map((response) => {\n return response.taxRates.map((item) => {\n return {\n label: item.name,\n percentageMultiplier: item.percentage / 100,\n };\n });\n }),\n );\n }),\n );\n\n this.orderOrigin$ = this.order$.pipe(map((order) => order?.origin));\n\n this.confirmation$ = combineLatest([this.order$, this.opportunity$]).pipe(\n map(([order, opportunity]) => {\n if (opportunity !== null) {\n return opportunity;\n }\n\n return order;\n }),\n );\n\n this.contractDuration$ = this.confirmation$.pipe(\n map((val) => {\n const order = val as Order;\n const opportunity = val as Opportunity;\n if (order?.contractDuration) {\n return order?.contractDuration;\n }\n return opportunity?.expectedContractDuration;\n }),\n );\n\n this.estimatedTotal$ = combineLatest([this.confirmation$, this.taxOptions$]).pipe(\n map(([confirmation, taxOption]) =>\n calculateOpportunityEstimatedTotal(confirmation, taxOption, this.defaultDisplayCurrency),\n ),\n );\n\n const combinedLineItems$ = combineLatest([this.confirmation$, this.specifiedLineItems$]).pipe(\n map(([val, lineItems]) => {\n if (!val) return lineItems;\n if ('orderId' in val) return lineItems.concat(val?.lineItems);\n\n return lineItems.concat(OpportunityToOrderLineItems(val?.lineItems || []));\n }),\n publishReplay(1),\n refCount(),\n );\n\n const packages$ = combinedLineItems$.pipe(\n switchMap((lineItems) => {\n const packageLineItems = lineItems.filter((li) => !!li.packageId);\n if (packageLineItems.length > 0) {\n return this.packageSdk.getMulti(packageLineItems.map((li) => li.packageId));\n }\n return of([]);\n }),\n publishReplay(1),\n refCount(),\n );\n\n const appsAndAddons$ = combinedLineItems$.pipe(\n switchMap((lineItems) => {\n const appsAndAddonsLineItems = lineItems.filter((li) => !!li.appKey);\n const appsAndAddonsKeys = appsAndAddonsLineItems.map((app) => new AppKey(app.appKey));\n if (appsAndAddonsKeys.length > 0) {\n return this.appSdk.getMulti(appsAndAddonsKeys, this.partnerId, this.marketId, null, true);\n }\n return of([]);\n }),\n map((apps) => apps.filter((a) => !!a?.key?.appId)),\n publishReplay(1),\n refCount(),\n );\n\n this.uiLineItems$ = zip(combinedLineItems$, packages$, appsAndAddons$).pipe(\n map(([lineItems, packages, appsAndAddons]) => {\n return lineItems.map((li) => {\n let uiLineItem = INVALID_ITEM;\n if (li.packageId) {\n const pack = packages.find((p) => p.packageId === li.packageId);\n uiLineItem = this.packageToUILineItem(pack);\n } else {\n const app = appsAndAddons.find(\n (a) => a.key.appId === li.appKey.appId && (a.key.editionId || '') === (li.appKey.editionId || ''),\n );\n if (app) {\n uiLineItem = this.appWithPossibleRevenueToUILineItem(app);\n }\n }\n uiLineItem.lineItem = li;\n return uiLineItem;\n });\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n\n updateLineItems(lineItems: LineItem[]): Observable {\n this.loading$$.next(true);\n\n return this.confirmation$.pipe(\n take(1),\n switchMap((val) => {\n const order = val as Order;\n const opportunity = val as Opportunity;\n\n if (opportunity.opportunityId) {\n return this.salesOpportunitiesSdk\n .updateLineItemsForOpportunity(\n opportunity.opportunityId,\n opportunity.accountGroupId,\n opportunity.salesPersonId,\n OrderToOpportunityLineItems(lineItems),\n )\n .pipe(\n map(() => {\n this.salesOpportunityStoreService.refreshOpportunity(\n opportunity.opportunityId,\n opportunity.accountGroupId,\n );\n return true;\n }),\n );\n }\n\n return this.salesOrdersSdk.updateLineItems(order.orderId, order.businessId, lineItems).pipe(\n map(() => {\n this.salesOrderStoreService.refreshOrder(order.orderId, order.businessId);\n return true;\n }),\n );\n }),\n );\n }\n\n packageToUILineItem(pkg: Package): UILineItem {\n return {\n lineItem: packageToSalesOrderLineItem(pkg),\n name: pkg.name,\n iconUrl: pkg.icon,\n bannerUrl: pkg.headerImageUrl,\n isMultiActivatable: true,\n description: pkg.tagline,\n };\n }\n\n appWithPossibleRevenueToUILineItem(app: AppWithRetailPricing): UILineItem {\n const uiLineItem: UILineItemWithEditionPricing = {\n lineItem: appToSalesOrderLineItem(app, this.defaultDisplayCurrency),\n name: app.sharedMarketingInformation.name,\n editionName: app.sharedMarketingInformation.editionName,\n iconUrl: app.sharedMarketingInformation.iconUrl,\n bannerUrl: app.sharedMarketingInformation.bannerImageUrl,\n billingId: app.externalIdentifiers?.billingId,\n description: app.sharedMarketingInformation.tagline,\n appType: app.appType,\n };\n\n if (app.activationInformation) {\n uiLineItem.isMultiActivatable = app.activationInformation.multipleActivationsEnabled;\n }\n\n if (app.retailPricing) {\n uiLineItem.lineItem.currentRevenue = app.retailPricing.revenue;\n uiLineItem.lineItem.currencyCode = app.retailPricing.currencyCode;\n }\n\n if (app.parentRequirements?.enabled) {\n uiLineItem.parentIconUrl = app.parentRequirements.parentDetails.iconUrl;\n uiLineItem.parentName = app.parentRequirements.parentDetails.name;\n }\n return uiLineItem;\n }\n\n initialize(\n lineItems: LineItem[],\n orderId: string,\n opportunityId: string,\n partnerId: string,\n marketId: string,\n businessId: string,\n defaultDisplayCurrency: string,\n ): void {\n this.partnerId = partnerId;\n this.marketId = marketId;\n this.businessId = businessId;\n this.specifiedLineItems$$.next(lineItems || []);\n this.defaultDisplayCurrency = defaultDisplayCurrency;\n this.orderId$$.next(orderId || '');\n this.opportunityId$$.next(opportunityId || '');\n }\n\n clearOrderStateCache(): void {\n this.salesOrderStoreService.clearOrderStateCache();\n }\n\n addSpecifiedLineItems(lineItems: LineItem[]): void {\n this.specifiedLineItems$$.next(this.specifiedLineItems$$.getValue().concat(lineItems));\n }\n}\n\nexport function calculateOpportunityEstimatedTotal(\n confirmation: Order | Opportunity,\n taxOptions: TaxOption[],\n currencyCode: string,\n): DurationTotal[] {\n if (confirmation instanceof Opportunity) {\n let total = confirmation.projectedFirstYearValue / 100;\n if (taxOptions) {\n const taxTotal = taxOptions.reduce((all, tax) => all + tax.percentageMultiplier * total, 0);\n total += taxTotal;\n }\n return [\n {\n total: total,\n currencyCode: currencyCode,\n startingPrice: confirmation.lineItems.some((li) =>\n li.currentRevenue?.revenueComponents.some((rc) => rc.isStartingRevenue),\n ),\n },\n ];\n }\n return null;\n}\n","import { Component, Inject, ViewChild } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { App } from '@galaxy/marketplace-apps';\nimport { Package } from '@vendasta/marketplace-packages';\nimport { combineLatest, Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { SalesOrderLineItemSelectorComponent } from '../../sales-order-line-item-selector/sales-order-line-item-selector.component';\n\nexport interface SalesOrderLineItemSelectorDialogData {\n marketId?: string;\n preselectedPackages: Package[];\n preselectedApps: App[];\n hideSellingStandaloneProducts: boolean;\n hidePackages: boolean;\n hideOwnerName?: boolean;\n hideOrderFormProducts: boolean;\n wholesalePricing: boolean;\n itemSelectorIncludesPackages?: boolean;\n}\n\nexport interface LineItemsSelected {\n packages: Package[];\n apps: App[];\n}\n\n@Component({\n selector: 'sales-ui-sales-order-line-item-selector-dialog',\n templateUrl: 'sales-order-line-item-selector-dialog.component.html',\n styleUrls: ['sales-order-line-item-selector-dialog.component.scss'],\n})\nexport class SalesOrderLineItemSelectorDialogComponent {\n marketId: string;\n preselectedPackages: Package[];\n preselectedApps: App[];\n hideSellingStandaloneProducts: boolean;\n hidePackages: boolean;\n hideOwnerName: boolean;\n hideOrderFormProducts: boolean;\n wholesalePricing: boolean;\n itemSelectorIncludesPackages = false;\n\n @ViewChild(SalesOrderLineItemSelectorComponent, { static: true })\n selectorComponent: SalesOrderLineItemSelectorComponent;\n\n constructor(\n @Inject('PARTNER_ID') readonly partnerId$: Observable,\n @Inject(MAT_DIALOG_DATA) data: SalesOrderLineItemSelectorDialogData,\n public dialogRef: MatDialogRef,\n ) {\n this.marketId = data.marketId;\n this.preselectedPackages = data.preselectedPackages;\n this.preselectedApps = data.preselectedApps;\n this.hideSellingStandaloneProducts = data.hideSellingStandaloneProducts;\n this.hidePackages = data.hidePackages || false;\n this.hideOwnerName = data.hideOwnerName || false;\n this.hideOrderFormProducts = data.hideOrderFormProducts || false;\n this.wholesalePricing = data.wholesalePricing || false;\n this.itemSelectorIncludesPackages = data.itemSelectorIncludesPackages;\n }\n\n selectPackages(): void {\n combineLatest([\n this.selectorComponent.getSelectedAppsWithRetailPricing(),\n this.selectorComponent.getSelectedPackages(),\n ])\n .pipe(take(1))\n .subscribe(([apps, packages]) => {\n this.dialogRef.close({\n packages: packages,\n apps: apps,\n });\n });\n }\n}\n","

{{ 'FRONTEND.SALES_UI.ADD_ITEMS' | translate }}

\n\n \n\n\n \n \n\n","import { CurrencyPipe } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { RevenueComponent, RevenuePeriod } from '@vendasta/sales-orders';\n\ninterface PeriodOptions {\n label: string;\n value: RevenuePeriod;\n}\n\n@Component({\n selector: 'sales-ui-sales-order-edit-price',\n templateUrl: './sales-order-edit-price.component.html',\n styleUrls: ['./sales-order-edit-price.component.scss'],\n})\nexport class SalesOrderEditPriceComponent implements OnInit {\n @ViewChild('input', { static: true }) input: ElementRef;\n @Input() revenueComponent: RevenueComponent;\n @Input() allowDelete: boolean;\n @Input() currencyCode: string;\n @Input() form: UntypedFormGroup;\n @Input() allowNegativeValues = false;\n @Input() canEditPeriod = true;\n @Output() errorMessage: EventEmitter = new EventEmitter();\n\n @Output() delete: EventEmitter = new EventEmitter();\n\n currencySymbol: string;\n\n periodOptions: PeriodOptions[] = [\n { label: 'FRONTEND.STORE.PERIODS.ONE_TIME', value: RevenuePeriod.ONETIME },\n { label: 'FRONTEND.STORE.PERIODS.MONTHLY', value: RevenuePeriod.MONTHLY },\n { label: 'FRONTEND.STORE.PERIODS.YEARLY', value: RevenuePeriod.YEARLY },\n ];\n\n oneTimeOnly: PeriodOptions[] = [{ label: 'FRONTEND.STORE.PERIODS.ONE_TIME', value: RevenuePeriod.ONETIME }];\n\n constructor(private readonly formatCurrencyPipe: CurrencyPipe) {}\n\n ngOnInit(): void {\n this.currencySymbol = this.formatCurrencyPipe.transform(0, this.currencyCode, 'symbol-narrow').charAt(0);\n }\n\n handleDelete(): void {\n this.delete.emit(this.revenueComponent);\n }\n\n markAsTouched(): void {\n this.form.markAsTouched();\n this.form.updateValueAndValidity();\n for (const i in this.form.controls) {\n if (i) {\n this.form.controls[i].updateValueAndValidity();\n this.form.controls[i].markAsTouched();\n }\n }\n }\n}\n","
\n \n {{ 'FRONTEND.SALES_UI.PRICING.PRICE' | translate }}\n {{ currencySymbol }}  \n \n \n {{ 'FRONTEND.SALES_UI.PRICING.REVENUE_REQUIRED' | translate }}\n \n \n {{ 'FRONTEND.SALES_UI.PRICING.GREATER_THAN_OR_EQUAL_TO_ZERO' | translate }}\n \n \n {{ 'FRONTEND.SALES_UI.PRICING.MUST_BE_NUM' | translate }}\n \n \n \n \n {{ 'FRONTEND.SALES_UI.PRICING.PERIOD' | translate }}\n \n \n \n \n {{ option.label | translate }}\n \n \n \n \n {{ option.label | translate }}\n \n \n \n \n {{ 'FRONTEND.SALES_UI.PRICING.PERIOD_REQUIRED' | translate }}\n \n \n \n \n \n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n ViewChildren,\n} from '@angular/core';\nimport {\n UntypedFormArray,\n UntypedFormBuilder,\n UntypedFormControl,\n UntypedFormGroup,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { BillingTermDialogComponent, BillingTermDialogOutput } from '@galaxy/inventory-ui';\nimport { App } from '@galaxy/marketplace-apps';\nimport { FeatureFlagService, FeatureFlagStatusInterface } from '@galaxy/partner';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { Package } from '@vendasta/marketplace-packages';\nimport {\n BillingPeriod,\n DurationInterface,\n LineItem,\n Origin,\n Revenue,\n RevenueComponent,\n RevenuePeriod,\n SalesOrdersService,\n Status,\n} from '@vendasta/sales-orders';\nimport { TaxOption } from '@vendasta/store';\nimport { BehaviorSubject, Observable, Subscription, combineLatest, iif } from 'rxjs';\nimport { map, switchMap, take, tap } from 'rxjs/operators';\nimport { SalesOrderConfirmationService, UILineItemWithEditionPricing } from './sales-order-confirmation.service';\nimport { SalesOrderEditPriceComponent } from './sales-order-edit-price/sales-order-edit-price.component';\nimport { SalesOrderLineItemSelectorDialogComponent } from './sales-order-line-item-selector-dialog/sales-order-line-item-selector-dialog.component';\n\nconst ITEM_SELECTOR_INCLUDES_PACKAGES = '2023_11_ssc_item_selector_packages';\nconst SALES_OPPORTUNITIES_BILLING_PERIODS = '2024_01_sales_opportunities_billing_periods';\n\n@Component({\n selector: 'sales-ui-sales-order-confirmation',\n templateUrl: './sales-order-confirmation.component.html',\n styleUrls: ['../../shared/shared-styles.scss', './sales-order-confirmation.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [SalesOrderConfirmationService],\n})\nexport class SalesOrderConfirmationComponent implements OnInit, OnDestroy {\n @Input() partnerId: string;\n @Input() marketId: string;\n @Input() businessId: string;\n\n @Input() orderId: string;\n @Input() opportunityId: string;\n @Input() lineItems: LineItem[];\n @Input() hidePackages = false;\n @Input() removeHeader: boolean;\n @Input() title: string;\n @Input() editable = false;\n @Input() startEditing = false;\n @Input() defaultDisplayCurrency: string;\n @Input() allowNegativeValues = false;\n // allows multiple quantities to be set for products that are not multi-activatable\n @Input() bypassQuantityRestrictions = false;\n // controls whether or not an order can be directly charged, allowing for PC origin orders to display pricing.\n @Input() chargeOrdersEnabled = false;\n @Input() enableEditBillingSchedule = false;\n @Input() allowDuplicateItems = false;\n @Input() createRetailSubscriptions = false;\n\n @Output() loading: EventEmitter = new EventEmitter();\n\n openExpansionPanel$$ = new BehaviorSubject(false);\n openExpansionPanel$ = this.openExpansionPanel$$.asObservable();\n formForLineItems: UntypedFormArray;\n editing = false;\n saving = false;\n displayItems: UILineItemWithEditionPricing[];\n editingItems: UILineItemWithEditionPricing[];\n uiLineItems$: Observable = this.salesOrderConfirmationService.uiLineItems$;\n taxOptions$: Observable = this.salesOrderConfirmationService.taxOptions$;\n loading$: Observable = this.salesOrderConfirmationService.loading$;\n showPricing$: Observable = this.salesOrderConfirmationService.order$.pipe(\n map(\n (order) =>\n order?.origin !== Origin.PC ||\n (this.chargeOrdersEnabled &&\n order?.statusHistory?.some((history) => history.status === Status.SUBMITTED_FOR_CUSTOMER_APPROVAL)),\n ),\n );\n inputDuration$$ = new BehaviorSubject(null);\n duration$ = this.inputDuration$$\n .asObservable()\n .pipe(\n switchMap((inputDuration) =>\n iif(\n () => !!inputDuration,\n this.inputDuration$$.asObservable(),\n this.salesOrderConfirmationService.contractDuration$,\n ),\n ),\n );\n estimatedTotal$ = this.salesOrderConfirmationService.estimatedTotal$;\n orderState$ = combineLatest([\n this.uiLineItems$,\n this.taxOptions$,\n this.duration$,\n this.loading$,\n this.estimatedTotal$,\n ]).pipe(\n map(([orderItems, taxOptions, duration, loading, estimatedTotal]) => ({\n orderItems: orderItems,\n taxOptions: taxOptions,\n duration: duration,\n loading: loading,\n estimatedTotal: estimatedTotal,\n })),\n );\n hideSellingStandaloneProducts = false;\n @ViewChildren('editPriceComponent')\n private readonly editPriceComponents: QueryList;\n private subscriptions: Subscription[] = [];\n\n featureFlags$: Observable;\n areBillingPeriodsEnabled$: Observable;\n\n constructor(\n private readonly salesOrderConfirmationService: SalesOrderConfirmationService,\n private fb: UntypedFormBuilder,\n private cdk: ChangeDetectorRef,\n private alertService: SnackbarService,\n private dialog: MatDialog,\n private readonly salesOrdersService: SalesOrdersService,\n private readonly featureFlagService: FeatureFlagService,\n ) {}\n\n @Input()\n set duration(duration: DurationInterface) {\n this.inputDuration$$.next(duration);\n }\n\n ngOnInit(): void {\n this.featureFlags$ = this.featureFlagService.batchGetStatus(this.partnerId, this.marketId, [\n ITEM_SELECTOR_INCLUDES_PACKAGES,\n SALES_OPPORTUNITIES_BILLING_PERIODS,\n ]);\n this.areBillingPeriodsEnabled$ = this.featureFlags$.pipe(\n map((featureFlags) => featureFlags && featureFlags[SALES_OPPORTUNITIES_BILLING_PERIODS]),\n );\n\n this.editing = !!this.editable && !!this.startEditing;\n this.salesOrderConfirmationService.initialize(\n this.lineItems,\n this.orderId,\n this.opportunityId,\n this.partnerId,\n this.marketId,\n this.businessId,\n this.defaultDisplayCurrency,\n );\n this.subscriptions.push(\n this.salesOrdersService\n .getConfig(this.partnerId, this.marketId)\n .pipe(map((config) => config.salespersonOptions?.disableSellingStandaloneProducts))\n .subscribe((hideSellingStandaloneProducts) => {\n this.hideSellingStandaloneProducts = hideSellingStandaloneProducts;\n }),\n );\n this.formForLineItems = this.fb.array([]);\n\n this.subscriptions.push(\n this.uiLineItems$\n .pipe(\n map((uiLineItems) => {\n this.displayItems = uiLineItems;\n this.resetEditingItems();\n this.cdk.detectChanges();\n }),\n tap(() => this.salesOrderConfirmationService.loading$$.next(false)),\n )\n .subscribe(),\n );\n\n this.subscriptions.push(this.loading$.pipe(tap((loading) => this.loading.emit(loading))).subscribe());\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n this.salesOrderConfirmationService.clearOrderStateCache();\n }\n\n resetEditingItems(): void {\n this.setEditingLineItems(JSON.parse(JSON.stringify(this.displayItems)));\n this.resetFormToEditingItems();\n }\n\n resetFormToEditingItems(): void {\n this.formForLineItems = this.fb.array(\n this.editingItems.map((li) => {\n const revenueControls = this.revenueControlFromLineItemRevenue(li.lineItem?.currentRevenue);\n const quantityEnabled = this.bypassQuantityRestrictions || li.isMultiActivatable;\n const nonBillable = li.lineItem?.nonBillable ?? false;\n const formGroup = this.fb.group({\n quantity: [\n { value: quantityEnabled ? li.lineItem.quantity : 1, disabled: !quantityEnabled },\n [Validators.min(1)],\n ],\n revenueComponents: this.fb.array(revenueControls),\n shouldInvoice: [!nonBillable],\n });\n return formGroup;\n }),\n );\n }\n\n revenueControlFromLineItemRevenue(revenue: Revenue): UntypedFormGroup[] {\n return (revenue?.revenueComponents || []).map((rc) =>\n this.fb.group({\n revenue: [(rc.value || 0) / 100, [Validators.required, this.validateRevenue]],\n period: [rc.period === undefined ? RevenuePeriod.ONETIME : rc.period, [Validators.required]],\n startingAt: [rc.isStartingRevenue],\n }),\n );\n }\n\n hasNoRevenue(uiLineItem: UILineItemWithEditionPricing, index: number): boolean {\n const revenueComponents = uiLineItem.lineItem?.currentRevenue?.revenueComponents;\n\n if ((revenueComponents || []).length === 0) {\n this.addRevenueRow(index);\n }\n\n return false;\n }\n\n validateRevenue = (c: UntypedFormControl): ValidationErrors | null => {\n const revenueValue = c.value;\n if (isNaN(revenueValue)) {\n return { pattern: true };\n }\n if (Number(revenueValue) < 0 && this.allowNegativeValues === false) {\n return { min: true };\n }\n return null;\n };\n\n edit(): void {\n this.editing = true;\n }\n\n cancel(): void {\n this.editing = false;\n this.resetEditingItems();\n }\n\n save(): void {\n if (!this.isFormValid()) {\n return;\n }\n\n const items = this.formatEditingItems();\n this.saving = true;\n this.salesOrderConfirmationService\n .updateLineItems(items)\n .pipe(take(1))\n .subscribe({\n next: () => {\n this.displayItems = JSON.parse(JSON.stringify(this.editingItems));\n this.resetEditingItems();\n this.saving = false;\n this.editing = false;\n this.alertService.openSuccessSnack('FRONTEND.SALES_UI.CONTENTS_UPDATED');\n this.cdk.detectChanges();\n },\n error: () => {\n this.saving = false;\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.ERRORS.ERROR_UPDATING_CONTENTS');\n this.cdk.detectChanges();\n },\n });\n }\n\n formatEditingItems(): LineItem[] {\n this.writeFormValuesToEditingItems();\n return this.editingItems.map((li) => li.lineItem);\n }\n\n writeFormValuesToEditingItems(): void {\n this.editingItems.map((uiLineItem, index) => {\n const lineItemFormGroup = this.formForLineItems.controls[index] as UntypedFormGroup;\n uiLineItem.lineItem.quantity = lineItemFormGroup.controls.quantity.value;\n const revenueComponentsFormArray = lineItemFormGroup.controls?.revenueComponents as UntypedFormArray;\n const revenueComponents = revenueComponentsFormArray.controls.map((fa) => {\n const fg = fa as UntypedFormGroup;\n return new RevenueComponent({\n value: Math.round(fg.controls.revenue.value * 100),\n period: fg.controls.period.value,\n isStartingRevenue: fg.controls.startingAt.value,\n });\n });\n uiLineItem.lineItem.currentRevenue = new Revenue({ revenueComponents: revenueComponents });\n uiLineItem.lineItem.nonBillable = !lineItemFormGroup.controls?.shouldInvoice.value;\n });\n }\n\n // When using the component without a backing order, this can be used to retrieve the lineitems that are in the editor when an external\n // save button is clicked (or some other trigger)\n public getCurrentLineItems(): LineItem[] {\n return this.formatEditingItems();\n }\n\n public isFormValid(): boolean {\n const valid = this.formForLineItems.valid;\n if (!valid) {\n this.formForLineItems.markAsTouched();\n this.formForLineItems.updateValueAndValidity();\n this.editPriceComponents.map((c) => c.markAsTouched());\n }\n if (this.editingItems.length <= 0) {\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.ERRORS.ERROR_MUST_HAVE_ITEMS');\n return false;\n }\n if (this.editingItems.find((item) => item.lineItem?.currentRevenue?.revenueComponents.length === 0)) {\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.ERRORS.ERROR_MUST_HAVE_PRICING');\n return false;\n }\n\n return valid;\n }\n\n // After the component is initialized, if you would like to specify more line items you can use this function\n public addSpecifiedLineItems(lineItems: LineItem[]): void {\n this.salesOrderConfirmationService.addSpecifiedLineItems(lineItems);\n }\n\n onEditBillingSchedule(lineItemIndex: number): void {\n const uiLineItem = this.editingItems[lineItemIndex];\n const revenueComponent = this.formForLineItems.controls[lineItemIndex].value?.revenueComponents[0];\n const lineItem = uiLineItem.lineItem;\n const dialogRef = this.dialog.open(BillingTermDialogComponent, {\n data: {\n itemId: lineItem.appKey?.appId ?? lineItem.packageId,\n name: uiLineItem.name,\n iconUrl: uiLineItem.iconUrl,\n revenueComponent: { revenue: revenueComponent.revenue * 100, period: revenueComponent.period },\n startDate: lineItem.billingPeriod?.startDate,\n endDate: lineItem.billingPeriod?.endDate,\n },\n maxWidth: '90vw',\n maxHeight: '90vh',\n width: '500px',\n });\n dialogRef\n .afterClosed()\n .pipe(take(1))\n .subscribe((dialogOutput: BillingTermDialogOutput) => {\n if (!dialogOutput) {\n return;\n }\n\n lineItem.billingPeriod = new BillingPeriod({\n startDate: dialogOutput.startDate,\n endDate: dialogOutput.endDate,\n });\n lineItem.currentRevenue.revenueComponents[0].period = dialogOutput.billingFrequency;\n this.formForLineItems.controls[lineItemIndex].patchValue(lineItem.currentRevenue);\n\n if (dialogOutput.addAnotherTerm) {\n this.onAddBillingSchedule(lineItemIndex);\n }\n });\n }\n\n onAddBillingSchedule(lineItemIndex: number): void {\n this.writeFormValuesToEditingItems();\n const deepCopiedItem = structuredClone(this.editingItems[lineItemIndex]);\n delete deepCopiedItem.lineItem.billingPeriod;\n this.editingItems.splice(lineItemIndex + 1, 0, deepCopiedItem);\n this.setEditingLineItems(this.editingItems);\n this.resetFormToEditingItems();\n this.cdk.detectChanges();\n this.onEditBillingSchedule(lineItemIndex + 1);\n }\n\n addRevenueRow(index: number): void {\n const components = this.editingItems[index]?.lineItem?.currentRevenue?.revenueComponents || [];\n components.push(new RevenueComponent());\n this.formForLineItems.controls[index]['controls']?.revenueComponents.push(\n this.fb.group({\n revenue: [0, [Validators.required, this.validateRevenue]],\n period: [RevenuePeriod.ONETIME, [Validators.required]],\n startingAt: [false],\n }),\n );\n this.editingItems[index].lineItem.currentRevenue.revenueComponents = components;\n }\n\n deleteRevenueRow(revenueComponent: RevenueComponent, liIndex: number, rcIndex: number): void {\n this.editingItems[liIndex].lineItem?.currentRevenue?.revenueComponents.splice(rcIndex, 1);\n const lineItemFormGroup = this.formForLineItems.controls[liIndex] as UntypedFormGroup;\n (lineItemFormGroup.controls?.revenueComponents as UntypedFormArray).removeAt(rcIndex);\n }\n\n addLineItems(featureFlags: FeatureFlagStatusInterface): void {\n const itemSelectorIncludesPackages = featureFlags[ITEM_SELECTOR_INCLUDES_PACKAGES];\n const preselectedPackages = this.editingItems\n .filter((item) => !!item.lineItem?.packageId)\n .map((item) => new Package({ packageId: item.lineItem.packageId }));\n const preselectedApps = this.editingItems\n .filter((item) => !!item.lineItem?.appKey?.appId)\n .map((item) => {\n return new App({\n key: {\n appId: item.lineItem.appKey.appId,\n editionId: item.lineItem.appKey.editionId,\n },\n parentRequirements: {\n parentDetails: {\n key: {\n appId: item.parentAppId,\n },\n name: item.parentName,\n },\n },\n appType: item.appType,\n });\n });\n const dialogRef = this.dialog.open(SalesOrderLineItemSelectorDialogComponent, {\n data: {\n marketId: this.marketId,\n preselectedApps: this.allowDuplicateItems ? [] : preselectedApps,\n preselectedPackages: this.allowDuplicateItems ? [] : preselectedPackages,\n hideSellingStandaloneProducts: this.hideSellingStandaloneProducts,\n hidePackages: this.hidePackages,\n hideOwnerName: true,\n itemSelectorIncludesPackages: itemSelectorIncludesPackages,\n },\n width: '1000px',\n height: '900px',\n maxWidth: '95vw',\n minHeight: '420px',\n maxHeight: '85vh',\n });\n dialogRef\n .afterClosed()\n .pipe(take(1))\n .subscribe((result) => {\n if (result) {\n this.writeFormValuesToEditingItems();\n let updatedItems = this.editingItems;\n let selectedPackages = result.packages;\n let selectedApps = result.apps;\n\n if (!this.allowDuplicateItems) {\n updatedItems = this.deselectItems(\n updatedItems,\n preselectedPackages,\n preselectedApps,\n selectedPackages,\n selectedApps,\n );\n if (!this.hidePackages) {\n selectedPackages = this.dedupePackages(updatedItems, selectedPackages);\n }\n selectedApps = this.dedupeApps(updatedItems, selectedApps);\n }\n\n if (!this.hidePackages) {\n updatedItems = updatedItems.concat(\n selectedPackages.map((pkg) => this.salesOrderConfirmationService.packageToUILineItem(pkg)),\n );\n }\n\n updatedItems = updatedItems.concat(\n selectedApps.map((app) => this.salesOrderConfirmationService.appWithPossibleRevenueToUILineItem(app)),\n );\n\n // Remove invalid revenue values from revenue components aka line items with contact sales (value == -1)\n updatedItems = updatedItems.map((item) => {\n item.lineItem.currentRevenue.revenueComponents = item.lineItem?.currentRevenue?.revenueComponents.filter(\n (revenue) => revenue.value >= 0,\n );\n return item;\n });\n\n // Update items in UI\n this.setEditingLineItems(updatedItems);\n\n this.resetFormToEditingItems();\n this.cdk.detectChanges();\n }\n });\n }\n\n deleteLineItem(index: number): void {\n this.editingItems.splice(index, 1);\n this.formForLineItems.removeAt(index);\n }\n\n // called by parent components for print-friendly display\n public openDropdown(): void {\n this.openExpansionPanel$$.next(true);\n }\n\n private setEditingLineItems(uiLineItems: UILineItemWithEditionPricing[]): void {\n // Sort the revenue components to ensure one time always appears last, initially\n uiLineItems?.forEach?.((uilineItem) => {\n uilineItem.lineItem?.currentRevenue?.revenueComponents?.sort((a: RevenueComponent, b: RevenueComponent) => {\n if (a.period === RevenuePeriod.ONETIME || !a.period) {\n return 1;\n }\n if (b.period === RevenuePeriod.ONETIME || !b.period) {\n return -1;\n }\n return 0;\n });\n });\n this.editingItems = uiLineItems;\n }\n\n private deselectItems(\n updatedItems: UILineItemWithEditionPricing[],\n preselectedPackages: Package[],\n preselectedApps: App[],\n selectedPackages: Package[],\n selectedApps: App[],\n ): UILineItemWithEditionPricing[] {\n // Find packages that have been deselected in the selector\n const deselectedPackageIds = [];\n if (!this.hidePackages) {\n preselectedPackages.map((pkg) => {\n const stillSelected = selectedPackages.some((selected) => selected.packageId === pkg.packageId);\n if (!stillSelected) {\n deselectedPackageIds.push(pkg.packageId);\n }\n });\n updatedItems = updatedItems.filter(\n (item) => !item.lineItem.packageId || !deselectedPackageIds.includes(item.lineItem.packageId),\n );\n }\n // Find apps that have been deselected in the selector\n const deselectedAppIds = [];\n preselectedApps.map((app) => {\n const stillSelected = selectedApps.some((selected) => selected.key.appId === app.key.appId);\n if (!stillSelected) {\n deselectedAppIds.push(app.key.appId);\n }\n });\n\n // Remove packages and apps that have been deselected in the selector\n updatedItems = updatedItems.filter(\n (item) =>\n (!!item.lineItem.packageId && !deselectedPackageIds.includes(item.lineItem.packageId)) ||\n (!!item.lineItem.appKey?.appId && !deselectedAppIds.includes(item.lineItem.appKey.appId)),\n );\n\n return updatedItems;\n }\n\n private dedupeApps(updatedItems: UILineItemWithEditionPricing[], addedApps: App[]): App[] {\n // Add only newly added apps so that preselected apps that have not been deselected do not have quantity and revenue overwritten\n return addedApps.reduce((added, app) => {\n if (!updatedItems.some((item) => item.lineItem.appKey?.appId === app.key.appId)) {\n added.push(app);\n }\n return added;\n }, []);\n }\n\n private dedupePackages(updatedItems: UILineItemWithEditionPricing[], addedPackages: Package[]): Package[] {\n // Add only newly added packages so that preselected packages that remain do not have quantity and revenue overwritten\n return addedPackages.reduce((added, pkg) => {\n if (this.allowDuplicateItems || !updatedItems.some((item) => item.lineItem.packageId === pkg.packageId)) {\n added.push(pkg);\n }\n return added;\n }, []);\n }\n}\n","\n \n \n {{ title }}\n \n \n edit\n \n \n \n \n \n\n \n \n \n \n \n \n \n\n\n\n
\n \n \n
\n @if ((areBillingPeriodsEnabled$ | async) === false || !enableEditBillingSchedule) {\n 0\" class=\"delete-line-item\" (click)=\"deleteLineItem(liIndex)\">\n clear\n \n }\n
\n
\n \n \n {{ 'FRONTEND.SALES_UI.QUANTITY' | translate }} *\n \n \n {{ 'FRONTEND.SALES_UI.QUANTITY_ERROR' | translate }}\n \n \n @if ((areBillingPeriodsEnabled$ | async) === true && enableEditBillingSchedule) {\n \n \n \n \n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.ADD_BILLING_TERMS' | translate }}\n \n \n \n }\n
\n
\n \n 1\"\n [form]=\"formForLineItems.controls[liIndex]['controls']?.revenueComponents.controls[rcIndex]\"\n (delete)=\"deleteRevenueRow($event, liIndex, rcIndex)\"\n />\n \n \n \n \n
\n
\n \n {{ 'FRONTEND.SALES_UI.PRICING.REVENUE_REQUIRED' | translate }}\n \n
\n
\n add\n \n {{ 'FRONTEND.SALES_UI.PRICING.ADD_ROW' | translate }}\n \n
\n
\n
\n
\n
\n \n {{ 'FRONTEND.SALES_UI.BILL_FOR_RECURRING_CHARGES' | translate }}\n \n
\n \n
\n
\n
0; else noLineItems\">\n add\n \n {{ 'FRONTEND.SALES_UI.ADD_ITEMS' | translate }}\n \n
\n \n \n \n
\n
\n
\n \n \n \n {{ 'FRONTEND.SALES_UI.SAVE' | translate }}\n \n \n \n
\n \n
\n
\n
\n
\n","import { CommonModule, CurrencyPipe } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CoreSharedModule } from '@vendasta/shared';\nimport { VaOrderFormModule, VaOrderSummaryModule } from '@vendasta/store';\nimport { VaIconModule } from '@vendasta/uikit';\nimport baseTranslation from '../../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../../shared/constants';\nimport { SalesOpportunityStoreService } from '../sales-opportunity-store.service';\nimport { SalesOrderLineItemSelectorModule } from '../sales-order-line-item-selector/sales-order-line-item-selector.module';\nimport { SalesOrderStoreService } from '../sales-order-store.service';\nimport { SalesOrderConfirmationComponent } from './sales-order-confirmation.component';\nimport { SalesOrderEditPriceComponent } from './sales-order-edit-price/sales-order-edit-price.component';\nimport { SalesOrderLineItemSelectorDialogComponent } from './sales-order-line-item-selector-dialog/sales-order-line-item-selector-dialog.component';\n\n@NgModule({\n declarations: [\n SalesOrderConfirmationComponent,\n SalesOrderEditPriceComponent,\n SalesOrderLineItemSelectorDialogComponent,\n ],\n exports: [SalesOrderConfirmationComponent, SalesOrderLineItemSelectorDialogComponent],\n imports: [\n CommonModule,\n VaOrderFormModule,\n VaOrderSummaryModule,\n MatButtonModule,\n MatListModule,\n VaIconModule,\n CoreSharedModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: WEBLATE_COMPONENT_NAME,\n baseTranslation: baseTranslation,\n }),\n FormsModule,\n MatTooltipModule,\n MatInputModule,\n MatCheckboxModule,\n MatSelectModule,\n ReactiveFormsModule,\n MatIconModule,\n MatProgressSpinnerModule,\n MatDialogModule,\n SalesOrderLineItemSelectorModule,\n MatCardModule,\n MatGridListModule,\n MatAutocompleteModule,\n MatMenuModule,\n ],\n providers: [CurrencyPipe, SalesOrderStoreService, SalesOpportunityStoreService],\n})\nexport class SalesOrderConfirmationModule {}\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { StatusNotificationItem } from '../sales-package';\nimport { ActivationStatus } from '@vendasta/sales-orders';\n\nexport enum ListIndent {\n INDENT_ZERO = 'indent-zero',\n INDENT_ONE = 'indent-one',\n INDENT_TWO = 'indent-two',\n}\n\nexport interface MenuItemInterface {\n label: string;\n icon: string;\n value: string;\n eventType: MenuItemEventType;\n}\n\nexport enum MenuItemEventType {\n IGNORE_ACTIVATION_ERRORS = 'ignore-errors',\n}\n\nexport interface MenuItemClickedInterface {\n value: string;\n eventType: MenuItemEventType;\n}\n\n@Component({\n selector: 'sales-ui-sales-order-package-dropdown-item',\n templateUrl: './package-dropdown-item.component.html',\n styleUrls: ['./package-dropdown-item.component.scss', '../package-dropdown.component.scss'],\n})\nexport class SalesOrderPackageDropdownItemComponent {\n @Input() title: string;\n @Input() editionName: string;\n @Input() previousEditionName: string;\n @Input() titleDescriptor: string;\n @Input() iconUrl: string;\n @Input() secondaryIconUrl: string;\n @Input() secondaryIconName: string;\n @Input() subtitle: string;\n @Input() statusItem: StatusNotificationItem;\n @Input() enableDropdown = false;\n @Input() enableMenu = false;\n @Input() indent = ListIndent.INDENT_ZERO;\n @Input() toggleValue: boolean;\n @Input() description: string;\n @Input() menuItems: MenuItemInterface[] = [];\n @Input() first = false;\n @Input() showMenuItems = false;\n @Output() menuItemClicked: EventEmitter = new EventEmitter();\n @Output() itemToggled: EventEmitter = new EventEmitter();\n\n @ViewChild('errorRef') errorRef;\n\n toggleItem(): void {\n this.itemToggled.emit(null);\n }\n\n calculateClassFromStatus(status: ActivationStatus): string {\n switch (status) {\n case ActivationStatus.ACTIVATED:\n case ActivationStatus.IGNORED_ERRORS:\n return 'activated';\n case ActivationStatus.ALREADY_ACTIVATED:\n return 'warning';\n case ActivationStatus.ERRORED:\n return 'error';\n default:\n return 'pending';\n }\n }\n\n menuItemClick(item: MenuItemInterface): void {\n this.menuItemClicked.emit({ value: item.value, eventType: item.eventType });\n }\n\n statusText(status: ActivationStatus): string {\n if (status === ActivationStatus.ALREADY_ACTIVATED) {\n return 'FRONTEND.SALES_UI.ACTIVATION_STATUS.ALREADY_ACTIVATED';\n }\n\n return '';\n }\n}\n","\n
\n
\n \n
\n
\n \n {{ title }}\n  | {{ editionName }}\n \n {{ 'FRONTEND.SALES_UI.CHANGES_EDITION_FROM' | translate : { previousEditionName: previousEditionName } }}\n \n \n {{ titleDescriptor }}\n \n \n {{ subtitle }}\n
\n
\n
\n
\n
\n

\n {{ description }}\n

\n \n
\n
\n
\n {{ statusItem.icon }}\n
\n

\n {{ statusItem.text | translate }}\n {{ statusText(statusItem.status) ? ' - ' + (statusText(statusItem.status) | translate) : '' }}\n \n -\n \n \n

\n \n
\n
\n
\n
\n\n\n \n\n\n\n
0 && showMenuItems\">\n \n \n \n \n
\n
\n\n\n
\n \n \n
\n
\n","import { LineItem, Package } from '@vendasta/marketplace-packages';\nimport { App } from '@galaxy/marketplace-apps';\nimport { MenuItemEventType, MenuItemInterface } from './package-dropdown-item/package-dropdown-item.component';\nimport { ActivationStatus } from '@vendasta/sales-orders';\nimport { ActivationFailureDetails } from '@vendasta/order-fulfillment/lib/_internal/objects';\n\nexport class SalesPackage extends Package {\n salesProducts: SalesProduct[];\n addonsWithNoParent: SalesProduct[];\n totalAddons: number;\n activationStatus?: StatusNotificationItem;\n\n constructor(\n pkg: Package,\n salesProducts: SalesProduct[],\n addonsWithNoParent: SalesProduct[],\n totalAddons: number,\n activationStatus?: StatusNotificationItem,\n ) {\n super(pkg);\n this.salesProducts = salesProducts;\n this.addonsWithNoParent = addonsWithNoParent;\n this.totalAddons = totalAddons;\n this.activationStatus = activationStatus;\n }\n}\n\nexport class SalesProduct extends App {\n activationStatus?: StatusNotificationItem;\n addons: SalesProduct[];\n menuItems: MenuItemInterface[] = [];\n\n constructor(app: App, addons: SalesProduct[], activationStatus?: StatusNotificationItem) {\n super(app);\n this.addons = addons;\n this.activationStatus = activationStatus;\n }\n}\n\nexport interface PackageItemActivationStatus {\n packageItemId: string;\n status: ActivationStatus;\n uniqueId: string;\n editionId?: string;\n previousEditionId?: string;\n isEditionChange?: boolean;\n failureDetails?: string;\n}\n\nexport interface StatusNotificationItem {\n icon: string;\n text: string;\n status: ActivationStatus;\n uniqueId: string;\n editionId?: string;\n previousEditionId?: string;\n isEditionChange?: boolean;\n failureDetails?: string;\n}\n\nexport function buildSalesPackages(packages: Package[], apps: App[]): SalesPackage[] {\n if (!packages || packages.length < 1) {\n return [];\n }\n return packages.map((pkg) => buildSalesPackageFromPackage(pkg, apps));\n}\n\nfunction buildSalesPackageFromPackage(pkg: Package, apps: App[]): SalesPackage {\n if (!pkg) {\n return null;\n }\n\n const appMap: Map = new Map();\n (apps || []).forEach((app) => appMap.set(app.key.appId, app));\n\n const salesProducts = buildSalesProducts(pkg, appMap);\n // Addons can be in a package even if the parent product is not, this will create salesAddons with no parent\n const addonsWithNoParent: SalesProduct[] = buildSalesAddonsWithNoParent(pkg, appMap);\n\n const totalAddonsCount = (pkg.lineItems.lineItems || [])\n .filter((li) => !!li.parentId)\n .reduce((count, addon) => {\n return count + (addon.quantity || 1);\n }, 0);\n\n return new SalesPackage(pkg, salesProducts, addonsWithNoParent, totalAddonsCount);\n}\n\nexport function buildSalesProducts(pkg: Package, appMap: Map): SalesProduct[] {\n if (!(appMap && appMap.size && pkg.lineItems && (pkg.lineItems.lineItems || []).length)) {\n return [];\n }\n\n const productsInPackage = pkg.lineItems.lineItems.filter((li) => !li.parentId);\n return productsInPackage\n .map((li) => {\n const productMatch: App = appMap.get(li.id);\n const addonsInPackage = productMatch\n ? multiplyAddonsByTheirQuantity(\n pkg.lineItems.lineItems.filter((il) => il.parentId === productMatch.key.appId),\n appMap,\n )\n : [];\n return productMatch ? buildSalesProductFromProduct(productMatch, addonsInPackage) : null;\n })\n .filter((productItem) => productItem);\n}\n\nexport function multiplyAddonsByTheirQuantity(addonLineItems: LineItem[], appMap: Map): App[] {\n return addonLineItems.reduce((addonsArray, li) => {\n const addon = appMap.get(li.id);\n if (addon) {\n const quantity = li.quantity || 1;\n for (let i = 0; i < quantity; i++) {\n addonsArray.push(addon);\n }\n }\n return addonsArray;\n }, []);\n}\n\nexport function buildSalesAddonsWithNoParent(pkg: Package, appMap: Map): SalesProduct[] {\n if (!appMap || appMap.size < 1 || !pkg.lineItems || !(pkg.lineItems.lineItems || []).length) {\n return [];\n }\n const productsInPackageMap: Map = new Map();\n pkg.lineItems.lineItems.filter((li) => !li.parentId).forEach((li) => productsInPackageMap.set(li.id, true));\n\n const lineItemsThatAreAddonsThatDontHaveTheParentAppInThePackage = pkg.lineItems.lineItems.filter(\n (li) => !!li.parentId && !productsInPackageMap.get(li.parentId),\n );\n\n const addonArray: SalesProduct[] = [];\n lineItemsThatAreAddonsThatDontHaveTheParentAppInThePackage.map((li) => {\n const quantity = li.quantity || 1;\n const addon = appMap.get(li.id);\n if (quantity && addon) {\n for (let i = 0; i < quantity; i++) {\n addonArray.push(new SalesProduct(addon, []));\n }\n }\n });\n return addonArray;\n}\n\nexport function buildSalesProductFromProduct(app: App, addons: App[]): SalesProduct {\n if (!app) {\n return null;\n }\n return new SalesProduct(\n app,\n (addons || []).map((a) => new SalesProduct(a, [])),\n );\n}\n\nexport function addStatusesToSalesPackages(\n salesPackages: SalesPackage[],\n statuses: PackageItemActivationStatus[],\n failureDetails: ActivationFailureDetails[],\n): SalesPackage[] {\n if (!statuses || statuses.length === 0) {\n return salesPackages;\n }\n\n return salesPackages.map((salesPackage) => {\n const newProducts = salesPackage.salesProducts.map((product) =>\n addStatusesToSalesProduct(product, statuses, failureDetails),\n );\n\n const newAddonsWithNoParent = salesPackage.addonsWithNoParent.map((addon) => {\n return addStatusesToSalesProduct(addon, statuses, failureDetails);\n });\n\n const productStatuses = newProducts.map((product) => product?.activationStatus?.status);\n const addonStatuses = newProducts\n .map((product) => (product?.addons ? product.addons.map((addon) => addon?.activationStatus?.status) : []))\n .reduce((statusList, reducedList) => reducedList.concat(statusList), []);\n const addonsWithNoParentStatuses = newAddonsWithNoParent.map((addon) =>\n addon?.activationStatus ? addon.activationStatus.status : null,\n );\n const allStatuses = [...productStatuses, ...addonStatuses, ...addonsWithNoParentStatuses];\n\n const packageStatus = aggregateStatuses(allStatuses);\n const statusNotification = createStatusNotificationItem(packageStatus, '');\n\n return new SalesPackage(\n salesPackage,\n newProducts,\n newAddonsWithNoParent,\n salesPackage.totalAddons,\n statusNotification,\n );\n });\n}\n\nexport function addStatusesToSalesProduct(\n product: SalesProduct,\n statuses: PackageItemActivationStatus[],\n activationFailureDetails: ActivationFailureDetails[],\n): SalesProduct {\n if (!statuses || statuses.length === 0) {\n return product;\n }\n const productStatus = findStatus(statuses, product.key.appId, product.key.editionId);\n if (!productStatus) {\n return product;\n }\n const statusNotification = createStatusNotificationItem(\n productStatus.status,\n productStatus.uniqueId,\n productStatus.editionId,\n productStatus.previousEditionId,\n productStatus.isEditionChange,\n productStatus.failureDetails,\n );\n if (!product.addons) {\n return new SalesProduct(product, [], statusNotification);\n }\n\n const newSalesAddons = product.addons.map((addon) => {\n return addStatusesToSalesProduct(addon, statuses, activationFailureDetails);\n });\n\n return new SalesProduct(product, newSalesAddons, statusNotification);\n}\n\nexport function addMenuItemsToSalesPackages(salesPackages: SalesPackage[]): SalesPackage[] {\n return salesPackages.map((salesPackage) => {\n salesPackage.salesProducts = salesPackage.salesProducts.map((product) => {\n (product.addons || []).map((a) => addMenuItemsToSalesProduct(a));\n return addMenuItemsToSalesProduct(product);\n });\n salesPackage.addonsWithNoParent = salesPackage.addonsWithNoParent.map((a) => addMenuItemsToSalesProduct(a));\n return salesPackage;\n });\n}\n\nexport function addMenuItemsToSalesProduct(product: SalesProduct): SalesProduct {\n if (\n product.activationStatus &&\n product.activationStatus.status === ActivationStatus.ERRORED &&\n !!product.activationStatus.uniqueId\n ) {\n product.menuItems = [\n {\n label: 'FRONTEND.SALES_UI.IGNORE_ERRORS',\n icon: '',\n value: product.activationStatus.uniqueId,\n eventType: MenuItemEventType.IGNORE_ACTIVATION_ERRORS,\n },\n ];\n }\n return product;\n}\n\nfunction findStatus(\n statuses: PackageItemActivationStatus[],\n id: string,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n editionId: string,\n): PackageItemActivationStatus {\n if (!statuses || statuses.length <= 0) {\n return null;\n }\n const statusIndex = statuses.findIndex((s) => {\n // Temporary hack to get around issue reported on MT-1431\n // Package was edited after it was ordered, causing the editionId on the current package to be different than\n // the edition id on the package that was ordered. This causes the status to not be found. Checking only for the\n // item id shouldn't cause any issue since there won't be multiple activatable items with editions.\n return s.packageItemId === id /*&& (s.editionId || '') === (editionId || '')*/;\n });\n if (statusIndex < 0) {\n return null;\n }\n const status = statuses[statusIndex];\n statuses.splice(statusIndex, 1);\n return status;\n}\n\nfunction createStatusNotificationItem(\n status: ActivationStatus,\n uniqueId: string,\n editionId?: string,\n previousEditionId?: string,\n isEditionChange?: boolean,\n failureDetails?: string,\n): StatusNotificationItem {\n switch (status) {\n case ActivationStatus.ACTIVATED:\n return {\n icon: 'check_circle',\n status: status,\n text: 'FRONTEND.SALES_UI.ACTIVATED',\n uniqueId: uniqueId,\n editionId,\n previousEditionId,\n isEditionChange,\n failureDetails: failureDetails,\n };\n case ActivationStatus.ALREADY_ACTIVATED:\n return {\n icon: 'warning',\n status: status,\n text: 'FRONTEND.SALES_UI.ACTIVATION_WARNINGS',\n uniqueId: uniqueId,\n editionId,\n previousEditionId,\n isEditionChange,\n failureDetails: failureDetails,\n };\n case ActivationStatus.IGNORED_ERRORS:\n return {\n icon: 'check_circle',\n status: status,\n text: 'FRONTEND.SALES_UI.ERRORS_IGNORED',\n uniqueId: uniqueId,\n editionId,\n previousEditionId,\n isEditionChange,\n failureDetails: failureDetails,\n };\n case ActivationStatus.ERRORED:\n return {\n icon: 'error',\n status: status,\n text: 'FRONTEND.SALES_UI.ACTIVATION_ERRORS',\n uniqueId: uniqueId,\n editionId,\n previousEditionId,\n isEditionChange,\n failureDetails: failureDetails,\n };\n default:\n return {\n icon: 'watch_later',\n status: status,\n text: 'FRONTEND.SALES_UI.PENDING_ACTIVATION',\n uniqueId: uniqueId,\n editionId,\n previousEditionId,\n isEditionChange,\n failureDetails: failureDetails,\n };\n }\n}\n\nfunction aggregateStatuses(statuses: ActivationStatus[]): ActivationStatus {\n const allStatuses = statuses || [];\n\n if (allStatuses.some((s) => s === ActivationStatus.ERRORED)) {\n return ActivationStatus.ERRORED;\n }\n\n if (allStatuses.some((s) => s === ActivationStatus.ALREADY_ACTIVATED)) {\n return ActivationStatus.ALREADY_ACTIVATED;\n }\n\n if (allStatuses.length > 0 && allStatuses.every((s) => s === ActivationStatus.PENDING || s === undefined)) {\n return ActivationStatus.PENDING;\n }\n\n return ActivationStatus.ACTIVATED;\n}\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\n\nimport { Package } from '@vendasta/marketplace-packages';\nimport { App } from '@galaxy/marketplace-apps';\nimport {\n addMenuItemsToSalesPackages,\n addMenuItemsToSalesProduct,\n addStatusesToSalesPackages,\n addStatusesToSalesProduct,\n buildSalesPackages,\n buildSalesProductFromProduct,\n PackageItemActivationStatus,\n SalesPackage,\n SalesProduct,\n} from './sales-package';\nimport { ListIndent, MenuItemClickedInterface } from './package-dropdown-item/package-dropdown-item.component';\nimport { ActivationFailureDetails } from '@vendasta/order-fulfillment/lib/_internal/objects';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { TranslateService } from '@ngx-translate/core';\n\ninterface OrderLengthsForToggling {\n packages: number;\n products: number;\n}\n\n@Component({\n selector: 'sales-ui-sales-order-package-dropdown',\n animations: [\n trigger('listAnimationStart', [\n state('void', style({ height: '0px' })),\n state('*', style({ height: '*' })),\n transition('void => *', [animate('0.25s ease')]),\n transition('* => void', [animate('0.25s ease')]),\n ]),\n ],\n templateUrl: 'package-dropdown.component.html',\n styleUrls: ['../../../shared/shared-styles.scss', './package-dropdown.component.scss'],\n})\nexport class SalesOrderPackageDropdownComponent implements OnChanges {\n // whether to show the contents in it's own card or a closed expansion panel\n @Input() compactView = false;\n // packages in dropdown\n @Input() packages: Package[] = [];\n // apps that are in the given packages\n @Input() appsInPackages: App[] = [];\n // apps not associated with a package\n @Input() standAloneApps: App[] = [];\n // statuses for all products and addons\n @Input() statuses: PackageItemActivationStatus[] = [];\n @Input() title: string;\n @Input() showMenuItems = false;\n @Input() activationFailureDetails: ActivationFailureDetails[];\n\n @Output() menuItemClicked: EventEmitter = new EventEmitter();\n\n packageProductIndent = ListIndent.INDENT_ONE;\n packageAddonWithoutProductIndent = ListIndent.INDENT_ONE;\n packageAddonWithProductIndent = ListIndent.INDENT_TWO;\n\n orderItemLengths: OrderLengthsForToggling = {\n packages: 0,\n products: 0,\n };\n\n salesPackages: SalesPackage[] = [];\n salesProducts: SalesProduct[] = [];\n packageToggles: boolean[] = [];\n productToggles: boolean[] = [];\n\n constructor(private translateService: TranslateService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.packages = changes.packages ? changes.packages.currentValue : this.packages;\n this.appsInPackages = changes.appsInPackages ? changes.appsInPackages.currentValue : this.appsInPackages;\n this.standAloneApps = changes.standAloneApps ? changes.standAloneApps.currentValue : this.standAloneApps;\n this.statuses = changes.statuses ? changes.statuses.currentValue : this.statuses;\n this.title = changes.title ? changes.title.currentValue : this.title;\n\n this.orderItemLengths = {\n packages: this.packages.length,\n products: this.appsInPackages.length,\n };\n this.salesPackages = addMenuItemsToSalesPackages(\n addStatusesToSalesPackages(\n buildSalesPackages(this.packages, this.appsInPackages),\n this.statuses,\n this.activationFailureDetails,\n ),\n );\n this.salesProducts = this.standAloneApps.map((a) =>\n addMenuItemsToSalesProduct(\n addStatusesToSalesProduct(buildSalesProductFromProduct(a, []), this.statuses, this.activationFailureDetails),\n ),\n );\n }\n\n public openAllDropdowns(): void {\n for (let x = 0; x < this.orderItemLengths.packages; x++) {\n this.packageToggles[x] = true;\n }\n for (let x = 0; x < this.orderItemLengths.products; x++) {\n this.productToggles[x] = true;\n }\n }\n\n public togglePackage(indexToToggle: number): void {\n this.packageToggles[indexToToggle] = !this.packageToggles[indexToToggle];\n }\n\n public standAloneProductWithParentDescription(product: SalesProduct): string {\n if (!product.parentRequirements.enabled) {\n return '';\n }\n\n return this.translateService.instant('FRONTEND.STORE.REQUIRES_DESCRIPTOR', {\n requirementName: product.parentRequirements.parentDetails.name,\n });\n }\n\n public packageDescription(pkg: SalesPackage): string {\n const productsCount = pkg.salesProducts ? pkg.salesProducts.length : 0;\n return this.translateService.instant('FRONTEND.STORE.CONTAINS_NUM_ITEMS', {\n itemCount: productsCount + pkg.totalAddons,\n });\n }\n\n menuItemClick(event: MenuItemClickedInterface): void {\n this.menuItemClicked.emit(event);\n }\n\n getPreviousEditionName(product: SalesProduct): string {\n if (\n product &&\n product.activationStatus &&\n product.activationStatus.isEditionChange &&\n product.activationStatus.editionId !== product.activationStatus.previousEditionId\n ) {\n const previousEdition = (product.editionInformation?.editions || []).find((edition) => {\n return edition?.appKey?.editionId === product.activationStatus.previousEditionId;\n });\n\n return previousEdition?.name || '';\n }\n\n return '';\n }\n}\n","\n \n\n\n \n \n {{ title | translate }}\n \n \n \n \n \n\n\n\n \n
\n 0 || package.addonsWithNoParent?.length > 0\"\n [toggleValue]=\"packageToggles[packageIndex]\"\n [first]=\"first\"\n [showMenuItems]=\"showMenuItems\"\n (itemToggled)=\"togglePackage(packageIndex)\"\n >\n\n \n
\n \n\n \n
\n\n \n \n
\n\n
\n \n
\n
\n
\n","import { ActivationStatus, ProductActivation } from '@vendasta/sales-orders';\nimport { PackageItemActivationStatus } from './package-dropdown/sales-package';\n\nexport function convertActivationsToPackageItemActivationStatuses(\n productActivations: ProductActivation[],\n): PackageItemActivationStatus[] {\n return productActivations\n ? productActivations\n .filter((productActivation) => productActivation.activationStatus !== ActivationStatus.PENDING)\n .map((productActivation) => {\n return {\n packageItemId: productActivation.productId,\n status: productActivation.activationStatus,\n uniqueId: productActivation.uniqueId,\n editionId: productActivation.editionId,\n previousEditionId: productActivation.previousEditionId,\n isEditionChange: productActivation.isEditionChange,\n };\n })\n : [];\n}\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { Package, PackageService } from '@vendasta/marketplace-packages';\nimport { App, AppKey, AppPartnerService, AppType, FieldMaskInterface } from '@galaxy/marketplace-apps';\nimport { map, switchMap, publishReplay, refCount, tap, catchError, skipWhile, filter } from 'rxjs/operators';\nimport { BehaviorSubject, combineLatest, Observable, of, Subscription, zip } from 'rxjs';\nimport { LineItem, ProductActivation, SalesOrdersService } from '@vendasta/sales-orders';\nimport { convertActivationsToPackageItemActivationStatuses } from './product-activation';\nimport { PackageItemActivationStatus } from './package-dropdown/sales-package';\nimport { SalesOrderStoreService } from '../sales-order-store.service';\n\nexport interface PackageApiService {\n getMulti(packageIds: string[]): Observable;\n}\n\nexport interface AppSdkService {\n getMulti(\n appKeys: AppKey[],\n partnerId: string,\n marketId: string,\n projectionFilter: FieldMaskInterface,\n includeNotEnabled: boolean,\n ): Observable;\n}\n\nexport interface SalesOrders {\n ignoreProductActivationError(\n orderId: string,\n businessId: string,\n productActivationUniqueId: string,\n ): Observable;\n previewOrderActivations(orderId: string, businessId: string): Observable;\n}\n\nexport interface UIPackages {\n packages: Package[];\n products: App[];\n status: PackageItemActivationStatus[];\n}\n\nexport interface UIProducts {\n products: App[];\n status: PackageItemActivationStatus[];\n}\n\nexport interface UIAddons {\n addons: App[];\n status: PackageItemActivationStatus[];\n}\n\n@Injectable()\nexport class SalesOrderContentsService implements OnDestroy {\n partnerId: string;\n marketId: string;\n businessId: string;\n\n uiPackages$: Observable;\n uiProducts$: Observable;\n uiAddons$: Observable;\n\n orderId$$: BehaviorSubject = new BehaviorSubject(null);\n orderId$: Observable = this.orderId$$.asObservable();\n\n specifiedLineItems$$: BehaviorSubject = new BehaviorSubject([]);\n specifiedLineItems$: Observable = this.specifiedLineItems$$.asObservable();\n\n loading$$: BehaviorSubject = new BehaviorSubject(true);\n loading$: Observable = this.loading$$.asObservable();\n\n validationErrorMsgs = new Map([\n ['1', 'App Not Found'],\n ['2', 'No Order Form SubmissionID'],\n ['3', 'Order Form Not Found'],\n ['4', 'Order Form Already Used'],\n ['5', 'Order Form Not Supported'],\n ['6', 'Invalid Entry URL'],\n ['7', 'Entry URL Not Provided'],\n ['8', 'Invalid Dependency'],\n ['9', 'Already Active'],\n ['10', 'Edition Not Provided'],\n ['11', 'Editions Not Supported'],\n ['12', 'Invalid Edition'],\n ['13', 'Trial Not Supported'],\n ['14', 'Account Group Not Found'],\n ['15', 'No Country Information'],\n ['16', 'Unsupported Country'],\n ['17', 'Can Not Change Edition of Trial'],\n ['18', 'App Not Found'],\n ]);\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n @Inject(PackageService) private readonly packageSdk: PackageApiService,\n @Inject(AppPartnerService) private readonly appSdk: AppSdkService,\n @Inject(SalesOrdersService) private readonly salesOrdersSdk: SalesOrders,\n private readonly salesOrderStoreService: SalesOrderStoreService,\n ) {\n const orderState$ = this.orderId$.pipe(\n skipWhile((orderId) => orderId === null),\n switchMap((orderId) => this.salesOrderStoreService.getOrderState(orderId, this.businessId)),\n publishReplay(1),\n refCount(),\n );\n\n this.subscriptions.push(\n orderState$\n .pipe(\n tap((orderState) => {\n if (orderState.loading) {\n this.loading$$.next(true);\n }\n }),\n )\n .subscribe(),\n );\n\n const order$ = orderState$.pipe(\n filter((orderState) => !orderState.loading),\n map((orderState) => orderState.order),\n publishReplay(1),\n refCount(),\n );\n\n const combinedLineItems$ = combineLatest([order$, this.specifiedLineItems$]).pipe(\n map(([order, lineItems]) => lineItems.concat(order?.lineItems || [])),\n publishReplay(1),\n refCount(),\n );\n\n const packages$ = combinedLineItems$.pipe(\n switchMap((lineItems) => {\n const packageLineItems = lineItems.filter((li) => !!li.packageId);\n if (packageLineItems.length > 0) {\n return this.packageSdk.getMulti(packageLineItems.map((li) => li.packageId));\n }\n return of([]);\n }),\n publishReplay(1),\n refCount(),\n );\n\n const productActivations$ = order$.pipe(\n switchMap((order) => {\n if (order.productActivations) {\n return of(order.productActivations);\n }\n return this.salesOrdersSdk.previewOrderActivations(order.orderId, order.businessId);\n }),\n catchError(() => {\n return of([]);\n }),\n publishReplay(1),\n refCount(),\n );\n\n const packageItemActivationStatus$ = productActivations$.pipe(\n map((productActivations) => convertActivationsToPackageItemActivationStatuses(productActivations || [])),\n publishReplay(1),\n refCount(),\n );\n\n const uniqueAppsAndAddons$ = zip(combinedLineItems$, packages$).pipe(\n switchMap(([lineItems, packages]) => {\n const notPackages = lineItems.filter((li) => !!li.appKey);\n const appKeys = notPackages.map(\n ({ appKey }) => new AppKey({ appId: appKey.appId, editionId: appKey.editionId || '' }),\n );\n\n packages.map((p) =>\n (p.lineItems.lineItems || []).map((li) =>\n appKeys.push(new AppKey({ appId: li.id, editionId: li.editionId || '' })),\n ),\n );\n const uniqueAppKeys = appKeys.reduce((unique, app) => {\n if (unique.find((u) => u.appId === app.appId && u.editionId === app.editionId)) {\n return unique;\n }\n\n unique.push(app);\n return unique;\n }, []);\n return this.appSdk.getMulti(uniqueAppKeys, this.partnerId, this.marketId, null, true);\n }),\n map((apps) => apps?.filter((a) => !!a?.key?.appId)),\n publishReplay(1),\n refCount(),\n );\n\n this.uiPackages$ = zip(combinedLineItems$, packages$, uniqueAppsAndAddons$, packageItemActivationStatus$).pipe(\n map(([lineItems, packages, uniqueAppsAndAddons, statuses]) => {\n const packagesLineItems = lineItems.filter((li) => !!li.packageId);\n const quantifiedPackages = quantifyLineItems(packagesLineItems);\n const storePackages = quantifiedPackages\n .map((li) => {\n return packages.find((p) => p.packageId === li.packageId);\n })\n .filter((p) => !!p);\n return {\n packages: storePackages,\n products: uniqueAppsAndAddons,\n status: statuses,\n };\n }),\n );\n\n this.uiProducts$ = zip(combinedLineItems$, uniqueAppsAndAddons$, packageItemActivationStatus$).pipe(\n map(([lineItems, uniqueAppsAndAddons, statuses]) => {\n const nonPackageLineItems = lineItems.filter((li) => !!li.appKey);\n const quantifiedNonPackage = quantifyLineItems(nonPackageLineItems);\n const apps = uniqueAppsAndAddons?.filter((a) => a.appType === AppType.APP_TYPE_APP);\n\n const products = quantifiedNonPackage\n .map((npli) => {\n return apps.find(\n (a) => npli.appKey.appId === a.key.appId && (npli.appKey.editionId || '') === (a.key.editionId || ''),\n );\n })\n .filter((a) => !!a);\n return {\n products: products,\n status: statuses,\n };\n }),\n );\n\n this.uiAddons$ = zip(combinedLineItems$, uniqueAppsAndAddons$, packageItemActivationStatus$).pipe(\n map(([lineItems, uniqueAppsAndAddons, statuses]) => {\n const nonPackageLineItems = lineItems.filter((li) => !!li.appKey);\n const quantifiedNonPackage = quantifyLineItems(nonPackageLineItems);\n const addons = uniqueAppsAndAddons?.filter((a) => a.appType === AppType.APP_TYPE_ADDON);\n\n const nonPackagedAddons = quantifiedNonPackage\n .map((npli) => {\n return addons.find(\n (a) => npli.appKey.appId === a.key.appId && (npli.appKey.editionId || '') === (a.key.editionId || ''),\n );\n })\n .filter((a) => !!a);\n return {\n addons: nonPackagedAddons,\n status: statuses,\n };\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n\n initialize(partnerId: string, marketId: string, businessId: string, orderId: string, lineItems: LineItem[]): void {\n this.partnerId = partnerId;\n this.marketId = marketId;\n this.businessId = businessId;\n this.orderId$$.next(orderId || '');\n this.specifiedLineItems$$.next(lineItems || []);\n this.subscriptions.push(\n zip(this.uiPackages$, this.uiProducts$, this.uiAddons$)\n .pipe(tap(() => this.loading$$.next(false)))\n .subscribe(),\n );\n }\n\n ignoreErrors(orderId: string, businessId: string, itemId: string): Observable {\n return this.salesOrdersSdk\n .ignoreProductActivationError(orderId, businessId, itemId)\n .pipe(tap(() => this.salesOrderStoreService.refreshOrder(orderId, businessId)));\n }\n\n clearOrderStateCache(): void {\n this.salesOrderStoreService.clearOrderStateCache();\n }\n}\n\nfunction flattenArray(array: any[]): LineItem[] {\n return [].concat(...array);\n}\n\nfunction quantifyLineItems(lineItems: LineItem[]): LineItem[] {\n const quantifiedLineItems = lineItems.map((lineItem) => {\n const replicatedLineItems = [];\n const quantity = lineItem.quantity || 1;\n for (let i = 0; i < quantity; i += 1) {\n replicatedLineItems.push(lineItem);\n }\n\n return replicatedLineItems;\n });\n\n return flattenArray(quantifiedLineItems);\n}\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChildren } from '@angular/core';\nimport { OrderFulfillmentService } from '@vendasta/order-fulfillment';\nimport { ActivationStatus, LineItem } from '@vendasta/sales-orders';\nimport { Observable, Subscription, combineLatest, of } from 'rxjs';\nimport {\n MenuItemClickedInterface,\n MenuItemEventType,\n} from './package-dropdown/package-dropdown-item/package-dropdown-item.component';\nimport { SalesOrderPackageDropdownComponent } from './package-dropdown/package-dropdown.component';\nimport { SalesOrderContentsService, UIAddons, UIPackages, UIProducts } from './sales-order-contents.service';\n\nimport { MatExpansionPanel } from '@angular/material/expansion';\nimport { FailureReason } from '@vendasta/order-fulfillment';\nimport { ActivationFailureDetails } from '@vendasta/order-fulfillment/lib/_internal/objects';\nimport { catchError, map, switchMap, take, tap } from 'rxjs/operators';\n\n@Component({\n selector: 'sales-ui-sales-order-contents',\n templateUrl: './sales-order-contents.component.html',\n styleUrls: ['./sales-order-contents.component.scss'],\n providers: [SalesOrderContentsService],\n})\nexport class SalesOrderContentsComponent implements OnInit, OnDestroy {\n @Input() compactView;\n @Input() lineItems: LineItem[] = [];\n @Input() partnerId: string;\n @Input() marketId: string;\n @Input() orderId: string;\n @Input() businessId: string;\n @Input() showMenuItems = false;\n\n @Output() loading: EventEmitter = new EventEmitter();\n\n @ViewChildren(SalesOrderPackageDropdownComponent) private readonly packageDropdowns;\n @ViewChildren(MatExpansionPanel) private readonly topExpansionPanels;\n uiPackages$: Observable;\n uiProducts$: Observable;\n uiAddons$: Observable;\n loading$: Observable = this.contentsService.loading$;\n subscriptions: Subscription[] = [];\n\n constructor(\n private readonly contentsService: SalesOrderContentsService,\n private readonly orderFulfillmentService: OrderFulfillmentService,\n ) {\n this.subscriptions.push(this.loading$.pipe(tap((loading) => this.loading.emit(loading))).subscribe());\n }\n\n ngOnInit(): void {\n this.contentsService.initialize(this.partnerId, this.marketId, this.businessId, this.orderId, this.lineItems);\n\n const packageActivationErrors$ = this.contentsService.uiPackages$.pipe(\n switchMap((uiPackages) => {\n const orderItemIDs = (uiPackages.status || [])\n .filter((status) => status.status === ActivationStatus.ERRORED)\n .map((status) => status.uniqueId);\n if (!orderItemIDs.length) {\n return of([] as ActivationFailureDetails[]);\n }\n return this.orderFulfillmentService.getMultiActivationErrorsForOrderItems(orderItemIDs).pipe(\n take(1),\n catchError(() => of([] as ActivationFailureDetails[])),\n );\n }),\n map((errorDetails) => errorDetails || []),\n );\n\n const productActivationErrors$ = this.contentsService.uiProducts$.pipe(\n switchMap((uiProducts) => {\n const orderItemIDs = (uiProducts.status || [])\n .filter((status) => status.status === ActivationStatus.ERRORED)\n .map((status) => status.uniqueId);\n if (!orderItemIDs.length) {\n return of([] as ActivationFailureDetails[]);\n }\n return this.orderFulfillmentService.getMultiActivationErrorsForOrderItems(orderItemIDs).pipe(\n take(1),\n catchError(() => of([] as ActivationFailureDetails[])),\n );\n }),\n map((errorDetails) => errorDetails || []),\n );\n\n const addonsActivationErrors$ = this.contentsService.uiAddons$.pipe(\n switchMap((uiAddons) => {\n const orderItemIDs = (uiAddons.status || [])\n .filter((status) => status.status === ActivationStatus.ERRORED)\n .map((status) => status.uniqueId);\n if (!orderItemIDs.length) {\n return of([] as ActivationFailureDetails[]);\n }\n return this.orderFulfillmentService.getMultiActivationErrorsForOrderItems(orderItemIDs).pipe(\n take(1),\n catchError(() => of([] as ActivationFailureDetails[])),\n );\n }),\n map((errorDetails) => errorDetails || []),\n );\n\n this.uiPackages$ = combineLatest([this.contentsService.uiPackages$, packageActivationErrors$]).pipe(\n map(([packages, errorDetails]) => {\n const errDetailsMap = errorDetails.reduce((prev, curr) => {\n prev.set(curr.orderItemId, curr);\n return prev;\n }, new Map());\n this.openDropdownOnError(errorDetails.length);\n packages.status.forEach((pckg) => {\n if (errDetailsMap.has(pckg.uniqueId)) {\n pckg.failureDetails = this.translateFailureDetails(errDetailsMap.get(pckg.uniqueId));\n }\n });\n\n return packages;\n }),\n );\n\n this.uiProducts$ = combineLatest([this.contentsService.uiProducts$, productActivationErrors$]).pipe(\n map(([products, errorDetails]) => {\n const errDetailsMap = errorDetails.reduce((prev, curr) => {\n prev.set(curr.orderItemId, curr);\n return prev;\n }, new Map());\n this.openDropdownOnError(errorDetails.length);\n products.status.forEach((prod) => {\n if (errDetailsMap.has(prod.uniqueId)) {\n prod.failureDetails = this.translateFailureDetails(errDetailsMap.get(prod.uniqueId));\n }\n });\n\n return products;\n }),\n );\n\n this.uiAddons$ = combineLatest([this.contentsService.uiAddons$, addonsActivationErrors$]).pipe(\n map(([addons, errorDetails]) => {\n const errDetailsMap = errorDetails.reduce((prev, curr) => {\n prev.set(curr.orderItemId, curr);\n return prev;\n }, new Map());\n this.openDropdownOnError(errorDetails.length);\n addons.status.forEach((addon) => {\n if (errDetailsMap.has(addon.uniqueId)) {\n addon.failureDetails = this.translateFailureDetails(errDetailsMap.get(addon.uniqueId));\n }\n });\n\n return addons;\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => {\n sub.unsubscribe();\n });\n this.contentsService.clearOrderStateCache();\n }\n\n private openDropdownOnError(errorCount: number): void {\n if (errorCount > 0) {\n this.signalToOpenAllDropdowns();\n }\n }\n\n public signalToOpenAllDropdowns(): void {\n if (this.compactView) {\n this.topExpansionPanels.forEach((panel) => panel.open());\n }\n // the top level panels need time to open before the inner panels render\n window.setTimeout(() => {\n this.packageDropdowns.forEach((section) => section.openAllDropdowns());\n }, 750);\n }\n\n menuItemClick(event: MenuItemClickedInterface): void {\n if (event.eventType === MenuItemEventType.IGNORE_ACTIVATION_ERRORS) {\n this.contentsService.ignoreErrors(this.orderId, this.businessId, event.value).pipe(take(1)).subscribe();\n }\n }\n\n translateFailureDetails(activationFailureDetails: ActivationFailureDetails): string {\n switch (activationFailureDetails.failureReason) {\n case FailureReason.FAILURE_REASON_VALIDATION_ERROR:\n return this.translateValidationError(activationFailureDetails.details);\n case FailureReason.FAILURE_REASON_CHARGE_ERROR:\n return activationFailureDetails.details\n ? this.formattedChargeError(activationFailureDetails.details[0])\n : 'Payment could not be processed for this product';\n case FailureReason.FAILURE_REASON_VENDOR_REJECTED_ERROR:\n return activationFailureDetails.details ? activationFailureDetails.details[0] : 'Vendor rejected the order';\n case FailureReason.FAILURE_REASON_ACTIVATION_ERROR:\n return activationFailureDetails.details\n ? activationFailureDetails.details[0]\n : 'Product failed to activate. Contact Support for assistance.';\n }\n return activationFailureDetails.details ? activationFailureDetails.details[0] : '';\n }\n\n translateValidationError(details: string[]): string {\n let failureMsg = '';\n details.forEach((detail) => {\n const validationMsg = this.contentsService.validationErrorMsgs.has(detail)\n ? this.contentsService.validationErrorMsgs.get(detail)\n : '';\n if (failureMsg === '') {\n failureMsg += validationMsg;\n } else {\n failureMsg += ' / ' + validationMsg;\n }\n });\n return failureMsg;\n }\n\n formattedChargeError(details: string): string {\n const toCapitalize = details.split('_');\n toCapitalize.forEach((line) => {\n line.toUpperCase();\n });\n return toCapitalize.join(' ');\n }\n}\n","\n
\n
\n\n
\n
\n 0\">\n \n \n \n \n {{ 'FRONTEND.SALES_UI.PACKAGES' | translate }}\n \n \n \n 1 {{ 'FRONTEND.SALES_UI.ITEM' | translate | lowercase }}\n \n {{ uiPackages.packages.length }}\n {{ 'FRONTEND.SALES_UI.ITEMS' | translate | lowercase }}\n \n \n \n \n \n \n \n \n
\n \n
\n
\n
\n
\n\n
\n 0\">\n \n \n \n \n {{ 'FRONTEND.SALES_UI.PRODUCTS' | translate }}\n \n \n \n 1 {{ 'FRONTEND.SALES_UI.ITEM' | translate | lowercase }}\n \n {{ uiProducts.products.length }}\n {{ 'FRONTEND.SALES_UI.ITEMS' | translate | lowercase }}\n \n \n \n \n \n \n \n \n
\n \n
\n
\n
\n
\n\n
\n 0\">\n \n \n \n \n {{ 'FRONTEND.SALES_UI.ADDONS' | translate }}\n \n \n \n 1 {{ 'FRONTEND.SALES_UI.ITEM' | translate | lowercase }}\n \n {{ uiAddons.addons.length }}\n {{ 'FRONTEND.SALES_UI.ITEMS' | translate | lowercase }}\n \n \n \n \n \n \n \n \n
\n \n
\n
\n
\n
\n
\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SalesOrderContentsComponent } from './sales-order-contents.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { VaBadgeModule, VaIconModule } from '@vendasta/uikit';\nimport { SalesOrderPackageDropdownItemComponent } from './package-dropdown/package-dropdown-item/package-dropdown-item.component';\nimport { SalesOrderPackageDropdownComponent } from './package-dropdown/package-dropdown.component';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport baseTranslation from '../../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../../shared/constants';\nimport { GalaxyTooltipModule } from '@vendasta/galaxy/tooltip';\nimport { MatExpansionModule } from '@angular/material/expansion';\n\n@NgModule({\n declarations: [\n SalesOrderContentsComponent,\n SalesOrderPackageDropdownItemComponent,\n SalesOrderPackageDropdownComponent,\n ],\n exports: [SalesOrderContentsComponent],\n imports: [\n CommonModule,\n MatCardModule,\n MatListModule,\n MatIconModule,\n MatTooltipModule,\n VaIconModule,\n VaBadgeModule,\n MatMenuModule,\n MatButtonModule,\n MatProgressSpinnerModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: WEBLATE_COMPONENT_NAME,\n baseTranslation: baseTranslation,\n }),\n GalaxyTooltipModule,\n MatExpansionModule,\n ],\n})\nexport class SalesOrderContentsModule {}\n","import { Component, EventEmitter, Inject, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { FeatureFlagService, FeatureFlagStatusInterface } from '@galaxy/partner';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport {\n CommonField,\n CustomField,\n DeclinedReason,\n DeclinedReasonService,\n Field,\n SalesOrdersService,\n} from '@vendasta/sales-orders';\nimport { BehaviorSubject, Observable, ReplaySubject, combineLatest } from 'rxjs';\nimport { finalize, map, switchMap, take, takeUntil } from 'rxjs/operators';\n\nconst AUTOMATIONS_ORDER_WORKFLOW = 'automations_order_workflow';\n\n@Component({\n templateUrl: 'sales-order-decline-dialog.component.html',\n styleUrls: ['sales-order-decline-dialog.component.scss'],\n})\nexport class SalesOrderDeclineDialogComponent implements OnInit, OnDestroy {\n @Input() orderId: string;\n @Input() businessId: string;\n @Input() title: string;\n @Input() details: string;\n\n @Input() commonFields?: CommonField[];\n @Input() customFields?: CustomField[];\n @Input() extraFields?: Field[];\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n @Output() error: EventEmitter = new EventEmitter();\n\n form: UntypedFormGroup;\n\n formSubmitted$$: BehaviorSubject = new BehaviorSubject(false);\n declinedReasons$$: ReplaySubject = new ReplaySubject(1);\n loadingDeclinedReasons$$: BehaviorSubject = new BehaviorSubject(true);\n declinedReasonsApiError$$: BehaviorSubject = new BehaviorSubject(false);\n submitDisabled$: Observable;\n leaseOrderToAutomations$: Observable;\n\n private destroyed$: ReplaySubject = new ReplaySubject(1);\n\n constructor(\n public dialogRef: MatDialogRef,\n private salesOrdersService: SalesOrdersService,\n private declinedReasonsService: DeclinedReasonService,\n private snackbarService: SnackbarService,\n private featureFlagService: FeatureFlagService,\n private fb: UntypedFormBuilder,\n private router: Router,\n @Inject('partnerId$') private readonly partnerId$: Observable,\n ) {}\n\n ngOnInit(): void {\n this.router.events.pipe(takeUntil(this.destroyed$)).subscribe(() => {\n this.dialogRef.close();\n });\n\n this.leaseOrderToAutomations$ = this.salesOrdersService.get(this.orderId, this.businessId).pipe(\n switchMap((salesOrder) => {\n return this.featureFlagService.batchGetStatus(salesOrder.partnerId, salesOrder.marketId, [\n AUTOMATIONS_ORDER_WORKFLOW,\n ]);\n }),\n map((res: FeatureFlagStatusInterface) => res[AUTOMATIONS_ORDER_WORKFLOW]),\n take(1),\n );\n\n this.loadDeclinedReasons();\n this.submitDisabled$ = combineLatest([\n this.formSubmitted$$,\n this.loadingDeclinedReasons$$,\n this.declinedReasonsApiError$$,\n ]).pipe(map(([formSubmitted, loadingDeclinedReasons, error]) => formSubmitted || loadingDeclinedReasons || error));\n\n this.declinedReasons$$.pipe(takeUntil(this.destroyed$)).subscribe((declinedReasons) => {\n this.form = this.fb.group({\n reasonId: new UntypedFormControl('', declinedReasons.length > 0 ? [Validators.required] : null),\n message: new UntypedFormControl('', declinedReasons.length === 0 ? [Validators.required] : null),\n });\n });\n }\n\n get formReasonId(): UntypedFormControl {\n return this.form.controls.reasonId as UntypedFormControl;\n }\n\n get formMessage(): UntypedFormControl {\n return this.form.controls.message as UntypedFormControl;\n }\n\n loadDeclinedReasons(): void {\n this.loadingDeclinedReasons$$.next(true);\n this.declinedReasonsApiError$$.next(false);\n\n this.partnerId$\n .pipe(\n switchMap((partnerId) => this.declinedReasonsService.list(partnerId, null)),\n take(1),\n finalize(() => this.loadingDeclinedReasons$$.next(false)),\n )\n .subscribe(\n (declinedReasons) => this.declinedReasons$$.next(declinedReasons),\n () => this.declinedReasonsApiError$$.next(true),\n );\n }\n\n onDecline(): void {\n if (!this.form.valid) {\n return;\n }\n this.formSubmitted$$.next(true);\n this.salesOrdersService\n .decline(\n this.businessId,\n this.orderId,\n this.formMessage.value,\n this.formReasonId.value ? [this.formReasonId.value] : null,\n )\n .pipe(\n take(1),\n finalize(() => this.formSubmitted$$.next(false)),\n )\n .subscribe(\n (o) => this.dialogRef.close(o),\n (err) => {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.DECLINE_REASON.ERROR');\n this.error.emit(err);\n },\n );\n }\n\n onLeaseBtnPressed(): void {\n if (!this.form.valid) {\n return;\n }\n this.formSubmitted$$.next(true);\n\n this.salesOrdersService\n .leaseToAutomations(\n this.businessId,\n this.orderId,\n this.customFields,\n this.commonFields,\n this.extraFields,\n 'decline',\n this.formMessage.value,\n this.formReasonId.value ? [this.formReasonId.value] : null,\n )\n .pipe(\n take(1),\n finalize(() => this.formSubmitted$$.next(false)),\n )\n .subscribe(\n (o) => this.dialogRef.close(o),\n (err) => {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.DECLINE_REASON.ERROR');\n this.error.emit(err);\n },\n );\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n}\n","\n

{{ title }}

\n \n \n

{{ details }}

\n \n \n 0\">\n \n {{ 'FRONTEND.SALES_UI.DECLINE_REASON.REASONS_TITLE' | translate }}\n \n {{ 'FRONTEND.SALES_UI.DECLINE_REASON.REQUIRED' | translate }}\n \n \n \n {{ 'FRONTEND.SALES_UI.DECLINE_REASON_VALIDATION' | translate }}\n \n \n \n {{ declineReason.reason }}\n \n \n \n \n \n \n {{ 'FRONTEND.SALES_UI.DECLINE_REASON.MESSAGE' | translate }}\n \n \n \n {{ 'FRONTEND.SALES_UI.DECLINE_MESSAGE_VALIDATION' | translate }}\n \n \n \n
\n \n\n\n \n \n \n \n {{ 'FRONTEND.SALES_UI.DECLINE' | translate }}\n \n \n \n \n {{ 'FRONTEND.SALES_UI.DECLINE' | translate }}\n \n \n\n\n
\n \n
\n
\n\n
\n
\n {{ 'FRONTEND.SALES_UI.DECLINE_REASON.ERROR' | translate }}\n
\n
\n \n
\n
\n
\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { RouterModule } from '@angular/router';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxySnackbarModule } from '@vendasta/galaxy/snackbar-service';\nimport baseTranslation from '../../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../../shared/constants';\nimport { SalesOrderDeclineDialogComponent } from './sales-order-decline-dialog.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatButtonModule,\n MatInputModule,\n MatDialogModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n GalaxyFormFieldModule,\n TranslateModule,\n RouterModule,\n GalaxySnackbarModule,\n LexiconModule.forChild({\n componentName: WEBLATE_COMPONENT_NAME,\n baseTranslation: baseTranslation,\n }),\n ],\n declarations: [SalesOrderDeclineDialogComponent],\n exports: [SalesOrderDeclineDialogComponent],\n})\nexport class SalesOrderDeclineDialogModule {}\n","import { DatePipe } from '@angular/common';\nimport { Component, Input, OnInit, SimpleChanges, ViewChildren } from '@angular/core';\nimport { MatAccordion } from '@angular/material/expansion';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { FileInfo, FileUploadError, FileUploadStatus } from '@vendasta/galaxy/uploader';\nimport { IAMService, User } from '@vendasta/iam';\nimport {\n Attachment,\n CustomerApprovalEventBounced,\n CustomerApprovalEventClicked,\n CustomerApprovalEventDeferred,\n CustomerApprovalEventDelivered,\n CustomerApprovalEventDropped,\n CustomerApprovalEventOpened,\n CustomerApprovalEventProcessing,\n CustomerApprovalEventSending,\n CustomerApprovalEventSpamReport,\n CustomerApprovalEventUnsubscribed,\n CustomerApprovalEventUpdatedAnswers,\n CustomerNotesMetadata,\n DeclineCancellationEvent,\n DeclinedOrderMetadata,\n HistoryMetadata,\n NotesMetadata,\n Order,\n Origin,\n RequestCancellationEvent,\n RequestCancellationMetadata,\n SalesOrdersService,\n UserInterface as SalesUser,\n Status,\n UpdateContractDurationEvent,\n UpdateContractDurationMetadata,\n UpdatedCustomerNotesEvent,\n UpdatedDraftEvent,\n UpdatedLineItemsEvent,\n UpdatedNotesEvent,\n UpdatedRequestedActivationEvent,\n UpdatedRequestedActivationMetadata,\n UpdatedSalespersonEvent,\n UpdatedTagsEvent,\n UpdatedTagsMetadata,\n getOfferExpiry,\n} from '@vendasta/sales-orders';\nimport moment from 'moment';\nimport { BehaviorSubject } from 'rxjs';\nimport { map, take, tap } from 'rxjs/operators';\nimport { StatusToBadgeMapping } from '../conversion-utils';\nimport { OrderDetailAgreement } from './order-detail-agreement';\nimport { OrderDetailField } from './order-detail-field';\nimport { ContractDurationEnumToKeys } from './sales-order-details-contract-duration/sales-contract-duration';\n\ninterface SubmitterBadgeInfo {\n color: string;\n tranlationKey: string;\n}\n\n@Component({\n selector: 'sales-ui-sales-order-details-card',\n templateUrl: 'sales-order-details-card.component.html',\n styleUrls: ['../../shared/shared-styles.scss', 'sales-order-details-card.component.scss'],\n})\nexport class SalesOrderDetailsCardComponent implements OnInit {\n @Input() order: Order;\n @Input() editable: boolean;\n @Input() orderDetails: OrderDetailField[];\n @Input() isLoading = false;\n @Input() hasError = false;\n @Input() orderDetailsEditable = true;\n @Input() isCustomerDetails = false;\n /** @deprecated: this should only be used for older orders (before March 1st 2020 that don't have their decline reason in the metadata */\n @Input() declinedReason?: string;\n @Input() attachments?: Attachment[];\n @Input() agreements?: OrderDetailAgreement[];\n offerExpiryDisplay: string;\n attachmentsUploadUrl: string;\n files: FileInfo[] = [];\n isEditing$$ = new BehaviorSubject(false);\n salesperson: User;\n @ViewChildren(MatAccordion) private readonly matAccordions;\n\n constructor(\n private readonly translateService: TranslateService,\n private readonly alertService: SnackbarService,\n private readonly salesOrderService: SalesOrdersService,\n private readonly userLookupService: IAMService,\n ) {}\n\n ngOnInit(): void {\n this.attachmentsUploadUrl = this.salesOrderService.getUploadFileUrl();\n this.files = (this.attachments || []).map((attachment) => {\n return { name: attachment.name, url: attachment.url, status: FileUploadStatus.Success };\n });\n\n const offerExpiryDate = getOfferExpiry(this.order);\n if (offerExpiryDate) {\n const formattedDate = formatDateWithTime(offerExpiryDate);\n if (moment(offerExpiryDate).isAfter(moment())) {\n this.offerExpiryDisplay = this.translateService.instant('FRONTEND.SALES_UI.ORDER_DETAILS.OFFER_WILL_EXPIRE', {\n date: formattedDate,\n });\n } else {\n this.offerExpiryDisplay = this.translateService.instant('FRONTEND.SALES_UI.ORDER_DETAILS.OFFER_EXPIRED', {\n date: formattedDate,\n });\n }\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.order && changes.order.currentValue.salespersonId != this.salesperson?.userId) {\n if (changes.order.currentValue.salespersonId) {\n this.userLookupService\n .getMultiUsers([{ userId: changes.order.currentValue.salespersonId }])\n .pipe(\n map((users) => {\n if (!!users && users.length == 1) {\n return users[0];\n }\n return null;\n }),\n take(1),\n )\n .subscribe(\n (user) => {\n if (user) {\n this.salesperson = user;\n }\n },\n (err) => {\n console.error(err);\n },\n );\n } else {\n this.salesperson = null;\n }\n }\n }\n\n getOrderSubmitterName(): string {\n if (!!this.orderDetails && this.orderDetails.length > 0) {\n return getDisplayNameForSalesUser(this.orderDetails[0].user);\n }\n return '';\n }\n\n buildCustomerApprovalNameAndDate(): string {\n const customerApproval = this.getLastCustomerApproval();\n if (!customerApproval) {\n return '';\n }\n const lastAccepted = this.translateService.instant('FRONTEND.SALES_UI.LAST_ACCEPTED');\n return lastAccepted + ' ' + this.formatDateAndNamePair(customerApproval.date, customerApproval.user);\n }\n\n getLastCustomerApproval(): OrderDetailField {\n if (!this.orderDetails) {\n return null;\n }\n\n // Clone the order details so reverse doesn't break the original array\n const orderDetailsCopy = [...this.orderDetails];\n orderDetailsCopy.reverse();\n\n // Get the matching history item if at least two entries exist and one is approved by the customer\n return orderDetailsCopy.find(\n (historyItem, index, statusHistory) =>\n index < statusHistory.length - 1 &&\n !historyItem.status &&\n statusHistory[index + 1].status &&\n statusHistory[index + 1].status === Status.SUBMITTED_FOR_CUSTOMER_APPROVAL,\n );\n }\n\n getOrderSubmitterBadgeInfo(): SubmitterBadgeInfo {\n switch (this.order.origin || Origin.SSC) {\n case Origin.SSC:\n return { color: 'purple', tranlationKey: 'FRONTEND.SALES_UI.SALESPERSON' };\n case Origin.VBC:\n return { color: 'green', tranlationKey: 'FRONTEND.SALES_UI.CLIENT' };\n case Origin.PC:\n return { color: 'blue', tranlationKey: 'FRONTEND.SALES_UI.ADMIN' };\n default:\n return null;\n }\n }\n\n buildDetailName(orderDetailField: OrderDetailField, isChild: boolean): string {\n if (isChild) {\n return getEventNameTranslationKeyForOrderDetailField(orderDetailField);\n }\n // Not all sales histories were created with a status\n return StatusToBadgeMapping.get(orderDetailField.status)?.text || StatusToBadgeMapping.get(Status.SUBMITTED).text;\n }\n\n buildDetailValue(orderDetailField: OrderDetailField): string {\n const nameAndDateString = this.formatDateAndNamePair(orderDetailField.date, orderDetailField.user);\n return this.buildValueFromMetadata(nameAndDateString, orderDetailField.metadata);\n }\n\n public signalToOpenAllDropdowns(): void {\n this.matAccordions.forEach((accordion) => accordion.openAll());\n }\n\n updateAttachmentsOnOrder(): void {\n const attachments = this.files.map((file) => {\n return {\n name: file.name,\n url: file.url,\n };\n });\n this.salesOrderService\n .updateAttachments(this.order.orderId, this.order.businessId, attachments)\n .pipe(\n take(1),\n tap(() => this.isEditing$$.next(false)),\n )\n .subscribe({\n next: () => {\n this.alertService.openSuccessSnack('FRONTEND.SALES_UI.ORDER_DETAILS.ATTACHMENTS_UPDATED_SUCCESSFULLY');\n },\n error: () => {\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.ERRORS.ERROR_ATTACHMENT_GENERIC');\n },\n });\n }\n\n updateFilesUploaded(files: FileInfo[]): void {\n this.files = files;\n }\n\n handleFileUploadError(err: FileUploadError): void {\n let errorMessage = 'FRONTEND.SALES_UI.ERRORS.ERROR_ATTACHMENT_GENERIC';\n switch (err.error.message) {\n case 'GALAXY.UPLOADER.ERROR.MAX_FILE_SIZE_EXCEEDED':\n errorMessage = 'FRONTEND.SALES_UI.ERRORS.MAX_FILE_SIZE_EXCEEDED';\n break;\n case 'GALAXY.UPLOADER.ERROR.MAX_FILES_EXCEEDED':\n errorMessage = 'FRONTEND.SALES_UI.ERRORS.MAX_FILES_EXCEEDED';\n break;\n case 'GALAXY.UPLOADER.ERROR.DUPLICATE_FILE_ATTEMPT':\n errorMessage = 'FRONTEND.SALES_UI.ERRORS.DUPLICATE_FILE_ATTEMPT';\n break;\n }\n this.alertService.openErrorSnack(errorMessage);\n }\n\n edit(): void {\n this.isEditing$$.next(true);\n }\n\n private formatDateAndNamePair(date: Date, user: SalesUser): string {\n const displayName = getDisplayNameForSalesUser(user);\n\n const formattedDate = formatDateWithTime(date);\n if (displayName) {\n return this.translateService.instant('FRONTEND.SALES_UI.ORDER_DETAILS.DATE_BY_USER', {\n date: formattedDate,\n user: displayName,\n });\n }\n // If there's no user just display the date ()\n return formattedDate;\n }\n\n private buildValueFromMetadata(nameAndDateString: string, metadata: HistoryMetadata): string {\n if (\n metadata instanceof RequestCancellationMetadata ||\n metadata instanceof NotesMetadata ||\n metadata instanceof CustomerNotesMetadata\n ) {\n let notes = metadata.current;\n if (metadata.event.id === DeclineCancellationEvent) {\n notes = metadata.event.name + '\\n' + metadata.current;\n }\n return nameAndDateString + '\\n' + notes;\n }\n if (metadata instanceof DeclinedOrderMetadata) {\n const notes = [...metadata.declinedReasons, metadata.current].join('\\n');\n return nameAndDateString + '\\n' + notes;\n }\n if (metadata instanceof UpdatedTagsMetadata) {\n const tagsString =\n !!metadata.tags && metadata.tags.length > 0\n ? this.translateService.instant('FRONTEND.SALES_UI.ORDER_DETAILS.UPDATED_TO', {\n value: metadata.tags.join(', '),\n })\n : this.translateService.instant('FRONTEND.SALES_UI.ORDER_DETAILS.ALL_TAGS_REMOVED');\n return nameAndDateString + '\\n' + tagsString;\n }\n if (metadata instanceof UpdatedRequestedActivationMetadata) {\n if (!!metadata.previous && !!metadata.current) {\n return (\n nameAndDateString +\n '\\n' +\n this.translateService.instant('FRONTEND.SALES_UI.ORDER_DETAILS.UPDATED_FROM_TO', {\n fromValue: formatDate(metadata.previous),\n toValue: formatDate(metadata.current),\n })\n );\n }\n if (metadata.current) {\n return (\n nameAndDateString +\n '\\n' +\n this.translateService.instant('FRONTEND.SALES_UI.ORDER_DETAILS.UPDATED_TO', {\n value: formatDate(metadata.current),\n })\n );\n }\n if (metadata.previous) {\n return (\n nameAndDateString +\n '\\n' +\n this.translateService.instant('FRONTEND.SALES_UI.ORDER_DETAILS.UPDATED_FROM_TO', {\n fromValue: formatDate(metadata.previous),\n toValue: this.translateService.instant('FRONTEND.SALES_UI.ORDER_DETAILS.NO_CONTRACT_START_DATE'),\n })\n );\n }\n return (\n nameAndDateString +\n '\\n' +\n this.translateService.instant('FRONTEND.SALES_UI.ORDER_DETAILS.UPDATED_TO', {\n value: this.translateService.instant('FRONTEND.SALES_UI.ORDER_DETAILS.NO_CONTRACT_START_DATE'),\n })\n );\n }\n if (metadata instanceof UpdateContractDurationMetadata) {\n if (!!metadata.previous && !!metadata.current) {\n const previousDurationPeriod = this.translateService.instant(\n ContractDurationEnumToKeys[metadata.previous.duration],\n );\n const previousDuration = `${metadata.previous.value} ${previousDurationPeriod}`;\n const currentDurationPeriod = this.translateService.instant(\n ContractDurationEnumToKeys[metadata.current.duration],\n );\n const currentDuration = `${metadata.current.value} ${currentDurationPeriod}`;\n return (\n nameAndDateString +\n '\\n' +\n this.translateService.instant('FRONTEND.SALES_UI.ORDER_DETAILS.UPDATED_FROM_TO', {\n fromValue: previousDuration,\n toValue: currentDuration,\n })\n );\n }\n if (metadata.current) {\n const currentDurationPeriod = this.translateService.instant(\n ContractDurationEnumToKeys[metadata.current.duration],\n );\n const currentDuration = `${metadata.current.value} ${currentDurationPeriod}`;\n return (\n nameAndDateString +\n '\\n' +\n this.translateService.instant('FRONTEND.SALES_UI.ORDER_DETAILS.UPDATED_TO', {\n value: currentDuration,\n })\n );\n }\n if (metadata.previous) {\n const previousDurationPeriod = this.translateService.instant(\n ContractDurationEnumToKeys[metadata.previous.duration],\n );\n const previousDuration = `${metadata.previous.value} ${previousDurationPeriod}`;\n return (\n nameAndDateString +\n '\\n' +\n this.translateService.instant('FRONTEND.SALES_UI.ORDER_DETAILS.UPDATED_FROM_TO', {\n fromValue: previousDuration,\n toValue: this.translateService.instant('FRONTEND.SALES_UI.ORDER_DETAILS.NO_CONTRACT_LENGTH'),\n })\n );\n }\n return (\n nameAndDateString +\n '\\n' +\n this.translateService.instant('FRONTEND.SALES_UI.ORDER_DETAILS.UPDATED_TO', {\n value: this.translateService.instant('FRONTEND.SALES_UI.ORDER_DETAILS.NO_CONTRACT_LENGTH'),\n })\n );\n }\n return nameAndDateString;\n }\n}\n\nfunction formatDate(date: Date): string {\n return new DatePipe('en-US').transform(date, 'MMMM d, y');\n}\n\nfunction formatDateWithTime(date: Date): string {\n return new DatePipe('en-US').transform(date, 'MMMM d, y, h:mm:ss a');\n}\n\nfunction getDisplayNameForSalesUser(user: SalesUser): string {\n if (!user) {\n return '';\n }\n const names = [];\n if (user.firstName) {\n names.push(user.firstName);\n }\n if (user.lastName) {\n names.push(user.lastName);\n }\n const displayName = names.join(' ');\n if (!displayName) {\n return user.email;\n }\n return displayName;\n}\n\nfunction getEventNameTranslationKeyForOrderDetailField(orderDetailField: OrderDetailField): string {\n if (!orderDetailField || !orderDetailField.metadata) {\n return null;\n }\n\n if (orderDetailField.metadata.event.id === UpdatedTagsEvent) {\n return 'FRONTEND.SALES_UI.UPDATED_TAGS';\n }\n\n if (orderDetailField.metadata.event.id === UpdatedNotesEvent) {\n return 'FRONTEND.SALES_UI.UPDATED_NOTES';\n }\n\n if (orderDetailField.metadata.event.id === UpdatedSalespersonEvent) {\n return 'FRONTEND.SALES_UI.UPDATED_SALESPERSON';\n }\n\n if (orderDetailField.metadata.event.id === UpdatedCustomerNotesEvent) {\n return 'FRONTEND.SALES_UI.UPDATED_CUSTOMER_NOTES';\n }\n\n if (orderDetailField.metadata.event.id === UpdatedRequestedActivationEvent) {\n return 'FRONTEND.SALES_UI.UPDATED_CONTRACT_START';\n }\n\n if (orderDetailField.metadata.event.id === UpdateContractDurationEvent) {\n return 'FRONTEND.SALES_UI.UPDATED_CONTRACT_LENGTH';\n }\n\n if (orderDetailField.metadata.event.id === RequestCancellationEvent) {\n return 'FRONTEND.SALES_UI.CANCELLATION_REQUESTED';\n }\n\n if (orderDetailField.metadata.event.id === DeclineCancellationEvent) {\n return 'FRONTEND.SALES_UI.CANCELLATION_DECLINED';\n }\n\n if (orderDetailField.metadata.event.id === UpdatedDraftEvent) {\n return 'FRONTEND.SALES_UI.UPDATED_DRAFT';\n }\n\n if (orderDetailField.metadata.event.id === UpdatedLineItemsEvent) {\n return 'FRONTEND.SALES_UI.UPDATED_CONTENTS';\n }\n\n if (orderDetailField.status !== Status.SUBMITTED_FOR_CUSTOMER_APPROVAL) {\n return null;\n }\n return getCustomerApprovalTranslationKeyForEventID(orderDetailField.metadata.event.id);\n}\n\nfunction getCustomerApprovalTranslationKeyForEventID(eventID: string): string {\n switch (eventID) {\n case CustomerApprovalEventSending:\n return 'FRONTEND.SALES_UI.CUSTOMER_EVENTS.SENDING';\n case CustomerApprovalEventProcessing:\n return 'FRONTEND.SALES_UI.CUSTOMER_EVENTS.PROCESSING';\n case CustomerApprovalEventDelivered:\n return 'FRONTEND.SALES_UI.CUSTOMER_EVENTS.DELIVERED';\n case CustomerApprovalEventBounced:\n return 'FRONTEND.SALES_UI.CUSTOMER_EVENTS.BOUNCED';\n case CustomerApprovalEventDropped:\n return 'FRONTEND.SALES_UI.CUSTOMER_EVENTS.DROPPED';\n case CustomerApprovalEventUnsubscribed:\n return 'FRONTEND.SALES_UI.CUSTOMER_EVENTS.UNSUBSCRIBED';\n case CustomerApprovalEventDeferred:\n return 'FRONTEND.SALES_UI.CUSTOMER_EVENTS.DEFERRED';\n case CustomerApprovalEventSpamReport:\n return 'FRONTEND.SALES_UI.CUSTOMER_EVENTS.SPAM_REPORT';\n case CustomerApprovalEventOpened:\n return 'FRONTEND.SALES_UI.CUSTOMER_EVENTS.EMAIL_OPENED';\n case CustomerApprovalEventClicked:\n return 'FRONTEND.SALES_UI.CUSTOMER_EVENTS.EMAIL_CLICKED';\n case CustomerApprovalEventUpdatedAnswers:\n return 'FRONTEND.SALES_UI.CUSTOMER_EVENTS.UPDATED_ANSWERS';\n default:\n return 'FRONTEND.SALES_UI.CUSTOMER_EVENTS.UNKNOWN';\n }\n}\n","
\n \n \n \n {{ 'FRONTEND.SALES_UI.ORDER_DETAILS.TITLE' | translate }}\n \n \n {{ 'FRONTEND.SALES_UI.ORDER_DETAILS.SUBTITLE' | translate }}\n \n {{ 'FRONTEND.SALES_UI.ORDER_DETAILS.CREATED_BY' | translate : { name: nameOfSubmitter } }}\n \n \n \n {{ badgeInfo.tranlationKey | translate }}\n \n \n \n
\n
{{ order.orderId }}
\n
\n\n \n
\n \n
\n
Salesperson
\n
{{ salesperson.firstName }} {{ salesperson.lastName }}
\n
\n
\n \n
\n
\n {{ 'FRONTEND.SALES_UI.OFFER_EXPIRY' | translate }}\n
\n
\n {{ offerExpiryDisplay }}\n
\n
\n
\n\n \n\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n {{ buildDetailName(info, isChild) | translate }}\n
\n
\n {{ buildDetailValue(info) }}\n
\n
\n
\n \n \n\n
\n
\n
\n {{ 'FRONTEND.SALES_UI.REASON_FOR_DECLINE' | translate }}\n
\n
\n {{ declinedReason }}\n
\n
\n \n
\n\n
\n
\n
\n {{ 'FRONTEND.SALES_UI.ATTACHMENTS' | translate }}\n
\n\n \n
\n \n
\n \n
\n
\n \n {{ 'FRONTEND.SALES_UI.SAVE' | translate }}\n \n
\n\n \n
\n
\n \n \n
\n
\n
\n
\n \n
\n\n
0\">\n
\n
\n {{ 'FRONTEND.SALES_UI.CUSTOMER_AGREEMENTS' | translate }}\n
\n
\n
{{ buildCustomerApprovalNameAndDate() }}
\n
\n
\n
\n check_circle_outline\n highlight_off\n
\n
\n
\n \n
\n \n
\n
\n
\n \n
\n
\n
\n
\n \n
\n\n \n \n \n\n \n \n
\n
\n
\n
\n\n\n\n
\n \n \n {{ 'FRONTEND.SALES_UI.ORDER_DETAILS.ORDER_INFO_ERROR' | translate }}\n \n \n
\n
\n\n\n
\n \n
\n
\n","import { DurationPeriod } from '@vendasta/sales-orders';\n\nexport interface ContractDurationTranslationKey {\n key: string;\n value: number;\n}\n\nexport const ContractDurationKeysToEnum: ContractDurationTranslationKey[] = [\n { key: 'FRONTEND.SALES_UI.DAYS_PLURAL_OR_SINGULAR_LABEL', value: DurationPeriod.DAY },\n { key: 'FRONTEND.SALES_UI.WEEKS_PLURAL_OR_SINGULAR_LABEL', value: DurationPeriod.WEEK },\n { key: 'FRONTEND.SALES_UI.MONTHS_PLURAL_OR_SINGULAR_LABEL', value: DurationPeriod.MONTH },\n { key: 'FRONTEND.SALES_UI.YEARS_PLURAL_OR_SINGULAR_LABEL', value: DurationPeriod.YEAR },\n];\n\nexport const ContractDurationEnumToKeys: string[] = [];\nContractDurationEnumToKeys['DAY'] = 'FRONTEND.SALES_UI.DAYS_PLURAL_OR_SINGULAR_LABEL';\nContractDurationEnumToKeys['WEEK'] = 'FRONTEND.SALES_UI.WEEKS_PLURAL_OR_SINGULAR_LABEL';\nContractDurationEnumToKeys['MONTH'] = 'FRONTEND.SALES_UI.MONTHS_PLURAL_OR_SINGULAR_LABEL';\nContractDurationEnumToKeys['YEAR'] = 'FRONTEND.SALES_UI.YEARS_PLURAL_OR_SINGULAR_LABEL';\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { SalesOrdersService } from '@vendasta/sales-orders';\nimport { Option } from '@vendasta/forms';\n\nexport interface UIOptions {\n tags: Option[];\n}\n\nexport interface TagsList {\n tags: string[];\n}\n\n@Injectable()\nexport class SalesOrderTagsService {\n private businessId: string;\n private orderId: string;\n\n tagOptions$: Observable;\n\n constructor(private salesOrderService: SalesOrdersService) {}\n\n initialize(businessId: string, orderId: string, partnerId: string, marketId: string): void {\n this.businessId = businessId;\n this.orderId = orderId;\n\n this.tagOptions$ = this.salesOrderService\n .listTags(partnerId, {\n marketIds: [marketId],\n })\n .pipe(\n switchMap(({ tags }) =>\n of({\n tags: (tags || []).map((tag) => {\n return {\n name: tag,\n value: tag,\n } as Option;\n }),\n }),\n ),\n );\n }\n\n updateTags(tags: string[]): Observable {\n return this.salesOrderService.updateTags(this.orderId, this.businessId, tags).pipe(\n switchMap((order) => {\n return of({\n tags: order.tags || [],\n });\n }),\n );\n }\n}\n","import { ChangeDetectorRef, Component, Input, OnInit, ViewChild } from '@angular/core';\nimport { GlxyInputTagsComponent } from '@vendasta/forms';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { Observable, of } from 'rxjs';\nimport { catchError, finalize, take, tap } from 'rxjs/operators';\nimport { SalesOrderTagsService, UIOptions } from './sales-order-details-tags.service';\n\n@Component({\n selector: 'sales-ui-sales-order-details-tags',\n templateUrl: 'sales-order-details-tags.component.html',\n styleUrls: ['sales-order-details-tags.component.scss', '../sales-order-details-card.component.scss'],\n providers: [SalesOrderTagsService],\n})\nexport class SalesOrderDetailsTagsComponent implements OnInit {\n maxTags = 15;\n private vaInputTags: GlxyInputTagsComponent;\n\n @ViewChild(GlxyInputTagsComponent) set content(content: GlxyInputTagsComponent) {\n if (content) {\n this.vaInputTags = content;\n }\n }\n\n @Input() tags?: string[];\n @Input() orderId: string;\n @Input() businessId: string;\n @Input() partnerId: string;\n @Input() marketId: string;\n @Input() editable = true;\n\n isEditing: boolean;\n editingTags: string[];\n isSubmittingTags = false;\n options$: Observable;\n\n constructor(\n private orderTagsService: SalesOrderTagsService,\n private readonly cdr: ChangeDetectorRef,\n private readonly snackbarService: SnackbarService,\n ) {}\n\n ngOnInit(): void {\n this.orderTagsService.initialize(this.businessId, this.orderId, this.partnerId, this.marketId);\n this.options$ = this.orderTagsService.tagOptions$;\n }\n\n public editTags(): void {\n this.editingTags = this.tags;\n this.isEditing = true;\n }\n\n public sendTags(): void {\n if (this.vaInputTags.overMaxFields) {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.MAX_TAGS', {\n interpolateTranslateParams: { maxTags: this.maxTags.toString() },\n });\n return;\n }\n const newTags = this.vaInputTags.value;\n\n if (this.tags === newTags) {\n this.isEditing = false;\n return;\n }\n\n this.isSubmittingTags = true;\n\n this.orderTagsService\n .updateTags(newTags)\n .pipe(\n take(1),\n tap((t) => {\n this.isEditing = false;\n this.tags = t.tags || [];\n }),\n catchError(() => {\n this.editingTags = newTags;\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.TAGS_ERROR');\n return of(null);\n }),\n finalize(() => {\n this.isSubmittingTags = false;\n this.cdr.detectChanges(); // update state of isEditing and isSubmittingTags\n }),\n )\n .subscribe();\n }\n}\n","
\n
{{ 'FRONTEND.SALES_UI.TAGS' | translate }}
\n
\n
\n \n
0; else noTags\" class=\"order-details__tag\">\n
\n \n {{ tag }}\n \n
\n
\n \n
{{ 'FRONTEND.SALES_UI.NO_TAGS' | translate }}
\n
\n \n
\n
\n\n \n \n \n \n \n \n \n \n
\n \n
\n
\n
\n
\n
\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { Order, SalesOrdersService } from '@vendasta/sales-orders';\nimport moment from 'moment';\nimport { take } from 'rxjs/operators';\n\n@Component({\n selector: 'sales-ui-sales-order-details-requested-activation',\n templateUrl: './sales-order-details-requested-activation.component.html',\n styleUrls: [\n './sales-order-details-requested-activation.component.scss',\n '../sales-order-details-card.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SalesOrderDetailsRequestedActivationComponent implements OnInit, OnChanges {\n @Input() order: Order;\n @Input() editable = false;\n\n isEditing = false;\n minDate = new Date();\n requestedActivation: Date;\n updatingRequestedActivation = false;\n\n constructor(\n private readonly salesOrdersService: SalesOrdersService,\n private readonly alertService: SnackbarService,\n private cdk: ChangeDetectorRef,\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.editable = changes.editable ? changes.editable.currentValue : this.editable;\n this.requestedActivation = changes.requestedActivation\n ? changes.requestedActivation.currentValue\n : this.requestedActivation;\n }\n\n ngOnInit(): void {\n this.requestedActivation = this.order.requestedActivation;\n }\n\n formatDate(date: Date): string {\n return moment(date).format('lll');\n }\n\n edit(): void {\n this.isEditing = true;\n }\n\n updateRequestedActivation(): void {\n this.isEditing = true;\n this.updatingRequestedActivation = true;\n\n if (this.requestedActivation === undefined || this.requestedActivation === null) {\n this.alertService.openErrorSnack('SALES_ORDERS.ERRORS.BAD_DATE_FORMAT');\n this.requestedActivation = this.order.requestedActivation;\n this.isEditing = false;\n this.updatingRequestedActivation = false;\n this.cdk.detectChanges();\n return;\n }\n\n // ensure the type is a Date so we can properly set hours on it\n const requestedActivation = new Date(this.requestedActivation);\n requestedActivation.setHours(7);\n this.salesOrdersService\n .updateRequestedActivation(this.order.orderId, this.order.businessId, requestedActivation)\n .pipe(take(1))\n .subscribe(\n () => {\n this.isEditing = false;\n this.updatingRequestedActivation = false;\n this.cdk.detectChanges();\n },\n () => {\n this.isEditing = false;\n this.updatingRequestedActivation = false;\n this.requestedActivation = this.order.requestedActivation;\n this.cdk.detectChanges();\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.CONTRACT_START_ERROR');\n },\n );\n }\n}\n","
\n
\n {{ 'FRONTEND.SALES_UI.CONTRACT_START' | translate }}\n
\n
\n
\n \n
\n \n {{ 'FRONTEND.SALES_UI.CONTRACT_START_FORMAT' | translate }}\n \n \n \n \n {{ 'FRONTEND.SALES_UI.CONTRACT_START_HINT' | translate }}\n \n \n
\n\n \n
\n
\n
\n
\n\n {{ formatDate(requestedActivation) }}\n \n\n","import {\n Order,\n DurationPeriod,\n Status,\n UserInterface as SalesUser,\n StatusHistoryItemInterface,\n getMetadataFromStatusHistoryItem,\n HistoryMetadata,\n} from '@vendasta/sales-orders';\n\nexport const DurationMapping = new Map([\n [DurationPeriod.DAY, 'FRONTEND.SALES_UI.DAYS_PLURAL_OR_SINGULAR'],\n [DurationPeriod.WEEK, 'FRONTEND.SALES_UI.WEEKS_PLURAL_OR_SINGULAR'],\n [DurationPeriod.MONTH, 'FRONTEND.SALES_UI.MONTHS_PLURAL_OR_SINGULAR'],\n [DurationPeriod.YEAR, 'FRONTEND.SALES_UI.YEARS_PLURAL_OR_SINGULAR'],\n]);\n\nexport interface User {\n userId: string;\n fullName?: string;\n email?: string;\n}\n\n/**\n *\n * @param userId: must be non empty string\n * @param email: must be non empty string\n * @throws Error if required arguments are not valid\n */\nexport function userWithEmail(userId: string, email: string): User {\n if (!userId) {\n throw new Error('userId is required');\n }\n if (!email) {\n throw new Error('email is required');\n }\n return {\n userId: userId,\n email: email,\n };\n}\n\n/**\n *\n * @param userId: must be non empty string\n * @param fullName: must be non empty string\n * @throws Error if required arguments are not valid\n */\nexport function userWithName(userId: string, fullName: string): User {\n if (!userId) {\n throw new Error('userId is required');\n }\n if (!fullName) {\n throw new Error('fullName is required');\n }\n return {\n userId: userId,\n fullName: fullName,\n };\n}\n\nexport class OrderDetailField {\n status: Status;\n date: Date;\n metadata: HistoryMetadata;\n user: SalesUser;\n childFields: OrderDetailFieldChild[];\n\n private static buildFieldsFromStatusHistory(\n historyItems: StatusHistoryItemInterface[],\n usersMap: { [key: string]: SalesUser },\n ): OrderDetailField[] {\n const fields: OrderDetailField[] = [];\n historyItems.forEach((historyItem, index) => {\n // If it's the first item, or the current status is different than the previous one add to the toplevel array\n if (index === 0 || historyItems[index - 1].status !== historyItem.status) {\n const field = this.buildFieldFromStatusHistory(historyItem, usersMap, false);\n fields.push(field);\n } else {\n // The statuses are the same so add to the child fields of the last item\n const field = this.buildFieldFromStatusHistory(historyItem, usersMap, true);\n fields[fields.length - 1].childFields.push(field);\n }\n });\n return fields;\n }\n\n private static buildFieldFromStatusHistory(\n historyItem: StatusHistoryItemInterface,\n usersMap: { [key: string]: SalesUser },\n isChild: boolean,\n ): OrderDetailField {\n const metadata = getMetadataFromStatusHistoryItem(historyItem);\n let userId = historyItem.userId;\n\n // setup status specific metadata labels\n if (isChild && !!metadata) {\n userId = metadata.userId;\n }\n\n let user: SalesUser = { email: historyItem.email };\n if (userId in usersMap) {\n user = usersMap[userId];\n }\n return new OrderDetailField(historyItem.status, historyItem.created, metadata, user);\n }\n\n public static createFromOrderWithUsers(\n salesOrder: Order,\n usersMap: { [key: string]: SalesUser },\n ): OrderDetailField[] {\n const additionalFields = this.buildFieldsFromStatusHistory(salesOrder.statusHistory, usersMap);\n return additionalFields;\n }\n\n constructor(status: Status, date: Date, metadata: HistoryMetadata, user: SalesUser) {\n this.status = status;\n this.date = date;\n this.metadata = metadata;\n this.user = user;\n this.childFields = [];\n }\n}\n\nexport class OrderDetailFieldChild extends OrderDetailField {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { DurationInterface, Order, SalesOrdersService } from '@vendasta/sales-orders';\nimport { Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { DurationMapping } from '../order-detail-field';\nimport { ContractDurationKeysToEnum, ContractDurationTranslationKey } from './sales-contract-duration';\n\nconst MIN_CONTRACT_DURATION_REGEX = '^[1-9][0-9]*?$'; // regex for checking minimum valid contract duration (1 year or month)\n\n@Component({\n selector: 'sales-ui-sales-order-details-contract-duration',\n templateUrl: './sales-order-details-contract-duration.component.html',\n styleUrls: ['./sales-order-details-contract-duration.component.scss', '../sales-order-details-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SalesOrderDetailsContractDurationComponent implements OnInit, OnChanges {\n @Input() order: Order;\n @Input() editable = false;\n\n isEditing = false;\n contractDuration: DurationInterface;\n contractDurationForm: UntypedFormGroup;\n contractPeriods: ContractDurationTranslationKey[] = ContractDurationKeysToEnum;\n updating = false;\n\n contractDurationText$: Observable;\n\n constructor(\n private readonly salesOrdersService: SalesOrdersService,\n private readonly alertService: SnackbarService,\n private readonly translateService: TranslateService,\n private cdk: ChangeDetectorRef,\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.editable = changes.editable ? changes.editable.currentValue : this.editable;\n this.contractDuration = changes.contractDuration ? changes.contractDuration.currentValue : this.contractDuration;\n this.contractDuration = this.order.contractDuration || {};\n }\n\n ngOnInit(): void {\n this.contractDuration = this.order.contractDuration || {};\n this.contractDurationForm = new UntypedFormGroup({\n value: new UntypedFormControl(this.contractDuration && this.contractDuration.value, [\n Validators.pattern(MIN_CONTRACT_DURATION_REGEX),\n ]),\n duration: new UntypedFormControl(this.contractDuration && this.contractDuration.duration, [Validators.required]),\n });\n\n this.convertDuration();\n }\n\n convertDuration(): void {\n this.contractDuration = this.contractDuration || {};\n\n if (!this.contractDuration.value) {\n this.contractDurationText$ = this.translateService.stream('FRONTEND.SALES_UI.NO_CONTRACT_LENGTH');\n } else {\n this.contractDurationText$ = this.translateService.stream(DurationMapping.get(this.contractDuration.duration), {\n duration: this.contractDuration.value.toString(),\n });\n }\n }\n\n invalidDurationValue(): boolean {\n this.contractDurationForm.markAsTouched();\n return this.contractDurationForm.controls.value.invalid && this.contractDurationForm.controls.value.dirty;\n }\n\n invalidDurationPeriod(): boolean {\n this.contractDurationForm.controls.duration.markAsTouched();\n return this.contractDurationForm.controls.duration.invalid;\n }\n\n edit(): void {\n this.isEditing = true;\n }\n\n updateContractDuration(): void {\n if (this.invalidDurationValue()) {\n return;\n }\n\n if (this.invalidDurationPeriod()) {\n return;\n }\n\n // if field is empty and user hits send, reset length\n if (this.contractDuration && !this.contractDuration.value) {\n this.contractDuration = null;\n }\n\n this.isEditing = true;\n this.updating = true;\n this.salesOrdersService\n .updateContractDuration(this.order.orderId, this.order.businessId, this.contractDuration)\n .pipe(take(1))\n .subscribe(\n () => {\n this.isEditing = false;\n this.updating = false;\n this.convertDuration();\n this.cdk.detectChanges();\n },\n () => {\n this.isEditing = false;\n this.updating = false;\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.CONTRACT_LENGTH_ERROR');\n this.convertDuration();\n this.cdk.detectChanges();\n },\n );\n }\n}\n","
\n
\n {{ 'FRONTEND.SALES_UI.CONTRACT_LENGTH' | translate }}\n
\n
\n
\n \n
\n
\n
\n \n {{ 'FRONTEND.SALES_UI.LENGTH' | translate }}\n \n \n
\n
\n \n {{ 'FRONTEND.SALES_UI.PERIOD' | translate }}\n \n \n {{ period.key | translate }}\n \n \n \n
\n
\n\n \n {{ 'FRONTEND.SALES_UI.DURATION_WARNING' | translate }}\n \n\n \n {{ 'FRONTEND.SALES_UI.NUMBER_HIGHER_THAN' | translate: { minNumber: 0 } }}\n \n
\n\n \n
\n
\n
\n
\n\n {{ contractDurationText$ | async }}\n \n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { Order, SalesOrdersService } from '@vendasta/sales-orders';\nimport { take } from 'rxjs/operators';\n\n@Component({\n selector: 'sales-ui-sales-order-details-notes',\n templateUrl: './sales-order-details-notes.component.html',\n styleUrls: ['./sales-order-details-notes.component.scss', '../sales-order-details-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SalesOrderDetailsNotesComponent implements OnInit, OnChanges {\n @Input() order: Order;\n @Input() editable = true;\n\n isEditing = false;\n notes: string;\n updatingNotes = false;\n\n constructor(\n private readonly salesOrdersService: SalesOrdersService,\n private readonly alertService: SnackbarService,\n private cdk: ChangeDetectorRef,\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.notes = changes.notes ? changes.notes.currentValue : this.notes;\n }\n\n ngOnInit(): void {\n this.notes = this.order.notes;\n }\n\n edit(): void {\n this.isEditing = true;\n }\n\n updateNotes(): void {\n this.isEditing = true;\n this.updatingNotes = true;\n this.salesOrdersService\n .updateNotes(this.order.orderId, this.order.businessId, this.notes)\n .pipe(take(1))\n .subscribe(\n () => {\n this.isEditing = false;\n this.updatingNotes = false;\n this.cdk.detectChanges();\n },\n () => {\n this.isEditing = false;\n this.updatingNotes = false;\n this.notes = this.order.notes;\n this.cdk.detectChanges();\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.NOTES_ERROR');\n },\n );\n }\n}\n","
\n
{{ 'FRONTEND.SALES_UI.NOTES' | translate }}
\n
\n
\n \n \n \n {{ 'FRONTEND.SALES_UI.NOTES_HINT' | translate }}\n \n \n \n
\n
\n
\n\n
{{ notes }}
\n \n
\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { Order, SalesOrdersService } from '@vendasta/sales-orders';\nimport { take } from 'rxjs/operators';\n\n@Component({\n selector: 'sales-ui-sales-order-details-customer-notes',\n templateUrl: './sales-order-details-customer-notes.component.html',\n styleUrls: ['./sales-order-details-customer-notes.component.scss', '../sales-order-details-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SalesOrderDetailsCustomerNotesComponent implements OnInit, OnChanges {\n @Input() order: Order;\n @Input() isCustomerDetails: boolean;\n @Input() editable = true;\n\n isEditing = false;\n customerNotes: string;\n updatingNotes = false;\n\n constructor(\n private readonly salesOrdersService: SalesOrdersService,\n private readonly alertService: SnackbarService,\n private cdk: ChangeDetectorRef,\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.customerNotes = changes.customerNotes ? changes.customerNotes.currentValue : this.customerNotes;\n }\n\n ngOnInit(): void {\n this.customerNotes = this.order.customerNotes;\n }\n\n edit(): void {\n this.isEditing = true;\n }\n\n updateCustomerNotes(): void {\n this.isEditing = true;\n this.updatingNotes = true;\n this.salesOrdersService\n .updateCustomerNotes(this.order.orderId, this.order.businessId, this.customerNotes)\n .pipe(take(1))\n .subscribe(\n () => {\n this.isEditing = false;\n this.updatingNotes = false;\n this.cdk.detectChanges();\n },\n () => {\n this.isEditing = false;\n this.updatingNotes = false;\n this.customerNotes = this.order.customerNotes;\n this.cdk.detectChanges();\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.CUSTOMER_NOTES_ERROR');\n },\n );\n }\n}\n","
\n
\n {{ 'FRONTEND.SALES_UI.CUSTOMER_NOTES' | translate }}\n
\n
\n
\n \n \n \n \n {{ 'FRONTEND.SALES_UI.CUSTOMER_NOTES_HINT' | translate }}\n \n \n \n \n
\n
\n
\n\n
{{ customerNotes }}
\n \n
\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { VaFormsModule } from '@vendasta/forms';\nimport { EmptyStateModule } from '@vendasta/uikit';\nimport { SalesOrderDetailsCardComponent } from './sales-order-details-card.component';\nimport { SalesOrderTagsService } from './sales-order-details-tags/sales-order-details-tags.service';\nimport { SalesOrderDetailsTagsComponent } from './sales-order-details-tags/sales-order-details-tags.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SalesOrderDetailsRequestedActivationComponent } from './sales-order-details-requested-activation/sales-order-details-requested-activation.component';\nimport { SalesOrderDetailsContractDurationComponent } from './sales-order-details-contract-duration/sales-order-details-contract-duration.component';\nimport { SalesOrderDetailsNotesComponent } from './sales-order-details-notes/sales-order-details-notes.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SalesOrderDetailsCustomerNotesComponent } from './sales-order-details-customer-notes/sales-order-details-customer-notes.component';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport baseTranslation from '../../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../../shared/constants';\nimport { GalaxyUploaderModule } from '@vendasta/galaxy/uploader';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyButtonLoadingIndicatorModule } from '@vendasta/galaxy/button-loading-indicator';\n\n@NgModule({\n imports: [\n CommonModule,\n MatCardModule,\n MatListModule,\n MatProgressSpinnerModule,\n EmptyStateModule,\n MatExpansionModule,\n VaFormsModule,\n MatIconModule,\n FormsModule,\n ReactiveFormsModule,\n MatCheckboxModule,\n MatTooltipModule,\n MatButtonModule,\n MatDatepickerModule,\n MatInputModule,\n MatSelectModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: WEBLATE_COMPONENT_NAME,\n baseTranslation: baseTranslation,\n }),\n GalaxyUploaderModule,\n GalaxyBadgeModule,\n GalaxyFormFieldModule,\n GalaxyButtonLoadingIndicatorModule,\n ],\n providers: [SalesOrderTagsService],\n declarations: [\n SalesOrderDetailsCardComponent,\n SalesOrderDetailsTagsComponent,\n SalesOrderDetailsRequestedActivationComponent,\n SalesOrderDetailsContractDurationComponent,\n SalesOrderDetailsNotesComponent,\n SalesOrderDetailsCustomerNotesComponent,\n ],\n exports: [SalesOrderDetailsCardComponent, SalesOrderDetailsTagsComponent],\n})\nexport class SalesOrderDetailsCardModule {}\n","import { AgreementInterface, Order, UserInterface as SalesUser } from '@vendasta/sales-orders';\n\nexport class OrderDetailAgreement {\n name: string;\n term: string;\n agreed: boolean;\n\n static agreementFromOrderAgreementWithUser(\n agreement: AgreementInterface,\n usersMap: { [key: string]: SalesUser },\n ): OrderDetailAgreement {\n const names = [];\n let name = '';\n if (agreement.userId in usersMap) {\n const user = usersMap[agreement.userId];\n if (user.firstName) {\n names.push(user.firstName);\n }\n if (user.lastName) {\n names.push(user.lastName);\n }\n name = names.join(' ') || user.email;\n }\n return new OrderDetailAgreement(name, agreement.term, agreement.agreed);\n }\n\n public static createFromOrderWithUsers(\n salesOrder: Order,\n usersMap: { [key: string]: SalesUser },\n ): OrderDetailAgreement[] {\n if (!salesOrder) {\n return [];\n }\n if (!usersMap) {\n usersMap = {};\n }\n return (salesOrder.agreements || []).map((a) => {\n return OrderDetailAgreement.agreementFromOrderAgreementWithUser(a, usersMap);\n });\n }\n\n constructor(name: string, term: string, agreed: boolean) {\n this.name = name;\n this.term = term;\n this.agreed = agreed;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, BehaviorSubject, combineLatest, of, zip, throwError } from 'rxjs';\nimport { catchError, map, switchMap, refCount, publishReplay, skipWhile, filter } from 'rxjs/operators';\nimport { Currency, Package, Price, Pricing, Frequency, PackageService } from '@vendasta/marketplace-packages';\nimport {\n Order,\n RevenuePeriod,\n SalesOrdersService,\n ConfigInterface,\n LineItem,\n LineItemInterface,\n} from '@vendasta/sales-orders';\nimport { App, AppKey, AppPartnerService } from '@galaxy/marketplace-apps';\nimport { AccountGroup, AccountGroupService, ProjectionFilter, ReadFilter } from '@galaxy/account-group';\nimport { Salesperson, SalespersonService } from '@vendasta/sales';\nimport { SalesOrderStoreService } from '../sales-order-store.service';\n\n@Injectable()\nexport class SalesOrderService {\n private businessId$$: BehaviorSubject = new BehaviorSubject(null);\n readonly businessId$: Observable = this.businessId$$.asObservable();\n\n private orderId$$: BehaviorSubject = new BehaviorSubject(null);\n readonly orderId$: Observable = this.orderId$$.asObservable();\n\n private specifiedLineItems$$: BehaviorSubject = new BehaviorSubject([]);\n readonly specifiedLineItems$: Observable = this.specifiedLineItems$$.asObservable();\n\n readonly lineItems$: Observable;\n\n readonly order$: Observable;\n readonly business$: Observable;\n readonly salesperson$: Observable;\n readonly packageIds$: Observable;\n readonly packages$: Observable;\n readonly apps$: Observable;\n readonly standaloneAppKeys$: Observable;\n readonly includedAppKeys$: Observable;\n readonly orderConfig$: Observable;\n readonly uniqueApps$: Observable;\n\n static convertOrderCurrencyToMPCurrency(orderCurrency: string): Currency {\n if (!Currency[orderCurrency]) {\n return Currency.USD;\n }\n return Currency[orderCurrency];\n }\n\n static convertOrderRevenuePeriodToMPFrequency(revenuePeriod: RevenuePeriod): Frequency {\n // TODO: Unify Frequency between orders and packages\n switch (revenuePeriod) {\n case undefined: // proto doesn't transmit 0 enum, but the default should not be Onetime\n case RevenuePeriod.ONETIME:\n return Frequency.ONCE;\n case RevenuePeriod.DAILY:\n return Frequency.DAILY;\n case RevenuePeriod.WEEKLY:\n return Frequency.WEEKLY;\n case RevenuePeriod.MONTHLY:\n return Frequency.MONTHLY;\n case RevenuePeriod.YEARLY:\n return Frequency.YEARLY;\n case RevenuePeriod.BIWEEKLY: // No MP equivalent...?\n default:\n return Frequency.OTHER;\n }\n }\n\n static getPricingFromLineItem(lineItem: LineItem): Pricing {\n let prices: Price[] = [];\n if (!!lineItem.currentRevenue && !!lineItem?.currentRevenue?.revenueComponents) {\n prices = lineItem?.currentRevenue?.revenueComponents.map((c) => {\n return new Price({\n price: c.value,\n frequency: SalesOrderService.convertOrderRevenuePeriodToMPFrequency(c.period),\n });\n });\n }\n\n return new Pricing({\n currency: SalesOrderService.convertOrderCurrencyToMPCurrency(lineItem.currencyCode),\n prices: prices,\n });\n }\n\n constructor(\n private accountGroupService: AccountGroupService,\n private salesService: SalespersonService,\n private packageService: PackageService,\n private appsService: AppPartnerService,\n private salesOrdersService: SalesOrdersService,\n private salesOrderStoreService: SalesOrderStoreService,\n ) {\n this.order$ = combineLatest([this.orderId$, this.businessId$]).pipe(\n skipWhile(([orderId, businessId]) => orderId === null || businessId === null),\n switchMap(([orderId, businessId]) => this.salesOrderStoreService.getOrderState(orderId, businessId)),\n filter((orderState) => !orderState.loading),\n map((orderState) => orderState.order),\n publishReplay(1),\n refCount(),\n );\n\n this.business$ = this.businessId$.pipe(\n switchMap((businessId) => {\n return this.accountGroupService.getMulti(\n [businessId],\n new ProjectionFilter({\n accountGroupExternalIdentifiers: true,\n napData: true,\n accounts: true,\n }),\n new ReadFilter({ includeDeleted: true }),\n );\n }),\n map((results) => {\n if (results.length !== 1) {\n throwError(new Error('Business not found'));\n }\n return results[0];\n }),\n publishReplay(1),\n refCount(),\n );\n\n this.salesperson$ = this.business$.pipe(\n switchMap((business) => {\n if (!business.externalIdentifiers.salesPersonId) {\n return of(null);\n }\n return this.salesService.getSalesperson(\n business.externalIdentifiers.partnerId,\n business.externalIdentifiers.salesPersonId,\n );\n }),\n catchError(() => {\n // This is only used to pre-fill salesperson a new order, so just skip it if an error occurs\n return of(null);\n }),\n publishReplay(1),\n refCount(),\n );\n\n this.orderConfig$ = this.business$.pipe(\n switchMap((business) => {\n return this.salesOrdersService.getConfig(\n business.externalIdentifiers.partnerId,\n business.externalIdentifiers.marketId,\n );\n }),\n publishReplay(1),\n refCount(),\n );\n\n this.lineItems$ = combineLatest([this.order$, this.specifiedLineItems$]).pipe(\n map(([order, lineItems]) => lineItems.concat(order?.lineItems || [])),\n publishReplay(1),\n refCount(),\n );\n\n this.packageIds$ = this.lineItems$.pipe(\n map((lineItems) => {\n return lineItems.map((lineItem) => lineItem.packageId).filter((packageId) => !!packageId);\n }),\n publishReplay(1),\n refCount(),\n );\n\n this.standaloneAppKeys$ = this.lineItems$.pipe(\n map((lineItems) => {\n return lineItems\n .filter((lineItem) => !!lineItem.appKey)\n .map((lineItem) => {\n return new AppKey(lineItem.appKey);\n });\n }),\n publishReplay(1),\n refCount(),\n );\n\n this.packages$ = this.packageIds$.pipe(\n switchMap((packageIds) => {\n return packageIds.length > 0 ? this.packageService.getMulti(packageIds) : of([]);\n }),\n publishReplay(1),\n refCount(),\n );\n\n this.includedAppKeys$ = zip(this.packages$, this.standaloneAppKeys$).pipe(\n map(([packages, standaloneAppKeys]) => {\n const packageAppKeys = packages\n .map((pkg) => {\n const lineItems = pkg && pkg.lineItems && pkg.lineItems.lineItems ? pkg.lineItems.lineItems : [];\n return lineItems.map(\n (item) =>\n new AppKey({\n appId: item.id || '',\n editionId: item.editionId || '',\n }),\n );\n })\n .reduce((a, b) => [...a, ...b], []);\n return standaloneAppKeys.concat(packageAppKeys);\n }),\n publishReplay(1),\n refCount(),\n );\n\n this.apps$ = combineLatest([this.includedAppKeys$, this.business$]).pipe(\n switchMap(([includedAppKeys, business]) =>\n this.appsService.getMulti(\n includedAppKeys,\n business.externalIdentifiers.partnerId,\n business.externalIdentifiers.marketId,\n null,\n true,\n ),\n ),\n publishReplay(1),\n refCount(),\n );\n\n this.uniqueApps$ = this.apps$.pipe(\n filter((apps) => !!apps && apps.length > 0),\n map((appKeys) => {\n return appKeys.reduce((unique, app) => {\n const { key } = app;\n if (\n !key ||\n !!unique.find(\n ({ key: uniqueKey }) => uniqueKey.appId === key.appId && uniqueKey.editionId === key.editionId,\n )\n ) {\n return unique;\n }\n\n unique.push(app);\n return unique;\n }, []);\n }),\n publishReplay(1),\n refCount(),\n );\n }\n\n initialize(businessId: string, orderId: string, lineItems: LineItemInterface[]): void {\n this.businessId$$.next(businessId || '');\n this.orderId$$.next(orderId || '');\n this.specifiedLineItems$$.next(lineItems || []);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n CommonFormData,\n CustomFieldsAnswer,\n CustomFieldsAnswers,\n IncludedCommonFormFieldsInterface,\n OrderFormFieldOptionsType,\n OrderFormInterface,\n OrderFormOptionsInterface,\n ProductInfoInterface,\n TextBoxFieldOptions,\n} from '@vendasta/store';\nimport { User } from './interface';\nimport { combineLatest, Observable, of, zip } from 'rxjs';\nimport {\n GetMultiOrderFormsResponseOrderFormContainerInterface as MPOrderFormContainerInterface,\n MarketplaceAppsApiService,\n} from '@galaxy/marketplace-apps/v1';\nimport { App } from '@galaxy/marketplace-apps';\nimport { SalesOrderService } from './sales-order.service';\nimport {\n CommonField,\n CustomField,\n Field,\n LineItem,\n LineItemInterface,\n Order,\n SalesOrdersService,\n} from '@vendasta/sales-orders';\nimport { Account, AccountGroup } from '@galaxy/account-group';\nimport { Package } from '@vendasta/marketplace-packages';\nimport { map, publishReplay, refCount, switchMap } from 'rxjs/operators';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AppType } from '@vendasta/marketplace-apps';\n\n@Injectable()\nexport class SalesOrderFormService {\n private mpOrderForms$: Observable;\n private appQuantityMap$: Observable>;\n private userOptions: User[];\n order$: Observable;\n\n constructor(\n private translateService: TranslateService,\n private appsApiService: MarketplaceAppsApiService,\n private salesOrderService: SalesOrderService,\n private salesOrderSdk: SalesOrdersService,\n ) {}\n\n initialize(businessId: string, orderId: string, lineItems: LineItemInterface[], userOptions: User[]): void {\n this.userOptions = userOptions;\n this.salesOrderService.initialize(businessId, orderId, lineItems);\n this.order$ = this.salesOrderService.order$;\n\n this.mpOrderForms$ = combineLatest([this.salesOrderService.apps$, this.salesOrderService.business$]).pipe(\n switchMap(([apps, business]) => {\n return this.getMarketplaceOrderForms(business.externalIdentifiers.partnerId, apps);\n }),\n publishReplay(1),\n refCount(),\n );\n\n this.appQuantityMap$ = zip(this.salesOrderService.packages$, this.salesOrderService.lineItems$).pipe(\n map(([packages, salesLineItems]) => {\n const quantityMap: Map = new Map();\n const allPkgLineItems = packages.reduce((items, pkg) => {\n const pkgLineItem = salesLineItems.find((lineItem) => lineItem.packageId === pkg.packageId);\n const pkgCount = (pkgLineItem ? pkgLineItem.quantity : 1) || 1;\n return items.concat(this.salesOrderLineItemsFromPackage(pkg, pkgCount));\n }, []);\n salesLineItems = salesLineItems.filter((lineItem) => !lineItem.packageId);\n salesLineItems = salesLineItems.concat(allPkgLineItems);\n salesLineItems.forEach((item) => {\n const count = quantityMap.get(item.appKey.appId) || 0;\n quantityMap.set(item.appKey.appId, count + (item.quantity || 1));\n });\n return quantityMap;\n }),\n publishReplay(1),\n refCount(),\n );\n }\n\n private salesOrderLineItemsFromPackage(pkg: Package, pkgCount: number): LineItem[] {\n if (!pkg.lineItems || !pkg.lineItems.lineItems || !pkg.lineItems.lineItems.length) {\n return [];\n }\n return pkg.lineItems.lineItems.map(\n (lineItem) =>\n new LineItem({\n appKey: { appId: lineItem.id, editionId: lineItem.editionId },\n quantity: (lineItem.quantity || 1) * pkgCount,\n }),\n );\n }\n\n private getMarketplaceOrderForms(partnerId: string, apps: App[]): Observable {\n if (apps?.length > 0) {\n const appIds: string[] = apps\n .filter((app) => !!app.key && app.activationInformation.orderFormEnabled)\n .map((app) => app.key.appId);\n if (appIds?.length > 0) {\n return this.appsApiService\n .getMultiOrderForms({ partnerId: partnerId, appIds: appIds })\n .pipe(map((resp) => resp.orderFormContainer || []));\n }\n }\n return of([]);\n }\n\n getOrderForms(options: OrderFormOptionsInterface): Observable {\n return combineLatest([\n zip(\n this.mpOrderForms$,\n this.appQuantityMap$,\n this.salesOrderService.uniqueApps$,\n this.salesOrderService.lineItems$,\n ),\n this.salesOrderService.business$,\n ]).pipe(\n map(([[orderForms, appQuantityMap, apps, lineItems], business]) => {\n return apps.reduce((forms, app) => {\n let commonFormRequiredFields: IncludedCommonFormFieldsInterface = {};\n let customFields: OrderFormFieldOptionsType[] = [];\n\n if (app.activationInformation.activationSpecificUrlEnabled) {\n customFields.unshift({\n id: 'custom-entry-url-' + app.key.appId,\n label: this.translateService.instant('FRONTEND.SALES_UI.ORDER_FORM.CUSTOM_ENTRY_URL'),\n type: 'text',\n required: options.showOfficeUseQuestions,\n hidden: !options.showOfficeUseQuestions,\n regexValidator: '^(http://|https://).*',\n regexErrorMessage: this.translateService.instant(\n 'FRONTEND.SALES_UI.ORDER_FORM.CUSTOM_ENTRY_URL_REGEX_ERROR',\n ),\n textboxType: 'text',\n } as TextBoxFieldOptions);\n }\n\n const orderForm = orderForms.find((o) => o.appId === app.key.appId);\n\n if (!!orderForm || app.activationInformation.activationSpecificUrlEnabled) {\n if (\n !!orderForm &&\n orderForm.orderForm &&\n app.activationInformation.orderFormEnabled &&\n !this.isTrialUpgrade(app.key.appId, lineItems, business)\n ) {\n if (orderForm.orderForm.commonFormRequiredFields) {\n commonFormRequiredFields = orderForm.orderForm.commonFormRequiredFields;\n }\n if (orderForm.orderForm.orderForm) {\n customFields = customFields.concat(\n orderForm.orderForm.orderForm.map(\n (f) => ({ ...f, options: f.optionsWithLabels } as OrderFormFieldOptionsType),\n ),\n );\n }\n }\n\n let appId = app.key.appId;\n let addonId = '';\n if (app.parentRequirements.enabled && app.appType === AppType.APP_TYPE_ADDON) {\n appId = app.parentRequirements.parentDetails.key.appId;\n addonId = app.key.appId;\n }\n\n const createdForm: OrderFormInterface = {\n appId: appId,\n addonId: addonId,\n customFields: customFields,\n commonFormRequiredFields: commonFormRequiredFields,\n };\n if (orderForm?.orderForm?.footerText && orderForm.orderForm.footerText.trim() !== '') {\n createdForm.footerText = orderForm.orderForm.footerText;\n }\n forms.push(createdForm);\n\n if (\n !!addonId &&\n app.activationInformation.orderFormEnabled &&\n app.activationInformation.multipleActivationsEnabled &&\n app.activationInformation.separateOrderForms\n ) {\n const count = appQuantityMap.get(app.key.appId) || 1;\n for (let i = 1; i < count; i++) {\n forms.push(createdForm);\n }\n } else if (\n !addonId &&\n app.activationInformation.orderFormEnabled &&\n app.activationInformation.multipleActivationsEnabled\n ) {\n const count = appQuantityMap.get(app.key.appId) || 1;\n for (let i = 1; i < count; i++) {\n forms.push(createdForm);\n }\n }\n }\n\n return forms;\n }, []);\n }),\n );\n }\n\n private isTrialUpgrade(appId: string, lineItems: LineItemInterface[], business: AccountGroup): boolean {\n return !this.isTrialLineItem(lineItems, appId) && business && this.businessHasActiveTrial(business.accounts, appId);\n }\n\n private isTrialLineItem(lineItems: LineItemInterface[], appId: string): boolean {\n if (lineItems) {\n const lineItem = lineItems.find((li) => li.appKey && li.appKey.appId === appId);\n return lineItem && lineItem.isTrial;\n }\n return false;\n }\n\n private businessHasActiveTrial(accounts: Account[], appId: string): boolean {\n if (accounts) {\n const account = accounts.find((a) => a.marketplaceAppId === appId);\n return account && account.isTrial;\n }\n return false;\n }\n\n private getNewCommonData(commonFormData: CommonFormData): Observable {\n return combineLatest([this.salesOrderService.business$, this.salesOrderService.salesperson$]).pipe(\n map(([business, salesperson]) => {\n const user = this.userOptions && this.userOptions.length > 0 ? this.userOptions[0] : null;\n let businessAddress = '';\n if (\n business &&\n business.napData &&\n (business.napData.address || business.napData.city || business.napData.state || business.napData.zip)\n ) {\n const addressItems = [\n business.napData.address,\n business.napData.city,\n business.napData.state,\n business.napData.zip,\n ];\n businessAddress = addressItems.filter((i) => !!i).join(', ');\n }\n return {\n user_options: this.userOptions,\n contact_email:\n !!commonFormData.contact_email && commonFormData.contact_email\n ? commonFormData.contact_email\n : user\n ? user.email\n : '',\n contact_name:\n !!commonFormData.contact_name && commonFormData.contact_name\n ? commonFormData.contact_name\n : user\n ? [user.firstName, user.lastName].filter((i) => !!i).join(' ')\n : '',\n contact_phone_number:\n !!commonFormData.contact_phone_number && commonFormData.contact_phone_number\n ? commonFormData.contact_phone_number\n : user\n ? user.phoneNumber\n : '',\n business_account_group_id:\n !!commonFormData.business_account_group_id && commonFormData.business_account_group_id\n ? commonFormData.business_account_group_id\n : business\n ? business.accountGroupId\n : '',\n business_name:\n !!commonFormData.business_name && commonFormData.business_name\n ? commonFormData.business_name\n : business && business.napData\n ? business.napData.companyName\n : '',\n business_address:\n !!commonFormData.business_address && commonFormData.business_address\n ? commonFormData.business_address\n : businessAddress,\n business_phone_number:\n !!commonFormData.business_phone_number && commonFormData.business_phone_number\n ? commonFormData.business_phone_number\n : business && business.napData && business.napData.workNumber && business.napData.workNumber.length > 0\n ? business.napData.workNumber[0]\n : '',\n business_website:\n !!commonFormData.business_website && commonFormData.business_website\n ? commonFormData.business_website\n : business && business.napData\n ? business.napData.website\n : '',\n salesperson_name:\n !!commonFormData.salesperson_name && commonFormData.salesperson_name\n ? commonFormData.salesperson_name\n : salesperson\n ? [salesperson.firstName, salesperson.lastName].filter((i) => !!i).join(' ')\n : '',\n salesperson_email:\n !!commonFormData.salesperson_email && commonFormData.salesperson_email\n ? commonFormData.salesperson_email\n : salesperson\n ? salesperson.email\n : '',\n salesperson_phone_number:\n !!commonFormData.salesperson_phone_number && commonFormData.salesperson_phone_number\n ? commonFormData.salesperson_phone_number\n : salesperson && salesperson.phoneNumber && salesperson.phoneNumber.length > 0\n ? salesperson.phoneNumber[0]\n : '',\n ...commonFormData,\n };\n }),\n );\n }\n\n getCommonData(): Observable {\n return this.salesOrderService.order$.pipe(\n switchMap((order) => {\n if (order) {\n const commonData: CommonFormData = {};\n (order.commonFields || []).map((cf) => {\n let fieldAnswer = cf.field.answer;\n try {\n fieldAnswer = JSON.parse(fieldAnswer);\n } catch (error) {\n // do nothing\n }\n const fieldId = cf.field.fieldId;\n commonData[fieldId] = fieldAnswer;\n });\n return this.getNewCommonData(commonData);\n }\n return this.getNewCommonData({});\n }),\n );\n }\n\n getProductInfo(): Observable {\n return this.salesOrderService.uniqueApps$.pipe(\n map((apps) => {\n const productInfoMap: Map = new Map();\n apps.map((app) => {\n let productInfo: ProductInfoInterface = {\n productId: 'temporary',\n addonInfo: [],\n };\n if (app.parentRequirements.enabled && app.appType === AppType.APP_TYPE_ADDON) {\n if (productInfoMap.has(app.parentRequirements.parentDetails.key.appId)) {\n productInfo = productInfoMap.get(app.parentRequirements.parentDetails.key.appId);\n }\n productInfo.name = app.parentRequirements.parentDetails.name;\n productInfo.tagline = app.parentRequirements.parentDetails.tagline;\n productInfo.icon = app.parentRequirements.parentDetails.iconUrl;\n productInfo.addonInfo.push({\n addonId: app.key.appId,\n name: app.sharedMarketingInformation.name,\n });\n productInfo.productId = app.parentRequirements.parentDetails.key.appId;\n productInfoMap.set(productInfo.productId, productInfo);\n } else {\n if (productInfoMap.has(app.key.appId)) {\n productInfo = productInfoMap.get(app.key.appId);\n }\n productInfo.name = app.sharedMarketingInformation.name;\n productInfo.tagline = app.sharedMarketingInformation.tagline;\n productInfo.icon = app.sharedMarketingInformation.iconUrl;\n productInfo.productId = app.key.appId;\n productInfoMap.set(productInfo.productId, productInfo);\n }\n });\n return Array.from(productInfoMap.values());\n }),\n );\n }\n\n getAnswers(): Observable {\n return this.salesOrderService.order$.pipe(\n map((order) => {\n if (order) {\n const answers: CustomFieldsAnswers[] = [];\n if (order.customFields) {\n order.customFields.map((c) => {\n let fieldAnswers: CustomFieldsAnswer[] = [];\n if (c.fields) {\n fieldAnswers = c.fields.map((f) => ({ fieldId: f.fieldId, answer: f.answer }));\n }\n answers.push({\n productID: c.productId || (c.addonKey ? c.addonKey.appId : ''),\n addonKey: c.addonKey,\n customFieldsAnswers: fieldAnswers,\n });\n });\n }\n return answers;\n }\n return [];\n }),\n );\n }\n\n getExtraQuestions(): Observable {\n return this.salesOrderService.orderConfig$.pipe(\n map((config) => {\n return !!config && !!config.extraFields\n ? config.extraFields.map((f) => ({ ...f, options: f.optionsWithLabels } as OrderFormFieldOptionsType))\n : [];\n }),\n );\n }\n\n getExtraAnswers(): Observable {\n return this.salesOrderService.order$.pipe(\n map((order) => {\n if (order) {\n return order.extraFields || [];\n }\n return [];\n }),\n );\n }\n\n updateAnswers(commonFormData: CommonField[], customFormData: CustomField[], extraFields: Field[]): Observable {\n return this.salesOrderService.order$.pipe(\n switchMap((order) => {\n return this.salesOrderSdk.updateAnswers(\n order.orderId,\n order.businessId,\n customFormData,\n commonFormData,\n extraFields,\n );\n }),\n );\n }\n\n hasQuestions(orderFormOptions: OrderFormOptionsInterface): Observable {\n return combineLatest([this.getExtraQuestions(), this.getOrderForms(orderFormOptions)]).pipe(\n map(([questions, forms]) => {\n const hasExtraQuestions = questions?.length > 0;\n\n const commonFormHasQuestions = (commonForm?: IncludedCommonFormFieldsInterface) => {\n return (\n commonForm &&\n Object.values(commonForm).some((field) => {\n return typeof field === 'boolean' && field;\n })\n );\n };\n\n const hasQuestions = forms.some((form) => {\n const hasCommonForm = commonFormHasQuestions(form.commonForm);\n const hasCommonFormRequiredFields = commonFormHasQuestions(form.commonFormRequiredFields);\n const hasCustomFields = form.customFields && form.customFields.length > 0;\n return hasCommonForm || hasCommonFormRequiredFields || hasCustomFields;\n });\n return hasQuestions || hasExtraQuestions;\n }),\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport {\n FulfillmentOrder,\n FulfillmentOrderApiService,\n FulfillmentOrderStatus,\n SearchFulfillmentOrderRequest,\n} from '@vendasta/order-fulfillment';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport {\n ListSalesOrderRequestFilters,\n ListSalesOrderRequestSortDirection,\n ListSalesOrderRequestSortField,\n ListSalesOrderRequestSortOption,\n Order,\n SalesOrdersService,\n Status,\n} from '@vendasta/sales-orders';\nimport moment from 'moment';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, filter, map, switchMap, take } from 'rxjs/operators';\nimport { Badge, StatusToBadgeMapping } from '../conversion-utils';\n\ninterface UIOrder {\n orderDetailsUrl$: Observable;\n fulfillmentFormUrl$: Observable;\n salesOrder: Order;\n badge: Badge;\n requestedActivation: string;\n}\ninterface SalesOrderListResponse {\n hasMore: boolean;\n salesOrders: UIOrder[];\n}\n\n@Component({\n selector: 'sales-ui-sales-order-short-list',\n templateUrl: './sales-order-short-list.component.html',\n styleUrls: ['./sales-order-short-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SalesOrderShortListComponent implements OnInit {\n @Input() getOrderDetailsUrl: (orderId: string) => Observable;\n @Input() getFulfillmentFormUrl: (orderId: string) => Observable;\n @Input() ordersPageForBusinessUrl: string;\n @Input() ordersPageForBusinessQuery: Record;\n @Input() partnerId: string;\n @Input() businessId: string;\n @Input() showCreateButton = false;\n @Output() createClicked: EventEmitter = new EventEmitter();\n\n loading = false;\n error = false;\n response$: Observable;\n actionRequiredForFO$: Observable>;\n\n constructor(\n private salesOrdersService: SalesOrdersService,\n private cdk: ChangeDetectorRef,\n private fulfillmentOrderApiService: FulfillmentOrderApiService,\n private analyticsService: ProductAnalyticsService,\n ) {}\n\n ngOnInit(): void {\n this.loading = true;\n this.response$ = this.salesOrdersService\n .list(\n this.partnerId,\n new ListSalesOrderRequestFilters({ businessId: this.businessId }),\n new ListSalesOrderRequestSortOption({\n field: ListSalesOrderRequestSortField.CREATED,\n direction: ListSalesOrderRequestSortDirection.DESCENDING,\n }),\n '',\n 5,\n )\n .pipe(\n take(1),\n map((resp) => {\n this.loading = false;\n return {\n hasMore: resp.hasMore,\n salesOrders: (resp.results || []).map((r) => {\n return {\n orderDetailsUrl$: this.getOrderDetailsUrl(r.orderId),\n fulfillmentFormUrl$: this.getFulfillmentFormUrl(r.orderId),\n salesOrder: r,\n badge: StatusToBadgeMapping.get(r.status) || StatusToBadgeMapping.get(Status.SUBMITTED),\n requestedActivation: moment(r.requestedActivation).format('ll'),\n } as UIOrder;\n }),\n };\n }),\n catchError((e) => {\n this.loading = false;\n this.error = true;\n this.cdk.detectChanges();\n return throwError(e);\n }),\n );\n this.actionRequiredForFO$ = this.response$.pipe(\n filter((response) => response?.salesOrders?.length > 0),\n take(1),\n switchMap((response) => {\n return this.fulfillmentOrderApiService.searchFulfillmentOrder(\n new SearchFulfillmentOrderRequest({\n pageSize: 20,\n cursor: '',\n salesOrderIds: response.salesOrders.map((x) => x.salesOrder.orderId),\n businessIds: [this.businessId],\n }),\n );\n }),\n map((response) => {\n if (response?.fulfillmentOrders?.length > 0) {\n this.analyticsService.trackEvent(\n 'account-details-work-order-banner-present',\n 'tm',\n 'account-details-work-order-banner-present',\n );\n return SalesOrderShortListComponent.createActionRequiredMapFromFulfillmentOrders(response.fulfillmentOrders);\n }\n return new Map();\n }),\n );\n }\n\n static createActionRequiredMapFromFulfillmentOrders(fulfillmentOrders: FulfillmentOrder[]): Map {\n const result = new Map();\n fulfillmentOrders?.forEach((fo) => {\n // if it already found a Fulfillment Order in Details Needed Status for a specific sales order, do not overwrite\n if (!result.get(fo.salesOrderId)) {\n result.set(fo.salesOrderId, fo.status === FulfillmentOrderStatus.FULFILLMENT_ORDER_STATUS_DETAILS_NEEDED);\n }\n });\n return result;\n }\n\n create(): void {\n this.createClicked.emit(true);\n }\n}\n","\n \n \n {{ 'FRONTEND.SALES_UI.ORDERS' | translate }}\n \n \n \n \n \n \n
\n \n
\n
\n
\n \n \n 0; else noneFound\">\n \n \n \n
\n
\n
\n \n {{ uiOrder.salesOrder.orderId }}\n \n

\n {{\n 'FRONTEND.SALES_UI.CONTRACT_START_DATE' | translate : { startDate: uiOrder.requestedActivation }\n }}\n

\n
\n \n {{ uiOrder.badge.text | translate }}\n \n
\n \n {{ 'FRONTEND.SALES_UI.FULFILLMENT_BANNER_TEXT' | translate }}\n \n
\n \n
\n
\n \n \n {{ 'FRONTEND.SALES_UI.VIEW_ALL' | translate }}\n \n \n
\n
\n
\n
\n\n\n \n \n \n assignment\n \n

{{ 'FRONTEND.SALES_UI.NO_ORDERS' | translate }}

\n
\n
\n
\n\n\n \n \n \n error\n \n

{{ 'FRONTEND.SALES_UI.ERROR_RETRIEVING_ORDERS' | translate }}

\n
\n
\n
\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { RouterModule } from '@angular/router';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { VaIconModule } from '@vendasta/uikit';\nimport baseTranslation from '../../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../../shared/constants';\nimport { SalesOrderShortListComponent } from './sales-order-short-list.component';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\n\n@NgModule({\n declarations: [SalesOrderShortListComponent],\n exports: [SalesOrderShortListComponent],\n imports: [\n CommonModule,\n MatButtonModule,\n MatListModule,\n VaIconModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: WEBLATE_COMPONENT_NAME,\n baseTranslation: baseTranslation,\n }),\n MatIconModule,\n MatProgressSpinnerModule,\n MatCardModule,\n GalaxyEmptyStateModule,\n GalaxyAlertModule,\n RouterModule,\n GalaxyBadgeModule,\n ],\n})\nexport class SalesOrderShortListModule {}\n","import { ChangeDetectorRef, Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { IAMService, SortDirection, User, UserSortField } from '@vendasta/iam';\nimport { BehaviorSubject } from 'rxjs';\nimport { debounceTime, map, switchMap, take, withLatestFrom } from 'rxjs/operators';\n\n// SelectedSalesperson is needed to distinguish between the user clicking cancel to close the modal and\n// them unselecting the salesperson\nexport interface SelectedSalesperson {\n salesperson: User;\n}\n\n@Component({\n selector: 'sales-ui-salesperson-selector-dialog',\n templateUrl: './salesperson-selector-dialog.component.html',\n styleUrls: ['./salesperson-selector-dialog.component.scss'],\n})\nexport class SalespersonSelectorDialogComponent implements OnInit {\n selectedSalesperson: User;\n salespersonOptions$$ = new BehaviorSubject([]);\n cursor = '';\n pageSize = 25;\n hasMore = true;\n searchCtrl = new UntypedFormControl('');\n searchTerm$$ = new BehaviorSubject('');\n loadMore$$ = new BehaviorSubject(null);\n partnerId: string;\n loading: boolean;\n\n @ViewChild('chipInput') chipInput: ElementRef;\n\n constructor(\n private readonly userLookupService: IAMService,\n @Inject(MAT_DIALOG_DATA) public data: { partnerId: string; previouslySelectedUser: string },\n private dialogRef: MatDialogRef,\n private readonly cdr: ChangeDetectorRef,\n ) {\n this.partnerId = data.partnerId;\n }\n\n ngOnInit(): void {\n if (this.data?.previouslySelectedUser) {\n this.userLookupService\n .getMultiUsers([{ userId: this.data.previouslySelectedUser }])\n .pipe(take(1))\n .subscribe((user) => {\n if (!!user && user.length == 1) {\n this.selectedSalesperson = user[0];\n }\n });\n }\n this.searchCtrl.valueChanges.pipe(map((searchTerm) => searchTerm ?? '')).subscribe((searchTerm) => {\n this.cursor = '';\n this.hasMore = true;\n this.searchTerm$$.next(searchTerm);\n });\n this.searchTerm$$\n .pipe(\n debounceTime(200),\n switchMap((searchTerm) => {\n this.loading = true;\n this.cdr.detectChanges();\n\n return this.userLookupService.listUsers(\n this.partnerId,\n null,\n this.cursor,\n this.pageSize,\n ['sales_person'],\n [searchTerm],\n [\n {\n direction: SortDirection.SORT_DIRECTION_ASCENDING,\n field: UserSortField.USER_SORT_FIELD_FIRST_NAME,\n },\n {\n direction: SortDirection.SORT_DIRECTION_ASCENDING,\n field: UserSortField.USER_SORT_FIELD_LAST_NAME,\n },\n ],\n );\n }),\n )\n .subscribe((resp) => this.updateSalespersonOptions([], resp.users, resp.nextCursor, resp.hasMore));\n this.loadMore$$\n .pipe(\n withLatestFrom(this.searchTerm$$),\n switchMap(([, searchTerm]) => {\n this.loading = true;\n this.cdr.detectChanges();\n return this.userLookupService.listUsers(\n this.partnerId,\n null,\n this.cursor,\n this.pageSize,\n ['sales_person'],\n [searchTerm],\n [\n {\n direction: SortDirection.SORT_DIRECTION_ASCENDING,\n field: UserSortField.USER_SORT_FIELD_FIRST_NAME,\n },\n {\n direction: SortDirection.SORT_DIRECTION_ASCENDING,\n field: UserSortField.USER_SORT_FIELD_LAST_NAME,\n },\n ],\n );\n }),\n withLatestFrom(this.salespersonOptions$$),\n )\n .subscribe(([resp, currentSalespersonOptions]) =>\n this.updateSalespersonOptions(currentSalespersonOptions, resp.users, resp.nextCursor, resp.hasMore),\n );\n\n this.salespersonOptions$$.next([]);\n }\n\n selectSalesperson(event: MatAutocompleteSelectedEvent): void {\n this.selectedSalesperson = event?.option?.value as User;\n this.chipInput.nativeElement.value = '';\n this.searchCtrl.setValue('');\n }\n\n unselectSalesperson(): void {\n this.selectedSalesperson = null;\n }\n\n loadMore(): void {\n if (!this.hasMore) {\n return;\n }\n\n this.loadMore$$.next(null);\n }\n\n updateSalespersonOptions(\n currentSalespersonOptions: User[],\n newSalespersonOptions: User[],\n nextCursor: string,\n hasMore: boolean,\n ): void {\n this.salespersonOptions$$.next(currentSalespersonOptions.concat(newSalespersonOptions));\n this.cursor = nextCursor;\n this.hasMore = hasMore;\n this.loading = false;\n this.cdr.detectChanges();\n }\n\n select() {\n this.dialogRef.close({ salesperson: this.selectedSalesperson });\n }\n}\n","
\n

{{ 'FRONTEND.SALES_UI.SELECT_SALESPERSON' | translate }}

\n \n \n \n \n {{ 'FRONTEND.SALES_UI.SELECT_SALESPERSON' | translate }}\n \n \n {{ selectedSalesperson?.firstName }} {{ selectedSalesperson?.lastName }}\n \n \n \n \n \n \n \n
{{ user?.firstName }} {{ user?.lastName }}
\n
\n \n
\n {{ 'FRONTEND.SALES_UI.MAX_ONE_SALESPERSON' | translate }}\n
\n
\n
\n
\n \n \n \n \n
\n","import { InjectionToken } from '@angular/core';\nimport { OrdersRow } from '../interface';\n\nexport const ORDER_LINK = new InjectionToken<(order: OrdersRow) => string>('SALES_ORDERS_TABLE_ORDER_LINK', {\n providedIn: 'root',\n factory: () => (order: OrdersRow) => `/order-management/${order.businessId}/info/${order.orderId}`,\n});\n","import { Directive, EventEmitter, Input } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ColumnDefinition, CustomCellComponent } from '@vendasta/va-filter2-table';\nimport { OrdersRow } from '../interface';\n\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: '[salesOrderTableCustomComponentSelector]' })\nexport class SalesOrderTableCustomComponentDirective implements CustomCellComponent {\n @Input() columnDefinition: ColumnDefinition;\n @Input() translateService: TranslateService;\n @Input() element: OrdersRow;\n @Input() eventEmitter: EventEmitter;\n}\n","import { Observable } from 'rxjs';\nimport { InjectionToken } from '@angular/core';\n\nexport interface AccessService {\n canModifyCustomFields$?: Observable;\n}\n\nexport const SALES_ORDERS_ACCESS_SERVICE_TOKEN = new InjectionToken(\n 'App-specific access service for the sales orders table',\n);\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n inject,\n Optional,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { SalesOrdersService, Status } from '@vendasta/sales-orders';\nimport { Observable, of } from 'rxjs';\nimport { finalize, map, switchMap, take } from 'rxjs/operators';\nimport { SalespersonSelectorDialogComponent } from '../../salesperson-selector-dialog/salesperson-selector-dialog.component';\nimport { ORDER_LINK } from './order-link';\nimport { SalesOrderTableCustomComponentDirective } from './sales-order-table-custom.component';\nimport { SALES_ORDERS_ACCESS_SERVICE_TOKEN } from '../sales-orders-table-access.service';\n\n@Component({\n selector: 'sales-ui-order-id-cell',\n template: `\n
\n \n \n \n \n {{ 'FRONTEND.SALES_UI.ARCHIVE' | translate }}\n \n \n \n {{ 'FRONTEND.SALES_UI.CANCEL' | translate }}\n \n \n \n @if (canEditCustomFields$ | async) {\n \n {{ 'FRONTEND.SALES_UI.EDIT_CUSTOM_FIELDS' | translate }}\n \n }\n \n \n \n \n \n
\n `,\n styles: [\n `\n .sales-order-actions-cell {\n text-align: center;\n }\n\n .sales-order-actions-cell .mat-mdc-icon-button {\n height: 30px !important;\n width: 30px !important;\n line-height: 30px !important;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AdminOrderActionsCellComponent extends SalesOrderTableCustomComponentDirective {\n protected readonly status = Status;\n protected loading = false;\n private readonly orderLink = inject(ORDER_LINK);\n protected readonly canEditCustomFields$: Observable;\n\n constructor(\n private readonly salesOrdersService: SalesOrdersService,\n private readonly alertService: SnackbarService,\n private readonly cdk: ChangeDetectorRef,\n private readonly dialog: MatDialog,\n private readonly router: Router,\n @Optional() @Inject(SALES_ORDERS_ACCESS_SERVICE_TOKEN) private readonly accessService,\n ) {\n super();\n this.canEditCustomFields$ = this.accessService?.canModifyCustomFields$\n ? this.accessService.canModifyCustomFields$\n : of(false);\n }\n\n protected archive(): void {\n this.loading = true;\n this.salesOrdersService\n .archive(this.element.businessId, this.element.orderId)\n .pipe(\n take(1),\n finalize(() => {\n this.loading = false;\n this.cdk.detectChanges();\n }),\n )\n .subscribe({\n next: () => {\n this.element.status = Status.ARCHIVED;\n },\n error: () => {\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.ERRORS.ERROR_ARCHIVING');\n },\n });\n }\n\n protected cancel(): void {\n this.loading = true;\n this.salesOrdersService\n .approveCancellation(this.element.orderId, this.element.businessId)\n .pipe(\n take(1),\n finalize(() => {\n this.loading = false;\n this.cdk.detectChanges();\n }),\n )\n .subscribe({\n next: () => {\n this.element.status = Status.CANCELLED;\n },\n error: () => {\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.ERRORS.ERROR_CANCELLING');\n },\n });\n }\n\n protected ignoreErrors(): void {\n this.loading = true;\n this.salesOrdersService\n .ignoreAllProductActivationErrors(this.element.orderId, this.element.businessId)\n .pipe(\n take(1),\n finalize(() => {\n this.loading = false;\n this.cdk.detectChanges();\n }),\n )\n .subscribe({\n next: () => {\n this.element.status = Status.FULFILLED;\n },\n error: () => {\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.ERRORS.ERROR_IGNORING_ERRORS');\n },\n });\n }\n\n protected duplicateOrder(): void {\n this.loading = true;\n this.salesOrdersService\n .duplicate(this.element.orderId, this.element.businessId)\n .pipe(\n take(1),\n map((orderId) => {\n const orderRow = this.element;\n orderRow.orderId = orderId;\n const url = this.orderLink(orderRow);\n this.router.navigate([url]);\n }),\n finalize(() => {\n this.loading = false;\n this.cdk.detectChanges();\n }),\n )\n .subscribe();\n }\n\n protected changeSalesperson(): void {\n const dialogRef = this.dialog.open(SalespersonSelectorDialogComponent, {\n data: {\n partnerId: this.element.partnerId,\n previouslySelectedUser: this.element.salespersonId,\n },\n width: '600px',\n });\n dialogRef\n .afterClosed()\n .pipe(\n switchMap((selectedSalesperson) => {\n this.loading = true;\n this.cdk.detectChanges();\n if (selectedSalesperson) {\n return this.salesOrdersService\n .updateSalesperson(\n this.element.orderId,\n this.element.businessId,\n selectedSalesperson?.salesperson?.userId,\n )\n .pipe(map(() => selectedSalesperson));\n }\n return of(null);\n }),\n )\n .subscribe({\n next: (selectedSalesperson) => {\n if (selectedSalesperson) {\n this.element.salesperson = {\n firstName: selectedSalesperson?.salesperson?.firstName,\n lastName: selectedSalesperson?.salesperson?.lastName,\n email: selectedSalesperson?.salesperson?.email,\n // There is no phone number on the selectedSalesperson and it's not used in this table anyway but this\n // key needs to be here to fulfill the object interface\n phoneNumber: '',\n };\n }\n this.element.salespersonId = selectedSalesperson?.salesperson?.userId;\n this.loading = false;\n this.cdk.detectChanges();\n },\n error: (err) => {\n console.error(err);\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.ERRORS.ERROR_UPDATING_SALESPERSON');\n this.loading = false;\n this.cdk.detectChanges();\n },\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, inject, InjectionToken, OnInit } from '@angular/core';\nimport { AddressService } from '@vendasta/businesses';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { Business, OrdersRow } from '../interface';\nimport { SalesOrderTableCustomComponentDirective } from './sales-order-table-custom.component';\n\nexport const BUSINESS_LINK = new InjectionToken<(order: OrdersRow) => string>('SALES_ORDERS_TABLE_BUSINESS_LINK_URL', {\n providedIn: 'root',\n factory: () => (order: OrdersRow) => `/businesses/accounts/${order.businessId}/details`,\n});\n\n@Component({\n selector: 'sales-ui-business-info-cell',\n template: `\n \n
\n
\n {{ business.companyName }}\n
\n
\n
{{ address$ | async }}
\n \n {{ business.companyName }}\n \n
\n `,\n styles: [\n `\n :host {\n display: flex;\n flex-direction: column;\n min-width: 0;\n max-width: 100%;\n }\n\n .title {\n font-size: 14px;\n font-weight: 500;\n }\n\n .subtitle {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 14px;\n color: rgba(0, 0, 0, 0.54);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BusinessInfoCellComponent extends SalesOrderTableCustomComponentDirective implements OnInit {\n business: Business;\n address$: Observable;\n address$$: BehaviorSubject = new BehaviorSubject('');\n\n businessLink = inject(BUSINESS_LINK);\n\n constructor(private addressService: AddressService) {\n super();\n }\n\n ngOnInit(): void {\n this.business = this.element.business;\n if (this.business) {\n this.address$ = this.addressService\n .shortAddress$({\n address1: this.element.business.address,\n address2: this.element.business.address2,\n city: this.element.business.city,\n province: this.element.business.state,\n zip: this.element.business.zip,\n country: this.element.business.country,\n })\n .pipe(\n tap((address) => {\n this.address$$.next(address);\n }),\n );\n }\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ColumnDefinition, CellValueService } from '@vendasta/va-filter2-table';\nimport moment from 'moment';\n\n@Component({\n selector: 'sales-ui-date-cell',\n template: `\n \n {{ momentFormatDate(value, 'ddd MMM D YYYY') }}\n \n `,\n})\nexport class DateCellComponent implements OnInit {\n @Input() columnDefinition: ColumnDefinition;\n\n @Input() element: T;\n\n value: any;\n\n constructor(private readonly cellValueService: CellValueService) {}\n\n ngOnInit(): void {\n this.value = this.cellValueService.getCellValue(\n this.columnDefinition.id,\n this.columnDefinition.field,\n this.element,\n );\n }\n\n momentFormatDate(date: Date, format: string): string {\n return moment(date).format(format);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport moment from 'moment';\nimport { SalesOrderTableCustomComponentDirective } from './sales-order-table-custom.component';\n\n@Component({\n selector: 'sales-ui-date-cell',\n template: `\n \n {{ fromNow }}\n \n \n {{ 'FRONTEND.SALES_UI.EXPIRED' | translate }}\n \n `,\n})\nexport class ExpiryCellComponent extends SalesOrderTableCustomComponentDirective implements OnInit {\n expiryDate: Date;\n fromNow: string;\n showDate = false;\n showExpired = false;\n\n ngOnInit(): void {\n if (this.element?.expiryDate) {\n const expiryMoment = moment(this.element?.expiryDate);\n this.expiryDate = expiryMoment.toDate();\n if (expiryMoment.isBefore(moment())) {\n this.showExpired = true;\n } else {\n this.fromNow = expiryMoment.fromNow();\n this.showDate = true;\n }\n }\n }\n\n momentFormatDate(date: Date, format: string): string {\n return moment(date).format(format);\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { ORDER_LINK } from './order-link';\nimport { SalesOrderTableCustomComponentDirective } from './sales-order-table-custom.component';\n\n@Component({\n selector: 'sales-ui-order-id-cell',\n template: '{{ element.orderId}}',\n styles: [\n `\n .title {\n font-size: 14px;\n font-weight: 500;\n }\n `,\n ],\n})\nexport class OrderIdCellComponent extends SalesOrderTableCustomComponentDirective {\n orderLink = inject(ORDER_LINK);\n}\n","import { Component, OnInit } from '@angular/core';\nimport { SalesOrderTableCustomComponentDirective } from './sales-order-table-custom.component';\n\n@Component({\n selector: 'sales-ui-order-tags-cell',\n template: `\n
\n
\n {{ tag }}\n
\n
\n `,\n styles: [\n `\n .tags {\n display: flex;\n }\n .tag {\n margin: 2px;\n }\n `,\n ],\n})\nexport class OrderTagsCellComponent extends SalesOrderTableCustomComponentDirective implements OnInit {\n tags: string[];\n\n ngOnInit(): void {\n this.tags = this.element.tags || [];\n }\n}\n","import { Component, inject, InjectionToken } from '@angular/core';\nimport { OrdersRow } from '../../..';\nimport { SalesOrderTableCustomComponentDirective } from './sales-order-table-custom.component';\n\nexport const SALESPERSON_LINK = new InjectionToken<(orderId: OrdersRow) => string>(\n 'SALES_ORDERS_TABLE_SALESPERSON_LINK',\n {\n providedIn: 'root',\n factory: () => () => '/st/edit/',\n },\n);\n\nexport const SALESPERSON_LINK_QUERY = new InjectionToken<(orderId: OrdersRow) => Record>(\n 'SALES_ORDERS_TABLE_SALESPERSON_LINK_QUERY',\n {\n providedIn: 'root',\n factory: () => (order: OrdersRow) => ({ sales_person_id: order.salespersonId }),\n },\n);\n\n@Component({\n selector: 'sales-ui-salesperson-cell',\n template: `\n \n \n
{{ getSalespersonEmail() }}
\n
\n `,\n styles: [\n `\n :host {\n display: flex;\n flex-direction: column;\n min-width: 0;\n max-width: 100%;\n }\n\n .title {\n font-size: 14px;\n font-weight: 500;\n }\n\n .subtitle {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 14px;\n color: rgba(0, 0, 0, 0.54);\n }\n `,\n ],\n})\nexport class SalespersonCellComponent extends SalesOrderTableCustomComponentDirective {\n salespersonLink = inject(SALESPERSON_LINK);\n salespersonLinkQuery = inject(SALESPERSON_LINK_QUERY);\n\n getSalespersonName(): string {\n if (!!this.element.salesperson?.firstName || !!this.element.salesperson?.lastName) {\n return this.element.salesperson?.firstName + ' ' + this.element.salesperson?.lastName;\n }\n return '';\n }\n\n getSalespersonEmail(): string {\n return this.element.salesperson?.email;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n inject,\n Optional,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { SalesOrdersService, Status } from '@vendasta/sales-orders';\nimport { finalize, map, take } from 'rxjs/operators';\nimport { ORDER_LINK } from './order-link';\nimport { SalesOrderTableCustomComponentDirective } from './sales-order-table-custom.component';\nimport { Observable, of } from 'rxjs';\nimport { SALES_ORDERS_ACCESS_SERVICE_TOKEN } from '../sales-orders-table-access.service';\n\n@Component({\n selector: 'sales-ui-order-id-cell',\n template: `\n
\n \n \n \n \n @if (canEditCustomFields$ | async) {\n \n {{ 'FRONTEND.SALES_UI.EDIT_CUSTOM_FIELDS' | translate }}\n \n }\n \n \n \n \n \n
\n `,\n styles: [\n `\n .sales-order-actions-cell {\n text-align: center;\n }\n\n .sales-order-actions-cell .mat-mdc-icon-button {\n height: 30px !important;\n width: 30px !important;\n line-height: 30px !important;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SalespersonOrderActionsCellComponent extends SalesOrderTableCustomComponentDirective {\n protected readonly status = Status;\n protected loading = false;\n private readonly orderLink = inject(ORDER_LINK);\n protected readonly canEditCustomFields$: Observable;\n\n constructor(\n private salesOrdersService: SalesOrdersService,\n private cdk: ChangeDetectorRef,\n private readonly router: Router,\n @Optional() @Inject(SALES_ORDERS_ACCESS_SERVICE_TOKEN) private readonly accessService,\n ) {\n super();\n this.canEditCustomFields$ = this.accessService?.canModifyCustomFields$\n ? this.accessService.canModifyCustomFields$\n : of(false);\n }\n\n protected duplicateOrder(): void {\n this.loading = true;\n this.salesOrdersService\n .duplicate(this.element.orderId, this.element.businessId)\n .pipe(\n take(1),\n map((orderId) => {\n const orderRow = this.element;\n orderRow.orderId = orderId;\n const url = this.orderLink(orderRow);\n this.router.navigate([url]);\n }),\n finalize(() => {\n this.loading = false;\n this.cdk.detectChanges();\n }),\n )\n .subscribe();\n }\n}\n","import { Component } from '@angular/core';\nimport { Status } from '@vendasta/sales-orders';\nimport { SalesOrderTableCustomComponentDirective } from './sales-order-table-custom.component';\n\n@Component({\n selector: 'sales-ui-status-cell',\n template: '{{\"FRONTEND.SALES_UI.\" + getStatusName() | translate}}',\n})\nexport class StatusCellComponent extends SalesOrderTableCustomComponentDirective {\n status = Status;\n\n getStatusName(): string {\n const statusName = this.status[this.element.status];\n\n if (statusName) {\n return statusName;\n }\n\n return 'PENDING';\n }\n}\n","import { FulfillmentOrderStatus, Status } from '@vendasta/sales-orders';\nimport { FilterGroup, SelectFilterControl } from '@vendasta/va-filter2';\nimport { ExportToCSVRequest, ExportToCSVService, LoadRequest, TableDataService } from '@vendasta/va-filter2-table';\nimport { Observable } from 'rxjs';\n\nexport interface SalesOrdersTableOptions {\n forcedFilters?: ForcedFilterOptions;\n exportOptions?: RequestedExportType;\n}\n\nexport enum RequestedExportType {\n Buyer,\n Sales,\n Partner,\n}\n\n// Any value will always be filtered on and the associated selector will be hidden\nexport interface ForcedFilterOptions {\n marketIds?: string[];\n salespersonId?: string;\n businessId?: string;\n}\n\nexport const SALES_ORDERS_TABLE_FACTORY_PARAM_TOKEN = 'SALES_ORDERS_TABLE_FACTORY_PARAM_TOKEN';\nexport interface SalesOrdersTableFactoryParams {\n showActions: boolean;\n isCustomerTable: boolean;\n isSalesTable: boolean;\n}\n\nexport interface OrdersRow {\n orderId: string;\n salespersonId: string;\n salesperson: SalesOrderSalesperson;\n partnerId: string;\n businessId: string;\n marketId: string;\n status: Status;\n requestedActivation: Date;\n created: Date;\n tags: string[];\n business: Business;\n contractDurationInMonths?: number;\n expiryDate?: Date;\n fulfillmentOrderStatus?: FulfillmentOrderStatus;\n hasFulfillment?: boolean;\n}\n\nexport interface Business {\n companyName: string;\n address: string;\n address2: string;\n city: string;\n country: string;\n state: string;\n zip: string;\n phoneNumber: string;\n website: string;\n deleted: boolean;\n}\n\nexport interface Market {\n name: string;\n marketId: string;\n}\n\nexport interface Salesperson {\n salespersonId: string;\n name: string;\n firstName: string;\n lastName: string;\n email: string;\n phoneNumber: string;\n}\n\nexport interface SalesOrderSalesperson {\n firstName: string;\n lastName: string;\n email: string;\n phoneNumber: string;\n}\n\nexport interface Salesteam {\n id: string;\n teamName: string;\n}\n\nexport enum exportDataFormatModalOption {\n ORDERS_PER_ROW = 'orders-per-row',\n PRODUCTS_PER_ROW = 'products-per-row',\n}\n\nexport abstract class BaseSalesOrdersTableFilterService {\n filters: FilterGroup;\n marketFilterControl?: SelectFilterControl;\n packageFilterSectionName?: string;\n\n abstract initialize(forcedFilterOptions: ForcedFilterOptions, canAccessSalesTeams?: boolean): void;\n}\n\nexport abstract class BaseSalesOrdersTableService implements TableDataService {\n totalResults$: Observable;\n stats$?: Observable<{ [key: string]: number }>;\n presetViews?: string;\n\n abstract load(request: LoadRequest): Observable;\n abstract initialize(forcedFilterOptions: ForcedFilterOptions): void;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport abstract class BaseSalesOrdersExportAllService implements ExportToCSVService {\n abstract exportAllRowsToCSV(request: ExportToCSVRequest, option?: string): void;\n abstract initialize(forcedFilterOptions: ForcedFilterOptions, exportOptions: RequestedExportType): void;\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { SalesTeamService } from '@vendasta/sales';\nimport {\n CustomerSalesOrdersService,\n InitiateOrderExportRequest,\n InitiateOrderExportRequestDataFormatOption,\n InitiateOrderExportRequestFilters,\n InitiateOrderExportRequestFiltersInterface,\n InitiateOrderExportRequestSortDirection,\n InitiateOrderExportRequestSortField,\n InitiateOrderExportRequestSortOption,\n InitiateOrderExportRequestSortOptionInterface,\n Status,\n} from '@vendasta/sales-orders';\nimport { ExportToCSVRequest, SortDirection, SortSetting } from '@vendasta/va-filter2-table';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\nimport { PARTNER_ID_TOKEN } from '../external-dependencies/provider-tokens';\nimport {\n BaseSalesOrdersExportAllService,\n ForcedFilterOptions,\n RequestedExportType,\n exportDataFormatModalOption,\n} from './interface';\n\n@Injectable()\nexport class SalesOrdersExportAllService implements BaseSalesOrdersExportAllService {\n // forced filters apply when the end user is only able to view certain data (salesperson, smb has different context than partner)\n private forcedFilterOptions: ForcedFilterOptions;\n private exportOptions: RequestedExportType;\n\n constructor(\n private readonly salesOrderService: CustomerSalesOrdersService,\n @Inject(PARTNER_ID_TOKEN) private readonly partnerId$: Observable,\n private readonly salesTeamService: SalesTeamService,\n private readonly alertService: SnackbarService,\n ) {}\n\n static convertSortOptions(sort: SortSetting[]): InitiateOrderExportRequestSortOption | null {\n let s: InitiateOrderExportRequestSortOptionInterface = null;\n if (!!sort && sort.length > 0) {\n s = {};\n s.direction =\n sort[0].direction === SortDirection.SORT_DIRECTION_ASCENDING\n ? InitiateOrderExportRequestSortDirection.ASCENDING\n : InitiateOrderExportRequestSortDirection.DESCENDING;\n switch (sort[0].field) {\n case 'status':\n s.field = InitiateOrderExportRequestSortField.STATUS;\n break;\n case 'requestedActivation':\n s.field = InitiateOrderExportRequestSortField.REQUESTED_ACTIVATION;\n break;\n case 'created':\n s.field = InitiateOrderExportRequestSortField.CREATED;\n break;\n case 'expiry':\n s.field = InitiateOrderExportRequestSortField.EXPIRY_DATE;\n break;\n default:\n s = null;\n }\n }\n if (s) {\n return new InitiateOrderExportRequestSortOption(s);\n }\n return null;\n }\n\n static convertFilters(\n filters: any,\n filteredTeamSalesPersonIds: string[],\n forcedMarkets?: string[],\n forcedSalesperson?: string,\n forcedBusinessId?: string,\n ): InitiateOrderExportRequestFilters | null {\n const f: InitiateOrderExportRequestFiltersInterface = {};\n f.statuses = [];\n f.created = {};\n f.requestedActivation = {};\n f.expiryDate = {};\n\n // status filters\n if (filters.controls['activated'].value) {\n f.statuses.push(Status.FULFILLED);\n }\n if (filters.controls['activation-errors'].value) {\n f.statuses.push(Status.ACTIVATION_ERRORS);\n }\n if (filters.controls['approved'].value) {\n f.statuses.push(Status.APPROVED);\n }\n if (filters.controls['archived'].value) {\n f.statuses.push(Status.ARCHIVED);\n }\n if (filters.controls['awaiting-customer-approval'].value) {\n f.statuses.push(Status.SUBMITTED_FOR_CUSTOMER_APPROVAL);\n }\n if (filters.controls['declined'].value) {\n f.statuses.push(Status.DECLINED);\n }\n if (filters.controls['pending'].value) {\n f.statuses.push(Status.SUBMITTED);\n }\n if (filters.controls['processing'].value) {\n f.statuses.push(Status.PROCESSING);\n }\n if (filters.controls['drafted'].value) {\n f.statuses.push(Status.DRAFTED);\n }\n if (filters.controls['cancellation-requested'].value) {\n f.statuses.push(Status.CANCELLATION_REQUESTED);\n }\n if (filters.controls['cancelled'].value) {\n f.statuses.push(Status.CANCELLED);\n }\n if (filters.controls['scheduled-activation'].value) {\n f.statuses.push(Status.SCHEDULED_ACTIVATION);\n }\n\n // date filters\n if (filters.controls['submittedDateFromControl'].value) {\n f.created.beginRange = filters.controls['submittedDateFromControl'].value;\n }\n if (filters.controls['submittedDateToControl'].value) {\n f.created.endRange = filters.controls['submittedDateToControl'].value;\n }\n\n if (filters.controls['contractStartFrom'].value) {\n f.requestedActivation.beginRange = filters.controls['contractStartFrom'].value;\n }\n if (filters.controls['contractStartToControl'].value) {\n f.requestedActivation.endRange = filters.controls['contractStartToControl'].value;\n }\n\n if (filters.controls['expiryDateFrom'].value) {\n f.expiryDate.beginRange = filters.controls['expiryDateFrom'].value;\n }\n if (filters.controls['expiryDateTo'].value) {\n f.expiryDate.endRange = filters.controls['expiryDateTo'].value;\n }\n\n // other filters\n if (filters.controls['tag'].value) {\n f.tags = [filters.controls['tag'].value];\n }\n if (filters.controls['untagged'].value) {\n f.untagged = true;\n }\n if (filters.controls['orderId'].value) {\n f.orderId = filters.controls['orderId'].value;\n }\n\n if (filters.controls['package']?.value) {\n f.packageIds = [filters.controls['package'].value.packageId];\n }\n\n // forced filters; based on which client the table is being viewed\n if (forcedMarkets) {\n // Salesperson view has a forced market filter\n f.marketIds = forcedMarkets;\n } else if (filters.controls['market'].value) {\n f.marketIds = [filters.controls['market'].value.marketId];\n }\n\n if (forcedBusinessId) {\n // SMB view has a forced business filter\n f.businessIds = [forcedBusinessId];\n } else if (filters.controls['businessId'].value) {\n f.businessIds = [filters.controls['businessId'].value];\n }\n\n if (forcedSalesperson) {\n // Some Salesperson views have access to more than the current Salesperson\n f.salespersonIds = [forcedSalesperson];\n } else if (filters.controls['salesPeople'].value) {\n const salespersonId = filters.controls['salesPeople'].value.salespersonId;\n // currently uses the selected sales team to append additional salesperson IDs from what may have been selected\n f.salespersonIds = filteredTeamSalesPersonIds.includes(salespersonId)\n ? filteredTeamSalesPersonIds\n : [...filteredTeamSalesPersonIds, salespersonId];\n } else if (filters.controls['salesTeam'].value) {\n f.salespersonIds = filteredTeamSalesPersonIds.length === 0 ? [] : filteredTeamSalesPersonIds;\n }\n\n if (f) {\n return new InitiateOrderExportRequestFilters(f);\n }\n return null;\n }\n\n // initializes the service with forced filters based on which client is viewing the table\n // eg. SMBs in Business Center have a forced filter for businessId\n // Salespeople in Sales Center have a forced filter for marketId\n initialize(forcedFilterOptions: ForcedFilterOptions, exportOptions: RequestedExportType): void {\n this.forcedFilterOptions = forcedFilterOptions;\n this.exportOptions = exportOptions;\n }\n\n // Gets the export data format based on:\n // 1. User selection from the download modal\n // 2. Which user type has made the request, based on the forced filter specified\n // Eg. Business Center and Sales Center Users have different access to which data/columns should be displayed in the file\n getSelectedDataFormat(fileFormatSelected: string): InitiateOrderExportRequestDataFormatOption {\n let selectedDataFormat = InitiateOrderExportRequestDataFormatOption.ORDERS_PER_ROW;\n if (fileFormatSelected === exportDataFormatModalOption.PRODUCTS_PER_ROW) {\n selectedDataFormat = InitiateOrderExportRequestDataFormatOption.PRODUCTS_PER_ROW;\n }\n\n if (this.exportOptions === RequestedExportType.Buyer) {\n if (fileFormatSelected === exportDataFormatModalOption.PRODUCTS_PER_ROW) {\n selectedDataFormat = InitiateOrderExportRequestDataFormatOption.PRODUCTS_PER_ROW_BUYER;\n } else {\n selectedDataFormat = InitiateOrderExportRequestDataFormatOption.ORDERS_PER_ROW_BUYER;\n }\n } else if (this.exportOptions === RequestedExportType.Sales) {\n if (fileFormatSelected === exportDataFormatModalOption.PRODUCTS_PER_ROW) {\n selectedDataFormat = InitiateOrderExportRequestDataFormatOption.PRODUCTS_PER_ROW_SALES;\n } else {\n selectedDataFormat = InitiateOrderExportRequestDataFormatOption.ORDERS_PER_ROW_SALES;\n }\n }\n return selectedDataFormat;\n }\n\n exportAllRowsToCSV(request: ExportToCSVRequest, option?: string): void {\n const selectedDataFormat = this.getSelectedDataFormat(option);\n\n // prepare sort and filters\n const sortOptions = SalesOrdersExportAllService.convertSortOptions(request.sortingOptions);\n let salesPersonIdsBelongingToFilteredTeam$ = of([]);\n if (request.filters?.controls['salesTeam'].value) {\n salesPersonIdsBelongingToFilteredTeam$ = this.salesTeamService\n .getMembers(request.filters.controls['salesTeam'].value.id)\n .pipe(catchError(() => of([])));\n }\n const filters$ = salesPersonIdsBelongingToFilteredTeam$.pipe(\n map((salesPersonIdsBelongingToFilteredTeam) => {\n const teamSalesPersonIds = (salesPersonIdsBelongingToFilteredTeam || []).map((sp) => sp.salespersonId);\n return SalesOrdersExportAllService.convertFilters(\n request.filters,\n teamSalesPersonIds,\n this.forcedFilterOptions.marketIds,\n this.forcedFilterOptions.salespersonId,\n this.forcedFilterOptions.businessId,\n );\n }),\n );\n\n // make export request\n combineLatest([this.partnerId$, filters$])\n .pipe(\n switchMap(([partnerId, filters]) => {\n const tableUrlWithFiltersSet = window.location.href;\n const exportOrderRequest = new InitiateOrderExportRequest({\n partnerId: partnerId,\n filters: filters,\n sortOption: sortOptions,\n tryAgainUrl: tableUrlWithFiltersSet,\n selectedDataFormat: selectedDataFormat,\n });\n return this.salesOrderService.initiateOrderExport(exportOrderRequest);\n }),\n )\n .subscribe({\n next: () => {\n this.alertService.openSuccessSnack('FRONTEND.SALES_UI.EXPORT.SUCCESS_EXPORT_ALL');\n },\n error: (err) => {\n if (err.status === 429) {\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.ERRORS.ERROR_EXPORT_TOO_MANY_REQUESTS');\n } else {\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.ERRORS.ERROR_EXPORT_ALL');\n }\n },\n });\n }\n}\n","import { DurationInterface, DurationPeriod } from '@vendasta/sales-orders';\n\nexport function calculateContractDurationMonths(d: DurationInterface): number {\n let months = 0;\n if (!d) {\n return months;\n }\n if (d.duration === DurationPeriod.MONTH) {\n months = d.value || 0;\n }\n if (d.duration === DurationPeriod.YEAR) {\n months = 12 * (d.value || 0);\n }\n return months;\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { map, switchMap, take } from 'rxjs/operators';\nimport { LoadRequest, SortDirection } from '@vendasta/va-filter2-table';\nimport {\n Order,\n CustomerSalesOrdersService,\n ListCustomerSalesOrderRequestFilters,\n ListCustomerSalesOrderRequestSortOption,\n ListCustomerSalesOrderRequestSortOptionInterface,\n ListCustomerSalesOrderRequestFiltersInterface,\n ListCustomerSalesOrderRequestSortField,\n ListCustomerSalesOrderRequestSortDirection,\n} from '@vendasta/sales-orders';\nimport { ForcedFilterOptions, OrdersRow, BaseSalesOrdersTableService } from './interface';\nimport { calculateContractDurationMonths } from './conversion-utils';\nimport { PARTNER_ID_TOKEN } from '../external-dependencies/provider-tokens';\nimport { SortSetting } from '@vendasta/va-filter2-table';\n\n@Injectable()\nexport class CustomerSalesOrdersTableService implements BaseSalesOrdersTableService {\n private readonly totalResults$$: BehaviorSubject = new BehaviorSubject(0);\n public readonly totalResults$: Observable = this.totalResults$$.asObservable();\n\n private forcedFilterOptions: ForcedFilterOptions;\n\n constructor(\n private readonly salesOrderService: CustomerSalesOrdersService,\n @Inject(PARTNER_ID_TOKEN) private readonly partnerId$: Observable,\n ) {}\n\n initialize(forcedFilterOptions: ForcedFilterOptions): void {\n this.forcedFilterOptions = forcedFilterOptions;\n }\n\n /* tslint:disable */\n static convertFilters(filters: any, forcedBusiness: string): ListCustomerSalesOrderRequestFilters {\n const f: ListCustomerSalesOrderRequestFiltersInterface = {};\n f.created = {};\n f.requestedActivation = {};\n f.expiryDate = {};\n\n if (filters['submittedDateFromControl']) {\n f.created.beginRange = filters['submittedDateFromControl'];\n }\n if (filters['submittedDateToControl']) {\n f.created.endRange = filters['submittedDateToControl'];\n }\n\n if (filters['contractStartFrom']) {\n f.requestedActivation.beginRange = filters['contractStartFrom'];\n }\n if (filters['contractStartToControl']) {\n f.requestedActivation.endRange = filters['contractStartToControl'];\n }\n\n if (filters['expiryDateFrom']) {\n f.expiryDate.beginRange = filters['expiryDateFrom'];\n }\n if (filters['expiryDateTo']) {\n f.expiryDate.endRange = filters['expiryDateTo'];\n }\n\n // Forced business filter\n f.businessId = forcedBusiness;\n\n return new ListCustomerSalesOrderRequestFilters(f);\n }\n\n static convertSortOptions(sort: SortSetting[]): ListCustomerSalesOrderRequestSortOption {\n let s: ListCustomerSalesOrderRequestSortOptionInterface = null;\n if (!!sort && sort.length > 0) {\n s = {};\n s.direction =\n sort[0].direction == SortDirection.SORT_DIRECTION_ASCENDING\n ? ListCustomerSalesOrderRequestSortDirection.ASCENDING\n : ListCustomerSalesOrderRequestSortDirection.DESCENDING;\n switch (sort[0].field) {\n case 'status':\n s.field = ListCustomerSalesOrderRequestSortField.STATUS;\n break;\n case 'requestedActivation':\n s.field = ListCustomerSalesOrderRequestSortField.REQUESTED_ACTIVATION;\n break;\n case 'created':\n s.field = ListCustomerSalesOrderRequestSortField.CREATED;\n break;\n case 'expiry':\n s.field = ListCustomerSalesOrderRequestSortField.EXPIRY_DATE;\n break;\n default:\n s = null;\n }\n }\n if (s) {\n return new ListCustomerSalesOrderRequestSortOption(s);\n }\n return null;\n }\n /* tslint:enable */\n\n load(request: LoadRequest): Observable {\n const sorting = CustomerSalesOrdersTableService.convertSortOptions(request.sortingOptions);\n const cursor = btoa((request.pageIndex * request.pageSize).toString());\n return combineLatest([this.partnerId$]).pipe(\n switchMap(([partnerId]) => {\n const filters = CustomerSalesOrdersTableService.convertFilters(\n request.filters,\n this.forcedFilterOptions.businessId,\n );\n const apiFilters = new ListCustomerSalesOrderRequestFilters(filters);\n return this.salesOrderService.list(partnerId, apiFilters, sorting, cursor, request.pageSize);\n }),\n take(1),\n map((results) => {\n if (!results || !results.results) {\n this.totalResults$$.next(results.totalResults);\n return [];\n }\n this.totalResults$$.next(results.totalResults);\n return results.results.map((o: Order) => ({\n orderId: o.orderId,\n salespersonId: o.salespersonId,\n salesperson: o.salesperson,\n partnerId: o.partnerId,\n businessId: o.businessId,\n business: o.business,\n marketId: o.marketId,\n status: o.status,\n requestedActivation: o.requestedActivation,\n created: o.created,\n tags: o.tags,\n contractDurationInMonths: calculateContractDurationMonths(o.contractDuration),\n expiryDate: o.expiryDate,\n }));\n }),\n );\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { DateFilterControl, FilterGroup } from '@vendasta/va-filter2';\nimport { Observable } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ForcedFilterOptions } from './interface';\nimport { BaseSalesOrdersTableFilterService } from './interface';\nimport { PARTNER_ID_TOKEN } from '../external-dependencies/provider-tokens';\n\n@Injectable()\nexport class CustomerSalesOrdersTableFilterService extends BaseSalesOrdersTableFilterService {\n filters: FilterGroup = new FilterGroup('sales-orders');\n private forcedFilterOptions: ForcedFilterOptions;\n\n constructor(\n @Inject(PARTNER_ID_TOKEN) private readonly partnerId$: Observable,\n private translateService: TranslateService,\n ) {\n super();\n }\n\n initialize(forcedFilterOptions: ForcedFilterOptions): void {\n this.forcedFilterOptions = forcedFilterOptions;\n\n const contractStartFromControl = new DateFilterControl(\n 'contractStartFrom',\n this.translateService.instant('FRONTEND.SALES_UI.FROM'),\n );\n const contractStartToControl = new DateFilterControl(\n 'contractStartToControl',\n this.translateService.instant('FRONTEND.SALES_UI.TO'),\n );\n const submittedDateFromControl = new DateFilterControl(\n 'submittedDateFromControl',\n this.translateService.instant('FRONTEND.SALES_UI.FROM'),\n );\n const submittedDateToControl = new DateFilterControl(\n 'submittedDateToControl',\n this.translateService.instant('FRONTEND.SALES_UI.TO'),\n );\n const expiryDateFromControl = new DateFilterControl(\n 'expiryDateFrom',\n this.translateService.instant('FRONTEND.SALES_UI.FROM'),\n );\n const expiryDateToControl = new DateFilterControl(\n 'expiryDateTo',\n this.translateService.instant('FRONTEND.SALES_UI.TO'),\n );\n\n this.filters\n .addSection(this.translateService.instant('FRONTEND.SALES_UI.SUBMITTED'), [\n submittedDateFromControl,\n submittedDateToControl,\n ])\n .addSection(this.translateService.instant('FRONTEND.SALES_UI.CONTRACT_START'), [\n contractStartFromControl,\n contractStartToControl,\n ])\n .addSection(this.translateService.instant('FRONTEND.SALES_UI.EXPIRY'), [\n expiryDateFromControl,\n expiryDateToControl,\n ]);\n }\n}\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AccountGroupSdkService, ProjectionFilterInterface } from '@vendasta/account-group';\nimport { GalaxyAddressPipe } from '@vendasta/galaxy/pipes';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { Package, PackageService, Status } from '@vendasta/marketplace-packages';\nimport { ListTagsResponse, SalesOrdersService } from '@vendasta/sales-orders';\nimport {\n CheckboxFilterControl,\n DateFilterControl,\n FilterGroup,\n SearchSelectFilterControl,\n SelectFilterControl,\n TextInputFilterControl,\n} from '@vendasta/va-filter2';\nimport { BehaviorSubject, Observable, Subject, combineLatest, throwError } from 'rxjs';\nimport { catchError, map, switchMap, take, takeUntil } from 'rxjs/operators';\nimport { BaseSalesOrdersTableFilterService, ForcedFilterOptions, Market, Salesperson, Salesteam } from './interface';\n\nimport {\n MARKET_IDS_TOKEN,\n PARTNER_ID_TOKEN,\n SALESPEOPLE_TOKEN,\n SALES_TEAMS_TOKEN,\n} from '../external-dependencies/provider-tokens';\n\n@Injectable()\nexport class SalesOrdersTableFilterService extends BaseSalesOrdersTableFilterService implements OnDestroy {\n filters: FilterGroup = new FilterGroup('sales-orders');\n private forcedFilterOptions: ForcedFilterOptions;\n private destroy$ = new Subject();\n marketFilterControl: SelectFilterControl;\n packageFilterSectionName = this.translateService.instant('FRONTEND.SALES_UI.PACKAGES');\n\n constructor(\n @Inject(PARTNER_ID_TOKEN) readonly partnerId$: Observable,\n @Inject(MARKET_IDS_TOKEN) private readonly markets$: Observable,\n @Inject(SALESPEOPLE_TOKEN) private readonly salespeople$: Observable,\n @Inject(SALES_TEAMS_TOKEN) private readonly salesTeams$: Observable,\n private readonly alertService: SnackbarService,\n private readonly salesOrdersService: SalesOrdersService,\n private translateService: TranslateService,\n private packageService: PackageService,\n private accountGroupService: AccountGroupSdkService,\n private addressPipe: GalaxyAddressPipe,\n ) {\n super();\n }\n\n private static reduceSalesTeamToMap(salesTeamMap: Map, st: Salesteam): Map {\n salesTeamMap.set(st.teamName, st);\n return salesTeamMap;\n }\n\n private static convertSalesTeamsToMap(salesTeams: Salesteam[]): Map {\n if (!salesTeams) {\n return new Map();\n }\n\n return salesTeams.reduce(SalesOrdersTableFilterService.reduceSalesTeamToMap, new Map());\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n initialize(forcedFilterOptions: ForcedFilterOptions, canAccessSalesTeams: boolean): void {\n this.forcedFilterOptions = forcedFilterOptions;\n const marketOptions$: Observable> = this.markets$.pipe(\n map((markets) => {\n markets.sort((a, b) => {\n const aName = a.name.toLowerCase(),\n bName = b.name.toLowerCase();\n return aName < bName ? -1 : aName > bName ? 1 : 0;\n });\n return markets;\n }),\n map((markets) => {\n return markets.reduce((objMap, market) => {\n objMap.set(market.name, market);\n return objMap;\n }, new Map());\n }),\n catchError((e) => {\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.ERROR_LOADING_MARKETS');\n return throwError(e);\n }),\n );\n\n const tags: Observable> = combineLatest([this.partnerId$, this.markets$]).pipe(\n switchMap(([partnerId, markets]) => {\n const marketIds = this.getMarketIds(markets);\n return this.salesOrdersService.listTags(partnerId, { marketIds: marketIds });\n }),\n map((resp: ListTagsResponse) => {\n const t = new Map();\n if (resp.tags) {\n resp.tags.map((v) => t.set(v, v));\n } else {\n const msg = this.translateService.instant('FRONTEND.SALES_UI.NO_TAGS_FOUND');\n t.set(msg, msg);\n }\n return t;\n }),\n );\n\n const adminControls = [\n new TextInputFilterControl('orderId', this.translateService.instant('FRONTEND.SALES_UI.ORDER_ID')),\n ];\n\n this.marketFilterControl = new SelectFilterControl(\n 'market',\n this.translateService.instant('FRONTEND.SALES_UI.MARKET'),\n marketOptions$,\n null,\n {\n appliedValueMapper: (name, value) => {\n const marketLabel = this.translateService.instant('FRONTEND.SALES_UI.MARKET');\n return { name, label: `${marketLabel}: ${value.name}` };\n },\n },\n );\n if (!this.forcedFilterOptions.marketIds) {\n adminControls.push(this.marketFilterControl);\n // auto-select first market if only one is available\n marketOptions$.pipe(takeUntil(this.destroy$)).subscribe((markets) => {\n const availMarkets: Market[] = markets ? Array.from(markets.values()) : [];\n if (availMarkets.length === 1) {\n this.marketFilterControl?.setValue(availMarkets[0]);\n }\n });\n }\n\n if (!this.forcedFilterOptions.salespersonId) {\n adminControls.push(this.createSalesPeopleSelectControl());\n if (canAccessSalesTeams) {\n // Enable salesteams filter only if sales teams is enabled for partner's subscription tier\n adminControls.push(this.createSalesTeamsSelectControl());\n }\n }\n\n adminControls.push(this.createAccountSearchControl());\n\n if (adminControls.length > 0) {\n this.filters.addSection(this.translateService.instant('FRONTEND.SALES_UI.ADMIN'), adminControls);\n }\n\n const contractStartFromControl = new DateFilterControl(\n 'contractStartFrom',\n this.translateService.instant('FRONTEND.SALES_UI.FROM'),\n );\n const contractStartToControl = new DateFilterControl(\n 'contractStartToControl',\n this.translateService.instant('FRONTEND.SALES_UI.TO'),\n );\n const submittedDateFromControl = new DateFilterControl(\n 'submittedDateFromControl',\n this.translateService.instant('FRONTEND.SALES_UI.FROM'),\n );\n const submittedDateToControl = new DateFilterControl(\n 'submittedDateToControl',\n this.translateService.instant('FRONTEND.SALES_UI.TO'),\n );\n const expiryDateFromControl = new DateFilterControl(\n 'expiryDateFrom',\n this.translateService.instant('FRONTEND.SALES_UI.FROM'),\n );\n const expiryDateToControl = new DateFilterControl(\n 'expiryDateTo',\n this.translateService.instant('FRONTEND.SALES_UI.TO'),\n );\n\n this.filters\n .addSection(this.translateService.instant('FRONTEND.SALES_UI.STATUS'), [\n new CheckboxFilterControl(\n 'resubmitted',\n this.translateService.instant('FRONTEND.SALES_UI.RESUBMITTED'),\n false,\n {\n appliedValueMapper: (name) => ({\n name,\n label: this.translateService.instant('FRONTEND.SALES_UI.RESUBMITTED'),\n }),\n },\n ),\n new CheckboxFilterControl('pending', this.translateService.instant('FRONTEND.SALES_UI.PENDING'), false, {\n appliedValueMapper: (name) => ({\n name,\n label: this.translateService.instant('FRONTEND.SALES_UI.PENDING'),\n }),\n }),\n new CheckboxFilterControl(\n 'awaiting-customer-approval',\n this.translateService.instant('FRONTEND.SALES_UI.AWAITING_CUSTOMER_APPROVAL'),\n false,\n {\n appliedValueMapper: (name) => ({\n name,\n label: this.translateService.instant('FRONTEND.SALES_UI.AWAITING_CUSTOMER_APPROVAL'),\n }),\n },\n ),\n new CheckboxFilterControl('approved', this.translateService.instant('FRONTEND.SALES_UI.APPROVED'), false, {\n appliedValueMapper: (name) => ({\n name,\n label: this.translateService.instant('FRONTEND.SALES_UI.APPROVED'),\n }),\n }),\n new CheckboxFilterControl('processing', this.translateService.instant('FRONTEND.SALES_UI.PROCESSING'), false, {\n appliedValueMapper: (name) => ({\n name,\n label: this.translateService.instant('FRONTEND.SALES_UI.PROCESSING'),\n }),\n }),\n new CheckboxFilterControl(\n 'activation-errors',\n this.translateService.instant('FRONTEND.SALES_UI.ACTIVATION_ERRORS'),\n false,\n {\n appliedValueMapper: (name) => ({\n name,\n label: this.translateService.instant('FRONTEND.SALES_UI.ACTIVATION_ERRORS'),\n }),\n },\n ),\n new CheckboxFilterControl('archived', this.translateService.instant('FRONTEND.SALES_UI.ARCHIVED'), false, {\n appliedValueMapper: (name) => ({\n name,\n label: this.translateService.instant('FRONTEND.SALES_UI.ARCHIVED'),\n }),\n }),\n new CheckboxFilterControl('activated', this.translateService.instant('FRONTEND.SALES_UI.ACTIVATED'), false, {\n appliedValueMapper: (name) => ({\n name,\n label: this.translateService.instant('FRONTEND.SALES_UI.ACTIVATED'),\n }),\n }),\n new CheckboxFilterControl('declined', this.translateService.instant('FRONTEND.SALES_UI.DECLINED'), false, {\n appliedValueMapper: (name) => ({\n name,\n label: this.translateService.instant('FRONTEND.SALES_UI.DECLINED'),\n }),\n }),\n new CheckboxFilterControl(\n 'scheduled-activation',\n this.translateService.instant('FRONTEND.SALES_UI.SCHEDULED_ACTIVATION'),\n false,\n {\n appliedValueMapper: (name) => ({\n name,\n label: this.translateService.instant('FRONTEND.SALES_UI.SCHEDULED_ACTIVATION'),\n }),\n },\n ),\n new CheckboxFilterControl('drafted', this.translateService.instant('FRONTEND.SALES_UI.DRAFTED'), false, {\n appliedValueMapper: (name) => ({\n name,\n label: this.translateService.instant('FRONTEND.SALES_UI.DRAFTED'),\n }),\n }),\n new CheckboxFilterControl(\n 'cancellation-requested',\n this.translateService.instant('FRONTEND.SALES_UI.CANCELLATION_REQUESTED'),\n false,\n {\n appliedValueMapper: (name) => ({\n name,\n label: this.translateService.instant('FRONTEND.SALES_UI.CANCELLATION_REQUESTED'),\n }),\n },\n ),\n new CheckboxFilterControl('cancelled', this.translateService.instant('FRONTEND.SALES_UI.CANCELLED'), false, {\n appliedValueMapper: (name) => ({\n name,\n label: this.translateService.instant('FRONTEND.SALES_UI.CANCELLED'),\n }),\n }),\n ])\n .addSection(this.translateService.instant('FRONTEND.SALES_UI.TAGS'), [\n new SelectFilterControl('tag', this.translateService.instant('FRONTEND.SALES_UI.INCLUDED_TAG'), tags, null, {\n appliedValueMapper: (name, value) => {\n const tagLabel = this.translateService.instant('FRONTEND.SALES_UI.TAG');\n return { name, label: `${tagLabel}: ${value}` };\n },\n }),\n new CheckboxFilterControl('untagged', this.translateService.instant('FRONTEND.SALES_UI.UNTAGGED'), false, {\n appliedValueMapper: (name) => ({\n name,\n label: this.translateService.instant('FRONTEND.SALES_UI.UNTAGGED'),\n }),\n }),\n ])\n .addSection(this.translateService.instant('FRONTEND.SALES_UI.SUBMITTED'), [\n submittedDateFromControl,\n submittedDateToControl,\n ])\n .addSection(this.translateService.instant('FRONTEND.SALES_UI.CONTRACT_START'), [\n contractStartFromControl,\n contractStartToControl,\n ])\n .addSection(this.translateService.instant('FRONTEND.SALES_UI.EXPIRY'), [\n expiryDateFromControl,\n expiryDateToControl,\n ]);\n\n if ((this.forcedFilterOptions.marketIds || []).length === 1) {\n this.partnerId$.pipe(take(1)).subscribe((partnerId) => {\n this.addPackageFilterSection(partnerId, this.forcedFilterOptions.marketIds[0]);\n });\n } else {\n combineLatest([this.partnerId$, this.marketFilterControl.valueChanges]).subscribe(([partnerId, market]) => {\n this.filters.removeSection(this.packageFilterSectionName);\n if (market) {\n this.addPackageFilterSection(partnerId, market.marketId);\n }\n });\n }\n }\n\n formatSearchAccountOption(accountGroup): string {\n const address = {\n address: accountGroup.napData.address,\n address2: accountGroup.napData.address2,\n city: accountGroup.napData.city,\n state: accountGroup.napData.state,\n };\n\n const formattedAddress = this.addressPipe.transform(address);\n let companyName = accountGroup.napData.companyName;\n if (formattedAddress) {\n companyName = `${companyName} - ${formattedAddress}`;\n }\n return companyName;\n }\n\n getMarketIds(markets: Market[]): string[] {\n let marketIds = markets.map((m) => m.marketId);\n if (this.forcedFilterOptions.marketIds) {\n marketIds = this.forcedFilterOptions.marketIds;\n }\n return marketIds;\n }\n\n private createSalesPeopleSelectControl(): SelectFilterControl {\n const salesPeopleOptions$: Observable> = this.salespeople$.pipe(\n map((salesPeople) => {\n salesPeople.sort((a, b) => {\n const aName = a.name.toLowerCase(),\n bName = b.name.toLowerCase();\n return aName < bName ? -1 : aName > bName ? 1 : 0;\n });\n return salesPeople;\n }),\n map((salesPeople) => {\n return salesPeople.reduce((objMap, sp) => {\n objMap.set(sp.name, sp);\n return objMap;\n }, new Map());\n }),\n catchError((e) => {\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.ERROR_LOADING_SALESPEOPLE');\n return throwError(() => e);\n }),\n );\n return new SelectFilterControl(\n 'salesPeople',\n this.translateService.instant('FRONTEND.SALES_UI.SALESPERSON'),\n salesPeopleOptions$,\n null,\n {\n appliedValueMapper: (name, value) => {\n const salespersonLabel = this.translateService.instant('FRONTEND.SALES_UI.SALESPERSON');\n return { name, label: `${salespersonLabel}: ${value.name}` };\n },\n },\n );\n }\n\n private createSalesTeamsSelectControl(): SelectFilterControl {\n const salesTeamOptions$: Observable> = this.salesTeams$.pipe(\n take(1),\n map((salesTeams) => {\n if (!salesTeams) {\n return [];\n }\n\n salesTeams.sort((a, b) => {\n const aName = a.teamName.toLowerCase();\n const bName = b.teamName.toLowerCase();\n return aName < bName ? -1 : aName > bName ? 1 : 0;\n });\n return salesTeams;\n }),\n map((teams) => SalesOrdersTableFilterService.convertSalesTeamsToMap(teams)),\n catchError((e) => {\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.ERROR_LOADING_SALES_TEAMS');\n return throwError(() => e);\n }),\n );\n\n return new SelectFilterControl(\n 'salesTeam',\n this.translateService.instant('FRONTEND.SALES_UI.SALES_TEAM'),\n salesTeamOptions$,\n null,\n {\n appliedValueMapper: (name, value) => {\n const salesTeamLabel = this.translateService.instant('FRONTEND.SALES_UI.SALES_TEAM');\n return { name, label: `${salesTeamLabel}: ${value.teamName}` };\n },\n },\n );\n }\n\n private createAccountSearchControl(): SearchSelectFilterControl {\n const accountGroupProjectionFilter: ProjectionFilterInterface = { napData: true } as const;\n const accountSearchTerm$$: BehaviorSubject = new BehaviorSubject('');\n const accountGroupIdToCompanyName = new Map();\n const accountOptions$: Observable> = combineLatest([\n this.partnerId$,\n this.markets$,\n accountSearchTerm$$,\n ]).pipe(\n switchMap(([partnerId, markets, searchTerm]) =>\n this.accountGroupService.lookup({\n filters: {\n partnerId: partnerId,\n marketIds: this.getMarketIds(markets),\n },\n projectionFilter: accountGroupProjectionFilter,\n searchTerm: searchTerm,\n pageSize: 25,\n }),\n ),\n map((response) => {\n const accountGroupLabelToId = new Map();\n response?.accountGroups?.forEach((accountGroup) => {\n const selectOptionLabel = this.formatSearchAccountOption(accountGroup);\n accountGroupLabelToId.set(selectOptionLabel, accountGroup.accountGroupId);\n accountGroupIdToCompanyName.set(accountGroup.accountGroupId, accountGroup.napData.companyName);\n });\n return accountGroupLabelToId;\n }),\n );\n const accountLabel = this.translateService.instant('FRONTEND.SALES_UI.ACCOUNT');\n const accountSearchControl = new SearchSelectFilterControl('businessId', accountLabel, accountOptions$, null, {\n searchDisplay: (accountId) => accountGroupIdToCompanyName.get(accountId) || accountId,\n appliedValueMapper: (name, value) => {\n if (accountGroupIdToCompanyName.get(value)) {\n return { name, label: `${accountLabel}: ${accountGroupIdToCompanyName.get(value)}` };\n }\n return { name, label: `${accountLabel}: ${value}` };\n },\n });\n accountSearchControl.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((searchTerm) => {\n accountSearchTerm$$.next(searchTerm);\n });\n return accountSearchControl;\n }\n\n private addPackageFilterSection(partnerId: string, marketId: string): void {\n this.filters.addSection(this.packageFilterSectionName, [\n new SelectFilterControl(\n 'package',\n this.translateService.instant('FRONTEND.SALES_UI.PACKAGE'),\n this.packageService.list(partnerId, [Status.PUBLISHED], marketId).pipe(\n map((resp) => {\n const packages = resp.packages || [];\n packages.sort((a, b) => {\n const aName = a.name.toLowerCase(),\n bName = b.name.toLowerCase();\n return aName < bName ? -1 : aName > bName ? 1 : 0;\n });\n return packages;\n }),\n map((sortedPackages) => {\n const values = new Map();\n (sortedPackages || []).map((p) => values.set(p.name, p));\n return values;\n }),\n ),\n null,\n {\n appliedValueMapper: (name, value) => {\n const marketLabel = this.translateService.instant('FRONTEND.SALES_UI.PACKAGE');\n return { name, label: `${marketLabel}: ${value.name}` };\n },\n },\n ),\n ]);\n }\n}\n","import { Component, Inject, OnInit, Optional, WritableSignal, inject, signal } from '@angular/core';\nimport { FulfillmentOrderStatus } from '@vendasta/sales-orders';\nimport { WorkOrderPersona, statusColorMap } from '@vendasta/work-order';\nimport { SalesOrderTableCustomComponentDirective } from './sales-order-table-custom.component';\nimport { Observable } from 'rxjs';\nimport { Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nconst UNIFIED_TABLES_FEATURE = 'pion_unifying_sales_fulfillment';\n\n@Component({\n selector: 'sales-ui-status-cell',\n styleUrls: ['./fulfillment-cell.component.scss'],\n templateUrl: './fulfillment-cell.component.html',\n})\nexport class FulfillmentCellComponent extends SalesOrderTableCustomComponentDirective implements OnInit {\n stringStatus = '';\n orderID: string;\n badgeColor: string;\n fulfillmentOrderStatus = FulfillmentOrderStatus;\n queryParamsLink: { [key: string]: string };\n hasFulfillment: boolean;\n router: Router = inject(Router);\n private hasAccessToUnifiedTables: WritableSignal = signal(false);\n\n constructor(\n @Inject('PARTNER_ID') readonly partnerId$: Observable,\n @Inject('FULFILLMENT_CELL_LINK_VERSION') readonly fulfillmentCellLinkVersion: boolean,\n @Optional() @Inject(UNIFIED_TABLES_FEATURE) private readonly hasAccessToUnifiedTables$: Observable,\n ) {\n super();\n\n this.hasAccessToUnifiedTables$?.pipe(takeUntilDestroyed())?.subscribe((hasAccessToUnifiedTable) => {\n this.hasAccessToUnifiedTables.set(hasAccessToUnifiedTable);\n });\n }\n\n ngOnInit(): void {\n this.stringStatus = this.fulfillmentOrderStatus[this.element.fulfillmentOrderStatus];\n this.orderID = this.element.orderId;\n this.queryParamsLink = this.getLinkQueryParams();\n this.hasFulfillment = this.element.hasFulfillment;\n\n // leave an entry empty if there are no fulfillment orders associated with the sales order\n if (this.stringStatus !== 'FULFILLMENT_STATUS_UNSET') {\n const statusAsNumber: number = this.convertStringStatusToNumber(this.stringStatus);\n this.badgeColor = statusColorMap.get(WorkOrderPersona.CP).get(statusAsNumber);\n }\n }\n\n convertStringStatusToNumber(fulfillmentOrderStatus: string): number {\n return Object.values(FulfillmentOrderStatus).indexOf(fulfillmentOrderStatus);\n }\n\n getLinkQueryParams() {\n const queryParams = {\n orderIds: [this.orderID],\n };\n const queryParamString = JSON.stringify(queryParams);\n return { 'order-fufillment-table': queryParamString, tab: 'fulfillment' };\n }\n\n handleViewItemsClick(): void {\n this.hasAccessToUnifiedTables() ? this.navigateToUnifiedTables() : this.navigateToOrderFulfillmentTable();\n }\n\n private navigateToUnifiedTables(): void {\n this.router.navigate([], {\n queryParams: this.queryParamsLink,\n queryParamsHandling: 'merge',\n });\n }\n\n private navigateToOrderFulfillmentTable(): void {\n this.router.navigate(['/order-fulfillment'], {\n queryParams: this.queryParamsLink,\n queryParamsHandling: 'merge',\n });\n }\n}\n","\n
\n \n {{ 'FRONTEND.SALES_UI.' + stringStatus | translate }}\n \n \n

{{ 'SALES_ORDERS.VIEW_ITEMS' | translate }}

\n \n
\n
\n\n\n \n {{ 'FRONTEND.SALES_UI.' + stringStatus | translate }}\n \n\n\n\n

N/A

\n
\n","import { TranslateService } from '@ngx-translate/core';\nimport { ColumnOrganizerType, ColumnType, Pinned, SortDirection, TableDefinition } from '@vendasta/va-filter2-table';\nimport { combineLatest } from 'rxjs';\nimport { AdminOrderActionsCellComponent } from './cells/admin-order-actions-cell.component';\nimport { BusinessInfoCellComponent } from './cells/business-info-cell.component';\nimport { DateCellComponent } from './cells/date-cell.component';\nimport { ExpiryCellComponent } from './cells/expiry-cell.component';\nimport { FulfillmentCellComponent } from './cells/fulfillment-cell.component';\nimport { OrderIdCellComponent } from './cells/order-id-cell.component';\nimport { OrderTagsCellComponent } from './cells/order-tags-cell.component';\nimport { SalespersonCellComponent } from './cells/salesperson-cell.component';\nimport { SalespersonOrderActionsCellComponent } from './cells/salesperson-order-actions-cell.component';\nimport { StatusCellComponent } from './cells/status-cell.component';\nimport { SalesOrdersTableFactoryParams, exportDataFormatModalOption } from './interface';\nimport { CustomerSalesOrdersTableFilterService } from './sales-orders-table-customer-filter.service';\nimport { SalesOrdersTableFilterService } from './sales-orders-table-filter.service';\n\nconst ORDERS_TABLE_DEF: TableDefinition = {\n id: 'sales-orders',\n columnOrganizerType: ColumnOrganizerType.ADVANCED_ORGANIZER,\n labels: {\n // TODO: Translations for these labels in table component\n noResults: 'No results',\n cancel: 'Cancel',\n none: 'None',\n update: 'Update',\n sortBy: 'Sort By',\n thenSortBy: 'Then Sort By',\n addAnotherSortColumn: 'Add another column to sort on',\n chooseColumnToSortBy: 'Choose a column to sort on',\n columnSorting: {\n date: {\n ascending: 'Earliest to Latest',\n descending: 'Latest to Earliest',\n },\n number: {\n ascending: '1 to 9',\n descending: '9 to 1',\n },\n string: {\n ascending: 'A to Z',\n descending: 'Z to A',\n },\n default: {\n ascending: 'ascending',\n descending: 'descending',\n },\n },\n export: {\n buttonText: '',\n buttonTooltipBeforeCount: '',\n buttonTooltipAfterCount: '',\n },\n columnSelector: {\n buttonText: '',\n },\n },\n options: {\n disableMultiColumnSorting: true,\n tableTitle: 'FRONTEND.SALES_UI.ORDER_FILTERS',\n csvExportEnabled: true,\n },\n columns: [\n {\n id: 'orderId',\n displayName: 'FRONTEND.SALES_UI.ORDER_ID',\n pinned: Pinned.PINNED_LEFT,\n type: ColumnType.COLUMN_TYPE_STRING,\n field: 'orderId',\n cellComponent: OrderIdCellComponent,\n },\n {\n id: 'account',\n displayName: 'FRONTEND.SALES_UI.ACCOUNT',\n type: ColumnType.COLUMN_TYPE_STRING,\n field: 'business',\n cellComponent: BusinessInfoCellComponent,\n },\n {\n id: 'status',\n displayName: 'FRONTEND.SALES_UI.STATUS',\n field: 'status',\n cellComponent: StatusCellComponent,\n sortOptions: {\n sortable: true,\n },\n },\n {\n id: 'fulfillmentStatus',\n displayName: 'FRONTEND.SALES_UI.FULFILLMENT',\n field: 'fulfillmentStatus',\n cellComponent: FulfillmentCellComponent,\n },\n {\n id: 'contract-start',\n displayName: 'FRONTEND.SALES_UI.CONTRACT_START',\n type: ColumnType.COLUMN_TYPE_DATE,\n field: 'requestedActivation',\n cellComponent: DateCellComponent,\n sortOptions: {\n sortable: true,\n },\n },\n {\n id: 'salesperson',\n displayName: 'FRONTEND.SALES_UI.SALESPERSON',\n type: ColumnType.COLUMN_TYPE_STRING,\n field: 'salespersonId',\n cellComponent: SalespersonCellComponent,\n },\n {\n id: 'submitted',\n displayName: 'FRONTEND.SALES_UI.SUBMITTED',\n type: ColumnType.COLUMN_TYPE_DATE,\n field: 'created',\n cellComponent: DateCellComponent,\n sortOptions: {\n sortable: true,\n initialSortDirection: SortDirection.SORT_DIRECTION_DESCENDING,\n },\n },\n {\n id: 'expiry',\n displayName: 'FRONTEND.SALES_UI.EXPIRY',\n type: ColumnType.COLUMN_TYPE_STRING,\n translateCell: true,\n field: 'expiry',\n cellComponent: ExpiryCellComponent,\n sortOptions: {\n sortable: true,\n },\n },\n {\n id: 'tags',\n displayName: 'FRONTEND.SALES_UI.TAGS',\n field: 'tags',\n cellComponent: OrderTagsCellComponent,\n },\n ],\n};\n\nconst adminActionsCell = {\n id: 'adminActions',\n displayName: 'FRONTEND.SALES_UI.ACTIONS',\n field: '',\n pinned: Pinned.PINNED_RIGHT,\n cellComponent: AdminOrderActionsCellComponent,\n};\n\nconst salesActionsCell = {\n id: 'adminActions',\n displayName: 'FRONTEND.SALES_UI.ACTIONS',\n field: '',\n pinned: Pinned.PINNED_RIGHT,\n cellComponent: SalespersonOrderActionsCellComponent,\n};\n\nexport const tableDefinitionFactory = (\n filterService: SalesOrdersTableFilterService,\n customerFilterService: CustomerSalesOrdersTableFilterService,\n params: SalesOrdersTableFactoryParams,\n translateService: TranslateService,\n) => {\n const tableDefinition = ORDERS_TABLE_DEF;\n if (params) {\n if (params.showActions) {\n if (params.isSalesTable) {\n if (!tableDefinition.columns.some((c) => c.id === 'adminActions')) {\n tableDefinition.columns.push(salesActionsCell);\n }\n } else {\n if (!tableDefinition.columns.some((c) => c.id === 'adminActions')) {\n tableDefinition.columns.push(adminActionsCell);\n }\n }\n }\n }\n\n if (params && params.isCustomerTable) {\n const removeIds = ['tags', 'salesperson', 'account'];\n tableDefinition.columns = tableDefinition.columns.filter((column) => {\n return !removeIds.includes(column.id);\n });\n\n tableDefinition.filters = customerFilterService.filters;\n return tableDefinition;\n }\n\n tableDefinition.filters = filterService.filters;\n tableDefinition.options.csvExportEnabled = true;\n tableDefinition.options.exportDialogDefinition = buildExportModalContent(translateService);\n return tableDefinition;\n};\n\nfunction buildExportModalContent(translateService: TranslateService): any {\n const content = {\n headerText: '',\n descriptionText: '',\n exportOptions: [],\n };\n\n combineLatest([\n translateService.stream('FRONTEND.SALES_UI.EXPORT.EXPORT_HEADER'),\n translateService.stream('FRONTEND.SALES_UI.EXPORT.EXPORT_DESCRIPTION'),\n translateService.stream('FRONTEND.SALES_UI.EXPORT.ALL_ORDER_OPTION_LABEL'),\n translateService.stream('FRONTEND.SALES_UI.EXPORT.ALL_ORDER_OPTION_DESCRIPTION'),\n translateService.stream('FRONTEND.SALES_UI.EXPORT.ALL_ORDER_WITH_PRODUCT_DATA_OPTION_LABEL'),\n translateService.stream('FRONTEND.SALES_UI.EXPORT.ALL_ORDER_WITH_PRODUCT_DATA_OPTION_DESCRIPTION'),\n ]).subscribe(\n ([\n exportHeaderMessage,\n exportDescriptionMessage,\n orderPerRowOptionText,\n orderPerRowOptionHelpText,\n productsPerRowOptionText,\n productsPerRowOptionHelpText,\n ]) => {\n content.headerText = exportHeaderMessage;\n content.descriptionText = exportDescriptionMessage;\n content.exportOptions = [\n {\n id: exportDataFormatModalOption.ORDERS_PER_ROW,\n selectionText: orderPerRowOptionText,\n selectionHelpText: orderPerRowOptionHelpText,\n },\n {\n id: exportDataFormatModalOption.PRODUCTS_PER_ROW,\n selectionText: productsPerRowOptionText,\n selectionHelpText: productsPerRowOptionHelpText,\n },\n ];\n },\n );\n\n return content;\n}\n","import { Inject, Injectable } from '@angular/core';\nimport {\n ListSalesOrderRequestFilters,\n ListSalesOrderRequestFiltersInterface,\n ListSalesOrderRequestSortDirection,\n ListSalesOrderRequestSortField,\n ListSalesOrderRequestSortOption,\n ListSalesOrderRequestSortOptionInterface,\n Order,\n SalesOrdersService,\n Status,\n} from '@vendasta/sales-orders';\nimport { LoadRequest, SortDirection, SortSetting } from '@vendasta/va-filter2-table';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { catchError, map, shareReplay, switchMap, take } from 'rxjs/operators';\nimport { calculateContractDurationMonths } from './conversion-utils';\nimport { BaseSalesOrdersTableService, ForcedFilterOptions, OrdersRow } from './interface';\n\nimport { TranslateService } from '@ngx-translate/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { Salesperson, SalesTeamService } from '@vendasta/sales';\nimport { PARTNER_ID_TOKEN } from '../external-dependencies/provider-tokens';\n\n@Injectable()\nexport class SalesOrdersTableService implements BaseSalesOrdersTableService {\n private readonly totalResults$$: BehaviorSubject = new BehaviorSubject(0);\n public readonly totalResults$: Observable = this.totalResults$$.asObservable();\n\n public stats$: Observable<{ [key: string]: number }>;\n public presetViews: string;\n\n private forcedFilterOptions: ForcedFilterOptions;\n\n constructor(\n private readonly salesOrderService: SalesOrdersService,\n @Inject(PARTNER_ID_TOKEN) private readonly partnerId$: Observable,\n private readonly translateService: TranslateService,\n private readonly salesTeamService: SalesTeamService,\n private readonly snackbarService: SnackbarService,\n ) {}\n\n initialize(forcedFilterOptions: ForcedFilterOptions): void {\n this.forcedFilterOptions = forcedFilterOptions;\n this.stats$ = this.partnerId$.pipe(\n switchMap((partnerId) =>\n this.salesOrderService.getStatusCounts(partnerId, {\n marketIds: this.forcedFilterOptions.marketIds,\n salespersonId: this.forcedFilterOptions.salespersonId,\n }),\n ),\n map((counts) => counts || {}),\n shareReplay(1),\n );\n\n const currentDate = new Date();\n const nextDate = new Date(currentDate.setMonth(currentDate.getMonth() + 3));\n\n this.presetViews = JSON.stringify([\n {\n viewId: 'upcomingExpiriesPreset',\n viewName: this.translateService.instant('FRONTEND.SALES_UI.TABLE_PRESETS.UPCOMING_EXPIRATION'),\n viewDescription: this.translateService.instant('FRONTEND.SALES_UI.TABLE_PRESETS.UPCOMING_EXPIRATION_DESC'),\n attributeFiltersJson: JSON.stringify({\n expiryDateFrom: currentDate,\n expiryDateTo: nextDate,\n }),\n sortingJson: `{\n \"expiry\": \"asc\"\n }`,\n },\n ]);\n }\n\n /* tslint:disable */\n static convertFilters(\n filters: any,\n teamSalesPersonIds: string[],\n forcedMarkets?: string[],\n forcedSalesperson?: string,\n ): ListSalesOrderRequestFiltersInterface {\n const f: ListSalesOrderRequestFiltersInterface = {};\n f.statuses = [];\n f.created = {};\n f.requestedActivation = {};\n f.expiryDate = {};\n\n if (filters['activated']) {\n f.statuses.push(Status.FULFILLED);\n }\n if (filters['activation-errors']) {\n f.statuses.push(Status.ACTIVATION_ERRORS);\n }\n if (filters['approved']) {\n f.statuses.push(Status.APPROVED);\n }\n if (filters['archived']) {\n f.statuses.push(Status.ARCHIVED);\n }\n if (filters['awaiting-customer-approval']) {\n f.statuses.push(Status.SUBMITTED_FOR_CUSTOMER_APPROVAL);\n }\n if (filters['declined']) {\n f.statuses.push(Status.DECLINED);\n }\n if (filters['pending']) {\n f.statuses.push(Status.SUBMITTED);\n }\n if (filters['resubmitted']) {\n f.statuses.push(Status.RESUBMITTED);\n }\n if (filters['processing']) {\n f.statuses.push(Status.PROCESSING);\n }\n if (filters['drafted']) {\n f.statuses.push(Status.DRAFTED);\n }\n if (filters['cancellation-requested']) {\n f.statuses.push(Status.CANCELLATION_REQUESTED);\n }\n if (filters['cancelled']) {\n f.statuses.push(Status.CANCELLED);\n }\n if (filters['scheduled-activation']) {\n f.statuses.push(Status.SCHEDULED_ACTIVATION);\n }\n\n if (forcedMarkets) {\n f.marketIds = forcedMarkets;\n } else if (filters['market']) {\n f.marketIds = [filters['market'].marketId];\n }\n\n if (forcedSalesperson) {\n f.salespersonIds = [forcedSalesperson];\n } else if (filters['salesPeople']) {\n const salespersonId = filters['salesPeople'].salespersonId;\n f.salespersonIds = teamSalesPersonIds.includes(salespersonId)\n ? teamSalesPersonIds\n : [...teamSalesPersonIds, salespersonId];\n } else if (filters['salesTeam']) {\n f.salespersonIds = teamSalesPersonIds.length === 0 ? ['EMPTY'] : teamSalesPersonIds;\n }\n\n if (filters['submittedDateFromControl']) {\n f.created.beginRange = filters['submittedDateFromControl'];\n }\n if (filters['submittedDateToControl']) {\n f.created.endRange = filters['submittedDateToControl'];\n }\n\n if (filters['contractStartFrom']) {\n f.requestedActivation.beginRange = filters['contractStartFrom'];\n }\n if (filters['contractStartToControl']) {\n f.requestedActivation.endRange = filters['contractStartToControl'];\n }\n\n if (filters['expiryDateFrom']) {\n f.expiryDate.beginRange = filters['expiryDateFrom'];\n }\n if (filters['expiryDateTo']) {\n f.expiryDate.endRange = filters['expiryDateTo'];\n }\n\n if (filters['tag']) {\n f.tags = [filters['tag']];\n }\n if (filters['untagged']) {\n f.untagged = true;\n }\n\n if (filters['businessId']) {\n f.businessId = filters['businessId'];\n }\n\n if (filters['orderId']) {\n f.orderId = filters['orderId'];\n }\n\n if (filters['package']) {\n f.packageId = filters['package'].packageId;\n }\n\n return f;\n }\n\n private static extractSalespersonIds(salespeople: Salesperson[]): string[] {\n const sps = salespeople || [];\n return sps.map((sp) => sp.salespersonId);\n }\n\n static convertSortOptions(sort: SortSetting[]): ListSalesOrderRequestSortOption {\n let s: ListSalesOrderRequestSortOptionInterface = null;\n if (!!sort && sort.length > 0) {\n s = {};\n s.direction =\n sort[0].direction == SortDirection.SORT_DIRECTION_ASCENDING\n ? ListSalesOrderRequestSortDirection.ASCENDING\n : ListSalesOrderRequestSortDirection.DESCENDING;\n switch (sort[0].field) {\n case 'status':\n s.field = ListSalesOrderRequestSortField.STATUS;\n break;\n case 'requestedActivation':\n s.field = ListSalesOrderRequestSortField.REQUESTED_ACTIVATION;\n break;\n case 'created':\n s.field = ListSalesOrderRequestSortField.CREATED;\n break;\n case 'expiry':\n s.field = ListSalesOrderRequestSortField.EXPIRY_DATE;\n break;\n default:\n s = null;\n }\n }\n if (s) {\n return new ListSalesOrderRequestSortOption(s);\n }\n return null;\n }\n /* tslint:enable */\n\n load(request: LoadRequest): Observable {\n const sorting = SalesOrdersTableService.convertSortOptions(request.sortingOptions);\n const cursor = btoa((request.pageIndex * request.pageSize).toString());\n const salesPersonIdsBelongingToTeam$ = request.filters?.salesTeam\n ? this.salesTeamService.getMembers(request.filters.salesTeam.id).pipe(catchError(() => of([])))\n : of([]);\n return combineLatest([this.partnerId$, salesPersonIdsBelongingToTeam$]).pipe(\n switchMap(([partnerId, salesPersonIds]) => {\n const teamSalesPersonIds = SalesOrdersTableService.extractSalespersonIds(salesPersonIds);\n const filters = SalesOrdersTableService.convertFilters(\n request.filters,\n teamSalesPersonIds,\n this.forcedFilterOptions.marketIds,\n this.forcedFilterOptions.salespersonId,\n );\n const apiFilters = new ListSalesOrderRequestFilters(filters);\n return this.salesOrderService.list(partnerId, apiFilters, sorting, cursor, request.pageSize);\n }),\n take(1),\n map((results) => {\n if (!results || !results.results) {\n this.totalResults$$.next(results.totalResults);\n return [];\n }\n this.totalResults$$.next(results.totalResults);\n return results.results.map((o: Order) => ({\n orderId: o.orderId,\n salespersonId: o.salespersonId,\n salesperson: o.salesperson,\n partnerId: o.partnerId,\n businessId: o.businessId,\n business: o.business,\n marketId: o.marketId,\n status: o.status,\n requestedActivation: o.requestedActivation,\n created: o.created,\n tags: o.tags,\n contractDurationInMonths: calculateContractDurationMonths(o.contractDuration),\n expiryDate: o.expiryDate,\n fulfillmentOrderStatus: o.fulfillmentStatus,\n hasFulfillment: o.hasFulfillment,\n }));\n }),\n catchError((error) => {\n if (error.status === 403) {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.ORDER_PERMISSION_ERROR');\n return of([]);\n }\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { publishReplay, refCount, take } from 'rxjs/operators';\nimport { Salesperson, SalespersonService as SalesService } from '@vendasta/sales';\n\n@Injectable()\nexport class SalespersonService {\n private cache: { [salesPersonId: string]: Observable } = {};\n\n constructor(private readonly salesService: SalesService) {}\n\n getSalesperson(partnerId: string, salespersonId: string): Observable {\n if (!this.cache[salespersonId]) {\n this.cache[salespersonId] = this.salesService\n .getSalesperson(partnerId, salespersonId)\n .pipe(publishReplay(1, 5000), refCount(), take(1));\n }\n\n return this.cache[salespersonId];\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Observable, map, startWith } from 'rxjs';\nimport { BaseSalesOrdersTableService } from '../interface';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Status } from '@vendasta/sales-orders';\n\n@Component({\n selector: 'sales-ui-sales-order-table-stats',\n templateUrl: './sales-order-table-stats.component.html',\n styleUrl: './sales-order-table-stats.component.scss',\n})\nexport class SalesOrderTableStatsComponent {\n @Input() set dataService(dataService: BaseSalesOrdersTableService) {\n this.stats$ = dataService?.stats$.pipe(\n map((stats) => this.startCardData(stats)),\n startWith(this.startCardData(null)),\n );\n }\n stats$: Observable<{ title: string; value?: number; loading?: boolean }[]>;\n\n constructor(private readonly i18n: TranslateService) {}\n\n startCardData(stats: { [key: string]: number }): { title: string; value?: number; loading?: boolean }[] {\n return [\n {\n title: this.i18n.instant('FRONTEND.SALES_UI.TOTAL_ORDERS'),\n loading: !stats,\n value: this.statValue(stats, Object.values(Status)),\n },\n {\n title: this.i18n.instant('FRONTEND.SALES_UI.PENDING_APPROVAL'),\n loading: !stats,\n value: this.statValue(stats, [Status.SUBMITTED, Status.SUBMITTED_FOR_CUSTOMER_APPROVAL, Status.RESUBMITTED]),\n },\n {\n title: this.i18n.instant('FRONTEND.SALES_UI.CANCELLED'),\n loading: !stats,\n value: this.statValue(stats, [Status.CANCELLED]),\n },\n {\n title: this.i18n.instant('FRONTEND.SALES_UI.APPROVED'),\n loading: !stats,\n value: this.statValue(stats, [Status.APPROVED, Status.SCHEDULED_ACTIVATION, Status.FULFILLED]),\n },\n ];\n }\n\n statValue(stats: { [key: string]: number }, statuses: (Status | string)[]): number {\n if (!stats) return 0;\n return statuses.reduce((acc, status) => acc + (stats[status] || 0), 0);\n }\n}\n","
\n
\n \n \n \n {{ stat.title }}\n {{ stat.value }}\n \n \n \n \n
\n
\n","import { Component, Inject, Injector, Input, OnInit } from '@angular/core';\nimport { FeatureFlagService, PartnerService } from '@galaxy/partner';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n CustomExportEvent,\n TABLE_DEFINITION,\n VaFilteredMatTableService,\n VaTableSortService,\n} from '@vendasta/va-filter2-table';\nimport { firstValueFrom } from 'rxjs';\nimport {\n BaseSalesOrdersExportAllService,\n BaseSalesOrdersTableFilterService,\n BaseSalesOrdersTableService,\n OrdersRow,\n RequestedExportType,\n SALES_ORDERS_TABLE_FACTORY_PARAM_TOKEN,\n SalesOrdersTableFactoryParams,\n SalesOrdersTableOptions,\n} from './interface';\nimport { SalesOrdersExportAllService } from './sales-order-export-all-service';\nimport { CustomerSalesOrdersTableService } from './sales-orders-customer-table.service';\nimport { CustomerSalesOrdersTableFilterService } from './sales-orders-table-customer-filter.service';\nimport { SalesOrdersTableFilterService } from './sales-orders-table-filter.service';\nimport { tableDefinitionFactory } from './sales-orders-table-model';\nimport { SalesOrdersTableService } from './sales-orders-table.service';\nimport { SalespersonService } from './salesperson.service';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\n\n@Component({\n selector: 'sales-ui-sales-orders-table',\n templateUrl: './sales-orders-table.component.html',\n styleUrls: ['./sales-orders-table.component.scss'],\n providers: [\n VaTableSortService,\n SalespersonService,\n SalesOrdersTableService,\n CustomerSalesOrdersTableService,\n VaFilteredMatTableService,\n SalesOrdersTableFilterService,\n CustomerSalesOrdersTableFilterService,\n SalesOrdersExportAllService,\n {\n provide: TABLE_DEFINITION,\n useFactory: tableDefinitionFactory,\n deps: [\n SalesOrdersTableFilterService,\n CustomerSalesOrdersTableFilterService,\n SALES_ORDERS_TABLE_FACTORY_PARAM_TOKEN,\n TranslateService,\n FeatureFlagService,\n PartnerService,\n ],\n },\n ],\n})\nexport class SalesOrdersTableComponent implements OnInit {\n @Input() options: SalesOrdersTableOptions = {};\n\n @Input() showStats = false;\n @Input() canAccessSalesTeams = true;\n\n presetViews: string;\n\n private tableFilterService: BaseSalesOrdersTableFilterService;\n public dataService: BaseSalesOrdersTableService;\n public exportAllDataService: BaseSalesOrdersExportAllService;\n\n constructor(\n private inj: Injector,\n @Inject(SALES_ORDERS_TABLE_FACTORY_PARAM_TOKEN) private readonly tableFactoryParams: SalesOrdersTableFactoryParams,\n private readonly i18n: TranslateService,\n private readonly productAnalyticsService: ProductAnalyticsService,\n private readonly snackBarService: SnackbarService,\n private readonly translateService: TranslateService,\n ) {}\n\n ngOnInit(): void {\n const forcedFilters = this.options.forcedFilters || {};\n const exportOptions = this.options.exportOptions || RequestedExportType.Partner;\n\n this.productAnalyticsService.trackEvent('sales_orders_table_viewed', 'sales_orders', 'viewed');\n\n if (this.tableFactoryParams?.isCustomerTable) {\n this.tableFilterService = this.inj.get(CustomerSalesOrdersTableFilterService);\n this.dataService = this.inj.get(CustomerSalesOrdersTableService);\n } else {\n this.tableFilterService = this.inj.get(SalesOrdersTableFilterService);\n this.dataService = this.inj.get(SalesOrdersTableService);\n // TODO initialize this outside of the isCustomerTable logic - all centers should be able to export\n this.exportAllDataService = this.inj.get(SalesOrdersExportAllService);\n this.exportAllDataService.initialize(forcedFilters, exportOptions);\n }\n\n this.tableFilterService.initialize(forcedFilters, this.canAccessSalesTeams);\n this.dataService.initialize(forcedFilters);\n this.presetViews = this.dataService.presetViews;\n }\n\n async handleCustomExportEvent(event: CustomExportEvent): Promise {\n // check the total to prevent excessively large export processing\n firstValueFrom(this.dataService.totalResults$).then((total) => {\n if (total > 500000) {\n this.snackBarService.openErrorSnack(\n this.translateService.instant('FRONTEND.SALES_UI.EXPORT.ERROR_TOO_MANY_ROWS'),\n );\n return;\n } else if (total === 0) {\n this.snackBarService.openErrorSnack(this.translateService.instant('FRONTEND.SALES_UI.EXPORT.ERROR_NO_RESULTS'));\n return;\n } else {\n this.exportAllDataService.exportAllRowsToCSV(event.requestInfo, event.optionId);\n }\n });\n }\n}\n","
\n \n
\n \n
\n
\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport baseTranslation from '../../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../../shared/constants';\nimport { SalespersonSelectorDialogComponent } from './salesperson-selector-dialog.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { GalaxyInfiniteScrollTriggerModule } from '@vendasta/galaxy/infinite-scroll-trigger';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { GalaxyWrapModule } from '@vendasta/galaxy/galaxy-wrap';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\n\n@NgModule({\n declarations: [SalespersonSelectorDialogComponent],\n imports: [\n CommonModule,\n RouterModule,\n MatProgressSpinnerModule,\n MatTooltipModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: WEBLATE_COMPONENT_NAME,\n baseTranslation: baseTranslation,\n }),\n MatMenuModule,\n MatIconModule,\n MatButtonModule,\n MatCardModule,\n MatDividerModule,\n MatDialogModule,\n MatAutocompleteModule,\n GalaxyInfiniteScrollTriggerModule,\n MatChipsModule,\n FormsModule,\n MatFormFieldModule,\n ReactiveFormsModule,\n GalaxyFormFieldModule,\n MatInputModule,\n GalaxyWrapModule,\n GalaxyLoadingSpinnerModule,\n ],\n exports: [SalespersonSelectorDialogComponent],\n})\nexport class SalespersonSelectorDialogModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DateFnsAdapter, MAT_DATE_FNS_FORMATS } from '@angular/material-date-fns-adapter';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RouterModule } from '@angular/router';\nimport { AccountGroupService } from '@galaxy/account-group';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { GalaxyAddressPipe } from '@vendasta/galaxy/pipes';\nimport { GalaxyStatisticModule } from '@vendasta/galaxy/statistic';\nimport { getLocale } from '@vendasta/galaxy/utility/locale';\nimport { VaBadgeModule, VaCardsModule } from '@vendasta/uikit';\nimport { Filter2TableModule } from '@vendasta/va-filter2-table';\nimport baseTranslation from '../../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../../shared/constants';\nimport { SalespersonSelectorDialogModule } from '../salesperson-selector-dialog/salesperson-selector-dialog.module';\nimport { AdminOrderActionsCellComponent } from './cells/admin-order-actions-cell.component';\nimport { BusinessInfoCellComponent } from './cells/business-info-cell.component';\nimport { DateCellComponent } from './cells/date-cell.component';\nimport { ExpiryCellComponent } from './cells/expiry-cell.component';\nimport { OrderIdCellComponent } from './cells/order-id-cell.component';\nimport { OrderTagsCellComponent } from './cells/order-tags-cell.component';\nimport { SalesOrderTableCustomComponentDirective } from './cells/sales-order-table-custom.component';\nimport { SalespersonCellComponent } from './cells/salesperson-cell.component';\nimport { SalespersonOrderActionsCellComponent } from './cells/salesperson-order-actions-cell.component';\nimport { StatusCellComponent } from './cells/status-cell.component';\nimport { SalesOrdersTableComponent } from './sales-orders-table.component';\nimport { FulfillmentCellComponent } from './cells/fulfillment-cell.component';\nimport { SalesOrderTableStatsComponent } from './sales-order-table-stats/sales-order-table-stats.component';\n\n@NgModule({\n declarations: [\n SalesOrdersTableComponent,\n BusinessInfoCellComponent,\n OrderIdCellComponent,\n OrderTagsCellComponent,\n SalespersonCellComponent,\n DateCellComponent,\n StatusCellComponent,\n FulfillmentCellComponent,\n ExpiryCellComponent,\n AdminOrderActionsCellComponent,\n SalespersonOrderActionsCellComponent,\n SalespersonCellComponent,\n SalesOrderTableCustomComponentDirective,\n SalesOrderTableStatsComponent,\n ],\n imports: [\n CommonModule,\n Filter2TableModule,\n RouterModule,\n MatProgressSpinnerModule,\n MatTooltipModule,\n VaBadgeModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: WEBLATE_COMPONENT_NAME,\n baseTranslation: baseTranslation,\n }),\n MatMenuModule,\n MatIconModule,\n MatButtonModule,\n MatCardModule,\n MatDividerModule,\n VaCardsModule,\n GalaxyStatisticModule,\n GalaxyBadgeModule,\n SalespersonSelectorDialogModule,\n ],\n providers: [\n AccountGroupService,\n GalaxyAddressPipe,\n { provide: MAT_DATE_LOCALE, useValue: getLocale() },\n {\n provide: DateAdapter,\n useClass: DateFnsAdapter,\n deps: [MAT_DATE_LOCALE],\n },\n { provide: MAT_DATE_FORMATS, useValue: MAT_DATE_FNS_FORMATS },\n { provide: 'FULFILLMENT_CELL_LINK_VERSION', useValue: false },\n ],\n exports: [SalesOrdersTableComponent, SalesOrderTableStatsComponent],\n})\nexport class SalesOrdersTableModule {}\n","import { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\n\nexport enum SidePanelState {\n opportunityDetails = 'opportunity-details',\n opportunityCreate = 'opportunity-create',\n manualAutomation = 'manual-automation',\n snapshotView = 'snapshot-view',\n orderCreate = 'order-create',\n campaignCreate = 'campaign-create',\n contactListActions = 'contact-list-actions',\n empty = 'empty',\n}\n\n// Add more types as needed\nexport interface CampaignSidePanelDataInterface {\n accountGroupId: string;\n}\n\nexport type SidePanelStateDataTypes = CampaignSidePanelDataInterface;\n\nexport interface SidePanelStateData {\n state: SidePanelState;\n data: T;\n}\n\n@Injectable()\nexport class SidePanelStateService {\n private readonly sidePanelState$$ = new ReplaySubject>(1);\n readonly sidePanelState$: Observable> = this.sidePanelState$$.asObservable();\n\n switchState(state: SidePanelState, data?: T): void {\n this.sidePanelState$$.next({ state: state, data: data });\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { SlideOutPanelService } from './slide-out-panel.service';\nimport { Observable } from 'rxjs';\nimport { MatDrawerMode } from '@angular/material/sidenav';\n\n@Component({\n selector: 'sales-ui-slide-out-panel',\n templateUrl: './slide-out-panel.component.html',\n styleUrls: ['./slide-out-panel.component.scss'],\n})\nexport class SlideOutPanelComponent {\n public readonly isOpened$: Observable;\n @Input() mode: MatDrawerMode = 'side';\n events: string;\n\n constructor(private readonly slideOutPanelService: SlideOutPanelService) {\n this.isOpened$ = slideOutPanelService.isSlideOutOpen$;\n }\n\n closeSideNav(): void {\n this.slideOutPanelService.closeSlideOut();\n }\n}\n","\n \n \n \n \n \n \n\n","import { NgModule } from '@angular/core';\nimport { SlideOutPanelComponent } from './slide-out-panel.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { SlideOutPanelService } from './slide-out-panel.service';\nimport { CommonModule } from '@angular/common';\nimport { SlideOutPanelHeaderComponent } from './slide-out-panel-header/slide-out-panel-header.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { SidePanelStateService } from './side-panel-state.service';\n\n@NgModule({\n declarations: [SlideOutPanelComponent, SlideOutPanelHeaderComponent],\n exports: [SlideOutPanelComponent, SlideOutPanelHeaderComponent],\n imports: [\n MatButtonModule,\n MatIconModule,\n MatSidenavModule,\n CommonModule,\n MatIconModule,\n TranslateModule,\n MatToolbarModule,\n GalaxyBadgeModule,\n ],\n providers: [SlideOutPanelService, SidePanelStateService],\n})\nexport class SlideOutPanelModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { CreateOpportunityPageData } from './interface';\n\n@Injectable()\nexport class CreateOpportunityService {\n private readonly createPageDetails$$ = new BehaviorSubject(null);\n public readonly createPageDetails$ = this.createPageDetails$$.asObservable();\n\n setCreatePageDetails(data: CreateOpportunityPageData): void {\n this.createPageDetails$$.next(data);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Opportunity } from '@vendasta/sales-opportunities';\nimport { OpportunityService } from '../../opportunity.service';\nimport { Observable, ReplaySubject } from 'rxjs';\n\nexport type Mode = 'details' | 'qualification';\n\n@Injectable()\nexport class OpportunityDetailsService {\n private readonly mode$$ = new ReplaySubject(1);\n public readonly mode$ = this.mode$$.asObservable();\n readonly isOpen$: Observable;\n\n constructor(private readonly opportunityUpdates: OpportunityService) {}\n setSelectedOpportunity(opportunity: Opportunity): void {\n this.setMode('details');\n this.opportunityUpdates.setSelectedOpportunity(opportunity);\n }\n\n setMode(mode: Mode): void {\n this.mode$$.next(mode);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { Opportunity } from '@vendasta/sales-opportunities';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OpportunitySidePanelEventsService {\n private readonly sidePanelCloseEvents$$ = new Subject();\n sidePanelCloseEvents$ = this.sidePanelCloseEvents$$.asObservable();\n private readonly opportunityCreatedEvents$$ = new BehaviorSubject(null);\n opportunityCreatedEvents$ = this.opportunityCreatedEvents$$.asObservable();\n\n sidePanelCloseRequested(): void {\n this.sidePanelCloseEvents$$.next(null);\n }\n\n opportunityCreated(opportunity: Opportunity): void {\n this.opportunityCreatedEvents$$.next(opportunity);\n }\n}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { OpportunityService } from '../../../opportunity.service';\nimport { Observable } from 'rxjs';\nimport { Opportunity } from '@vendasta/sales-opportunities';\nimport { distinctUntilChanged, map, switchMap, take } from 'rxjs/operators';\nimport { FileInfo, FileUploadError } from '@vendasta/galaxy/uploader';\nimport { SalesOrdersService } from '@vendasta/sales-orders';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\n\n@Component({\n selector: 'sales-ui-attachments-card',\n templateUrl: './opportunity-attachments-card.component.html',\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class OpportunityAttachmentsCardComponent implements OnInit {\n protected opportunity$: Observable;\n attachmentsUploadUrl: string;\n files$: Observable;\n constructor(\n private readonly updateService: OpportunityService,\n private readonly salesOrderService: SalesOrdersService,\n private readonly snackBar: SnackbarService,\n ) {}\n\n ngOnInit(): void {\n this.opportunity$ = this.updateService.currentOpportunity$;\n this.attachmentsUploadUrl = this.salesOrderService.getUploadFileUrl();\n this.files$ = this.opportunity$.pipe(\n distinctUntilChanged(),\n map((opportunity) => {\n if (!opportunity.attachments) {\n return [];\n }\n return opportunity.attachments.map(\n (attachment) => ({ name: attachment.name, url: attachment.url } as FileInfo),\n );\n }),\n );\n }\n\n uploadFile(file: FileInfo): void {\n this.opportunity$\n .pipe(\n take(1),\n switchMap((opportunity) => {\n return this.updateService.addAttachmentToOpportunity(\n opportunity.opportunityId,\n opportunity.accountGroupId,\n file.name,\n file.url,\n );\n }),\n )\n .subscribe(\n () => {\n this.snackBar.openSuccessSnack('FRONTEND.SALES_UI.OPPORTUNITY_ATTACHMENT.ATTACHMENT_UPLOAD_SUCCESS');\n },\n () => {\n this.snackBar.openErrorSnack('FRONTEND.SALES_UI.OPPORTUNITY_ATTACHMENT.ATTACHMENT_ADDING_ERROR');\n },\n );\n }\n\n handleFileUploadError(err: FileUploadError): void {\n let errorMessage = 'FRONTEND.SALES_UI.ERRORS.ERROR_ATTACHMENT_GENERIC';\n switch (err.error.message) {\n case 'GALAXY.UPLOADER.ERROR.MAX_FILE_SIZE_EXCEEDED':\n errorMessage = 'FRONTEND.SALES_UI.ERRORS.ERROR_MAX_FILE_SIZE_EXCEEDED';\n break;\n case 'GALAXY.UPLOADER.ERROR.MAX_FILES_EXCEEDED':\n errorMessage = 'FRONTEND.SALES_UI.ERRORS.ERROR_MAX_FILES_EXCEEDED';\n break;\n case 'GALAXY.UPLOADER.ERROR.DUPLICATE_FILE_ATTEMPT':\n errorMessage = 'FRONTEND.SALES_UI.ERRORS.ERROR_DUPLICATE_FILE_ATTEMPT';\n break;\n }\n this.snackBar.openErrorSnack(errorMessage);\n }\n}\n","\n
\n \n
\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { FormControl } from '@angular/forms';\n\nexport interface AddTagsDialogData {\n accountGroupId: string;\n opportunityId: string;\n opportunityTags: string[];\n availableTags?: string[];\n}\nexport type AddTagsDialogResult = string[] | null;\n\n@Component({\n templateUrl: './add-tags-dialog.component.html',\n})\nexport class AddTagsDialogComponent {\n tagsControl = new FormControl([]);\n filteredTags: string[] = [];\n private availableTags: string[] = [];\n\n constructor(\n private readonly dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) private readonly data: AddTagsDialogData,\n ) {\n this.availableTags = this.data?.availableTags || [];\n this.filterTags('');\n this.tagsControl.setValue(this.data?.opportunityTags ?? []);\n }\n\n private filterTags(searchText: string): void {\n this.filteredTags = this.availableTags.filter((tag) => tag?.toLowerCase().includes(searchText.toLowerCase()));\n }\n\n searchTextChanged(searchText: string): void {\n this.filterTags(searchText);\n }\n\n save(): void {\n this.dialogRef.close(this.tagsControl.value);\n }\n\n cancel(): void {\n this.dialogRef.close(null);\n }\n}\n","

\n {{ 'FRONTEND.SALES_UI.OPPORTUNITY_TAGS.ADD_DIALOG.TITLE' | translate }}\n

\n\n \n \n {{ 'FRONTEND.SALES_UI.OPPORTUNITY_TAGS.ADD_DIALOG.LABEL' | translate }}\n \n \n \n\n\n \n \n\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { distinctUntilChanged, filter, map, shareReplay, switchMap, take } from 'rxjs/operators';\nimport { BehaviorSubject, Observable, combineLatest, firstValueFrom } from 'rxjs';\nimport {\n AddTagsDialogComponent,\n AddTagsDialogData,\n AddTagsDialogResult,\n} from './add-tags-dialog/add-tags-dialog.component';\nimport { Opportunity, SalesOpportunitiesService } from '@vendasta/sales-opportunities';\nimport { AccountGroup, AccountGroupApiService, ProjectionFilter } from '@galaxy/account-group';\n\ninterface Tag {\n name: string;\n accountTag?: boolean;\n}\n\n@Component({\n selector: 'sales-ui-opportunity-tags',\n templateUrl: './opportunity-tags.component.html',\n styleUrls: ['./opportunity-tags.component.scss'],\n})\nexport class OpportunityTagsComponent {\n @Input() set opportunity(opp: Opportunity) {\n this.opportunity$$.next(opp);\n }\n @Input() loading: boolean;\n @Output() tagsChanged: EventEmitter = new EventEmitter();\n\n private readonly opportunity$$ = new BehaviorSubject(null);\n private readonly accountGroupInfo$: Observable;\n private readonly accountTags$: Observable;\n private readonly opportunityTags$: Observable;\n private readonly availableTags$: Observable;\n readonly opportunity$ = this.opportunity$$.asObservable();\n readonly tags$: Observable;\n readonly hasTags$: Observable;\n\n constructor(\n private readonly dialog: MatDialog,\n private readonly accountGroupService: AccountGroupApiService,\n private readonly salesOpportunitiesService: SalesOpportunitiesService,\n ) {\n this.accountGroupInfo$ = this.opportunity$.pipe(\n filter((opp) => Boolean(opp)),\n distinctUntilChanged((a, b) => a.accountGroupId === b.accountGroupId),\n switchMap((opp) => this.getAccountGroup(opp.accountGroupId)),\n shareReplay(1),\n );\n this.accountTags$ = this.accountGroupInfo$.pipe(\n map((accountGroup) => this.getAccountGroupTags(accountGroup)),\n map((tags) => tags.map((tag) => ({ name: tag, accountTag: true } as Tag))),\n );\n this.opportunityTags$ = this.opportunity$.pipe(\n map((opp) => opp?.tags?.map((tag) => ({ name: tag, accountTag: false } as Tag)) || []),\n );\n this.tags$ = combineLatest([this.opportunityTags$, this.accountTags$]).pipe(\n map(([oppTags, accountTags]) => oppTags.concat(accountTags)),\n shareReplay(1),\n );\n this.hasTags$ = this.tags$.pipe(map((tags) => tags?.length > 0));\n this.availableTags$ = this.accountGroupInfo$.pipe(\n switchMap((accountGroup) => this.getSuggestedTags(accountGroup)),\n shareReplay(1),\n );\n }\n\n private getAccountGroup(accountGroupId: string): Observable {\n return this.accountGroupService.get(\n accountGroupId,\n new ProjectionFilter({ accountGroupExternalIdentifiers: true }),\n );\n }\n\n private getAccountGroupTags(accountGroup: AccountGroup): string[] {\n return accountGroup?.externalIdentifiers?.tags ?? [];\n }\n\n private getSuggestedTags(accountGroup: AccountGroup): Observable {\n return this.salesOpportunitiesService.getTags(\n accountGroup?.externalIdentifiers?.partnerId,\n accountGroup?.externalIdentifiers?.marketId,\n );\n }\n\n async openEditTagsDialog(): Promise {\n this.dialog.closeAll();\n const opp = this.opportunity$$.getValue();\n const availableTags = await firstValueFrom(this.availableTags$);\n const data: AddTagsDialogData = {\n opportunityId: opp.opportunityId,\n accountGroupId: opp.accountGroupId,\n opportunityTags: opp.tags,\n availableTags: availableTags,\n };\n const config: MatDialogConfig = {\n minWidth: '40vw',\n maxWidth: '100vw',\n width: '600px',\n data,\n };\n const editTagsDialogRef: MatDialogRef = this.dialog.open(\n AddTagsDialogComponent,\n config,\n );\n editTagsDialogRef\n .afterClosed()\n .pipe(\n take(1),\n filter((res) => res !== null),\n )\n .subscribe((tags) => this.tagsChanged.emit(tags));\n }\n}\n","\n \n\n\n\n \n \n \n local_offer\n \n

\n {{ 'FRONTEND.SALES_UI.OPPORTUNITY_TAGS.EMPTY_STATE.DESCRIPTION' | translate }}\n

\n \n \n \n
\n
\n
\n\n\n
\n \n \n {{ tag.name }}\n \n \n \n
\n
\n","import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { Component, Inject, Input } from '@angular/core';\nimport { UntypedFormControl, Validators } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\n\nexport interface ReopenOpportunityData {\n reason: string;\n}\n\nexport interface ReopenOpportunityDialogInputData {\n opportunityName: string;\n}\n\n@Component({\n selector: 'sales-ui-reopen-opportunity-dialog',\n templateUrl: 'reopen-opportunity-dialog.component.html',\n styleUrls: ['reopen-opportunity-dialog.component.scss'],\n})\nexport class ReopenOpportunityDialogComponent {\n @Input() opportunityInfo: ReopenOpportunityDialogInputData;\n reason: UntypedFormControl = new UntypedFormControl('', [Validators.required]);\n\n constructor(\n public dialogRef: MatDialogRef,\n private readonly translate: TranslateService,\n @Inject(MAT_DIALOG_DATA) private readonly data: ReopenOpportunityDialogInputData,\n ) {\n if (data) {\n this.opportunityInfo = data;\n }\n }\n onSubmit(): void {\n if (this.reason.valid) {\n this.dialogRef.close({\n reason: this.reason.value,\n });\n }\n }\n\n getErrorMessage(): string {\n return this.reason.hasError('required')\n ? this.translate.instant(\n 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.REOPENING_OPPORTUNITIES.MUST_ENTER_REASON_ON_REOPEN',\n )\n : '';\n }\n}\n","\n \n
\n

\n {{\n 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.REOPENING_OPPORTUNITIES.REOPEN_OPPORTUNITY_ACTION'\n | translate : { opportunityName: opportunityInfo.opportunityName }\n }}\n

\n \n
\n

\n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.REOPENING_OPPORTUNITIES.OPPORTUNITY_REOPEN_DETAILS' | translate }}\n

\n \n \n {{ getErrorMessage() }}\n \n \n \n \n \n
\n
\n","import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CloseState } from '../../../../../interface';\n\nexport interface CloseOpportunityData {\n disableCloseOppNotes: boolean;\n closeState?: CloseState;\n}\n\n@Component({\n selector: 'sales-ui-close-opportunity-dialog',\n templateUrl: './close-opportunity-dialog.component.html',\n styleUrls: ['./close-opportunity-dialog.component.scss'],\n})\nexport class CloseOpportunityDialogComponent implements OnInit {\n closeOpportunityForm: UntypedFormGroup;\n closeState = CloseState;\n\n constructor(\n private readonly fb: UntypedFormBuilder,\n public dialogRef: MatDialogRef,\n private readonly translate: TranslateService,\n @Inject(MAT_DIALOG_DATA) private readonly data: CloseOpportunityData, // Need to provide close-lost reasons // @Inject(ACCESS_TO_ZENDESK_CLOSED_LOST_REASONS) readonly hasAccessToZendeskClosedLostReasons$: Observable,\n ) {}\n\n // zendeskClosedLostReasonGroups = zendeskClosedLostReasonGroups;\n\n closeStateOptions = [\n { value: '', displayValue: this.translate.instant('FRONTEND.SALES_UI.SALES_OPPORTUNITIES.CLOSE.SELECT_STATE') },\n { value: CloseState.WON, displayValue: this.translate.instant('FRONTEND.SALES_UI.SALES_OPPORTUNITIES.CLOSED_WON') },\n {\n value: CloseState.LOST,\n displayValue: this.translate.instant('FRONTEND.SALES_UI.SALES_OPPORTUNITIES.CLOSED_LOST'),\n },\n ];\n\n defaultReason = {\n value: '',\n displayValue: this.translate.instant('FRONTEND.SALES_UI.SALES_OPPORTUNITIES.CLOSE.CLOSED_LOST.SELECT_REASON'),\n };\n\n reasonOptions = [\n {\n value: 'price',\n displayValue: this.translate.instant('FRONTEND.SALES_UI.SALES_OPPORTUNITIES.CLOSE.CLOSED_LOST.PRICE'),\n },\n {\n value: 'no-budget',\n displayValue: this.translate.instant('FRONTEND.SALES_UI.SALES_OPPORTUNITIES.CLOSE.CLOSED_LOST.NO_BUDGET'),\n },\n {\n value: 'lost-to-competitor',\n displayValue: this.translate.instant(\n 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.CLOSE.CLOSED_LOST.LOST_TO_COMPETITOR',\n ),\n },\n {\n value: 'not-ready',\n displayValue: this.translate.instant('FRONTEND.SALES_UI.SALES_OPPORTUNITIES.CLOSE.CLOSED_LOST.NOT_READY'),\n },\n {\n value: 'other',\n displayValue: this.translate.instant('FRONTEND.SALES_UI.SALES_OPPORTUNITIES.CLOSE.CLOSED_LOST.OTHER'),\n },\n ];\n\n ngOnInit(): void {\n this.createForm();\n }\n\n isCloseStateNullOrUndefined(): boolean {\n return this.data ? this.data.closeState === null || this.data.closeState === undefined : true;\n }\n\n createForm(): void {\n this.closeOpportunityForm = this.fb.group({\n closeState: [this.getInitialCloseState(), Validators.required],\n reason: '',\n notes: '',\n actualClosedDate: new Date(),\n });\n if (this.data && this.data.disableCloseOppNotes) {\n this.closeOpportunityForm.get('notes').disable();\n }\n\n if (this.data?.closeState) {\n this.closeOpportunityForm.controls.closeState.setValue(this.data.closeState);\n this.updateCloseOpportunityReason(this.closeOpportunityForm);\n } else {\n this.closeOpportunityForm.get('closeState').valueChanges.subscribe(() => {\n this.updateCloseOpportunityReason(this.closeOpportunityForm);\n });\n }\n }\n\n private getInitialCloseState(): CloseState {\n return this.isCloseStateNullOrUndefined() ? CloseState.WON : this.data.closeState;\n }\n\n private updateCloseOpportunityReason(closeOpportunityForm: UntypedFormGroup): void {\n const reason = closeOpportunityForm.get('reason');\n if (this.data.closeState === CloseState.LOST) {\n reason.setValidators(Validators.required);\n } else {\n reason.setValidators([]);\n reason.setValue('');\n }\n reason.updateValueAndValidity();\n }\n}\n","

\n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.CLOSE.OPPORTUNITY_CLOSE' | translate }}\n

\n\n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.CLOSE.MESSAGE' | translate }}\n
\n
\n
\n \n \n \n \n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.CLOSE.CLOSE_STATE' | translate }}\n \n \n \n {{ closeStateOption.displayValue }}\n \n \n \n \n \n \n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.CLOSE.CLOSED_LOST.REASON' | translate }}\n \n \n \n {{ defaultReason.displayValue }}\n \n \n \n \n \n \n \n \n \n {{ reasonOption.displayValue }}\n \n \n \n \n \n \n
\n
\n\n \n \n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.CLOSE.CLOSE_OPPORTUNITY' | translate }}\n \n\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { Opportunity, SalesOpportunitiesService } from '@vendasta/sales-opportunities';\nimport { BehaviorSubject, EMPTY, Observable, firstValueFrom } from 'rxjs';\nimport { shareReplay, switchMap } from 'rxjs/operators';\nimport { CloseState, ClosedLostReasonStringMapping, OpportunityCloseEvent } from '../../../../interface';\nimport { OrdersUrlFunction } from '../../../../opportunity';\nimport { OpportunityService } from '../../../../opportunity.service';\nimport { SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN, SalesUIOpportunityDetailsConfig } from '../../../../tokens';\nimport {\n ReopenOpportunityData,\n ReopenOpportunityDialogComponent,\n ReopenOpportunityDialogInputData,\n} from '../reopen-opportunity/reopen-opportunity-dialog.component';\nimport { CloseOpportunityDialogComponent } from './close-opportunity-dialog/close-opportunity-dialog.component';\n\n@Component({\n selector: 'sales-ui-close-opportunity',\n templateUrl: './close-opportunity.component.html',\n styleUrls: ['./close-opportunity.component.scss'],\n})\nexport class CloseOpportunityComponent implements OnInit {\n protected opportunity$: Observable;\n private readonly subscriptions = SubscriptionList.new();\n private readonly opportunityOpen$$ = new BehaviorSubject(true);\n private readonly closedWon$$ = new BehaviorSubject(true);\n readonly opportunityOpen$: Observable = this.opportunityOpen$$.asObservable();\n readonly closedWon$: Observable = this.closedWon$$.asObservable();\n protected canCreateOrders$: Observable;\n private ordersUrl: OrdersUrlFunction;\n\n constructor(\n private readonly router: Router,\n private readonly dialog: MatDialog,\n private readonly salesOpportunitiesApiService: SalesOpportunitiesService,\n private readonly opportunityUpdates: OpportunityService,\n private readonly snackbarService: SnackbarService,\n private readonly translate: TranslateService,\n @Inject(SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN) private readonly config: SalesUIOpportunityDetailsConfig,\n ) {\n this.opportunity$ = this.opportunityUpdates.currentOpportunity$.pipe(shareReplay(1));\n this.canCreateOrders$ = this.config.canCreateOrders$;\n this.ordersUrl = this.config.getOrdersUrl;\n }\n\n ngOnInit(): void {\n this.subscriptions.add(this.opportunity$, (opp: Opportunity) => {\n this.opportunityOpen$$.next(!opp.isClosed);\n this.closedWon$$.next(opp.pipelineStage === 'closed-won');\n });\n }\n\n async createOrderAction(opp: Opportunity): Promise {\n const orderUrl = this.ordersUrl(opp);\n this.router.navigate([orderUrl.route], { queryParams: orderUrl.queryParams });\n }\n\n async closeOpportunity(won: boolean): Promise {\n const closeState = won ? CloseState.WON : CloseState.LOST;\n\n const opportunity = await firstValueFrom(this.opportunity$);\n\n const dialogRef = this.dialog.open(CloseOpportunityDialogComponent, {\n width: '600px',\n data: { closeState: closeState },\n });\n\n this.subscriptions.add(\n dialogRef.afterClosed().pipe(\n switchMap((data: OpportunityCloseEvent) => {\n if (!data) {\n return EMPTY;\n }\n\n const closeState = data.closeState;\n const notes = data?.notes || '';\n if (closeState === CloseState.WON) {\n return this.salesOpportunitiesApiService.closeOpportunityAsWon(\n opportunity.opportunityId,\n opportunity.accountGroupId,\n opportunity.salesPersonId,\n notes,\n );\n }\n\n if (closeState === CloseState.LOST) {\n const reason = ClosedLostReasonStringMapping[data.reason];\n return this.salesOpportunitiesApiService.closeOpportunityAsLost(\n opportunity.opportunityId,\n opportunity.accountGroupId,\n opportunity.salesPersonId,\n reason,\n notes,\n );\n }\n\n return EMPTY;\n }),\n ),\n () => {\n this.closedWon$$.next(won);\n this.opportunityOpen$$.next(false);\n },\n );\n }\n\n async reopenOpportunity(): Promise {\n const opportunity = await firstValueFrom(this.opportunity$);\n\n const dialogRef = this.dialog.open(ReopenOpportunityDialogComponent, {\n data: {\n opportunityName: opportunity.name,\n },\n width: '600px',\n });\n\n const reopenOpportunityRequest$ = dialogRef.afterClosed().pipe(\n switchMap((data: ReopenOpportunityData) => {\n if (!data) {\n return EMPTY;\n }\n\n const reason = data.reason;\n return this.salesOpportunitiesApiService.reopenOpportunity(\n opportunity.opportunityId,\n opportunity.accountGroupId,\n opportunity.salesPersonId,\n reason,\n );\n }),\n );\n\n await firstValueFrom(reopenOpportunityRequest$)\n .then(() => this.opportunityOpen$$.next(true))\n .catch(() => {\n const err = this.translate.instant(\n 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.REOPENING_OPPORTUNITIES.CANNOT_REOPEN_OPPORTUNITY',\n );\n this.snackbarService.openErrorSnack(err);\n });\n }\n}\n","
\n \n \n \n
\n\n\n
\n \n \n \n \n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.CLOSED_WON' | translate }}\n \n \n \n \n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.CLOSED_LOST' | translate }}\n \n \n
\n
\n\n\n \n {{ 'FRONTEND.SALES_UI.OPPORTUNITY_DETAILS.CREATE_ORDER' | translate }}\n \n\n","import { OpportunityType } from '../interface';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatSelectModule } from '@angular/material/select';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\n\nexport function getOpportunityTypeFromId(typeId = ''): OpportunityType {\n return OpportunityTypes.find((t) => t.id === typeId);\n}\n\nexport function getDefaultOpportunityType(): OpportunityType {\n return OpportunityTypes.find((t) => t.id === '');\n}\n\nexport const OpportunityTypes: OpportunityType[] = [\n {\n id: '',\n displayName: 'FRONTEND.SALES_OPPORTUNITIES.OPPORTUNITY_TYPE.NOT_SPECIFIED',\n },\n {\n id: 'new-business',\n displayName: 'FRONTEND.SALES_OPPORTUNITIES.OPPORTUNITY_TYPE.NEW_BUSINESS',\n },\n {\n id: 'existing-business',\n displayName: 'FRONTEND.SALES_OPPORTUNITIES.OPPORTUNITY_TYPE.EXISTING_BUSINESS',\n },\n];\n\n@Component({\n standalone: true,\n imports: [MatSelectModule, CommonModule, TranslateModule, GalaxyFormFieldModule],\n selector: 'sales-ui-type-selector',\n templateUrl: './type-selector.component.html',\n})\nexport class TypeSelectorComponent {\n @Input() set defaultType(type: OpportunityType) {\n this.selectedType$$.next(type);\n }\n\n @Output() typeChanged = new EventEmitter();\n opportunityTypes$$ = new BehaviorSubject(OpportunityTypes);\n opportunityTypes$ = this.opportunityTypes$$.asObservable();\n selectedType$$ = new BehaviorSubject(OpportunityTypes[0]);\n selectedType$ = this.selectedType$$.asObservable();\n\n emitTypeChange(type: string): void {\n this.typeChanged.emit(type);\n }\n}\n","\n \n {{ 'FRONTEND.SALES_OPPORTUNITIES.OPPORTUNITY_TYPE.PLACEHOLDER' | translate }}\n \n \n {{ type.displayName | translate }}\n \n \n \n\n","import { CommonModule } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { Opportunity } from '@vendasta/sales-opportunities';\nimport { Observable, firstValueFrom } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { OpportunityType } from '../../interface';\nimport { OpportunityServiceModule } from '../../opportunity-service.module';\nimport { OpportunityService } from '../../opportunity.service';\nimport { TypeSelectorComponent, getOpportunityTypeFromId } from '../type-selector.component';\n\n@Component({\n standalone: true,\n selector: 'sales-ui-update-type-selector',\n templateUrl: './update-type-selector.component.html',\n imports: [\n MatFormFieldModule,\n CommonModule,\n TranslateModule,\n MatSelectModule,\n TypeSelectorComponent,\n OpportunityServiceModule,\n ],\n})\nexport class UpdateTypeSelectorComponent implements OnInit {\n opportunity$: Observable;\n initialType$: Observable;\n\n constructor(\n private readonly opportunityUpdates: OpportunityService,\n private readonly snackbarService: SnackbarService,\n ) {}\n\n ngOnInit(): void {\n this.opportunity$ = this.opportunityUpdates.currentOpportunity$;\n this.initialType$ = this.opportunityUpdates.currentOpportunity$.pipe(\n map((opportunity) => getOpportunityTypeFromId(opportunity.opportunityType)),\n );\n }\n\n async handleTypeChange(opportunity: Opportunity, typeId: string): Promise {\n const newOpp = await firstValueFrom(this.opportunityUpdates.updateType(opportunity, typeId));\n if (newOpp) {\n this.snackbarService.openSuccessSnack('FRONTEND.SALES_OPPORTUNITIES.OPPORTUNITY_TYPE.SUCCESS');\n } else {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_OPPORTUNITIES.OPPORTUNITY_TYPE.ERROR');\n }\n }\n}\n","
\n \n
\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { Pipeline } from '@vendasta/sales-common';\nimport { combineLatest, Observable } from 'rxjs';\nimport { OpportunityService } from '../../../../../../opportunity.service';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { Opportunity, StageInterface } from '@vendasta/sales-opportunities';\nimport { SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN, SalesUIOpportunityDetailsConfig } from '../../../../../../tokens';\n\n@Component({\n selector: 'sales-ui-pipeline-selector',\n templateUrl: './pipeline-selector.component.html',\n})\nexport class PipelineSelectorComponent implements OnInit {\n protected opportunity$: Observable;\n protected selectedPipeline$: Observable;\n protected selectedStage$: Observable;\n protected userPipelines$: Observable;\n\n constructor(\n @Inject(SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN) private readonly config: SalesUIOpportunityDetailsConfig,\n private readonly opportunityUpdates: OpportunityService,\n ) {}\n\n ngOnInit(): void {\n this.userPipelines$ = this.config.pipelines$;\n this.opportunity$ = this.opportunityUpdates.currentOpportunity$;\n this.selectedPipeline$ = combineLatest([this.opportunity$, this.userPipelines$]).pipe(\n distinctUntilChanged(),\n map(([opp, pipelines]) => {\n const oppPipeline = pipelines.find((p) => p.id === opp.pipelineId);\n if (pipelines.length >= 1 && !oppPipeline) {\n return pipelines[0];\n } else {\n return oppPipeline;\n }\n }),\n );\n\n this.selectedStage$ = combineLatest([this.selectedPipeline$, this.opportunity$]).pipe(\n distinctUntilChanged(),\n map(([pipeline, opp]) => {\n return pipeline.findStage(opp.probability);\n }),\n );\n }\n\n protected pipelineSelectionChange(pipeline: Pipeline, opp: Opportunity): void {\n this.opportunityUpdates.updatePipelineId(opp, pipeline.id, opp.probability);\n }\n\n protected stageSelectionChange(stage: StageInterface, opp: Opportunity): void {\n this.opportunityUpdates.updateProbability(opp, stage.probability);\n }\n\n protected readonly Boolean = Boolean;\n}\n","
\n \n 1\">\n \n \n {{ 'FRONTEND.SALES_OPPORTUNITIES.PIPELINE' | translate }}\n \n \n \n {{ pipeline.name }}\n \n \n \n \n \n \n \n \n {{ 'FRONTEND.SALES_OPPORTUNITIES.STAGE' | translate }}\n \n \n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.ERRORS.PIPELINE_STAGE_SELECTION' | translate }}\n \n \n {{ stage.name }}\n \n \n \n
\n","import { Component, DestroyRef, inject, Input, OnInit } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormGroup, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { Opportunity } from '@vendasta/sales-opportunities';\nimport { Observable } from 'rxjs';\nimport { filter, switchMap, take, withLatestFrom } from 'rxjs/operators';\nimport {\n contractDurationKeysToEnum,\n ContractDurationTranslationKey,\n MIN_CONTRACT_DURATION_REGEX,\n} from '../../../../../../interface';\nimport { OpportunityService } from '../../../../../../opportunity.service';\n\n@Component({\n selector: 'sales-ui-contract-duration-selector',\n templateUrl: './contract-duration-selector.component.html',\n})\nexport class ContractDurationSelectorComponent implements OnInit {\n protected opportunity$: Observable;\n protected contractDurationTranslations: ContractDurationTranslationKey[] = contractDurationKeysToEnum;\n protected contractDurationForm: FormGroup;\n private readonly destroyRef = inject(DestroyRef);\n\n // If provided contract duration embeds in parent form\n protected isEmbeddedForm: boolean;\n private _parentForm?: FormGroup;\n @Input()\n set parentForm(value: FormGroup | undefined) {\n this._parentForm = value;\n this.isEmbeddedForm = !!value;\n }\n get parentForm(): FormGroup | undefined {\n return this._parentForm;\n }\n\n constructor(private readonly updateService: OpportunityService, private readonly snackbarService: SnackbarService) {}\n\n ngOnInit(): void {\n if (this.isEmbeddedForm) {\n this.setFormGroup(null);\n } else {\n this.opportunity$ = this.updateService.currentOpportunity$;\n this.opportunity$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((opportunity) => {\n this.setFormGroup(opportunity);\n this.setValueUpdateSubscription();\n });\n }\n }\n private setFormGroup(opportunity: Opportunity): void {\n const duration = opportunity?.expectedContractDuration?.value || 0;\n const period = opportunity?.expectedContractDuration?.duration || 0;\n this.contractDurationForm = new FormGroup({\n contractDurationValue: new FormControl(duration, [validateContractDurationValue(MIN_CONTRACT_DURATION_REGEX)]),\n contractDurationPeriod: new FormControl(period, []),\n });\n\n if (this.isEmbeddedForm) {\n this.parentForm.addControl('contractDuration', this.contractDurationForm);\n }\n }\n\n private setValueUpdateSubscription(): void {\n this.contractDurationForm.valueChanges\n .pipe(\n withLatestFrom(this.opportunity$),\n filter(\n ([formValue, opportunity]) =>\n this.contractDurationForm.dirty &&\n opportunity &&\n formValue.contractDurationValue &&\n formValue.contractDurationPeriod,\n ),\n switchMap(([formValue, opportunity]) => {\n const duration = {\n value: formValue.contractDurationValue,\n duration: formValue.contractDurationPeriod,\n };\n return this.updateService.updateExpectedContractDuration(duration, opportunity);\n }),\n take(1),\n )\n .subscribe((newOpp) => {\n if (newOpp) {\n this.snackbarService.openSuccessSnack('SALES_CONTRACT_DURATION.DURATION_UPDATED');\n } else {\n this.snackbarService.openErrorSnack('SALES_CONTRACT_DURATION.ERRORS.UNABLE_TO_UPDATE_DURATION');\n }\n });\n }\n}\n\nfunction validateContractDurationValue(r: string): ValidatorFn {\n const regexp = new RegExp(r);\n return (c: FormControl): ValidationErrors | null => {\n if (c.value == null || c.value == undefined || c.value == '' || c.value == 0 || c.value == '0') return null;\n return regexp.test(c.value)\n ? null\n : {\n validateContractDurationValue: {\n valid: false,\n },\n };\n };\n}\n","
\n \n {{ 'SALES_CONTRACT_DURATION.DETAILS_SECTION_TITLE' | translate }}\n \n \n \n {{ contractDuration.key | translate }}\n \n \n {{ 'SALES_CONTRACT_DURATION.HINT' | translate }}\n \n
\n","import { Component, Inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl } from '@angular/forms';\nimport { TagOption } from '@vendasta/forms';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { Opportunity } from '@vendasta/sales-opportunities';\nimport { Observable, combineLatest, debounceTime, firstValueFrom, map } from 'rxjs';\nimport { OpportunityService } from '../../../../../../opportunity.service';\nimport { SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN, SalesUIOpportunityDetailsConfig } from '../../../../../../tokens';\n\n@Component({\n selector: 'sales-ui-subscribers-selector',\n templateUrl: './subscribers-selector.component.html',\n})\nexport class SubscribersSelectorComponent {\n readonly opportunity$: Observable;\n protected salespeople$: Observable;\n protected subscribersFormControl = new FormControl({\n value: [],\n disabled: true,\n });\n\n constructor(\n @Inject(SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN) private readonly config: SalesUIOpportunityDetailsConfig,\n private readonly opportunityUpdatesService: OpportunityService,\n private snackbarService: SnackbarService,\n ) {\n this.opportunity$ = this.opportunityUpdatesService.currentOpportunity$;\n this.opportunity$.pipe(takeUntilDestroyed()).subscribe((opportunity) => {\n this.subscribersFormControl.setValue(opportunity.subscriberUserIds, { emitEvent: false });\n this.subscribersFormControl.enable({ emitEvent: false });\n });\n\n this.salespeople$ = combineLatest([this.opportunity$, this.config.salespeople$]).pipe(\n takeUntilDestroyed(),\n map(([opportunity, salespeople]) =>\n salespeople\n .filter((sp) => sp.id !== opportunity.salesPersonId)\n .map((sp) => { name: sp.fullName, value: sp.id }),\n ),\n );\n\n this.subscribersFormControl.valueChanges\n .pipe(takeUntilDestroyed(), debounceTime(500))\n .subscribe((salesUserIds: string[]) => {\n firstValueFrom(this.opportunityUpdatesService.updateSubscribers(salesUserIds))\n .then(() =>\n this.snackbarService.openSuccessSnack('FRONTEND.SALES_UI.SALES_OPPORTUNITIES.SUBSCRIBERS_UPDATED'),\n )\n .catch(() =>\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.SALES_OPPORTUNITIES.SUBSCRIBERS_UPDATE_ERROR'),\n );\n });\n }\n}\n","\n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.SUBSCRIBERS' | translate }}\n \n\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { Observable } from 'rxjs';\nimport { Opportunity } from '@vendasta/sales-opportunities';\nimport { OpportunityService } from '../../../../../../opportunity.service';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime, distinctUntilChanged, filter, switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'sales-ui-opportunity-name',\n standalone: true,\n imports: [CommonModule, GalaxyFormFieldModule, MatInputModule, TranslateModule, ReactiveFormsModule],\n templateUrl: './opportunity-name.component.html',\n styleUrls: ['../../opportunity-info-form.component.scss'],\n})\nexport class OpportunityNameComponent {\n private opportunity$: Observable;\n opportunityNameControl = new FormControl('', Validators.required);\n\n constructor(private readonly updateService: OpportunityService, private readonly snackbarService: SnackbarService) {\n this.opportunity$ = this.updateService.currentOpportunity$;\n this.opportunity$.pipe(takeUntilDestroyed()).subscribe((opp) => {\n this.opportunityNameControl.setValue(opp.name, { emitEvent: false });\n });\n\n this.opportunityNameControl.valueChanges\n .pipe(\n takeUntilDestroyed(),\n distinctUntilChanged(),\n filter(() => this.opportunityNameControl.valid),\n debounceTime(500),\n switchMap((newName) => this.updateService.updateName(newName)),\n )\n .subscribe((newOpp) => {\n if (newOpp) {\n this.snackbarService.openSuccessSnack('FRONTEND.SALES_UI.SALES_OPPORTUNITIES.NAME_UPDATED');\n } else {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.SALES_OPPORTUNITIES.NAME_UPDATE_ERROR');\n }\n this.opportunityNameControl.updateValueAndValidity();\n });\n }\n}\n","\n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.OPPORTUNITY_NAME' | translate }}\n \n\n","import { Component, Inject } from '@angular/core';\nimport { combineLatest, firstValueFrom, Observable, of } from 'rxjs';\nimport { catchError, distinctUntilChanged, map, switchMap, take, withLatestFrom } from 'rxjs/operators';\nimport { Salesperson } from '@galaxy/types';\nimport { Opportunity } from '@vendasta/sales-opportunities';\nimport { OpportunityService } from '../../../../../opportunity.service';\nimport { SalespersonService as SPService } from '@vendasta/sales';\nimport { SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN, SalesUIOpportunityDetailsConfig } from '../../../../../tokens';\n\n@Component({\n selector: 'sales-ui-assignee-selector',\n templateUrl: './assignee-selector.component.html',\n styleUrls: ['../opportunity-info-form.component.scss'],\n})\nexport class AssigneeSelectorComponent {\n readonly assigneeId$: Observable;\n readonly opportunity$: Observable;\n protected salespeople$: Observable;\n\n constructor(\n private readonly salespersonService: SPService,\n private readonly opportunityUpdatesService: OpportunityService,\n @Inject(SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN) private readonly config: SalesUIOpportunityDetailsConfig,\n ) {\n this.opportunity$ = this.opportunityUpdatesService.currentOpportunity$;\n this.assigneeId$ = this.opportunity$.pipe(map((opp) => opp.salesPersonId));\n\n const lookupSalesperson$ = this.assigneeId$.pipe(\n distinctUntilChanged((x, y) => x === y),\n withLatestFrom(this.config.partnerId$),\n switchMap(([salesPersonId, partnerId]) =>\n this.salespersonService.getSalespersonBySubjectId(partnerId, salesPersonId),\n ),\n map((salesperson) => Salesperson.convertSalespeopleFromSalesResponse([salesperson])[0]),\n catchError(() => of(undefined)),\n );\n\n this.salespeople$ = combineLatest([this.config.salespeople$, this.assigneeId$]).pipe(\n switchMap(([salespeople, assigneeId]) => {\n const found = salespeople.findIndex((sp) => sp.id === assigneeId) > -1;\n if (found) {\n return of(salespeople);\n }\n return lookupSalesperson$.pipe(map((sp) => (sp ? [sp, ...salespeople] : salespeople)));\n }),\n );\n }\n\n async updateAssignee(assigneeId: string): Promise {\n const opportunity$ = this.opportunity$.pipe(\n take(1),\n switchMap((opp) =>\n this.opportunityUpdatesService.updateOpportunitySalesperson(opp, assigneeId, opp.salesPersonId),\n ),\n );\n\n await firstValueFrom(opportunity$);\n }\n}\n","\n {{ 'FRONTEND.SALES_UI.COMMON.ASSIGNEE' | translate }}\n \n \n {{ sp.fullName | translate }}\n \n \n\n","import { Component, DestroyRef, inject, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Opportunity } from '@vendasta/sales-opportunities';\nimport { addDays } from 'date-fns';\nimport { OpportunityService } from '../../../../../../opportunity.service';\nimport { MatDatepickerInputEvent } from '@angular/material/datepicker';\nimport { switchMap, take } from 'rxjs/operators';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\n\n@Component({\n selector: 'sales-ui-expected-close-selector',\n templateUrl: './expected-close-selector.component.html',\n styleUrls: ['../../opportunity-info-form.component.scss'],\n})\nexport class ExpectedCloseSelectorComponent implements OnInit {\n protected opportunity$: Observable;\n protected readonly minDate = addDays(new Date(), 1);\n private destroyRef = inject(DestroyRef);\n\n constructor(private readonly updateService: OpportunityService, private readonly snackbarService: SnackbarService) {}\n\n ngOnInit(): void {\n this.opportunity$ = this.updateService.currentOpportunity$;\n }\n\n handleExpectedCloseDateChange($event: MatDatepickerInputEvent): void {\n this.opportunity$\n .pipe(\n take(1),\n switchMap((opp) => {\n return this.updateService.updateExpectedCloseDate(opp, $event.value);\n }),\n )\n .subscribe((newOpp) => {\n if (newOpp) {\n this.snackbarService.openSuccessSnack('SALES_EXPECTED_CLOSE.EXPECTED_CLOSE_UPDATED');\n } else {\n this.snackbarService.openErrorSnack('SALES_EXPECTED_CLOSE.UNABLE_TO_UPDATE_EXPECTED_CLOSE');\n }\n });\n }\n}\n","\n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.EXPECTED_CLOSE' | translate }}\n \n \n \n \n\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'sales-ui-opportunity-info-form',\n templateUrl: './opportunity-info-form.component.html',\n styleUrls: ['./opportunity-info-form.component.scss'],\n})\nexport class OpportunityInfoFormComponent {}\n","
\n \n \n \n \n \n \n \n
\n","import { Component, Input } from '@angular/core';\nimport { Opportunity } from '@vendasta/sales-opportunities';\nimport { ReplaySubject } from 'rxjs';\n@Component({\n selector: 'sales-ui-opportunity-info',\n templateUrl: './opportunity-info.component.html',\n styleUrls: ['./opportunity-info.component.scss'],\n})\nexport class OpportunityInfoComponent {\n @Input() preferredCurrency: string;\n @Input() set opportunity(opportunity: Opportunity) {\n this.opportunity$$.next(opportunity);\n }\n private readonly opportunity$$ = new ReplaySubject(1);\n readonly opportunity$ = this.opportunity$$.asObservable();\n}\n","
\n
\n
\n
\n
\n {{\n 'FRONTEND.SALES_UI.COMMON.DATES.CREATED_ON' | translate : { date: opportunity.created | date : 'MMM dd, y' }\n }}\n
\n
\n
\n\n
\n
\n \n
\n
\n
\n {{ opportunity.projectedFirstYearValue || 0 | formatCurrency : preferredCurrency }}\n
\n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.OPPORTUNITY_VALUE' | translate }}\n
\n \n
\n
\n
\n
\n
\n","import { Component, Input } from '@angular/core';\nimport { Opportunity } from '@vendasta/sales-opportunities';\n\n@Component({\n selector: 'sales-ui-opportunity-qualification',\n templateUrl: './opportunity-qualification.component.html',\n styleUrls: ['./opportunity-qualification.component.scss'],\n})\nexport class OpportunityQualificationComponent {\n @Input() opportunity: Opportunity;\n}\n","\n","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, AfterContentInit } from '@angular/core';\n\n@Component({\n selector: 'sales-ui-opportunity-notes-edit',\n styleUrls: ['./opportunity-notes-edit.component.scss'],\n templateUrl: './opportunity-notes-edit.component.html',\n})\nexport class OpportunityNotesEditComponent implements AfterContentInit {\n @Input() note: string;\n @Output() save: EventEmitter = new EventEmitter();\n @Output() cancel: EventEmitter = new EventEmitter();\n @ViewChild('opportunityNotes', { static: true }) textarea: ElementRef;\n\n ngAfterContentInit(): void {\n this.textarea.nativeElement.focus();\n }\n\n handleSave(event: MouseEvent): void {\n event.stopPropagation();\n this.save.emit(this.note);\n }\n\n handleCancel(event: MouseEvent): void {\n event.stopPropagation();\n this.cancel.emit();\n }\n}\n","
\n \n \n \n
\n \n \n
\n
\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\n\n@Component({\n selector: 'sales-ui-opportunity-notes',\n templateUrl: './opportunity-notes.component.html',\n styleUrls: ['./opportunity-notes.component.scss'],\n})\nexport class OpportunityNotesComponent {\n private readonly currentNote$$ = new ReplaySubject(1);\n protected currentNote$ = this.currentNote$$.asObservable();\n private readonly editable$$ = new ReplaySubject(1);\n protected editable$ = this.editable$$.asObservable();\n private readonly inEditMode$$ = new BehaviorSubject(false);\n protected inEditMode$ = this.inEditMode$$.asObservable();\n\n @Input() set note(currentNote: string) {\n this.currentNote$$.next(currentNote);\n }\n @Input() set editable(isEditable: boolean) {\n this.editable$$.next(isEditable);\n }\n @Input() loading: boolean;\n\n @Output() noteChanged: EventEmitter = new EventEmitter();\n\n enterEditMode(): void {\n this.inEditMode$$.next(true);\n }\n\n save(newNote: string): void {\n this.currentNote$$.next(newNote);\n this.inEditMode$$.next(false);\n this.noteChanged.emit(newNote);\n }\n\n cancel(): void {\n this.inEditMode$$.next(false);\n }\n}\n","
\n \n
\n\n\n
\n
\n {{ note }}\n
\n \n
\n
\n
\n
\n\n\n \n \n note\n \n

{{ 'FRONTEND.SALES_OPPORTUNITIES.NO_NOTES_FOR_OPPORTUNITY' | translate }}

\n
\n \n \n \n
\n
\n
\n\n\n \n\n","/**\n * Opening a new window exposes users to security exploit where malicious\n * parties can modify their browsers' \"back history\", leading to phishing\n * attacks.\n *\n * This adds the \"noopener\" option which prevents that exploit.\n */\nexport function openSecureNewTab(url: string): Window {\n // tslint:disable-next-line:ban\n return window.open(url, '_blank', 'noopener');\n}\n\nexport function openSecureCurrentTab(url: string): Window {\n // tslint:disable-next-line:ban\n return window.open(url, undefined, 'noopener');\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { BUSINESS_INFO_SERVICE_TOKEN } from '../../tokens';\nimport { ObservableWorkStateMap, WorkStateMap } from '@vendasta/rx-utils/work-state';\nimport { BehaviorSubject, merge, Observable } from 'rxjs';\nimport { filter, first } from 'rxjs/operators';\nimport { AccountTag, SocialURLs } from '../../interface';\n\n@Injectable()\nexport class OpportunityBusinessService {\n private readonly workStateMap = new ObservableWorkStateMap();\n public readonly state: WorkStateMap = this.workStateMap;\n\n private readonly currentBusiness$$ = new BehaviorSubject(null);\n public readonly currentBusiness$ = this.currentBusiness$$.pipe(filter(Boolean));\n\n constructor(\n @Inject(BUSINESS_INFO_SERVICE_TOKEN)\n private readonly businessInfoService: BusinessInfoService,\n ) {}\n\n loadBusinessAndSetSelected(accountId: string): Observable {\n const business$ = this.businessInfoService.getBusinessData(accountId);\n const result$ = merge(business$, this.state.getWorkResults$(accountId)).pipe(first());\n result$.subscribe((value) => this.currentBusiness$$.next(value));\n return result$;\n }\n\n getMarketName(partnerId: string, marketId: string): Observable {\n return this.businessInfoService.getMarketName(partnerId, marketId);\n }\n\n getBusinessDataUrl(accountId: string, isEdit: boolean): string {\n return this.businessInfoService.getBusinessDataUrl(accountId, isEdit);\n }\n\n getAccountTags(accountId?: string): Observable {\n return this.businessInfoService.getAccountTags(accountId);\n }\n\n canEditCustomerIdentifier(): Observable {\n return this.businessInfoService.canEditCustomerIdentifier();\n }\n\n canEditCustomFields(): Observable {\n return this.businessInfoService.canEditCustomFields();\n }\n}\nexport interface BusinessInfo {\n name: string;\n partnerId: string;\n marketId: string;\n streetAddress: string;\n city: string;\n state: string;\n countryCode: string;\n zip: string;\n phoneNumber: string;\n website: string;\n businessId: string;\n serviceCategories: string[];\n socialUrls: SocialURLs;\n vCategories: string[];\n}\n\nexport interface BusinessInfoService {\n getBusinessData(businessId: string): Observable;\n\n getBusinessDataUrl(businessId: string, isEdit: boolean): string;\n\n getAccountTags(businessId?: string): Observable;\n\n getMarketName(partnerId?: string, marketId?: string): Observable;\n\n canEditCustomerIdentifier(): Observable; // \"salesperson_can_edit_customer_id\" FF\n canEditCustomFields(): Observable; // \"custom_fields\" enabled_feature\n}\n\nexport interface BusinessDataUrls {\n info: string;\n edit: string;\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'sales-ui-async-text',\n templateUrl: './async-text.component.html',\n styleUrls: ['./async-text.component.scss'],\n})\nexport class AsyncTextComponent {\n @Input() loading = false;\n @Input() loadFailed = false;\n @Input() failTooltipText: string;\n @Input() failMessage = 'Unable to load data';\n @Output() retry = new EventEmitter();\n\n handleRetry(): void {\n this.retry.emit(null);\n }\n}\n","\n
\n \n
\n
\n\n \n \n \n\n\n
\n \n
\n
\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { SwitchingWorkState, WorkStates } from '@vendasta/rx-utils/work-state';\nimport dayjs from 'dayjs';\nimport { Observable, ReplaySubject, combineLatest, firstValueFrom, timer } from 'rxjs';\nimport { distinctUntilChanged, map, take, tap } from 'rxjs/operators';\nimport { LocalTimeCardService, LocalTimeObj } from './localtime-card.service';\n\nimport { Router } from '@angular/router';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\n@Component({\n selector: 'sales-ui-localtime-card',\n styleUrls: ['localtime-card.component.scss'],\n templateUrl: 'localtime-card.component.html',\n})\nexport class LocaltimeCardComponent implements OnDestroy {\n private accountGroupId$$ = new ReplaySubject(1);\n private accountGroupId$ = this.accountGroupId$$.pipe(distinctUntilChanged());\n @Input() set accountGroupId(id: string) {\n this.accountGroupId$$.next(id);\n }\n\n private editTimezoneUrl$$ = new ReplaySubject(1);\n readonly editTimezoneUrl$ = this.editTimezoneUrl$$.pipe(distinctUntilChanged());\n @Input() set editTimezoneUrl(url: string) {\n this.editTimezoneUrl$$.next(url);\n }\n readonly shouldAddTimezone$: Observable;\n\n private readonly subscriptions = SubscriptionList.new();\n public localTime$: Observable;\n private readonly timeState$ = new SwitchingWorkState((agid: string) => {\n return this.localTimeCardService.getLocalTime(agid).pipe(take(1));\n });\n private readonly timeState: WorkStates = this.timeState$;\n readonly loading$ = this.timeState.isLoading$;\n readonly success$ = this.timeState.isSuccess$;\n\n constructor(private readonly localTimeCardService: LocalTimeCardService, private readonly router: Router) {\n this.subscriptions.add(\n this.accountGroupId$.pipe(\n tap((agid) => {\n this.timeState$.startWork(agid);\n }),\n ),\n );\n this.subscriptions.add(\n (this.localTime$ = combineLatest([this.timeState.workResults$, timer(0, 1000)]).pipe(\n map(([timeObj]: [LocalTimeObj, null]) => {\n if (!timeObj || !timeObj.timezone) {\n // if no timezone don't show anything\n return {};\n }\n\n return {\n time: dayjs().tz(timeObj.timezone).format('MMM DD, YYYY - h:mm:ss A [GMT]Z'),\n address: timeObj.address,\n timezone: timeObj.timezone,\n };\n }),\n )),\n );\n\n this.shouldAddTimezone$ = combineLatest([this.editTimezoneUrl$, this.localTime$]).pipe(\n map(([editUrl, localTime]) => editUrl && !localTime?.timezone),\n );\n }\n\n retryLoading(): void {\n firstValueFrom(this.accountGroupId$).then((agid) => {\n this.timeState$.startWork(agid);\n });\n }\n\n ngOnDestroy(): void {\n this.subscriptions.destroy();\n }\n}\n","\n \n \n {{ 'FRONTEND.SALES_UI.ACCOUNT_DETAILS.LOCAL_TIME.TITLE' | translate }}\n \n \n \n \n \n \n + {{ 'FRONTEND.SALES_UI.ACCOUNT_DETAILS.LOCAL_TIME.ADD_TIMEZONE' | translate }}\n \n \n \n \n {{ localTime.time }}\n
\n {{ localTime.address }}\n
\n \n \n \n
\n
\n
\n","import { AccountGroupApiService, ProjectionFilter } from '@galaxy/account-group';\nimport { EMPTY, Observable, of } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\n\nexport interface LocalTimeObj {\n address: string;\n timezone: string;\n}\n\n@Injectable()\nexport class LocalTimeCardService {\n constructor(private readonly accountGroupSdk: AccountGroupApiService) {}\n\n getLocalTime(agid: string): Observable {\n if (!agid) {\n return EMPTY;\n }\n\n const projectionFilter = new ProjectionFilter({ napData: true });\n return this.accountGroupSdk.get(agid, projectionFilter).pipe(\n switchMap((ag) =>\n of({\n address: ag?.napData?.city,\n timezone: ag?.napData?.timezone,\n } as LocalTimeObj),\n ),\n );\n }\n}\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { Option } from '@vendasta/forms';\nimport { EMPTY, firstValueFrom, Observable } from 'rxjs';\nimport { distinctUntilChanged, map, take } from 'rxjs/operators';\nimport { SwitchingWorkState, WorkStates } from '@vendasta/rx-utils/work-state';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { openSecureNewTab } from '../../../secure';\nimport { SocialURLs } from '../../../interface';\nimport {\n BusinessDataUrls,\n BusinessInfo,\n OpportunityBusinessService,\n} from '../../business-service/opportunity-business.service';\n\nexport interface MarketNameInput {\n partnerId: string;\n marketId: string;\n}\n\n@Component({\n selector: 'sales-ui-business-info',\n templateUrl: './business-info.component.html',\n styleUrls: ['./business-info.component.scss'],\n})\nexport class BusinessInfoComponent implements OnDestroy {\n protected vCategoryIds$: Observable;\n protected socialUrls$: Observable;\n protected marketName$: Observable;\n\n private readonly marketNameState$ = new SwitchingWorkState((input: MarketNameInput) => {\n const partnerId = input?.partnerId;\n const marketId = input?.marketId;\n\n if (!partnerId || !marketId) {\n return EMPTY;\n }\n return this.businessService.getMarketName(partnerId, marketId).pipe(take(1));\n });\n readonly marketNameState: WorkStates = this.marketNameState$;\n readonly marketNameLoading$ = this.marketNameState.isLoading$;\n readonly marketNameFailed$ = this.marketNameState.isSuccess$.pipe(map((isSuccess) => !isSuccess));\n\n @Input() tags: Option[];\n @Input() pipelineBoardSlideoutStyling = false;\n @Input() set businessId(id: string) {\n this.businessService.loadBusinessAndSetSelected(id);\n }\n\n public businessData$: Observable;\n readonly businessDataUrl$: Observable;\n private readonly subscriptions = SubscriptionList.new();\n\n constructor(private readonly businessService: OpportunityBusinessService) {\n this.businessData$ = this.businessService.currentBusiness$;\n this.subscriptions.add((this.marketName$ = this.marketNameState.workResults$));\n this.triggerGetMarketNameWork();\n this.businessDataUrl$ = this.businessData$.pipe(\n map(\n (business) =>\n ({\n info: this.businessService.getBusinessDataUrl(business?.businessId, false),\n edit: this.businessService.getBusinessDataUrl(business?.businessId, true),\n } as BusinessDataUrls),\n ),\n );\n this.socialUrls$ = this.businessData$.pipe(map((business) => business.socialUrls));\n this.vCategoryIds$ = this.businessData$.pipe(\n distinctUntilChanged((x, y) => x.vCategories === y.vCategories),\n map((business) => business.vCategories),\n );\n }\n\n triggerGetMarketNameWork(): void {\n firstValueFrom(this.businessData$).then((bd) => {\n this.marketNameState$.startWork({\n partnerId: bd?.partnerId,\n marketId: bd?.marketId,\n });\n });\n }\n\n openUrl(url: string): void {\n openSecureNewTab(url);\n }\n\n googleSearchForBusiness(): void {\n this.subscriptions.add(\n this.businessData$.pipe(\n take(1),\n map((business) => {\n const city = business.city ?? '';\n const state = business.state ?? '';\n const googleSearchPhrase = `${business.name} ${city} ${state}`.replace(/\\s+/g, ' ').trim();\n openSecureNewTab(`http://www.google.com/search?q=${googleSearchPhrase}`);\n }),\n ),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.destroy();\n }\n}\n","\n \n\n\n\n \n \n\n\n\n \n \n \n {{ 'FRONTEND.SALES_UI.ACCOUNT_DETAILS.TITLE' | translate }}\n \n \n \n edit\n \n \n \n \n \n \n \n\n\n\n \n
\n \n {{ bizData.name }}\n \n
{{ bizData.streetAddress }}
\n
\n {{ bizData.city }}, {{ bizData.state }},\n {{ bizData.countryCode }}\n
\n
{{ bizData.zip }}
\n \n
\n
\n
\n\n\n \n
\n
{{ bizData.streetAddress }}
\n
{{ bizData.city }}, {{ bizData.state }}, {{ bizData.countryCode }}  {{ bizData.zip }}
\n \n
\n
\n
\n\n\n \n
\n \n \n
\n\n\n \n \n\n\n\n \n \n \n \n\n\n\n
\n
\n

\n {{ 'FRONTEND.SALES_UI.ACCOUNT_DETAILS.BUSINESS_CATEGORY_LABEL' | translate }}\n

\n
\n \n
\n
\n \n
\n

\n {{ 'FRONTEND.SALES_UI.ACCOUNT_DETAILS.SERVICE_CATEGORY_LABEL' | translate }}\n

\n \n
\n {{ 'FRONTEND.SALES_UI.COMMON.NONE_LABEL' | translate }}\n
\n \n \n
\n
\n {{ sc }}\n
\n
\n
\n
\n
\n
\n

{{ 'FRONTEND.SALES_UI.COMMON.MARKET_LABEL' | translate }}

\n \n {{ marketName$ | async }}\n \n
\n
\n

\n {{ 'FRONTEND.SALES_UI.ACCOUNT_DETAILS.TAGS_LABEL' | translate }}\n

\n
0; else noTags\">\n
\n \n {{ tag.name }}\n \n
\n
\n \n \n {{ 'FRONTEND.SALES_UI.COMMON.NONE_LABEL' | translate }}\n \n \n
\n
\n
\n\n\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n\n\n {{ 'FRONTEND.SALES_UI.COMMON.DELETED' | translate }}\n\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { AccountGroupService, ProjectionFilter } from '@galaxy/account-group';\nimport { ActivityAssociationInterface, ActivityInterface } from '@vendasta/crm';\nimport { Opportunity } from '@vendasta/sales-opportunities';\nimport { Observable, ReplaySubject, distinctUntilChanged, filter, map, shareReplay, switchMap } from 'rxjs';\nimport {\n ObjectAssociationType,\n ObjectType,\n ActivitiesTimelineService,\n CrmTimelineComponent,\n PrimaryAccountGroupIDForCrmObject,\n} from '@galaxy/crm/static';\n\ntype Mode = 'view' | 'add';\n\n@Component({\n selector: 'sales-ui-opportunity-activities',\n templateUrl: './opportunity-activities.component.html',\n styleUrls: ['./opportunity-activities.component.scss'],\n providers: [\n {\n provide: PrimaryAccountGroupIDForCrmObject,\n useFactory: (comp: OpportunityActivitiesComponent) => {\n return comp.opportunity$$.pipe(\n map((opportunity) => opportunity?.accountGroupId),\n filter((id) => Boolean(id)),\n shareReplay(1),\n );\n },\n deps: [OpportunityActivitiesComponent],\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OpportunityActivitiesComponent {\n @ViewChild('scrollableContainerRef', { static: true }) scrollableContainer!: ElementRef;\n @ViewChild('crmTimelineRef') timeline!: CrmTimelineComponent;\n\n @Input() set opportunity(value: Opportunity) {\n this.opportunity$$.next(value);\n }\n\n companyId$: Observable;\n opportunityId$: Observable;\n extraAssociations$: Observable;\n mode: Mode = 'view';\n showLoadMore = false;\n private scrollTop = 0;\n readonly crmAssociationType: ObjectAssociationType = 'Opportunity';\n readonly crmObjectType: ObjectType = 'Company';\n readonly opportunity$$ = new ReplaySubject(1);\n\n constructor(\n private readonly accountGroupService: AccountGroupService,\n private readonly activitiesTimelineService: ActivitiesTimelineService,\n ) {\n this.activitiesTimelineService.initializeState('', []);\n this.setupSubscriptions();\n }\n\n setMode(mode: Mode): void {\n this.mode = mode;\n }\n\n private setupSubscriptions(): void {\n this.extraAssociations$ = this.opportunity$$.pipe(\n map((opportunity) => opportunity?.opportunityId),\n filter((id) => Boolean(id)),\n distinctUntilChanged(),\n map((crmObjectId) => [{ crmObjectId, crmObjectType: this.crmAssociationType }]),\n );\n const accountGroup$ = this.opportunity$$.pipe(\n map((opportunity) => opportunity?.accountGroupId),\n filter((id) => Boolean(id)),\n distinctUntilChanged(),\n switchMap((id) =>\n this.accountGroupService.get(id, new ProjectionFilter({ accountGroupExternalIdentifiers: true })),\n ),\n shareReplay(1),\n );\n this.opportunityId$ = this.opportunity$$.pipe(map((opportunity) => opportunity?.opportunityId));\n this.companyId$ = accountGroup$.pipe(\n // TODO: add `platformCrmCompanyId` identifier\n map((accountGroup) => accountGroup.externalIdentifiers['platformCrmCompanyId']),\n );\n }\n\n addActivity(activity: ActivityInterface): void {\n this.timeline.addActivity(activity);\n this.setMode('view');\n }\n\n handleActivitiesChanged(activities: ActivityInterface[]): void {\n this.scrollableContainer.nativeElement.scrollTop = this.scrollTop;\n this.showLoadMore = activities?.length > 0;\n }\n\n loadMoreActivities(): void {\n this.scrollTop = this.scrollableContainer?.nativeElement?.scrollTop ?? 0;\n this.timeline?.loadMoreActivities();\n }\n}\n","\n\n
\n
\n \n \n\n \n \n \n
\n
\n","import { Component, Inject, OnDestroy } from '@angular/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { Opportunity } from '@vendasta/sales-opportunities';\nimport { BehaviorSubject, Observable, Subject, finalize, firstValueFrom, map, of, shareReplay } from 'rxjs';\nimport { OpportunityService } from '../../opportunity.service';\nimport { SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN, SalesUIOpportunityDetailsConfig } from '../../tokens';\nimport { OpportunitySidePanelEventsService } from '../opportunity-side-panel-events.service';\nimport { Mode, OpportunityDetailsService } from './opportunity-details.service';\n\n@Component({\n selector: 'sales-ui-opportunity-details',\n templateUrl: './opportunity-details.component.html',\n styleUrls: ['./opportunity-details.component.scss'],\n})\nexport class OpportunityDetailsComponent implements OnDestroy {\n public readonly opportunity$: Observable;\n public readonly accountGroupId$: Observable;\n private readonly userEvents$$ = new Subject();\n private readonly subscriptions = SubscriptionList.new();\n public readonly isEditable$: Observable;\n readonly mode$: Observable;\n readonly updateTagsLoading$$ = new BehaviorSubject(false);\n readonly updateNoteLoading$$ = new BehaviorSubject(false);\n\n private readonly forceReload$$ = new BehaviorSubject(false);\n readonly forceReload$ = this.forceReload$$.asObservable();\n protected partnerId$: Observable;\n protected marketId$: Observable;\n protected bypassQuantityRestrictions$: Observable;\n protected readonly showActivities$: Observable;\n\n constructor(\n @Inject(SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN) private readonly config: SalesUIOpportunityDetailsConfig,\n private readonly updates: OpportunityService,\n private readonly opportunityDetailsSlideoutService: OpportunityDetailsService,\n private readonly snackbarService: SnackbarService,\n private readonly sidePanelEvents: OpportunitySidePanelEventsService,\n ) {\n this.partnerId$ = this.config.partnerId$;\n this.marketId$ = this.config.marketId$;\n this.bypassQuantityRestrictions$ = this.config.bypassQuantityRestrictions$;\n this.opportunity$ = this.updates.currentOpportunity$;\n this.accountGroupId$ = this.opportunity$.pipe(\n map((opportunity) => opportunity?.accountGroupId || ''),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n this.showActivities$ = this.config.showActivities$ ?? of(false);\n\n this.mode$ = this.opportunityDetailsSlideoutService.mode$;\n this.isEditable$ = this.updates.isEditable$();\n\n this.subscriptions.add(this.opportunity$, () => {\n this.forceReload$$.next(false);\n window.setTimeout(() => this.forceReload$$.next(true), 500);\n });\n }\n\n ngOnDestroy(): void {\n this.subscriptions.destroy();\n }\n\n handleQualificationClicked(): void {\n this.opportunityDetailsSlideoutService.setMode('qualification');\n }\n\n async handleTagsChanged(tags: string[]): Promise {\n this.updateTagsLoading$$.next(true);\n const work$ = this.updates.updateTags(tags).pipe(finalize(() => this.updateTagsLoading$$.next(false)));\n const res = await firstValueFrom(work$);\n if (!res) {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.ERRORS.ERROR_UPDATING_TAGS');\n }\n }\n\n closeSideNav(): void {\n this.sidePanelEvents.sidePanelCloseRequested();\n this.opportunityDetailsSlideoutService.setMode('details');\n }\n\n async updateNote(newNote: string): Promise {\n this.updateNoteLoading$$.next(true);\n const work$ = this.updates.updateNote(newNote).pipe(finalize(() => this.updateNoteLoading$$.next(false)));\n const res = await firstValueFrom(work$);\n if (!res) {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.ERRORS.UNABLE_TO_UPDATE_OVERVIEW');\n }\n }\n //\n // trackSlideoutInteraction(): void {\n // this.userEvents$$.next();\n // }\n //\n // changeToMode(mode: Mode): void {\n // this.opportunityDetailsSlideoutService.setMode(mode);\n // }\n}\n","\n {{ (opportunity$ | async)?.name }}\n close\n\n\n\n \n \n \n \n \n \n \n \n\n\n\n \n \n \n \n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.OPPORTUNITY_INFO' | translate }}\n \n \n \n \n \n \n \n \n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.ACCOUNT_INFO' | translate }}\n \n \n \n \n \n \n \n {{ 'FRONTEND.SALES_UI.PIPELINE.COLUMN_LABELS.OPPORTUNITY_QUALIFICATION' | translate }}\n \n \n \n \n \n \n \n \n \n {{ 'FRONTEND.SALES_UI.COMMON.NOTES' | translate }}\n \n \n \n \n \n \n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.ITEMS' | translate }}\n \n
\n \n \n \n
\n
\n \n \n \n {{ 'FRONTEND.SALES_UI.OPPORTUNITY_ATTACHMENT.ATTACHMENTS' | translate }}\n \n \n \n \n \n \n \n {{ 'FRONTEND.SALES_UI.OPPORTUNITY_TAGS.TITLE' | translate }}\n \n \n \n \n
\n
\n","import { Option } from '@vendasta/forms';\n\nexport const CONTRACT_DURATION_FORM_NAME = 'contractDuration';\nexport const CONTRACT_DURATION_FORM_PERIOD = 'contractDurationPeriod';\nexport const CONTRACT_DURATION_FORM_VALUE = 'contractDurationValue';\n\nexport interface PartnerMarketConfig {\n partnerId: string;\n marketId: string;\n bypassQuantityLimit: boolean;\n currency: string;\n}\n\nexport interface TagOption extends Option {\n value: string;\n}\n\nexport type CreateSourceLocation = 'pipeline' | 'company-profile';\n\nexport interface CreateOpportunityPageData {\n sourceLocation?: CreateSourceLocation;\n navigateOnSuccess?: boolean;\n}\n","import { Component, EventEmitter, Inject, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Pipeline } from '@vendasta/sales-common';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { OpportunityValues } from '../../../interface';\nimport { SALES_UI_CREATE_OPPORTUNITY_CONFIG_TOKEN, SalesUICreateOpportunityConfig } from '../../../tokens';\n\n@Component({\n selector: 'sales-ui-opportunity-pipeline-selector',\n templateUrl: './opportunity-pipeline-selector.component.html',\n styleUrls: ['./opportunity-pipeline-selector.component.scss'],\n})\nexport class OpportunityPipelineSelectorComponent implements OnDestroy, OnInit {\n public readonly form: FormGroup;\n private readonly subscriptionList = SubscriptionList.new();\n @Output() pipelineValues = new EventEmitter();\n private readonly selectedPipeline$$ = new ReplaySubject(1);\n protected readonly selectedPipeline$ = this.selectedPipeline$$.asObservable();\n protected pipelines$: Observable;\n protected cachedPipeline$: Observable;\n\n constructor(\n formBuilder: FormBuilder,\n @Inject(SALES_UI_CREATE_OPPORTUNITY_CONFIG_TOKEN) private readonly config: SalesUICreateOpportunityConfig,\n ) {\n this.pipelines$ = config.pipelines$;\n this.cachedPipeline$ = config.currentPipeline$;\n this.form = formBuilder.group({\n stage: [],\n });\n }\n\n ngOnInit(): void {\n this.subscriptionList.add(this.cachedPipeline$, (cachedPipeline) => {\n {\n const pipeline = cachedPipeline as Pipeline;\n this.selectPipeline(pipeline);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.subscriptionList.destroy();\n }\n\n private emitSelection(pipeline: Pipeline, probability: number): void {\n this.pipelineValues.emit({ pipelineId: pipeline.id, probability: probability });\n }\n\n selectStage(pipeline: Pipeline, probability?: number): void {\n probability = probability ?? pipeline.stages[0].probability; // default first stage\n this.form.controls.stage.setValue(probability);\n this.emitSelection(pipeline, probability);\n }\n\n selectPipeline(pipeline: Pipeline): void {\n this.selectedPipeline$$.next(pipeline);\n this.selectStage(pipeline);\n }\n}\n","
\n
\n 1\">\n {{ 'FRONTEND.SALES_OPPORTUNITIES.PIPELINE' | translate }}\n \n \n {{ pipeline.name }}\n \n \n \n \n {{ 'FRONTEND.SALES_OPPORTUNITIES.STAGE' | translate }}\n \n \n {{ stage.name }}\n \n \n \n
\n
\n","import { Component, DestroyRef, inject, Inject, OnInit, Optional, ViewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { MatStepper } from '@angular/material/stepper';\nimport { AppKey, AppPartnerService } from '@galaxy/marketplace-apps';\nimport { Salesperson } from '@galaxy/types';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { PackageService } from '@vendasta/marketplace-packages';\nimport {\n CreateOpportunityRequestCreateOpportunityPackageInterface,\n DurationInterface,\n Opportunity,\n SalesOpportunitiesSdk,\n SalesOpportunitiesService,\n} from '@vendasta/sales-opportunities';\nimport { LineItem } from '@vendasta/sales-orders';\nimport { addMonths, endOfDay, startOfDay } from 'date-fns';\nimport { zonedTimeToUtc } from 'date-fns-tz';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { map, switchMap, take, tap } from 'rxjs/operators';\nimport { SalesOrderConfirmationComponent } from '../../../sales-orders/sales-order-confirmation/sales-order-confirmation.component';\nimport { OpportunityValues } from '../../interface';\nimport {\n MARKET_ID_OVERRIDE_TOKEN,\n SALES_UI_CREATE_OPPORTUNITY_CONFIG_TOKEN,\n SalesUICreateOpportunityConfig,\n} from '../../tokens';\nimport { getDefaultOpportunityType } from '../../type-selector/type-selector.component';\nimport { OpportunityBusinessService } from '../business-service/opportunity-business.service';\nimport { OpportunitySidePanelEventsService } from '../opportunity-side-panel-events.service';\nimport { CreateOpportunityService } from './create-opportunity.service';\nimport {\n CONTRACT_DURATION_FORM_NAME,\n CONTRACT_DURATION_FORM_PERIOD,\n CONTRACT_DURATION_FORM_VALUE,\n CreateOpportunityPageData,\n PartnerMarketConfig,\n TagOption,\n} from './interface';\nimport { OrderToOpportunityLineItems } from '../../../sales-orders/conversion-utils';\n\n@Component({\n selector: 'sales-ui-create-opportunity',\n templateUrl: './create-opportunity.component.html',\n styleUrls: ['./create-opportunity.component.scss'],\n})\nexport class CreateOpportunityComponent implements OnInit {\n @ViewChild('stepper') private readonly stepper: MatStepper;\n protected partnerMarketConfig$: Observable;\n private readonly destroyRef = inject(DestroyRef);\n private bypassQuantityRestrictions$: Observable;\n private defaultCurrency$: Observable;\n private salesPersonId$: Observable;\n private salesPeople$: Observable;\n private data$: Observable;\n\n // first step fields\n protected accountForm: FormGroup;\n protected accountCtrl: FormControl;\n protected readonly skipAccountSelection$$: BehaviorSubject = new BehaviorSubject(false);\n protected readonly skipAccountSelection$: Observable = this.skipAccountSelection$$.asObservable();\n\n // second step fields\n @ViewChild('salesOrderConfirmation') salesOrderConfirmation: SalesOrderConfirmationComponent;\n\n // third step fields\n additionalInfoForm: FormGroup;\n today: Date = new Date();\n tags$: Observable;\n sortedSalespeople$: Observable;\n subscribers$: Observable;\n protected readonly defaultOpportunityType = getDefaultOpportunityType();\n\n //submit\n private saving$$: BehaviorSubject = new BehaviorSubject(false);\n readonly saving$: Observable = this.saving$$.asObservable();\n\n constructor(\n private readonly formBuilder: FormBuilder,\n private readonly sidePanelEvents: OpportunitySidePanelEventsService,\n private readonly businessService: OpportunityBusinessService,\n private readonly snackbarService: SnackbarService,\n @Inject(SALES_UI_CREATE_OPPORTUNITY_CONFIG_TOKEN) private readonly config: SalesUICreateOpportunityConfig,\n @Inject(SalesOpportunitiesService) private readonly opportunityApi: SalesOpportunitiesSdk,\n private readonly packageService: PackageService,\n private readonly appPartnerService: AppPartnerService,\n private readonly createService: CreateOpportunityService,\n @Optional() @Inject(MARKET_ID_OVERRIDE_TOKEN) private readonly marketOverride: string,\n ) {\n const partnerId$ = this.config.partnerId$;\n const marketId$ = this.marketOverride ? of(this.marketOverride) : this.config.marketId$;\n this.bypassQuantityRestrictions$ = this.config.bypassQuantityRestrictions$;\n this.defaultCurrency$ = this.config.defaultCurrency$;\n this.salesPersonId$ = this.config.salespersonId$;\n this.salesPeople$ = this.config.salespeople$;\n this.data$ = this.createService.createPageDetails$;\n\n this.partnerMarketConfig$ = combineLatest([\n partnerId$,\n marketId$,\n this.bypassQuantityRestrictions$,\n this.defaultCurrency$,\n ]).pipe(\n map(\n ([partnerId, marketId, bypassQuantityLimit, currency]) =>\n ({ partnerId, marketId, bypassQuantityLimit, currency }) as PartnerMarketConfig,\n ),\n );\n }\n\n ngOnInit(): void {\n this.initFirstStep();\n this.initFinalStep();\n combineLatest([this.businessService.currentBusiness$, this.data$])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(([business, pageData]) => {\n if (business && pageData?.sourceLocation === 'company-profile') {\n this.skipAccountSelection$$.next(true);\n this.accountForm.controls.firstStepCtrl.setValue({\n companyName: business.name,\n accountGroupId: business.businessId,\n });\n this.accountForm.controls.firstStepCtrl.disable();\n }\n });\n }\n\n private initFirstStep(): void {\n this.accountCtrl = new FormControl('', Validators.required);\n this.accountForm = this.formBuilder.group({\n firstStepCtrl: this.accountCtrl,\n });\n }\n\n secondStepNext(): void {\n if (this.salesOrderConfirmation.isFormValid()) {\n // emits error snack if false\n this.stepper.next();\n }\n }\n\n private initFinalStep(): void {\n const monthFromToday = startOfDay(addMonths(this.today, 1));\n this.additionalInfoForm = this.formBuilder.group({\n pipelineAndStageCtrl: [undefined, Validators.required],\n expectedClosedDate: new FormControl(monthFromToday, Validators.required),\n opportunityName: new FormControl('', []),\n selectedSalesperson: new FormControl('', []),\n overviewNotes: new FormControl('', []),\n tags: new FormControl([], []),\n selectedSubscribers: new FormControl([], []),\n opportunityType: new FormControl(this.defaultOpportunityType.id),\n });\n\n // setup tags field\n this.tags$ = this.partnerMarketConfig$.pipe(\n switchMap((pm) => {\n return this.opportunityApi.getTags(pm.partnerId, pm.marketId);\n }),\n map((tags) => {\n return tags.map((t) => { name: t, value: t });\n }),\n );\n\n // setup salesperson field\n this.sortedSalespeople$ = combineLatest([this.salesPeople$, this.salesPersonId$]).pipe(\n tap(([people, me]) => {\n const curSalesperson: Salesperson = people.find((sp) => sp.id === me);\n this.additionalInfoForm.controls.selectedSalesperson.setValue(curSalesperson);\n }),\n map(([people]) => {\n return people.sort((sp1, sp2) => sp1.fullName.localeCompare(sp2.fullName));\n }),\n );\n\n this.subscribers$ = this.sortedSalespeople$.pipe(\n map((people) => people.map((sp: Salesperson) => { name: sp.fullName, value: sp.id })),\n );\n }\n\n setPipelineValues(values: OpportunityValues): void {\n this.additionalInfoForm.controls.pipelineAndStageCtrl.setValue(values);\n }\n\n compareSalespeople(sp1: Salesperson, sp2: Salesperson): boolean {\n return sp1?.id === sp2?.id;\n }\n\n handleTypeChanged(newType: string): void {\n this.additionalInfoForm.controls.opportunityType.setValue(newType);\n }\n\n private areFormsInvalid(): boolean {\n return this.accountForm.invalid || !this.salesOrderConfirmation.isFormValid() || this.additionalInfoForm.invalid;\n }\n\n private autoGenerateOpportunityNameFromLineItem$(li: LineItem, pm: PartnerMarketConfig): Observable {\n return li.packageId\n ? this.getPackageName(li.packageId)\n : this.getAppName(li.appKey?.appId, li.appKey?.editionId, pm);\n }\n\n private getPackageName(packageId: string): Observable {\n return this.packageService.getMulti([packageId]).pipe(map((packages) => packages[0]?.name));\n }\n\n private getAppName(appId: string, editionId: string, pm: PartnerMarketConfig): Observable {\n return this.appPartnerService\n .getMulti(\n [\n new AppKey({\n appId: appId,\n editionId: editionId,\n }),\n ],\n pm.partnerId,\n pm.marketId,\n null,\n )\n .pipe(map((apps) => apps[0]?.sharedMarketingInformation?.name));\n }\n\n private get packages(): CreateOpportunityRequestCreateOpportunityPackageInterface[] {\n return this.salesOrderConfirmation\n .getCurrentLineItems()\n .filter((item) => !!item.packageId)\n .map(\n (p) =>\n {\n packageId: p.packageId,\n quantity: p.quantity,\n },\n );\n }\n\n private get contractDuration(): DurationInterface {\n const form = this.additionalInfoForm.controls[CONTRACT_DURATION_FORM_NAME];\n const value = form?.value[CONTRACT_DURATION_FORM_VALUE] || 0;\n const duration = form?.value[CONTRACT_DURATION_FORM_PERIOD] || 0;\n if (value == 0 && duration == 0) return null;\n return { value, duration };\n }\n\n private isContractDurationInvalid(): boolean {\n const form = this.additionalInfoForm.controls[CONTRACT_DURATION_FORM_NAME];\n const value = form?.value[CONTRACT_DURATION_FORM_VALUE] || 0;\n const duration = form?.value[CONTRACT_DURATION_FORM_PERIOD] || 0;\n\n return (value === 0 && duration !== 0) || (value !== 0 && duration === 0);\n }\n\n saveHandler(partnerMarket: PartnerMarketConfig): void {\n const lineItems = this.salesOrderConfirmation.getCurrentLineItems();\n this.saving$$.next(true);\n if (lineItems?.length === 0) {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.SALES_OPPORTUNITIES.OPPORTUNITY_ITEMS_REQUIRED');\n this.saving$$.next(false);\n return;\n }\n\n if (this.areFormsInvalid()) {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.FORMS.INVALID_FORM');\n this.saving$$.next(false);\n return;\n }\n\n if (this.isContractDurationInvalid()) {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.FORMS.INVALID_CONTACT_DURATION');\n this.saving$$.next(false);\n return;\n }\n\n const subscriberUserIds = this.additionalInfoForm.controls.selectedSubscribers?.value;\n const assigneeId = this.additionalInfoForm.controls.selectedSalesperson?.value?.id;\n\n if (subscriberUserIds?.length > 5) {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.SALES_OPPORTUNITIES.ERRORS.EXCEED_SUBSCRIBERS_LIMIT');\n this.saving$$.next(false);\n return;\n }\n\n if (subscriberUserIds?.includes(assigneeId)) {\n this.snackbarService.openErrorSnack(\n 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.ERRORS.INVALID_ASSIGNEE_AND_SUBSCRIBERS',\n );\n this.saving$$.next(false);\n return;\n }\n this.autoGenerateOpportunityNameFromLineItem$(lineItems[0], partnerMarket)\n .pipe(\n take(1),\n switchMap((autoGenOppNameFromLineItem) => {\n return this.createOpportunity(lineItems, partnerMarket, autoGenOppNameFromLineItem);\n }),\n )\n .subscribe(\n (o: Opportunity) => this.onSubmitSuccess(o),\n () => {\n this.snackbarService.openErrorSnack('FRONTEND.SALES_UI.SALES_OPPORTUNITIES.ERRORS.GENERIC_ERROR');\n },\n )\n .add(() => {\n this.saving$$.next(false);\n });\n }\n\n private createOpportunity(items: LineItem[], pm: PartnerMarketConfig, nameFallback: string): Observable {\n const rawExpectedCloseDate = this.additionalInfoForm.controls.expectedClosedDate.value;\n const expectCloseDate = zonedTimeToUtc(endOfDay(rawExpectedCloseDate), 'UTC');\n return this.opportunityApi.create(\n this.accountForm.controls.firstStepCtrl.value.accountGroupId,\n this.additionalInfoForm.controls.selectedSalesperson.value.id,\n pm.marketId,\n pm.partnerId,\n expectCloseDate,\n this.additionalInfoForm.controls.pipelineAndStageCtrl.value.probability,\n this.additionalInfoForm.controls.pipelineAndStageCtrl.value.pipelineId,\n this.additionalInfoForm.controls.opportunityName.value || nameFallback,\n this.packages,\n this.additionalInfoForm.controls.overviewNotes.value,\n this.additionalInfoForm.controls.tags.value,\n this.contractDuration,\n OrderToOpportunityLineItems(items),\n this.additionalInfoForm.controls.selectedSubscribers.value,\n this.additionalInfoForm.controls.opportunityType.value,\n );\n }\n\n private onSubmitSuccess(o: Opportunity): void {\n this.snackbarService.openSuccessSnack('FRONTEND.SALES_UI.SALES_OPPORTUNITIES.SUCCESSFUL_CREATION');\n this.sidePanelEvents.opportunityCreated(o);\n }\n\n closeSideNav(): void {\n this.sidePanelEvents.sidePanelCloseRequested();\n }\n}\n","
\n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.OPPORTUNITY_CREATE' | translate }}\n close\n
\n\n \n \n {{ 'FRONTEND.SALES_UI.FORMS.CHOOSE_ACCOUNT' | translate }}\n \n
\n \n
\n \n
\n
\n
\n\n \n \n {{ 'FRONTEND.SALES_UI.FORMS.CHOOSE_LINE_ITEMS' | translate }}\n \n
\n \n
\n \n \n
\n \n
\n\n \n \n {{ 'FRONTEND.SALES_UI.FORMS.ADDITIONAL_INFO' | translate }}\n \n
\n \n \n \n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.EXPECTED_CLOSE_PLACEHOLDER' | translate }}\n \n \n \n \n \n \n \n\n \n\n \n\n \n \n \n \n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.DETAILS' | translate }}\n \n \n \n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.ASSIGNED_TO' | translate: { person: spFullName } }}\n \n \n {{ 'FRONTEND.SALES_UI.COMMON.LOADING' | translate }}\n \n \n \n
\n
\n \n \n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.OPPORTUNITY_NAME' | translate }}\n \n \n \n
\n
\n \n \n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.ASSIGN_TO' | translate }}\n \n \n \n {{ sp.fullName }}\n \n \n \n
\n
\n
\n \n \n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.ADD_SUBSCRIBER_PLACEHOLDER' | translate }}\n \n \n \n
\n
\n \n \n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.OVERVIEW' | translate }}\n \n \n \n
\n
\n \n \n {{ 'FRONTEND.SALES_UI.SALES_OPPORTUNITIES.ADD_TAG_PLACEHOLDER' | translate }}\n \n \n \n
\n
\n
\n\n
\n \n
\n \n \n \n \n {{ 'FRONTEND.SALES_UI.COMMON.ACTION_LABELS.CREATE' | translate }}\n \n \n
\n
\n \n
\n
\n","import { Component, DestroyRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Opportunity } from '@vendasta/sales-opportunities';\nimport { Observable } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { CreateOpportunityService } from '../../sales-opportunities/opportunity-side-panel/create-opportunity/create-opportunity.service';\nimport { CreateOpportunityPageData } from '../../sales-opportunities/opportunity-side-panel/create-opportunity/interface';\nimport { OpportunityDetailsService } from '../../sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-details.service';\nimport { OpportunitySidePanelEventsService } from '../../sales-opportunities/opportunity-side-panel/opportunity-side-panel-events.service';\nimport { OpportunityService } from '../../sales-opportunities/opportunity.service';\nimport {\n SidePanelState,\n SidePanelStateData,\n SidePanelStateService,\n} from '../../slide-out-panel/side-panel-state.service';\nimport { SlideOutPanelService } from '../../slide-out-panel/slide-out-panel.service';\n\n@Component({\n selector: 'sales-ui-pipeline-side-panel',\n templateUrl: './pipeline-side-panel.component.html',\n styleUrls: ['./pipeline-side-panel.component.scss'],\n})\nexport class PipelineSidePanelComponent {\n readonly sidePanelState$: Observable>;\n readonly SidePanelState = SidePanelState;\n opportunity$: Observable;\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n private readonly sidePanelState: SidePanelStateService,\n private readonly slideOutPanelService: SlideOutPanelService,\n private readonly opportunityUpdates: OpportunityService,\n private readonly detailsSlideOut: OpportunityDetailsService,\n private readonly createOpportunityService: CreateOpportunityService,\n private readonly sidePanelEvents: OpportunitySidePanelEventsService,\n ) {\n this.sidePanelState$ = this.sidePanelState.sidePanelState$.pipe(\n startWith(>{ state: SidePanelState.opportunityDetails, data: undefined }),\n );\n this.opportunity$ = this.opportunityUpdates.currentOpportunity$;\n\n const formData = {\n sourceLocation: 'pipeline',\n } as CreateOpportunityPageData;\n this.createOpportunityService.setCreatePageDetails(formData);\n\n this.sidePanelEvents.opportunityCreatedEvents$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.scrollToTop();\n });\n this.sidePanelEvents.sidePanelCloseEvents$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.slideOutPanelService.closeSlideOut();\n this.scrollToTop();\n });\n }\n\n private scrollToTop(): void {\n document?.getElementById('top-of-sidepanel')?.scrollIntoView({ behavior: 'smooth' });\n }\n}\n","\n
\n \n
\n\n \n
\n
\n \n \n
\n
\n
\n","import { NgModule } from '@angular/core';\nimport { OpportunityAttachmentsCardComponent } from './opportunity-attachments.component';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyUploaderModule } from '@vendasta/galaxy/uploader';\n\n@NgModule({\n imports: [CommonModule, TranslateModule, GalaxyUploaderModule],\n declarations: [OpportunityAttachmentsCardComponent],\n exports: [OpportunityAttachmentsCardComponent],\n providers: [],\n})\nexport class OpportunityAttachmentsModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { OpportunityTagsComponent } from './opportunity-tags.component';\nimport { AddTagsDialogComponent } from './add-tags-dialog/add-tags-dialog.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyTagsModule } from '@vendasta/galaxy/tags';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslateModule,\n ReactiveFormsModule,\n MatButtonModule,\n MatChipsModule,\n MatDialogModule,\n MatIconModule,\n GalaxyEmptyStateModule,\n GalaxyFormFieldModule,\n GalaxyLoadingSpinnerModule,\n GalaxyTagsModule,\n ],\n declarations: [OpportunityTagsComponent, AddTagsDialogComponent],\n exports: [OpportunityTagsComponent],\n})\nexport class OpportunityTagsModule {}\n","import { NgModule } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { AsyncPipe, LowerCasePipe, NgForOf, NgIf } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PipelineSelectorComponent } from './pipeline-selector.component';\nimport { MatOptionModule } from '@angular/material/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\n\n@NgModule({\n declarations: [PipelineSelectorComponent],\n imports: [\n AsyncPipe,\n MatFormFieldModule,\n MatOptionModule,\n MatSelectModule,\n NgForOf,\n NgIf,\n TranslateModule,\n GalaxyFormFieldModule,\n LowerCasePipe,\n ],\n exports: [PipelineSelectorComponent],\n})\nexport class PipelineSelectorModule {}\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { ContractDurationSelectorComponent } from './contract-duration-selector.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n declarations: [ContractDurationSelectorComponent],\n imports: [\n CommonModule,\n GalaxyFormFieldModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatSelectModule,\n MatOptionModule,\n MatInputModule,\n TranslateModule,\n ],\n exports: [ContractDurationSelectorComponent],\n})\nexport class ContractDurationSelectorModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SubscribersSelectorComponent } from './subscribers-selector.component';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { VaFormsModule } from '@vendasta/forms';\n\n@NgModule({\n declarations: [SubscribersSelectorComponent],\n imports: [\n CommonModule,\n GalaxyFormFieldModule,\n ReactiveFormsModule,\n TranslateModule,\n GalaxyFormFieldModule,\n VaFormsModule,\n ],\n exports: [SubscribersSelectorComponent],\n})\nexport class SubscribersSelectorModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PreferredCurrencyModule } from '@vendasta/sales-common';\nimport { OpportunityInfoFormComponent } from './opportunity-info-form/opportunity-info-form.component';\nimport { OpportunityInfoComponent } from './opportunity-info.component';\n// import { SalesWorkflowModule } from '../../../sales-workflow/sales-workflow.module';\nimport { MatMenuModule } from '@angular/material/menu';\n// import { AssigneeSelectorComponent } from './opportunity-info-form/editable-fields/assignee-selector/assignee-selector.component';\nimport { ExpectedCloseSelectorComponent } from './opportunity-info-form/editable-fields/expected-close-selector/expected-close-selector.component';\n// import { SubtitleAssigneesService } from '../../../account-details/sub-title/subtitle-assignees/subtitle-assignees.service';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MatNativeDateModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { VaFormsModule } from '@vendasta/forms';\n// import { OPP_DATE_FORMATS, SalesOpportunitiesModule } from '../../sales-opportunities.module';\nimport { MomentDateAdapter } from '@angular/material-moment-adapter';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { UIKitModule } from '@vendasta/uikit';\nimport { CloseOpportunityDialogComponent } from './close-opportunity/close-opportunity-dialog/close-opportunity-dialog.component';\nimport { CloseOpportunityComponent } from './close-opportunity/close-opportunity.component';\nimport { AssigneeSelectorComponent } from './opportunity-info-form/assignee-selector/assignee-selector.component';\nimport { PipelineSelectorModule } from './opportunity-info-form/editable-fields/pipeline-selector/pipeline-selector.module';\nimport { ReopenOpportunityDialogComponent } from './reopen-opportunity/reopen-opportunity-dialog.component';\n\nimport { UpdateTypeSelectorComponent } from '../../../type-selector/update-type-selector/update-type-selector.component';\nimport { ContractDurationSelectorModule } from './opportunity-info-form/editable-fields/contract-duration-selector/contract-duration-selector.module';\nimport { OpportunityNameComponent } from './opportunity-info-form/editable-fields/opportunity-name/opportunity-name.component';\nimport { SubscribersSelectorModule } from './opportunity-info-form/editable-fields/subscribers-selector/subscribers-selector.module';\n\nexport const OPP_DATE_FORMATS = {\n parse: { dateInput: 'YYYY-MM-DDTHH:mm:ssZ' },\n display: {\n dateInput: 'MMM DD, YYYY',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n },\n};\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatSelectModule,\n MatInputModule,\n TranslateModule,\n PreferredCurrencyModule,\n // SalesOpportunitiesModule,\n // SalesWorkflowModule,\n MatMenuModule,\n MatIconModule,\n VaFormsModule,\n MatNativeDateModule,\n MatDatepickerModule,\n UIKitModule,\n MatButtonModule,\n MatDialogModule,\n GalaxyFormFieldModule,\n UpdateTypeSelectorComponent,\n PipelineSelectorModule,\n ContractDurationSelectorModule,\n SubscribersSelectorModule,\n OpportunityNameComponent,\n ],\n declarations: [\n OpportunityInfoComponent,\n CloseOpportunityDialogComponent,\n CloseOpportunityComponent,\n OpportunityInfoFormComponent,\n ReopenOpportunityDialogComponent,\n AssigneeSelectorComponent,\n ExpectedCloseSelectorComponent,\n ],\n exports: [OpportunityInfoComponent],\n providers: [\n // SubtitleAssigneesService,\n { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },\n {\n provide: MAT_DATE_FORMATS,\n useValue: OPP_DATE_FORMATS,\n },\n ],\n})\nexport class OpportunityInfoModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AsyncUiModule, EmptyStateModule, UIKitModule } from '@vendasta/uikit';\nimport { RouterModule } from '@angular/router';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { OpportunityQualificationComponent } from './opportunity-qualification.component';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MeddicModule } from '../../../../meddic/meddic.module';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n TranslateModule,\n MatExpansionModule,\n MatIconModule,\n UIKitModule,\n EmptyStateModule,\n MatButtonToggleModule,\n MatTabsModule,\n RouterModule,\n MatTooltipModule,\n AsyncUiModule,\n MatSelectModule,\n MatDividerModule,\n MatProgressBarModule,\n MeddicModule,\n ],\n declarations: [OpportunityQualificationComponent],\n exports: [OpportunityQualificationComponent],\n providers: [],\n})\nexport class OpportunityQualificationModule {}\n","import { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AsyncTextComponent } from './async-text.component';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\n@NgModule({\n imports: [CommonModule, MatIconModule, MatButtonModule, TranslateModule, MatProgressSpinnerModule],\n declarations: [AsyncTextComponent],\n exports: [AsyncTextComponent],\n})\nexport class AsyncTextModule {}\n","import { NgModule } from '@angular/core';\nimport { LocaltimeCardComponent } from './localtime-card.component';\nimport { LocalTimeCardService } from './localtime-card.service';\nimport { RouterModule } from '@angular/router';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatInputModule } from '@angular/material/input';\nimport { CommonModule } from '@angular/common';\nimport { AsyncTextModule } from '../async-text/async-text.module';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n imports: [\n CommonModule,\n MatCardModule,\n MatInputModule,\n MatDividerModule,\n AsyncTextModule,\n TranslateModule,\n RouterModule,\n ],\n declarations: [LocaltimeCardComponent],\n exports: [LocaltimeCardComponent],\n providers: [LocalTimeCardService],\n})\nexport class LocalTimeCardModule {}\n","export const FacebookIconSvg = ``;\nexport const TwitterIconSvg = ``;\nexport const LinkedInIconSvg = ``;\nexport const BusinessSearchSvg = ``;\n","import { NgModule } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { CommonModule } from '@angular/common';\nimport { AsyncTextModule } from '../../../../async-text/async-text.module';\nimport { BusinessInfoComponent } from './business-info.component';\nimport { BusinessInfoEditComponent } from './edit/business-info-edit.component';\nimport { VFormModule } from '@vendasta/vform';\nimport { RouterModule } from '@angular/router';\nimport { BusinessProfileModule } from '@vendasta/businesses';\nimport { VaBadgeModule } from '@vendasta/uikit';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LocalTimeCardModule } from '../../../../localtime/localtime-card.module';\nimport { MatListModule } from '@angular/material/list';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatButtonModule } from '@angular/material/button';\nimport { GalaxyPageModule } from '@vendasta/galaxy/page';\nimport { BusinessCategoryModule } from '@galaxy/business-category';\nimport { FacebookIconSvg, TwitterIconSvg, LinkedInIconSvg, BusinessSearchSvg } from './icon-svg-string';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\n\n@NgModule({\n imports: [\n CommonModule,\n MatCardModule,\n MatInputModule,\n MatDividerModule,\n MatDialogModule,\n MatIconModule,\n AsyncTextModule,\n RouterModule,\n VFormModule,\n BusinessProfileModule,\n VaBadgeModule,\n TranslateModule,\n LocalTimeCardModule,\n MatListModule,\n MatGridListModule,\n MatButtonModule,\n GalaxyPageModule,\n BusinessCategoryModule,\n GalaxyBadgeModule,\n ],\n declarations: [BusinessInfoComponent, BusinessInfoEditComponent],\n exports: [BusinessInfoComponent, BusinessInfoEditComponent],\n})\nexport class BusinessInfoModule {\n constructor(iconRegistry: MatIconRegistry, sanitizer: DomSanitizer) {\n iconRegistry.addSvgIconLiteral('Facebook', sanitizer.bypassSecurityTrustHtml(FacebookIconSvg));\n iconRegistry.addSvgIconLiteral('Twitter', sanitizer.bypassSecurityTrustHtml(TwitterIconSvg));\n iconRegistry.addSvgIconLiteral('LinkedIn', sanitizer.bypassSecurityTrustHtml(LinkedInIconSvg));\n iconRegistry.addSvgIconLiteral('business-search', sanitizer.bypassSecurityTrustHtml(BusinessSearchSvg));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { OpportunityNotesComponent } from './opportunity-notes.component';\nimport { OpportunityNotesEditComponent } from './opportunity-notes-edit.component';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { EmptyStateModule } from '@vendasta/uikit';\nimport { FormsModule } from '@angular/forms';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { MatIconModule } from '@angular/material/icon';\nimport { VoiceDictationModule } from '@vendasta/sales-common';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\n\n@NgModule({\n declarations: [OpportunityNotesComponent, OpportunityNotesEditComponent],\n imports: [\n CommonModule,\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n TranslateModule,\n EmptyStateModule,\n FormsModule,\n GalaxyFormFieldModule,\n GalaxyEmptyStateModule,\n MatIconModule,\n VoiceDictationModule,\n GalaxyLoadingSpinnerModule,\n ],\n exports: [OpportunityNotesComponent],\n})\nexport class OpportunityNotesModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { OpportunityActivitiesComponent } from './opportunity-activities.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { GalaxyInfiniteScrollTriggerModule } from '@vendasta/galaxy/infinite-scroll-trigger';\nimport { CrmActivityLoggerComponent, CrmTimelineComponent } from '@galaxy/crm/static';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslateModule,\n MatButtonModule,\n MatIconModule,\n CrmActivityLoggerComponent,\n CrmTimelineComponent,\n GalaxyInfiniteScrollTriggerModule,\n ],\n declarations: [OpportunityActivitiesComponent],\n exports: [OpportunityActivitiesComponent],\n})\nexport class OpportunityActivitiesModule {}\n","import { NgModule } from '@angular/core';\nimport { OpportunityDetailsService } from './opportunity-details.service';\nimport { OpportunityDetailsComponent } from './opportunity-details.component';\nimport { CommonModule } from '@angular/common';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { OpportunityAttachmentsModule } from './opportunity-attachments/opportunity-attachments.module';\nimport { OpportunityTagsModule } from './opportunity-tags/opportunity-tags.module';\nimport { OpportunityInfoModule } from './opportunity-info/opportunity-info.module';\nimport { OpportunityQualificationModule } from './opportunity-qualification/opportunity-qualification.module';\nimport { BusinessInfoModule } from './opportunity-account-info/business-info.module';\nimport { OpportunityNotesModule } from '../../../notes/opportunity-notes.module';\nimport { SalesOrderConfirmationModule } from '../../../sales-orders/sales-order-confirmation/sales-order-confirmation.module';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { OpportunityActivitiesModule } from '../activities/opportunity-activities.module';\n\n@NgModule({\n imports: [\n CommonModule,\n MatExpansionModule,\n MatIconModule,\n TranslateModule,\n OpportunityAttachmentsModule,\n OpportunityTagsModule,\n OpportunityInfoModule,\n OpportunityQualificationModule,\n OpportunityNotesModule,\n SalesOrderConfirmationModule,\n BusinessInfoModule,\n MatTabsModule,\n MatToolbarModule,\n OpportunityActivitiesModule,\n ],\n declarations: [OpportunityDetailsComponent],\n exports: [OpportunityDetailsComponent],\n providers: [OpportunityDetailsService],\n})\nexport class OpportunityDetailsModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AccountSelectorComponent } from './account-selector.component';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatInputModule } from '@angular/material/input';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { AccountSelectorApiService } from './account-selector-api.service';\n\n@NgModule({\n declarations: [AccountSelectorComponent],\n exports: [AccountSelectorComponent],\n imports: [\n CommonModule,\n GalaxyFormFieldModule,\n MatAutocompleteModule,\n MatInputModule,\n ReactiveFormsModule,\n TranslateModule,\n ],\n providers: [AccountSelectorApiService],\n})\nexport class AccountSelectorModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CreateOpportunityComponent } from './create-opportunity.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AccountSelectorModule } from '../../../accounts/account-selector/account-selector.module';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { SalesOrderConfirmationModule } from '../../../sales-orders/sales-order-confirmation/sales-order-confirmation.module';\nimport { OpportunityPipelineSelectorComponent } from './opportunity-pipeline-selector/opportunity-pipeline-selector.component';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatInputModule } from '@angular/material/input';\nimport { VaFormsModule } from '@vendasta/forms';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TypeSelectorComponent } from '../../type-selector/type-selector.component';\nimport { CreateOpportunityService } from './create-opportunity.service';\nimport { ContractDurationSelectorModule } from '../opportunity-details/opportunity-info/opportunity-info-form/editable-fields/contract-duration-selector/contract-duration-selector.module';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n TranslateModule,\n AccountSelectorModule,\n FormsModule,\n MatButtonModule,\n MatStepperModule,\n ReactiveFormsModule,\n SalesOrderConfirmationModule,\n GalaxyFormFieldModule,\n MatSelectModule,\n MatExpansionModule,\n MatInputModule,\n VaFormsModule,\n MatDatepickerModule,\n MatInputModule,\n MatDividerModule,\n TypeSelectorComponent,\n MatProgressSpinnerModule,\n ContractDurationSelectorModule,\n ],\n declarations: [CreateOpportunityComponent, OpportunityPipelineSelectorComponent],\n exports: [CreateOpportunityComponent],\n providers: [CreateOpportunityService],\n})\nexport class CreateOpportunityModule {}\n","import { NgModule } from '@angular/core';\nimport { PipelineSidePanelComponent } from './pipeline-side-panel.component';\nimport { SlideOutPanelModule } from '../../slide-out-panel/slide-out-panel.module';\nimport { CommonModule } from '@angular/common';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { OpportunityDetailsModule } from '../../sales-opportunities/opportunity-side-panel/opportunity-details/opportunity-details.module';\nimport { CreateOpportunityModule } from '../../sales-opportunities/opportunity-side-panel/create-opportunity/create-opportunity.module';\n@NgModule({\n declarations: [PipelineSidePanelComponent],\n exports: [PipelineSidePanelComponent],\n imports: [\n CommonModule,\n SlideOutPanelModule,\n GalaxyEmptyStateModule,\n MatIconModule,\n MatButtonModule,\n MatExpansionModule,\n TranslateModule,\n OpportunityDetailsModule,\n CreateOpportunityModule,\n ],\n})\nexport class PipelineSidePanelModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AccountFilterComponent } from './account-filter.component';\nimport { AccountFilterService } from './account-filter.service';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { AccountSelectorModule } from '../../accounts/account-selector/account-selector.module';\n\n@NgModule({\n declarations: [AccountFilterComponent],\n imports: [CommonModule, AccountSelectorModule, TranslateModule, MatButtonModule, MatDialogModule],\n providers: [AccountFilterService],\n})\nexport class AccountFilterModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { OpportunityTypeFilterService } from './opportunity-type-filter.service';\nimport { OpportunityTypeFilterComponent } from './opportunity-type-filter.component';\nimport { OpportunityTypeFilterStoreService } from './opportunity-type-filter-store.service';\nimport { UpdateTypeSelectorComponent } from '../../sales-opportunities/type-selector/update-type-selector/update-type-selector.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatSelectModule } from '@angular/material/select';\n\n@NgModule({\n declarations: [OpportunityTypeFilterComponent],\n imports: [\n CommonModule,\n UpdateTypeSelectorComponent,\n TranslateModule,\n MatButtonModule,\n MatDialogModule,\n MatFormFieldModule,\n MatOptionModule,\n MatSelectModule,\n ],\n providers: [OpportunityTypeFilterService, OpportunityTypeFilterStoreService],\n})\nexport class OpportunityTypeFilterModule {}\n","import { NgModule } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { CURRENT_PIPELINE, Pipeline } from '@vendasta/sales-common';\nimport {\n SALES_UI_OPPORTUNITY_CONFIG_TOKEN,\n SalesUIOpportunityConfig,\n BUSINESS_INFO_SERVICE_TOKEN,\n SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN,\n SALES_UI_CREATE_OPPORTUNITY_CONFIG_TOKEN,\n SALES_PERSON_ID_TOKEN,\n PIPELINES_TOKEN,\n} from './tokens';\nimport { SALESPERSON_ID_TOKEN } from '../meddic/meddic-section/meddic-notes/meddic-notes-field/meddic-notes-field.component';\nimport {\n BusinessInfoService,\n OpportunityBusinessService,\n} from './opportunity-side-panel/business-service/opportunity-business.service';\nimport { OpportunityServiceModule } from './opportunity-service.module';\nimport { ActivitiesTimelineService } from '@galaxy/crm/static';\nimport { RxState } from '@rx-angular/state';\n\n@NgModule({\n declarations: [],\n exports: [],\n providers: [\n OpportunityBusinessService,\n { provide: SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN, useExisting: SALES_UI_OPPORTUNITY_CONFIG_TOKEN },\n { provide: SALES_UI_CREATE_OPPORTUNITY_CONFIG_TOKEN, useExisting: SALES_UI_OPPORTUNITY_CONFIG_TOKEN },\n { provide: SALES_PERSON_ID_TOKEN, deps: [SALES_UI_OPPORTUNITY_CONFIG_TOKEN], useFactory: salesPersonIdFactory },\n { provide: PIPELINES_TOKEN, deps: [SALES_UI_OPPORTUNITY_CONFIG_TOKEN], useFactory: pipelinesFactory },\n { provide: CURRENT_PIPELINE, deps: [SALES_UI_OPPORTUNITY_CONFIG_TOKEN], useFactory: currentPipelineFactory },\n { provide: SALESPERSON_ID_TOKEN, deps: [SALES_UI_OPPORTUNITY_CONFIG_TOKEN], useFactory: salesPersonIdFactory },\n {\n provide: BUSINESS_INFO_SERVICE_TOKEN,\n deps: [SALES_UI_OPPORTUNITY_CONFIG_TOKEN],\n useFactory: businessInfoServiceFactory,\n },\n ActivitiesTimelineService,\n RxState,\n ],\n imports: [OpportunityServiceModule],\n})\nexport class OpportunityModule {}\n\nfunction pipelinesFactory(config: SalesUIOpportunityConfig): Observable {\n return config.pipelines$;\n}\nfunction salesPersonIdFactory(config: SalesUIOpportunityConfig): Observable {\n return config.salespersonId$;\n}\n\nfunction currentPipelineFactory(config: SalesUIOpportunityConfig): Observable {\n return config.currentPipeline$;\n}\n\nfunction businessInfoServiceFactory(config: SalesUIOpportunityConfig): BusinessInfoService {\n return config.businessInfoService;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { CommonField, CustomField, Field, LineItem, LineItemInterface, Order, Status } from '@vendasta/sales-orders';\nimport {\n CommonFormData,\n CustomFieldsAnswer,\n CustomFieldsAnswers,\n OrderFormComponent,\n OrderFormFieldOptionsType,\n OrderFormInterface,\n OrderFormOptionsInterface,\n ProductInfoInterface,\n} from '@vendasta/store';\nimport { BehaviorSubject, Observable, Subscription, combineLatest, zip } from 'rxjs';\nimport { map, take, tap } from 'rxjs/operators';\nimport { PARTNER_ID_TOKEN } from '../..';\nimport { SalesOrderStoreService } from '../sales-order-store.service';\nimport { User } from './interface';\nimport { SalesOrderFormService } from './sales-order-form.service';\nimport { SalesOrderService } from './sales-order.service';\n\ninterface OrderData {\n orderForms: OrderFormInterface[];\n productInfo: ProductInfoInterface[];\n commonData: CommonFormData;\n answers: CustomFieldsAnswers[];\n extraQuestions: OrderFormFieldOptionsType[];\n extraAnswers: CustomFieldsAnswer[];\n users: User[];\n orderFormOptions: OrderFormOptionsInterface;\n partnerId: string;\n businessId: string;\n}\n\n@Component({\n templateUrl: 'sales-order-form.component.html',\n providers: [SalesOrderFormService, SalesOrderService],\n selector: 'sales-ui-sales-order-form',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['../../shared/shared-styles.scss', './sales-order-form.component.scss'],\n})\nexport class SalesOrderFormComponent implements OnInit, OnDestroy {\n @ViewChild('vaOrderForm')\n public orderFormComponent: OrderFormComponent;\n\n @Input() businessId: string;\n @Input() orderId: string;\n @Input() lineItems: LineItemInterface[];\n @Input() userOptions: User[];\n @Input() orderFormOptions: OrderFormOptionsInterface;\n @Input() fileUploadUrl = ''; // TODO: Provide a generic upload url instead?\n @Input() showSelfSaveButton = false;\n @Input() answers: CustomFieldsAnswers[] = [];\n\n @Output() loading: EventEmitter = new EventEmitter();\n @Output() hasSalesOrderFormEvent: EventEmitter = new EventEmitter();\n\n form: UntypedFormGroup;\n orderForms$: Observable;\n commonData$: Observable;\n productInfo$: Observable;\n answers$: Observable;\n extraQuestions$: Observable;\n extraAnswers$: Observable;\n orderData$: Observable;\n submitting = false;\n orderStatus: Status;\n\n loading$$: BehaviorSubject = new BehaviorSubject(true);\n loading$: Observable = this.loading$$.asObservable();\n\n subscriptions: Subscription[] = [];\n\n constructor(\n private alertService: SnackbarService,\n private salesOrderFormService: SalesOrderFormService,\n private salesOrderStoreService: SalesOrderStoreService,\n private cdr: ChangeDetectorRef,\n @Inject(PARTNER_ID_TOKEN) private readonly partnerId$: Observable,\n ) {}\n\n ngOnInit(): void {\n this.subscriptions.push(\n this.salesOrderStoreService\n .getOrderState(this.orderId, this.businessId)\n .pipe(\n tap((orderState) => {\n if (orderState.loading) {\n this.loading$$.next(true);\n } else {\n this.orderStatus = orderState.order?.status;\n }\n }),\n )\n .subscribe(),\n );\n\n this.salesOrderFormService.initialize(this.businessId, this.orderId, this.lineItems, this.userOptions);\n this.form = new UntypedFormGroup({});\n\n this.orderForms$ = this.salesOrderFormService.getOrderForms(this.orderFormOptions);\n this.commonData$ = this.salesOrderFormService.getCommonData();\n this.productInfo$ = this.salesOrderFormService.getProductInfo();\n this.extraQuestions$ = this.salesOrderFormService.getExtraQuestions();\n this.extraAnswers$ = this.salesOrderFormService.getExtraAnswers();\n\n this.answers$ = this.salesOrderFormService.getAnswers().pipe(\n map((answers) => {\n if (answers.length > 0) {\n return answers;\n }\n\n return this.answers;\n }),\n );\n\n this.orderData$ = combineLatest([\n zip(this.orderForms$, this.productInfo$, this.commonData$, this.answers$, this.extraAnswers$),\n this.extraQuestions$,\n this.partnerId$,\n ]).pipe(\n map(([[orderForms, productInfo, commonData, answers, extraAnswers], extraQuestions, partnerId]) => {\n return {\n orderForms: orderForms,\n productInfo: productInfo,\n commonData: commonData,\n answers: answers,\n extraQuestions: extraQuestions,\n extraAnswers: extraAnswers,\n users: this.userOptions,\n orderFormOptions: this.orderFormOptions,\n status: this.orderStatus,\n partnerId: partnerId,\n businessId: this.businessId,\n };\n }),\n tap((orderData) => {\n if (orderData.orderForms?.length === 0 && orderData.extraQuestions?.length === 0) {\n this.hasSalesOrderFormEvent.emit(false);\n }\n this.loading$$.next(false);\n }),\n );\n\n this.subscriptions.push(this.loading$.pipe(tap((loading) => this.loading.emit(loading))).subscribe());\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => {\n sub.unsubscribe();\n });\n this.salesOrderStoreService.clearOrderStateCache();\n }\n\n /**\n * returns the data from common form fields in a format that is usable by sales orders\n */\n public getCommonFormData(): CommonField[] {\n return this.orderFormComponent?.getCommonFormData();\n }\n\n /**\n * returns the data from custom forms in a format that is usable by sales orders\n */\n public getCustomFormData(): CustomField[] {\n return this.orderFormComponent?.getCustomFormData();\n }\n\n /**\n * returns the data from extra fields in a format that is usable by sales orders\n */\n public getExtraFieldsData(): Field[] {\n return this.orderFormComponent?.getExtraFieldsData();\n }\n\n /**\n * returns true if the order form contains fields that need to be filled out by the partner\n */\n public requiresPartnerInput(): boolean {\n return this.orderFormComponent?.orderFormRequiresPartnerInput();\n }\n\n /**\n * returns the line items used in this form\n */\n public getLineItems(): LineItem[] {\n return this.lineItems.map((li) => new LineItem(li));\n }\n\n /**\n * changes the read only state of the sales order form\n */\n public changeReadOnly(readOnly: boolean): void {\n this.orderFormComponent.changeReadOnly(readOnly);\n }\n\n /**\n * returns whether or not the sales order form is valid and touches all controls\n */\n public validateForm(): boolean {\n const valid = this.form.valid;\n if (!valid) {\n this.setAsTouched(this.form);\n }\n return valid;\n }\n\n public openDropdown(): void {\n this.orderFormComponent.openDropdown();\n }\n\n clickUpdate(): void {\n const result$ = this.updateAnswers();\n if (!result$) {\n return;\n }\n result$.subscribe(\n () => {\n this.alertService.openSuccessSnack('FRONTEND.SALES_UI.ORDER_FORM_ANSWERS_UPDATED');\n },\n () => {\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.ERRORS.ERROR_UPDATING_ORDER_FORM');\n },\n );\n }\n\n public updateAnswers(): Observable {\n if (this.orderStatus !== Status.DRAFTED && !this.validateForm()) {\n this.alertService.openErrorSnack('FRONTEND.SALES_UI.ERRORS.ERROR_FORM_NOT_VALID');\n return;\n }\n\n this.submitting = true;\n const customFormData = this.getCustomFormData();\n const extraFieldsData = this.getExtraFieldsData();\n const commonFormData = this.getCommonFormData();\n\n return this.salesOrderFormService.updateAnswers(commonFormData, customFormData, extraFieldsData).pipe(\n take(1),\n tap(() => {\n this.submitting = false;\n this.cdr.detectChanges();\n }),\n );\n }\n\n private setAsTouched(form: UntypedFormGroup): void {\n form.markAsTouched();\n const controls = form.controls;\n for (const i of Object.keys(controls)) {\n if (controls[i] instanceof UntypedFormControl) {\n controls[i].markAsTouched();\n } else if (controls[i] instanceof UntypedFormGroup) {\n this.setAsTouched(controls[i] as UntypedFormGroup);\n }\n controls[i].updateValueAndValidity();\n }\n form.updateValueAndValidity();\n }\n}\n","\n \n \n\n\n\n
\n \n
\n \n
\n
\n
\n\n\n
\n \n
\n \n \n
\n \n
\n\n\n
\n
\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { MarketplaceAppsApiService } from '@galaxy/marketplace-apps/v1';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { VaOrderFormModule } from '@vendasta/store';\nimport baseTranslation from '../../assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from '../../shared/constants';\nimport { SalesOrderStoreService } from '../sales-order-store.service';\nimport { SalesOrderFormComponent } from './sales-order-form.component';\nimport { SalesOrderFormService } from './sales-order-form.service';\nimport { SalesOrderService } from './sales-order.service';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n VaOrderFormModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: WEBLATE_COMPONENT_NAME,\n baseTranslation: baseTranslation,\n }),\n MatButtonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatExpansionModule,\n ],\n declarations: [SalesOrderFormComponent],\n exports: [SalesOrderFormComponent],\n providers: [\n SalesOrderService,\n SalesOrderFormService,\n SalesOrderStoreService,\n { provide: 'MarketplaceAppsServiceInterface', useExisting: MarketplaceAppsApiService },\n ],\n})\nexport class SalesOrderFormModule {}\n"],"mappings":"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","names":["require_timezone","__commonJSMin","exports","module","e","n","i","o","a","t","r","u","f","s","m","c","d","l","h","v","MARKET_SELECTOR_SERVICE_TOKEN","InjectionToken","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","market_r3","market_id","ɵɵadvance","ɵɵtextInterpolate1","name","ɵɵlistener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","handleMarketIdChange","ɵɵtemplate","MarketSelectorComponent_ng_container_0_glxy_form_field_1_mat_option_3_Template","ɵɵpipeBind1","selectedMarketId$","markets_r4","ɵɵelementContainerStart","MarketSelectorComponent_ng_container_0_glxy_form_field_1_Template","length","MarketSelectorComponent","constructor","marketSelectorService","selectedMarketIdChange","EventEmitter","marketDropdownOptions$","selectedMarket","setSelectedMarketId","value","emit","ɵɵdirectiveInject","MARKET_SELECTOR_SERVICE_TOKEN","selectors","outputs","decls","vars","consts","template","rf","ctx","MarketSelectorComponent_ng_container_0_Template","_MarketSelectorComponent","MarketSelectorModule","CommonModule","GalaxyFormFieldModule","MatSelectModule","_MarketSelectorModule","import_moment","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","DateRangeSelectorDialogComponent","constructor","ref","data","minDate","maxDate","range","FormGroup","start","FormControl","beginDate","end","endDate","applyChanges","controls","value","moment","startOf","toDate","endOf","dates","close","ɵɵdirectiveInject","MatDialogRef","MAT_DIALOG_DATA","selectors","decls","vars","consts","template","rf","ctx","ɵɵlistener","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵelement","ɵɵtemplate","DateRangeSelectorDialogComponent_mat_error_12_Template","ɵɵproperty","ɵɵtextInterpolate","picker_r2","invalid","_DateRangeSelectorDialogComponent","DateRangeSelectorDialogModule","CommonModule","MatDialogModule","MatButtonModule","MatFormFieldModule","MatInputModule","ReactiveFormsModule","TranslateModule","MatDatepickerModule","_DateRangeSelectorDialogModule","FilterChipContainerComponent","selectors","ngContentSelectors","_c1","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵprojection","ɵɵelementEnd","ɵɵtext","ɵɵadvance","ɵɵproperty","filtersMenu_r1","ɵɵtextInterpolate1","ɵɵpipeBind1","_FilterChipContainerComponent","FilterMenuItemsDirective","_FilterMenuItemsDirective","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","emitDeleteEvent","ɵɵtext","ɵɵelementEnd","FilterChipComponent","constructor","clicked","EventEmitter","delete","emitClickEvent","event","stopPropagation","emit","selectors","inputs","canRemove","id","outputs","ngContentSelectors","_c1","decls","vars","consts","template","rf","ctx","ɵɵprojection","ɵɵtemplate","FilterChipComponent_button_6_Template","FilterChipComponent_button_7_Template","ɵɵadvance","ɵɵproperty","_FilterChipComponent","FilterChipTitleDirective","_FilterChipTitleDirective","FilterChipValueDirective","_FilterChipValueDirective","FilterChipsModule","CommonModule","MatButtonModule","MatIconModule","MatMenuModule","TranslateModule","MatRippleModule","_FilterChipsModule","USER_PIPELINES_SERVICE_CONFIG_TOKEN","InjectionToken","PARTNER_ID_TOKEN","import_moment","ClientOrigin","SEPARATOR","EXPIRY","AppCacheService","constructor","localStorage","cacheChange$$","ReplaySubject","cacheChange$","asObservable","buildIndexedKey","origin","buildExpiryKey","getExpiryDate","MANAGE_ACCOUNTS_SALESPEOPLE","moment","add","toISOString","PIPELINE_PAGE_VIEW","LAST_VIEWED_PIPELINE","SSC_EXTENSION_OAUTH","updateCacheExpiryTime","expiryDate","expiryKey","set","isCacheValid","get","toDate","entry","indexedKey","value","next","rawValue","isCacheHit","JSON","parse","remove","ɵɵinject","LocalStorageService","factory","ɵfac","providedIn","_AppCacheService","LAST_VIEWED_OPPORTUNITY_PIPELINE","ClientOrigin","LAST_VIEWED_PIPELINE","SelectedPipelineCacheService","constructor","appCache","lastViewedPipeline","get","value","setLastViewedPipeline","pipelineID","entry","origin","JSON","stringify","add","ɵɵinject","AppCacheService","factory","ɵfac","_SelectedPipelineCacheService","DEFAULT_PIPELINE_ID","UserPipelines","getUserDefaultPipeline","userPipelines","defaultPipeline$","getPipelines","partnerPipelines$","getCurrentPipeline","pipe","switchMap","defaultP","selectedOrDefault$","selectedPipelineID$","startWith","combineLatest","map","selectedPipelineID","partnerPipelines","find","p","id","isDefaultPipeline","pipelineID","constructor","partnerId$","pipelinesService","lastSelectedPipeline","partnerPipelines$$","ReplaySubject","asObservable","selectedPipelineID$$","take","partnerId","list","pipelines","getAvailablePipeline","shareReplay","subscribe","next","lastViewedPipeline","setCurrentPipelineID","cachedPipeline","pipeline","length","console","error","sort","a","b","name","convertToModelPipeline","refreshPipelines","pipelineId","filter","tap","toPromise","stages","s","probability","stageId","Pipeline","setLastViewedPipeline","ɵɵinject","PARTNER_ID_TOKEN","SalesPipelinesService","SelectedPipelineCacheService","factory","ɵfac","_UserPipelines","SALESPERSON_MULTI_SELECT_CONFIG_TOKEN","InjectionToken","ALL_SALESPEOPLE_TOKEN","SALESPERSON_ID_TOKEN","SALESPERSON_NAME_TOKEN","INIT_WITH_CUR_SALESPERSON_TOKEN","SALES_TEAM_SERVICE_TOKEN","InjectionToken","DEFAULT_CURRENCY_CODE_TOKEN","PIPELINE_SETTINGS_URL_TOKEN","PIPELINE_SETTINGS_ACCESS_TOKEN","PARTNER_ID_TOKEN","MARKET_ID_TOKEN","HAS_ACCESS_TO_ALL_ACCOUNTS_IN_MARKET_TOKEN","PARTNER_OVERRIDE_CONFIG_TOKEN","SALES_UI_OPPORTUNITY_CONFIG_TOKEN","InjectionToken","SALES_PERSON_ID_TOKEN","PIPELINES_TOKEN","SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN","SALES_UI_CREATE_OPPORTUNITY_CONFIG_TOKEN","BUSINESS_INFO_SERVICE_TOKEN","MARKET_ID_OVERRIDE_TOKEN","ACCOUNT_SELECTOR_SERVICE_TOKEN","InjectionToken","AccountSelectorApiService","constructor","accountGroupService","config","get","accountGroupId","projectionFilter","search","searchTerm","pageSize","combineLatest","hasAccessToAllAccountsInMarket$","salespersonId$","marketId$","pipe","switchMap","hasAllMarketAccess","salespersonId","marketId","filters","undefined","LookupFilter","lookup","skipWhile","r","ɵɵinject","AccountGroupService","factory","ɵfac","_AccountSelectorApiService","SAVED_PIPELINE_FILTERS_KEY","FILTERS_CACHE_SERVICE_TOKEN","PipelineFiltersCacheService","constructor","i18n","trigger$$","ReplaySubject","trigger$","asObservable","filtersCache$","pipe","map","fetchCachedFilters","shareReplay","next","existingFilters","localStorage","getItem","JSON","parse","saveNewFilterInCache","filters","sort","searchTerm","name","__async","firstValueFrom","then","existing","canSaveFilter","Error","instant","newFilter","filterName","push","setItem","stringify","removeSavedFilterFromCache","filterToRemove","findIndex","f","splice","newName","find","ɵɵinject","TranslateService","factory","ɵfac","_PipelineFiltersCacheService","PIPELINE_TABLE_SAVED_FILTERS_CONFIG_TOKEN","InjectionToken","HAS_ACCESS_TO_SAVE_FILTERS","PipelineStatusCheckboxService","constructor","statuses$$","ReplaySubject","statuses$","asObservable","getValueToInitForm","__async","firstValueFrom","storeStatuses","statuses","next","resetFilter","factory","ɵfac","_PipelineStatusCheckboxService","PipelineStatusCheckboxComponent","constructor","dialogRef","store","statuses","UntypedFormGroup","open","UntypedFormControl","won","lost","getValueToInitForm","then","values","storeHasPreviousValue","pristine","setValue","save","fg","storeStatuses","value","close","ɵɵdirectiveInject","MatDialogRef","PipelineStatusCheckboxService","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵlistener","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵpropertyInterpolate","ɵɵproperty","get","ɵɵtextInterpolate1","_PipelineStatusCheckboxComponent","PipelineStatusCheckboxModule","PipelineStatusCheckboxService","imports","CommonModule","GalaxyCheckboxModule","ReactiveFormsModule","MatButtonModule","MatDialogModule","TranslateModule","_PipelineStatusCheckboxModule","PIPELINE_SERVICE_INJECTION_TOKEN","PipelineFilterSaverService","constructor","pipelineFiltersCacheService","pipelineService","savedFilters$","filtersCache$","saveCurrentFilters","groupName","__async","Promise","all","firstValueFrom","selectedUIFilters$","sort$","lastSearchTerm$","then","filters","sort","search","saveNewFilterInCache","deleteFilterGroup","removeSavedFilterFromCache","ɵɵinject","FILTERS_CACHE_SERVICE_TOKEN","PIPELINE_SERVICE_INJECTION_TOKEN","factory","ɵfac","_PipelineFilterSaverService","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵtextInterpolate1","ɵɵpipeBind2","ɵɵpureFunction1","_c0","ctx_r1","filterGroupName","PipelineFilterDialogComponent","constructor","data","filterStorage","snackbarService","translateService","isDuplicate","checkIsDuplicate","savedFilterGroupNames","includes","saveFilterGroup","__async","successMessage","firstValueFrom","stream","deleteFilterGroup","then","saveCurrentFilters","err","openErrorSnack","message","openSuccessSnack","ɵɵdirectiveInject","MAT_DIALOG_DATA","PipelineFilterSaverService","SnackbarService","TranslateService","selectors","decls","vars","consts","template","rf","ctx","ɵɵlistener","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵtwoWayListener","$event","ɵɵtwoWayBindingSet","ɵɵtemplate","PipelineFilterDialogComponent_glxy_alert_10_Template","ɵɵtwoWayProperty","ɵɵproperty","name_r3","valid","_PipelineFilterDialogComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","menu_r2","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵlistener","filter_r4","ɵɵrestoreView","_r3","$implicit","ctx_r4","ɵɵnextContext","ɵɵresetView","applySavedFilter","deleteSavedFilter","filterName","ɵɵelementContainerStart","ɵɵtemplate","PipelineSavedFiltersComponent_ng_container_4_div_1_Template","savedFilters_r6","PipelineSavedFiltersComponent","ngOnDestroy","subscriptions","destroy","constructor","dialog","filterStorage","pipelineService","hasAccessSaveFilters$","SubscriptionList","new","canAccessSaveFilters$","savedFilters$","filterGroup","applySavedFiltersFromStorage","searchTerm","filters","sort","filterGroupName","deleteFilterGroup","saveCurrentFilters","__async","filterGroupNames","pipe","map","filterCacheObjects","filterCacheObject","groupNames","firstValueFrom","open","PipelineFilterDialogComponent","width","data","savedFilterGroupNames","ɵɵdirectiveInject","MatDialog","PipelineFilterSaverService","PIPELINE_SERVICE_INJECTION_TOKEN","HAS_ACCESS_TO_SAVE_FILTERS","selectors","decls","vars","consts","template","rf","ctx","PipelineSavedFiltersComponent_button_0_Template","PipelineSavedFiltersComponent_ng_container_4_Template","i0","_r1","_PipelineSavedFiltersComponent","PipelineFiltersCacheModule","PipelineFiltersCacheService","PipelineFilterSaverService","imports","CommonModule","_PipelineFiltersCacheModule","PipelineSavedFiltersModule","provide","HAS_ACCESS_TO_SAVE_FILTERS","deps","PIPELINE_TABLE_SAVED_FILTERS_CONFIG_TOKEN","useFactory","hasAccessToSaveFilters","imports","CommonModule","TranslateModule","FormsModule","MatIconModule","MatButtonModule","MatMenuModule","MatInputModule","MatDialogModule","MatFormFieldModule","GalaxyAlertModule","PipelineStatusCheckboxModule","PipelineFiltersCacheModule","_PipelineSavedFiltersModule","config","canAccessSaveFilters$","PIPELINE_CARD_CONFIG_TOKEN","InjectionToken","ALL_SALESPEOPLE","DEFAULT_CURRENCY","OPPORTUNITY_INFO_URL_BUILDER","ACCOUNT_DETAILS_URL_TOKEN","COMPANY_DETAILS_URL_TOKEN","DETAILS_CONFIG_TOKEN","AccountFilterService","constructor","accountGroupService","selectedAccountGroupId$$","ReplaySubject","selectedAccountGroupId$","asObservable","selectedAccountGroupName$","pipe","switchMap","accountGroupId","of","get","ProjectionFilter","napData","map","accountGroup","companyName","setAccountGroupId","next","clearAccountGroupFilter","ɵɵinject","AccountGroupApiService","factory","ɵfac","_AccountFilterService","REVENUE_DEFAULT_CURRENCY_CODE_TOKEN","InjectionToken","PotentialRevenueService","constructor","defaultCurrency$","selectedDate$$","ReplaySubject","selectedDate$","asObservable","pipe","startWith","potentialRevenue$$","potentialRevenue$","weightedPotentialRevenue$$","weightedPotentialRevenue$","monthlyRevenue$$","monthlyRevenue$","monthlyWeightedRevenue$$","monthlyWeightedRevenue$","isPotentialRevenueLoaded$","map","r","currency$","setDate","date","next","setPotentialRevenue","setWeightedRevenue","setMonthlyRevenue","setMonthlyWeightedRevenue","ɵɵinject","REVENUE_DEFAULT_CURRENCY_CODE_TOKEN","factory","ɵfac","_PotentialRevenueService","DateFilterService","constructor","dateRange$$","ReplaySubject","dateRange$","asObservable","dateFilterToString$","pipe","filter","dateRange","start","end","map","toLocaleDateString","setDateRange","startDate","endDate","next","clearSelection","ExpectedCloseFilterService","ActualCloseFilterService","CreatedDateFilterService","AssignedDateFilterService","AbstractOption","optionValue","_optionValue","v","toOptionValue","delimiter","SalesTeamOption","AbstractOption","constructor","kwargs","_groupId","groupId","_teamName","teamName","optionValue","join","fromOptionValue","option","tup","split","toOptionValue","id","delimiter","SalespersonOption","AbstractOption","constructor","kwargs","_id","id","_fullName","name","optionValue","join","fromOptionValue","option","tup","split","toOptionValue","fullName","PipelineFilterPackageSelectionService","constructor","selectedPackages$$","ReplaySubject","selectedPackages$","asObservable","setPackageSelection","pkgs","next","clearPackageSelection","factory","ɵfac","_PipelineFilterPackageSelectionService","PACKAGE_SELECT_CONFIG_TOKEN","InjectionToken","PARTNER_ID_TOKEN","MARKET_ID_TOKEN","PipelineFilterPackageStoreService","constructor","pkgService","partnerId$","marketId$","packages$","combineLatest","pipe","switchMap","partnerId","marketId","loadAllPackages","Status","PUBLISHED","map","resp","packages","sort","a","b","name","shareReplay","bufferSize","refCount","ɵɵinject","PackageService","PARTNER_ID_TOKEN","MARKET_ID_TOKEN","factory","ɵfac","_PipelineFilterPackageStoreService","PipelineMultiSelectService","constructor","userPipelines","selectedPipelines$$","ReplaySubject","selectedPipelines$","asObservable","pipe","filter","v","selectedPipelineStage$$","BehaviorSubject","selectedPipelineStage$","selectablePipelines$","partnerPipelines$","setPipelineSelection","pipelines","next","clearPipelineSelection","setPipelineStageSelection","stage","clearPipelineStageSelection","ɵɵinject","UserPipelines","factory","ɵfac","_PipelineMultiSelectService","PRODUCT_SELECTOR_CONFIG_TOKEN","InjectionToken","PRODUCTS_TOKEN","ProductSelectorService","constructor","products$","selectedProducts$$","BehaviorSubject","selectedProducts$","loadingProducts$","pipe","mapTo","startWith","setProductSelection","products","next","clearProductSelection","ɵɵinject","PRODUCTS_TOKEN","factory","ɵfac","_ProductSelectorService","SalespersonMultiSelectStoreService","constructor","salespeople$","salespersonId$","salespersonName$","initWithLoggedInSalesperson","selectedSalespeople$$","ReplaySubject","selectedSalespeople$","asObservable","selectableSalespeople$","pipe","map","sp","s","SalespersonOption","id","name","fullName","combineLatest","take","tap","next","subscribe","getSalesPeopeOptionsFromIds$","ids","sps","filter","includes","setSelectedSalespeople","salespeopleOptions","salespeople","Set","o","fromOptionValue","ɵɵinject","ALL_SALESPEOPLE_TOKEN","SALESPERSON_ID_TOKEN","SALESPERSON_NAME_TOKEN","INIT_WITH_CUR_SALESPERSON_TOKEN","factory","ɵfac","_SalespersonMultiSelectStoreService","SALES_TEAM_MULTI_SELECT_CONFIG_TOKEN","InjectionToken","PARTNER_ID_TOKEN","MARKET_ID_TOKEN","SALES_TEAMS_SERVICE_TOKEN","SalesTeamMultiSelectStoreService","constructor","partnerId$","marketId$","salesTeamService","selectedSalesTeams$$","ReplaySubject","selectedSalesTeams$","pipe","filter","v","salesTeams$","combineLatest","switchMap","partnerId","marketId","getSalesTeams$","selectableSalesTeams$","map","st","s","SalesTeamOption","groupId","teamName","subscribe","salesTeams","fetchSalesTeamsSalespeopleIds","t","id","selectedTeamsSalespeopleIds$","getSalesTeamsSalesPeopleIds$","arrayOfSalesTeamMembers$","teams","salespeopleIds","team","push","salesTeamIds","salesTeamIdsToArrayOfSalesPeopleIds","getSalesTeamOptionsFromIds$","ids","sp","includes","setSelectedSalesTeams","salesTeamsOptions","o","fromOptionValue","next","ɵɵinject","PARTNER_ID_TOKEN","MARKET_ID_TOKEN","SALES_TEAMS_SERVICE_TOKEN","factory","ɵfac","_SalesTeamMultiSelectStoreService","ACCOUNT","OPPORTUNITY","BOTH","convertToOpportunityMultiSelectTag","tag","value","name","type","getUniqueTags","tags","object","forEach","existingTag","console","log","Object","keys","map","key","sortTagOptions","sort","a","b","toLowerCase","TAG_MULTI_SELECT_CONFIG_TOKEN","InjectionToken","PARTNER_ID_TOKEN","MARKET_ID_TOKEN","TAG_SERVICE_TOKEN","TagMultiSelectionStoreService","constructor","accountGroupApi","api","partnerId$","marketId$","selectedAccountTags$$","ReplaySubject","selectedAccountTags$","asObservable","selectedOppTags$$","selectedOppTags$","selectableOppTags$","combineLatest","pipe","switchMap","partnerId","marketId","getTagsForOpportunities","map","tagResponse","tags","t","name","value","type","OPPORTUNITY","shareReplay","bufferSize","refCount","selectableAccTags$","listOptionsForField","field","AggregationSupportedFields","AGGREGATION_TAGS","values","ACCOUNT","setTagsSelection","accTags","oppTags","forEach","tag","BOTH","push","next","setOppTagsSelection","setAccTagsSelection","clearTagsSelection","ɵɵinject","AccountGroupApiService","TAG_SERVICE_TOKEN","PARTNER_ID_TOKEN","MARKET_ID_TOKEN","factory","ɵfac","_TagMultiSelectionStoreService","OpportunityTypeFilterService","constructor","selectedTypes$$","ReplaySubject","selectedTypes$","asObservable","selectedTypeNames$","pipe","filter","types","Boolean","map","type","displayName","join","setTypeSelection","next","clearOpportunityTypeSelection","factory","ɵfac","_OpportunityTypeFilterService","OpportunityTypeFilterStoreService","constructor","availableTypes$$","BehaviorSubject","id","displayName","availableTypes$","asObservable","factory","ɵfac","_OpportunityTypeFilterStoreService","queryConstants","QUERYPARAM_FILTERS","UI_FILTER_SELECTION_DELAY","PipelineFiltersService","constructor","salespersonMultiSelectStoreService","salesTeamMultiSelectStoreService","packageStoreService","packageSelectorService","pipelineMultiSelectService","tagMultiSelectionStoreService","productSelectorService","pipelineStatusesStore","potentialRevenueService","expectedCloseService","actualCloseService","createdDateService","assignedDateService","activatedRoute","router","productAnalytics","accountFilterService","opportunityTypeFilterService","opportunityTypeFilterStoreService","marketSelectorService","liveParams","currentParams","routeParams","JSON","parse","snapshot","queryParams","setInitialFiltersFromUrl","setupLiveListQueryParameters","setupLiveQueryParameters","initializeLiveQueryParameters","salespeopleIds$","getSelectedSalespeopleIds$","getSalespeopleFromUrl$","SALES_PEOPLE","subscribe","ssp","length","setSelectedSalespeople","map","sp","toOptionValue","selectedUIFilters$","combineLatest","selectedSalespeople$","pipe","startWith","selectedSalesTeams$","selectedTeamsSalespeopleIds$","selectedPackages$","selectedPipelines$","selectedPipelineStage$","selectedOppTags$","selectedAccountTags$","selectedProducts$","selectedDate$","Date","statuses$","dateRange$","selectedMarketId$","of","selectedAccountGroupId$","selectedTypes$","auditTime","salespeople","salesTeams","salesTeamSalespeople","packages","pipelines","pipelineStage","oppTags","acctTags","products","potRevenueDate","statuses","createdDateRange","actualDateRange","expectedDateRange","assignedDateRange","marketId","accountGroupId","types","s","id","name","fullName","salesTeamsIds","groupId","teamName","salesTeamSalespersonIds","monthlyRevenueDate","expectedClose","actualClose","createdDate","assignedDate","shareReplay","selectedFiltersListRequestData$","getFilters$","debounceTime","filters","selectedFilters","filter","value","Object","entries","push","trackEvent","selected","stringify","sort","paramKey","listAction$","idFieldName","SALES_TEAMS","PACKAGES","PIPELINE","ACCT_TAGS","OPP_TAGS","PRODUCTS","TYPE","forEach","llps","items","l","ids","undefined","applySavedFiltersFromStorage","salesPeopleOptionValues","SalespersonOption","salesTeamOptionValues","SalesTeamOption","setSelectedSalesTeams","setPackageSelection","setProductSelection","setPipelineSelection","setPipelineStageSelection","storeStatuses","setOppTagsSelection","setAccTagsSelection","revDate","setDate","setDateRangeForService","clearSelection","setSelectedMarketId","setAccountGroupId","clearAccountGroupFilter","setTypeSelection","service","dateRangeStrings","start","end","setDateRange","getSelectedPipelineStageId","stage","stageId","queryKey","REVENUE_DATE","item$","STATUS","EXPECTED_CLOSE","ACTUAL_CLOSE","CREATED_DATE","PIPELINE_STAGE","MARKET_ID","ACCOUNT_GROUP_ID","item","merge","navigate","relativeTo","_","v","queryParamsHandling","filterSets","selectableSalesTeams$","p","includes","st","take","packages$","packageId","selectablePipelines$","selectedPipelines","singlePipeline","stages","selectableOppTags$","selectableAccTags$","products$","productId","availableTypes$","t","setDateFiltersFromQueryParams","revenueDateFromUrl","parseISO","initialStatus","open","won","lost","assign","applyFiltersFromQueryParams","setSalesPeopleFilterFromQueryParams","setSalesTeamsFilterFromQueryParams","setOpportunityTypeFilterFromQueryParams","setProductsFilterFromQueryParams","setPackagesFilterFromQueryParams","setTagsFromQueryParams","setStatusFromQueryParams","setAccountFromQueryParams","salesPeople","getSalesPeopeOptionsFromIds$","salesPeopleOptions","getSalesTeamOptionsFromIds$","salesTeamOptions","availableTypes","availableProducts","selectedProducts","availablePackages","selectedPackages","accTags","availableOppTags","availableAccTags","selectedTags","setTagsSelection","setFilterServiceForDateQueryParam","ASSIGNED_DATE","queryVal","dateFilterService","dateFromUrl","block","urlSalesPeople","selectableSalespeople$","selectedSalespeople","salesTeamsPeople","groupSalespeopleIds","salespeopleIds","concat","teamsAndSalespersonSalespeopleIds$","selectedAcctTags$","revenueSelectedDate$","expectedCloseDate$","actualCloseDate$","createdDateRange$","assignedDateRange$","marketId$","accountGroupId$","accountTags","potentialRevenueDate","expectedCloseRange","actualCloseRange","ɵɵinject","SalespersonMultiSelectStoreService","SalesTeamMultiSelectStoreService","PipelineFilterPackageStoreService","PipelineFilterPackageSelectionService","PipelineMultiSelectService","TagMultiSelectionStoreService","ProductSelectorService","PipelineStatusCheckboxService","PotentialRevenueService","ExpectedCloseFilterService","ActualCloseFilterService","CreatedDateFilterService","AssignedDateFilterService","ActivatedRoute","Router","ProductAnalyticsService","AccountFilterService","OpportunityTypeFilterService","OpportunityTypeFilterStoreService","MARKET_SELECTOR_SERVICE_TOKEN","factory","ɵfac","_PipelineFiltersService","zeroStat","revenue","weightedRevenue","revenueInPeriod","weightedRevenueInPeriod","totalOpportunities","PipelineStats","constructor","currentPipeline$","stageToStatsMap","Map","updateStats$$","ReplaySubject","stageIds$","pipe","map","pipeline","stages","s","stageId","statsForStages$","withLatestFrom","ids","id","stat","stage","find","probability","stats","reduce","acc","value","shareReplay","totalRevenueForAllStages$","totalWeightedRevenueForAllStages$","totalRevenueInPeriodForAllStages$","totalWeightedRevenueInPeriodForAllStages$","totalVisibleOpportunitiesForAllStages$","setStatsForStage","next","getStatsForStage$","transferStatsBetweenStages","from","to","revenueMoved","ɵɵinject","CURRENT_PIPELINE","factory","ɵfac","providedIn","_PipelineStats","ClosedLostReason","ClosedLostReasonStringMapping","price","Price","NoBudget","LostToCompetitor","NotReady","other","Other","Opportunity","constructor","opportunityId","accountGroupId","salesPersonId","name","projectedFirstYearValue","forecasting","expectedCloseDate","actualClosedDate","probability","isClosed","closedLostReason","pipelineStage","notes","created","updated","lastConnectedDate","lastActivityDate","reopenedReason","tags","opportunityDetailsUrl","preferredCurrency","attachments","expectedContractDuration","canReopen","pipelineId","lineItems","subscriberUserIds","createOpportunity","rawOpportunity","opportunity_id","account_group_id","sales_person_id","projected_first_year_value","convertSTForecastingRevenueFromRaw","expected_close_date","Date","actual_closed_date","is_closed","closed_lost_reason","pipeline_stage","last_connected_date","last_activity_date","reopened_reason","pipeline_id","line_items","createOpportunityFromMicroservice","revenueInMonth","recurringRevenue","initialRevenue","getFullYear","createNewOpportunity","coercedValues","opportunity","Object","assign","rawForecastingRevenue","forecast","revenue_in_month","initial_revenue","recurring_revenue","BASE_URL","CREATE_OPPORTUNITY_URL","GET_TAGS_URL","UPDATE_TAGS_URL","contractDurationKeysToEnum","key","value","DurationPeriod","DAY","WEEK","MONTH","YEAR","contractDurationKeysToEnumSingular","UpdateRequestType","CloseState","ClosedLostReasonStringMapping","price","ClosedLostReason","Price","NoBudget","LostToCompetitor","NotReady","other","Other","MIN_CONTRACT_DURATION_REGEX","OpportunityService","constructor","opportunityApi","salesPersonId$","pipelines$","pipelineRevenue","salesOpportunitiesApiService","snackbarService","logErrors","workStateMap","ObservableWorkStateMap","state","updateRequests$$","ReplaySubject","updateRollbacks$$","currentOpportunity$$","BehaviorSubject","currentOpportunity$","pipe","filter","Boolean","withLatestFrom","tap","req","spId","handleRequest","subscribe","changes$","buildListFromEvents","merge","u","opportunityId","isEditable$","map","o","isClosed","hasSalespersonAccess$","addAttachmentToOpportunity","accountGroupId","name","url","addAttachment","take","switchMap","loadOpportunityAndSetSelected","updateOpportunitySalesperson","opportunity","salespersonId","editSalespersonId","createSalesActivity","catchError","of","newOpp","oldOpp","setSelectedOpportunity","updateProbability","newProbability","request","Object","assign","requestType","UpdateRequestType","PROBABILITY","probabilityIfUpdateFails","probability","next","updateExpectedContractDuration","duration","updateOpportunityDuration","undefined","updateExpectedCloseDate","newDate","updateOpportunityExpectedCloseDate","salesPersonId","updatePipelineId","newPipelineId","PIPELINE_ID","pipelineIdIfUpdateFails","pipelineId","updateType","newType","updateOpportunityType","updateTags","tags","updateSubscribers","subscriberUserIds","updateSubscriberUserIdsForOpportunity","err","get","console","error","accountId","opp$","result$","getWorkResults$","first","value","applyForStage$","opportunities$","stageStart","stageEnd","option","combineLatest","opps","changes","moved","addOrRemoveFromStage","preferUpdatedOverFetched","updateNote","newNote","updateOpportunityNotes","updateName","newName","updateOpportunityName","editSalesPersonId","updateNameResponse","doUpdateProbability","startWork","updateOpportunityProbability","openErrorSnack","rollback","throwError","opp","getValue","updateRevenuesForProbabilityUpdate","doUpdatePipeline","updateOpportunityPipeline","updateRevenuesForPipelineUpdate","pipelines","pipeline","find","p","id","stageToRemoveFrom","findStage","stageToAddToo","transferStatsBetweenStages","stageId","projectedFirstYearValue","pipelineToRemoveFrom","pipelineToMoveTo","userId","Error","JSON","stringify","ɵɵinject","SalesOpportunitiesService","SALES_PERSON_ID_TOKEN","PIPELINES_TOKEN","PipelineStats","SalesOpportunitiesApiService","SnackbarService","factory","ɵfac","providedIn","_OpportunityService","preferUpdatedOverFetched","updated","fetched","map","fetchedOpp","updatedOpp","find","o","opportunityId","probability","addOrRemoveFromStage","changes","opps","stageStart","stageEnd","option","removedOpps","filter","change","opp","op","pipelineId","u","oppsWithRemoved","indexOf","addedOpps","findIndex","opportunities","concat","sortOpportunitiesByOption","field","SortField","PROJECTED_FIRST_YEAR_VALUE","sortOpportunities","projectedFirstYearValue","direction","EXPECTED_CLOSE","expectedCloseDate","LAST_CONNECTED","lastConnected","LAST_ACTIVITY","lastActivityDate","NAME","name","CREATED","created","MEDDIC","scoring","sortField","dir","SortDirection","ASCENDING","sort","a","b","compareBySortDirection","value1","value2","Date","buildListFromEvents","events","idExtractor","pipe","scan","handledSoFar","newUpdate","i","val","index","startWith","shareReplay","LockValue","LockMap","constructor","lockMap","Map","isLocked","lockId","has","get","UNLOCKED","lock","set","LOCKED","unlock","PipelineBusinessIdentifier","constructor","loading$$","BehaviorSubject","accountGroupName$$","ReplaySubject","companyId$$","companyName$$","PipelineBusinessNameService","businessIdentifiers","Map","companyLoadingWorkState","ObservableWorkState","accountLoadingWorkState","latestIds$$","accountGroupSDK","inject","AccountGroupApiService","partnerId$","PARTNER_ID_TOKEN","companyAPIService","CRMCompanyApiService","crmFieldService","CrmFieldService","detailsConfig","DETAILS_CONFIG_TOKEN","workResults$","pipe","takeUntilDestroyed","map","results","crmObjects","subscribe","setCompanyNames","isLoading$","filter","isLoading","forEach","bn","next","accountGroups","addInfoFromAGGetMulti","enqueueAccountLoad","agIds","agIdsToGet","agid","has","push","length","createBusinessObjectsForNewIds","showCRMDetails","loadCompanies","loadAccounts","projectionFilter","ProjectionFilter","napData","accountGroupExternalIdentifiers","req","accountGroupIds","startWork","getMulti","catchError","err","status","failedAccountGroupIds","error","details","failures","identifiers","account_group_id","values","setEmptyBusinessObjectsForIds","retryGetMulti","throwError","tap","res","withLatestFrom","switchMap","partnerId","companyIds","ag","accountGroup","platformCrmCompanyId","of","namespace","crmObjectIds","getMultiCompany","ids","id","set","newAccountGroups","accountGroupId","getBusinessNameFromMapSafely","companyName","business","get","getCompanyName$","getCompanyId$","companies","company","getFieldValueFromCrmObject","PlatformExtensionFieldIds","AccountGroupID","stringValue","StandardIds","CompanyName","getValidAccountGroupIds","allAccountGroupIds","includes","validAccountGroupIds","factory","ɵfac","_PipelineBusinessNameService","PipelineField","SortDirection","defaultSortOption","isAscending","active","POTENTIAL","buildSortOptions","sort","direction","field","ListOpportunitiesRequestSortField","PROJECTED_FIRST_YEAR_VALUE","CREATED","EXPECTED_CLOSE","OPPORTUNITY","NAME","LAST_ACTIVITY","LAST_CONNECTED","ACTUAL_CLOSE","PIPELINE_STAGE","ASSIGNED_DATE","MEDDIC","console","error","defaultPipelineSortOption","convertSortOptionToPipelineSort","o","p","ListOpportunitiesSortDirection","ASCENDING","PIPELINE_BOARD_SERVICE_CONFIG_TOKEN","InjectionToken","SALESPERSON_ID_TOKEN","INITIAL_SORT","pipelineStatusesToListOpportunitiesRequestFilter","statuses","out","open","push","won","lost","toBoardFilter","filters","boardFilter","pipelineStages","expectedCloseDateRange","dateRangeToDateRangeFilter","expectedClose","actualCloseDateRange","actualClose","createdDateRange","createdDate","assignedDateRange","assignedDate","revenuePeriodFilter","monthlyRevenueDate","revenuePeriod","OpportunityRevenuePeriod","SELECTED_MONTH","revenueDate","pipelineId","pipelines","length","id","salesPersonIds","salespeople","map","s","salesTeamMemberIds","salesTeamSalespersonIds","oppTags","o","value","accountTags","acctTags","packageIds","packages","p","packageId","lineItemProductIds","products","productId","opportunityTypes","types","dateRange","beginRange","start","endRange","end","PipelineBoardService","constructor","updates","opportunityApi","userPipelines","pipelineStats","businessNameService","potentialRevenueService","pipelineFiltersService","accountFilterService","pipelineFilterService","salespersonId$","partnerId$","marketId$","subscriptions","SubscriptionList","new","loadingLockMap","LockMap","opportunitiesPerPage","stageOpportunitiesWorkStateMap","ObservableWorkStateMap","cursorsByStage","Map","salespersonSelections$$","ReplaySubject","defaultSortDirection$$","BehaviorSubject","defaultSortDirection$","asObservable","pipelineBoardEvent$$","pipelineBoardAction$$","sortSelection$$","potentialRevenue","currentPipelineFilter$$","currentPipelineFilter$","triggerBoardReload$$","Subject","triggerBoardReload$","pipe","startWith","currentPipeline$","getCurrentPipeline","selectedRevenueDate$$","SORT_DEFAULTS_ARRAY","field","SortField","PROJECTED_FIRST_YEAR_VALUE","direction","SortDirection","DESCENDING","EXPECTED_CLOSE","ACTUAL_CLOSE","LAST_CONNECTED","ASCENDING","LAST_ACTIVITY","NAME","CREATED","ASSIGNED_DATE","MEDDIC","currentSortOption$$","currentSortField$$","lastSearchTerm$","of","sort$","convertSortOptionToPipelineSort","selectedUIFilters$","stageState","stageId","getStates","sortSelection$","pipelineBoardEvent$","pipelineBoardAction$","salespersonSelections$","add","totalRevenueForAllStages$","revenue","setPotentialRevenue","totalWeightedRevenueForAllStages$","setWeightedRevenue","totalRevenueInPeriodForAllStages$","revenueInPeriod","setMonthlyRevenue","totalWeightedRevenueInPeriodForAllStages$","setMonthlyWeightedRevenue","selectedDate$","subscribe","selectedDate","setPotentialRevenueFilter","selectedAccountGroupId$","accountGroupId","setAccountGroupFilter","updateOpportunityWorkState","state","combineLatest","withLatestFrom","tap","salespersonId","pipeline","currentFilter","stages","has","set","initPipelineBoardActionAndEvent","next","eventType","sortField","sortActions","defaultDirection","applyFiltersFromQueryParams","sortOption","getValue","setCurrentPipeline","pipelineID","forEach","c","setCurrentPipelineID","reloadBoard","loadOpportunitiesInStage","stage","scan","action","event","Object","assign","doListFor","cursor","undefined","getNextPageWithCursor","isLoading","unlock","getOpportunityActionSeed","setDate","switchMap","applyOpportunities","RevenuePeriodFilter","UNSPECIFIED","updateProbability","opportunity","probability","updatePipelineId","newPipelineId","newProbability","opportunitiesInStage$","opps","DEFAULT_PIPELINE_ID","filter","opp","cursorForStage$","get","option","opportunities","getWorkResults$","range","findProbabilityRangeFromStage","applyForStage$","minimum","maximum","triggerLoadNextPage","first","currentOpportunities","updatedFilter","probabilityRangeFilter","Set","concat","tags","expectedCloseDateFilter","actualCloseDateFilter","createdDateFilter","partnerId","marketId","list","response","setStatsForStage","totalProjectedFirstYearValue","weightedRevenue","totalRevenueForRevenuePeriod","weightedRevenueInPeriod","totalOpportunities","totalResults","nextCursor","results","agIds","enqueueAccountLoad","startWork","doGetNextPageFor","isLocked","lock","isLoading$","doLoadMoreIfNecessary","arraySize","setFilters","take","sortSelected","find","sortFields","sortConfig","getFieldSpecificSortDirection","expectedCloseDate","actualCloseDate","lastConnected","lastSalesActivity","name","meddic","useDefaultSortDirection","resetSortDirection","setSortDirection","reverseSortDirection","newSortDirection","sortDirection","sortByExpectedClose","setSort","sortByActualClose","sortByCreatedDate","sortByAssignedDate","clearExpectedClose","clearActualClose","clearCreatedDate","clearAssignedDate","setFilterAndSort","setSelectedSalespeople","sp","setOpportunityTypesFilter","applySavedFiltersFromStorage","searchTerm","sort","sortOptions","buildSortOptions","ngOnDestroy","destroy","ɵɵinject","OpportunityService","SalesOpportunitiesService","UserPipelines","PipelineStats","PipelineBusinessNameService","PotentialRevenueService","PipelineFiltersService","AccountFilterService","SALESPERSON_ID_TOKEN","PARTNER_ID_TOKEN","MARKET_ID_TOKEN","factory","ɵfac","_PipelineBoardService","IDENTITY","data","of","KeyedDataProvider","constructor","config","stateMap","ObservableWorkStateMap","state","updateStateMap","getCachedOrFetch$","param","loadDataFn","getWorkFn","key","convert","inputsToStringKey","scheduler","testing","undefined","startWorkIfNeededForSubscriber","requestRefresh","work","startWork","externalSource","fetchFn","pipe","switchMap","v","apiDataToAppData","store","i","data","uploadFn","shareReplay","applyFinishedWork","storeStateSuccess$","isSuccess$","isLoading$","isFailed$","map","isFailed$","stateMap","id","isSuccess$","pipe","map","success","MEDDICScoreSource","constructor","scoreSvc","scheduler","updateScoresStateMap","ObservableWorkStateMap","updateNotesStateMap","getSectionsStateMap","c","externalSource","fetchFn","i","accountGroupId","opportunityId","getMEDDICScores","uploadFn","d","updateMEDDICScores","convert","inputsToStringKey","apiDataToAppData","IDENTITY","testing","undefined","scores","KeyedDataProvider","initializeMeddicSections","getSectionsFn","getMEDDICSections","startWork","getMeddicSections","getWorkResults$","getCachedScoresOrFetch$","getCachedOrFetch$","submitMEDDICScores","meddicScores","store","submitMEDDICNotes","salesPersonId","meddicSection","notes","work","updateMEDDICNotes","shareReplay","isSubmitting$","isLoading$","isSubmitFailed$","submissionSuccessEvents$","successEvent$","state","isLoadSuccess","notesSuccessEvent$","didNotesSaveSuccessfully$","areNotesCurrentlySaving$","areSectionsCurrentlyLoading$","didSectionsLoadSuccessfully","notesSaveEvents$","ɵɵinject","OpportunityScoringService","factory","ɵfac","providedIn","_MEDDICScoreSource","SlideOutPanelService","constructor","isSlideOutOpen$$","BehaviorSubject","isSlideOutOpen$","asObservable","openSlideOut","next","closeSlideOut","factory","ɵfac","_SlideOutPanelService","computeProgress","scores","keys","Object","max","reduce","sum","map","k","cur","computeScoreSum","MAX_MEDDIC_SCORE","MEDDICProgressBarComponent","scores","s","progress","computeProgress","colorClass","chooseColorClass","categoriesMet","computeScoreSum","potentialScoreSum","Object","keys","length","selectors","inputs","loading","decls","vars","consts","template","rf","ctx","ɵɵelement","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ɵɵadvance","ɵɵtextInterpolate3","ɵɵpipeBind1","_MEDDICProgressBarComponent","ɵɵelement","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵlistener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","openDetails","opportunity","businessName_r3","ɵɵelementContainerStart","ɵɵtemplate","PipelineCardComponent_ng_container_7_span_1_Template","PipelineCardComponent_ng_container_7_ng_template_2_Template","ɵɵtemplateRefExtractor","ɵɵproperty","businessFound_r4","salesperson_r5","fullName","pictureServingUrl","ɵɵtextInterpolate2","getDateOrNull","lastActivityDate","lastConnectedDate","expectedCloseDate","actualClosedDate","created","assignedDate","MEDDICScoresLoading$","MEDDICScores$","PipelineCardComponent_ng_container_18_div_1_Template","PipelineCardComponent_ng_container_18_div_2_Template","PipelineCardComponent_ng_container_18_div_3_Template","PipelineCardComponent_ng_container_18_div_4_Template","PipelineCardComponent_ng_container_18_div_5_Template","PipelineCardComponent_ng_container_18_div_6_Template","PipelineCardComponent_ng_container_18_div_7_Template","option_r6","lastSalesActivity","lastConnected","actualCloseDate","createdDate","meddicScore","PipelineCardComponent","constructor","pipelineBoardService","pipelineBusinessNameService","opportunityUpdates","scoreSvc","slideOutPanelService","salespeople$","defaultCurrency$","detailsConfig","router","snackbarService","selectedOpportunityId","EventEmitter","currency$","nameLoading$","BehaviorSubject","sortSelection$","isSelectedOpportunity$","combineLatest","currentOpportunity$","isSlideOutOpen$","pipe","map","selectedOpportunity","isSlideOutOpen","opportunityId","ngOnInit","accountGroupId","setBusinessName","businessIdentifiers","get","loading$$","salesperson$","getSalesperson","salesPersonId","scoring","scores","reduce","total","score","currentScore","scoreValue","getCachedScoresOrFetch$","isLoading$","getBusinessName$","accountGroupName$$","getBusinessNameError$","bn","date","getFullYear","toLocaleDateString","selected","emit","salespersonId","sp","find","s","id","details","showCRMDetails","businessName$","getCompanyName$","event","__async","stopPropagation","openErrorSnack","url","firstValueFrom","getCompanyId$","getCompanyDetailsUrl","navigate","queryParams","origin","getAccountDetailsUrl","ɵɵdirectiveInject","PipelineBoardService","PipelineBusinessNameService","OpportunityService","MEDDICScoreSource","SlideOutPanelService","ALL_SALESPEOPLE","DEFAULT_CURRENCY","DETAILS_CONFIG_TOKEN","Router","SnackbarService","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","PipelineCardComponent_div_0_Template","PipelineCardComponent_ng_container_7_Template","PipelineCardComponent_va_icon_16_Template","PipelineCardComponent_ng_container_18_Template","ɵɵclassProp","name","ɵɵpipeBind2","projectedFirstYearValue","_PipelineCardComponent","MEDDICSelectorComponent","constructor","scoresChanged","EventEmitter","handleSelection","$event","newScores","Object","assign","scores","scoresKey","value","emit","ngOnChanges","updateScoreValue","ngOnInit","scoreValue","selectors","inputs","scoreI18nKey","outputs","features","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ɵɵpipeBind1","ɵɵadvance","ɵɵtextInterpolate2","_MEDDICSelectorComponent","MeddicNotesService","constructor","meddicDataProvider","lastNotesUpdateAttemptedMap","Map","saveMEDDICNotes","request","set","opportunityId","submitMEDDICNotes","accountGroupId","editSalesPersonId","section","notes","retrySavingMEDDICNotes","id","get","didNotesSaveSuccessfully$","areNotesCurrentlySaving$","areSectionsCurrentlyLoading$","didSectionsLoadSuccessfully","getMeddicSections","initializeMeddicSections","ɵɵinject","MEDDICScoreSource","factory","ɵfac","_MeddicNotesService","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵproperty","SALESPERSON_ID_TOKEN","MEDDICNoteStatus","DELAY_BEFORE_SAVING_NOTES","MeddicNotesFieldComponent","constructor","salesPersonId$","notesService","formControl","UntypedFormControl","NOTES_STATUS_SAVED","SAVED","NOTES_STATUS_SAVING","SAVING","NOTES_STATUS_ERROR","ERROR","accountGroupId$$","ReplaySubject","accountGroupId$","pipe","filter","id","opportunityId$$","opportunityId$","fallbackSalespersonId$$","BehaviorSubject","fallbackSalespersonId$","section$$","section$","asObservable","subscriptions","SubscriptionList","new","noteRecorder$$","disableNotesFields","constructNoteChangeObservables","constructNoteChangeSubscriptions","section","next","accountGroupId","fallbackSalespersonId","opportunityId","ngOnDestroy","destroy","disable","emitEvent","noteSaveStatus$","switchMap","combineLatest","areNotesCurrentlySaving$","didNotesSaveSuccessfully$","isSaving","savedSuccessfully","of","delay","loadedSuccessfully$","didSectionsLoadSuccessfully","map","success","notesSaveStatus$","merge","add","noteChangeRequest","sendMeddicNoteUpdateRequest","noteChanges$","valueChanges","notes","debounceTime","request","sectionLoadStatus$","areSectionsCurrentlyLoading$","isSuccess","isLoading","enable","thisSectionsNotes$","getMeddicSections","withLatestFrom","sections","thisSection","find","sectionName","setValue","changes","__async","agid","firstValueFrom","oppId","salesPersonId","req","editSalesPersonId","saveMEDDICNotes","ɵɵdirectiveInject","MeddicNotesService","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵtemplate","MeddicNotesFieldComponent_mat_icon_6_Template","MeddicNotesFieldComponent_mat_icon_8_Template","MeddicNotesFieldComponent_mat_spinner_10_Template","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","_MeddicNotesFieldComponent","ɵɵelement","ɵɵproperty","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","emitRetryEvent","ɵɵtemplate","MeddicErrorsComponent_ng_container_0_mat_spinner_11_Template","ɵɵadvance","ɵɵtextInterpolate","errorMessage","retrying","ɵɵstyleProp","ɵɵtextInterpolate1","ɵɵpipeBind1","MeddicErrorsComponent","constructor","retryRequest","EventEmitter","emit","selectors","inputs","hasError","outputs","decls","vars","consts","template","rf","ctx","MeddicErrorsComponent_ng_container_0_Template","_MeddicErrorsComponent","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpipeBind1","ctx_r1","scoreI18nKey","scores_r1","scoresKey","ɵɵpureFunction3","_c0","ɵɵtextInterpolate1","MEDDICTitleComponent","ngOnInit","isFailed$","scoresState","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵtemplate","MEDDICTitleComponent_ng_container_4_Template","isLoading$","workResults$","ɵɵtextInterpolate","_MEDDICTitleComponent","ɵɵelementContainer","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵlistener","$event","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","ɵɵresetView","handleScoresChanged","ɵɵadvance","ɵɵproperty","scoreI18nKey_r5","scoresKey_r6","scoresState","ɵɵpipeBind1","scores$","opportunityId$","accountGroupId$","section_r4","fallbackSalespersonId$","MeddicSectionComponent","constructor","scoreSvc","alerts","notesService","MEDDIC_METRICS_SECTION","MEDDICSection","MEDDIC_SECTION_METRICS","MEDDIC_ECONOMIC_BUYER_SECTION","MEDDIC_SECTION_ECONOMIC_BUYER","MEDDIC_DECISION_CRITERIA_SECTION","MEDDIC_SECTION_DECISION_CRITERIA","MEDDIC_DECISION_PROCESS_SECTION","MEDDIC_SECTION_DECISION_PROCESS","MEDDIC_IDENTIFY_PAIN_SECTION","MEDDIC_SECTION_IDENTIFY_PAIN","MEDDIC_CHAMPION_SECTION","MEDDIC_SECTION_CHAMPION_SCORE","MEDDIC_COMPETITION_SECTION","MEDDIC_SECTION_COMPETITION","MEDDIC_PAPER_PROCESS_SECTION","MEDDIC_SECTION_PAPER_PROCESS","opportunityId$$","ReplaySubject","pipe","filter","id","distinctUntilChanged","fallbackSalespersonId$$","accountGroupId$$","subscriptions","SubscriptionList","new","add","combineLatest","opportunityId","accountGroupId","initializeMeddicSections","notesSavedSuccessfully$","switchMap","notesSuccessEvent$","noteSaveEvents$","notesSaveEvents$","eventSuccessful","openSuccessSnack","openErrorSnack","notesAreSaving$","areNotesCurrentlySaving$","oppId","getCachedScoresOrFetch$","publishReplay","refCount","meddicProgress$","map","scores","computeProgress","isLoading$","isSuccess$","isLoadSuccess","workResults$","successEvents$","EMPTY","getSectionsState","areSectionsCurrentlyLoading$","didSectionsLoadSuccessfully","getMeddicSections","isSending$","isSubmitting$","isSending","of","delay","isFailed$","isSubmitFailed$","success$","submissionSuccessEvents$","success","next","fallbackSalespersonId","ngOnDestroy","destroy","saveMEDDICScores","__async","agid","Promise","all","firstValueFrom","submitMEDDICScores","retryGettingMEDDICSections","retrySavingMEDDICNotes","ɵɵdirectiveInject","MEDDICScoreSource","SnackbarService","MeddicNotesService","selectors","inputs","decls","vars","consts","template","rf","ctx","i0","_r1","ɵɵtemplate","MeddicSectionComponent_ng_container_16_Template","MeddicSectionComponent_ng_container_17_Template","MeddicSectionComponent_ng_container_18_Template","MeddicSectionComponent_ng_container_19_Template","MeddicSectionComponent_ng_container_20_Template","MeddicSectionComponent_ng_container_21_Template","MeddicSectionComponent_ng_container_22_Template","MeddicSectionComponent_ng_container_23_Template","MeddicSectionComponent_ng_template_24_Template","ɵɵtemplateRefExtractor","scorepannel_r7","ɵɵpureFunction1","_c0","_c1","_c2","_c3","_c4","_c5","_c6","_c7","_MeddicSectionComponent","MeddicNotesModule","CommonModule","FormsModule","ReactiveFormsModule","MatFormFieldModule","MatInputModule","TranslateModule","MatProgressSpinnerModule","MatIconModule","_MeddicNotesModule","MeddicErrorsModule","CommonModule","TranslateModule","MatProgressSpinnerModule","MatIconModule","MatButtonModule","_MeddicErrorsModule","MeddicModule","MeddicNotesService","imports","CommonModule","AsyncUiModule","MatTooltipModule","MatIconModule","TranslateModule","MatProgressBarModule","MatExpansionModule","MatButtonModule","MatSelectModule","MeddicNotesModule","MeddicErrorsModule","_MeddicModule","OpportunityServiceModule","TranslateModule","_OpportunityServiceModule","PipelineCardModule","provide","ALL_SALESPEOPLE","deps","PIPELINE_CARD_CONFIG_TOKEN","useFactory","allSalesPeopleFactory","DEFAULT_CURRENCY","defaultCurrencyFactory","OPPORTUNITY_INFO_URL_BUILDER","opportunityUrlBuilderFactory","DETAILS_CONFIG_TOKEN","detailsConfigFactory","imports","MatCardModule","CommonModule","AsyncUiModule","TranslateModule","RouterModule","PreferredCurrencyModule","MatIconModule","MatCheckboxModule","FormsModule","VaIconModule","MatTooltipModule","MeddicModule","DragDropModule","OpportunityServiceModule","_PipelineCardModule","config","allSalespeople$","defaultCurrency$","opportunityInfoUrlBuilder","detailsConfig","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵproperty","account_r1","companyName","accountGroupsToUIAccounts","ags","map","accountGroupToUIAccount","ag","napData","accountGroupId","AccountSelectorComponent","constructor","accountSelectorService","selectedAccountGroupId","EventEmitter","ngOnInit","initFormControl","filteredAccounts$","getFilteredAccounts","setupValueEmitter","displayCompanyName","account","undefined","accountControl","parentFormCtrl","FormControl","pf","ProjectionFilter","valueChanges","pipe","startWith","inputTerm","debounceTime","switchMap","searchTerm","search","subscribe","value","emit","ɵɵdirectiveInject","AccountSelectorApiService","selectors","inputs","allowNoneOption","outputs","decls","vars","consts","template","rf","ctx","ɵɵelement","ɵɵtemplate","AccountSelectorComponent_mat_option_7_Template","AccountSelectorComponent_mat_option_8_Template","ɵɵtextInterpolate","auto_r2","_AccountSelectorComponent","AccountFilterComponent","constructor","accountFilterService","dialogRef","setAccountGroupId","accountGroupId","accountGroupName","accountSelector","accountControl","value","companyName","save","close","ɵɵdirectiveInject","AccountFilterService","MatDialogRef","selectors","viewQuery","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵlistener","$event","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵtextInterpolate1","_AccountFilterComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","type_r1","ɵɵadvance","ɵɵtextInterpolate","displayName","OpportunityTypeFilterComponent","constructor","opportunityTypeFilterService","opportunityTypeFilterStoreService","dialogRef","checkedTypes$$","ReplaySubject","checkedTypes$","asObservable","availableTypes$","selectedTypes$","pipe","take","subscribe","checkedTypes","next","typeIdComparison","option","value","id","setTypes","types","save","__async","firstValueFrom","setTypeSelection","close","ɵɵdirectiveInject","OpportunityTypeFilterService","OpportunityTypeFilterStoreService","MatDialogRef","selectors","decls","vars","consts","template","rf","ctx","ɵɵlistener","$event","ɵɵtemplate","OpportunityTypeFilterComponent_mat_option_10_Template","ɵɵpipeBind1","ɵɵtextInterpolate1","_OpportunityTypeFilterComponent","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","onSelectionChange","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpureFunction3","_c0","userData_r3","partnerId","marketId","itemSelectorFilters","selectedItems","PipelineFilterPackageSelectorComponent","constructor","partnerId$","marketId$","pkgStore","pkgSelection","dialog","savingFilter$$","BehaviorSubject","savingFilter$","asObservable","ListActivatableItemsFilters","itemTypes","ItemType","ITEM_TYPE_PACKAGE","userData$","combineLatest","pipe","map","packages$","selectedPackages$","take","subscribe","checkedPkgs","p","appId","packageId","name","handlePackageSelection","__async","next","selectedPackages","firstValueFrom","filter","some","i","setPackageSelection","closeAll","newSelection","ɵɵdirectiveInject","PARTNER_ID_TOKEN","MARKET_ID_TOKEN","PipelineFilterPackageStoreService","PipelineFilterPackageSelectionService","MatDialog","selectors","decls","vars","consts","template","rf","ctx","ɵɵtext","ɵɵtemplate","PipelineFilterPackageSelectorComponent_mat_dialog_content_3_Template","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵtextInterpolate1","_PipelineFilterPackageSelectorComponent","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","onSelectionChange","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpureFunction3","_c0","userData_r3","partnerId","marketId","itemSelectorFilters","selectedItems","ProductSelectorComponent","constructor","partnerId$","marketId$","dialog","productsService","savingFilter$$","BehaviorSubject","savingFilter$","asObservable","ListActivatableItemsFilters","itemTypes","ItemType","ITEM_TYPE_APP","userData$","combineLatest","pipe","map","selectedProducts$","take","subscribe","selectedProducts","p","appId","productId","name","products$","filter","newSelection","saveItemSelection","__async","next","products","firstValueFrom","productsToSearch","product","find","push","setProductSelection","closeAll","ɵɵdirectiveInject","PARTNER_ID_TOKEN","MARKET_ID_TOKEN","MatDialog","ProductSelectorService","selectors","decls","vars","consts","template","rf","ctx","ɵɵtext","ɵɵtemplate","ProductSelectorComponent_mat_dialog_content_3_Template","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵtextInterpolate1","_ProductSelectorComponent","SalespersonMultiSelectComponent","constructor","dialogRef","store","formControl","UntypedFormControl","subscriptions","SubscriptionList","new","ngOnInit","selectableSalespeople$","pipe","map","sp","s","name","fullName","value","toOptionValue","options","Set","filter","obj","has","add","selectedSalespeople$","take","setValue","ngOnDestroy","destroy","cancel","close","save","setSelectedSalespeople","ɵɵdirectiveInject","MatDialogRef","SalespersonMultiSelectStoreService","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵlistener","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵproperty","ɵɵtextInterpolate1","_SalespersonMultiSelectComponent","SalesTeamMultiSelectComponent","constructor","dialogRef","store","formControl","UntypedFormControl","subscriptions","SubscriptionList","new","ngOnInit","selectableSalesTeams$","pipe","map","st","s","name","teamName","value","toOptionValue","add","selectedSalesTeams$","take","setValue","ngOnDestroy","destroy","cancel","close","save","setSelectedSalesTeams","ɵɵdirectiveInject","MatDialogRef","SalesTeamMultiSelectStoreService","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵlistener","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵproperty","ɵɵtextInterpolate1","_SalesTeamMultiSelectComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","tag_r1","ɵɵadvance","ɵɵtextInterpolate1","name","TagMultiSelectComponent","constructor","dialogRef","store","subscriptions","SubscriptionList","new","formControl","UntypedFormControl","oppTags$","selectableOppTags$","accTags$","selectableAccTags$","tagOptions$","combineTags","add","combineLatest","selectedOppTags$","selectedAccountTags$","oppTags","accTags","setValue","concat","compareObjects","x","y","JSON","stringify","ngOnDestroy","destroy","cancel","close","save","setTagsSelection","value","ɵɵdirectiveInject","MatDialogRef","TagMultiSelectionStoreService","selectors","decls","vars","consts","template","rf","ctx","ɵɵtemplate","TagMultiSelectComponent_mat_option_9_Template","ɵɵlistener","ɵɵtextInterpolate","ɵɵpipeBind1","_TagMultiSelectComponent","pipe","startWith","map","sortTagOptions","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","openSalespeopleSelector","clearSalespeopleFilters","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵtextInterpolate","names_r3","_r4","openSalesTeamSelector","clearSalesTeamFilters","names_r5","_r6","openPackageSelector","clearPackageFilter","selectedPackagesNames$","_r7","openProductSelector","clearProductsFilter","selectedProductNames$","_r8","openPipelineStatusSelector","clearPipelineStatuses","selectedStatusesNames$","_r9","openTagSelector","clearTagFilter","tags_r10","_r11","clearExpectedRangeFilter","openExpectedCloseDateSelector","expectedCloseFilterDateRange$","_r12","openActualCloseSelector","clearActualCloseFilter","actualCloseFilterToString$","_r13","openAccountGroupFilter","clearAccountGroupFilter","selectedAccountGroupName$","_r14","openOpportunityTypeFilter","clearOpportunityTypeFilter","selectedTypeNames$","_r15","openCreatedDateSelector","clearCreatedDateFilter","createdDateFilterToString$","_r16","openAssignedDateSelector","clearAssignedDateFilter","assignedDateFilterToString$","ɵɵelementContainerStart","_r17","NO_SALESPEOPLE_IN_TEAM_PLACEHOLDER","PipelineBoardFilterChipsComponent","constructor","dialog","spStore","tagStore","stStore","salesTeamsService","store","expectedCloseFilterService","actualCloseFilterService","createdDateFilterService","assignedDateFilterService","pkgStore","productSelectorService","accountFilterService","opportunityTypeFilterService","hasAccessToAllAccountsInMarket$","partnerId$","marketId$","statusesFilterStore","i18n","subscriptions","SubscriptionList","new","expectedCloseFilter$","dateRange$","pipe","startWith","shareReplay","isExpectedCloseFilterSet$","map","boardFilter","start","end","dateFilterToString$","actualCloseFilter$","isActualCloseFilterSet$","selectedTypes$","createdDateFilter$","isCreatedDateFilterSet$","assignedDateFilter$","isAssignedDateFilterSet$","today","Date","CALENDAR_DEFAULTS","TODAY","ADD_ONE_WEEK","addWeeks","ADD_TWO_YEARS","addYears","START_OF_MONTH","startOfMonth","selectedTags$$","ReplaySubject","selectedTags$","asObservable","selectedStatuses$","statuses$","hasSelectedStatuses$","s","won","lost","open","userData$","combineLatest","partnerId","marketId","selectedSalespeopleNames$","selectedSalespeople$","sp","fullName","join","add","arrayOfSalesTeamMembers$","arrayOfSalesPersonIds","filterBySalesTeamMemberIds","selectedSalesTeamNames$","selectedSalesTeams$","teamName","showSalespeopleAndTeams$","selectedOppTags$","selectedAccountTags$","oppTags","accTags","length","next","concat","t","name","closeAll","selectedPackages$","filter","p","Boolean","packages","selectedProducts$","products","buildStatusFitlerChipNames","cleanSelectedPackage$","skipWhile","subscribe","spIds","convert2DSalesTeamMembersToSalespeople","setSelectedSalesTeamMembers","ngOnDestroy","destroy","setSelectedSalespeople","salesPersonIds","salesTeamMemberIds","AccountFilterComponent","width","OpportunityTypeFilterComponent","clearOpportunityTypeSelection","SalespersonMultiSelectComponent","SalesTeamMultiSelectComponent","PipelineStatusCheckboxComponent","resetFilter","TagMultiSelectComponent","setSelectedSalesTeams","clearTagsSelection","clearSelection","clearExpectedClose","clearActualClose","clearCreatedDate","clearAssignedDate","__async","expectedCloseFilter","firstValueFrom","data","beginDate","endDate","maxDate","dialogResultsToDateService","sortByExpectedClose","actualCloseFilter","dateRangeSelectorData","sortByActualClose","createdDateFilter","sortByCreatedDate","assignedDateFilter","sortByAssignedDate","dateService","dialogRef","DateRangeSelectorDialogComponent","afterClosed","d","results","setDateRange","PipelineFilterPackageSelectorComponent","ProductSelectorComponent","salesTeamMembers","salespeople","idx","newId","includes","push","clearPackageSelection","clearProductSelection","i18nWonKey","i18nLostKey","i18nOpenKey","stream","translations","ɵɵdirectiveInject","MatDialog","SalespersonMultiSelectStoreService","TagMultiSelectionStoreService","SalesTeamMultiSelectStoreService","SALES_TEAMS_SERVICE_TOKEN","PipelineBoardService","ExpectedCloseFilterService","ActualCloseFilterService","CreatedDateFilterService","AssignedDateFilterService","PipelineFilterPackageSelectionService","ProductSelectorService","AccountFilterService","OpportunityTypeFilterService","HAS_ACCESS_TO_ALL_ACCOUNTS_IN_MARKET_TOKEN","PARTNER_ID_TOKEN","MARKET_ID_TOKEN","PipelineStatusCheckboxService","TranslateService","selectors","decls","vars","consts","template","rf","ctx","ɵɵtemplate","PipelineBoardFilterChipsComponent_sales_ui_filter_chip_1_Template","PipelineBoardFilterChipsComponent_sales_ui_filter_chip_3_Template","PipelineBoardFilterChipsComponent_sales_ui_filter_chip_6_Template","PipelineBoardFilterChipsComponent_sales_ui_filter_chip_8_Template","PipelineBoardFilterChipsComponent_sales_ui_filter_chip_10_Template","PipelineBoardFilterChipsComponent_sales_ui_filter_chip_12_Template","PipelineBoardFilterChipsComponent_sales_ui_filter_chip_14_Template","PipelineBoardFilterChipsComponent_sales_ui_filter_chip_16_Template","PipelineBoardFilterChipsComponent_sales_ui_filter_chip_18_Template","PipelineBoardFilterChipsComponent_sales_ui_filter_chip_20_Template","PipelineBoardFilterChipsComponent_sales_ui_filter_chip_22_Template","PipelineBoardFilterChipsComponent_sales_ui_filter_chip_24_Template","PipelineBoardFilterChipsComponent_ng_container_33_Template","tmp_2_0","tmp_3_0","tmp_9_0","_PipelineBoardFilterChipsComponent","PIPELINE_BOARD_FILTER_CHIPS_CONFIG_TOKEN","InjectionToken","ɵɵelement","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","opportunity_r4","ɵɵrestoreView","_r3","$implicit","ctx_r1","ɵɵnextContext","ɵɵresetView","handleOpportunitySelected","ɵɵelementEnd","ɵɵtemplate","StageComponent_div_0_ng_container_1_div_4_Template","ɵɵadvance","ɵɵproperty","ɵɵpipeBind1","store","updateOpportunityWorkState","isLoading$","opportunityId","$event","_r1","drop","getNextPage","StageComponent_div_0_ng_container_1_Template","StageComponent_div_0_div_2_Template","oppsWithStage_r5","opportunities","state","StageComponent","constructor","draggedOpportunityId","EventEmitter","selectedOpportunity","stage$$","ReplaySubject","opportunities$","asObservable","pipe","filter","s","take","mergeMap","stage","opportunitiesInStage$","publishReplay","refCount","opportunitiesWithStage$","switchMap","map","opps","next","_stage","stageState","stageId","event","previousContainer","container","opp","data","previousIndex","emit","newProb","probability","updateProbability","doLoadMoreIfNecessary","length","target","offsetHeight","scrollTop","scrollHeight","doGetNextPageFor","opportunity","ɵɵdirectiveInject","PipelineBoardService","selectors","hostBindings","rf","ctx","StageComponent_div_0_Template","_StageComponent","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","ɵɵresetView","sortActions","pipelineField","POTENTIAL","ɵɵtext","ɵɵelementEnd","EXPECTED_CLOSE","ACTUAL_CLOSE","LAST_CONNECTED","LAST_ACTIVITY","OPPORTUNITY","CREATED","ASSIGNED_DATE","MEDDIC","ɵɵadvance","ɵɵproperty","sortSelection_r4","potentialRevenue","ɵɵtextInterpolate1","ɵɵpipeBind1","expectedCloseDate","actualCloseDate","lastConnected","lastSalesActivity","name","createdDate","assignedDate","meddic","pipeline_r6","_r5","$implicit","changeSelectedPipeline","id","currentPipeline_r7","ɵɵelement","_r8","openPipelineSettings","ɵɵtemplate","PipelineBoardFilteredComponent_ng_container_14_ng_container_1_ng_container_7_Template","PipelineBoardFilteredComponent_ng_container_14_ng_container_1_Conditional_8_Template","pipelineMenu_r9","pipelines_r10","ɵɵconditional","hasAccessToPipelineSettings$","PipelineBoardFilteredComponent_ng_container_14_ng_container_1_Template","currentPipeline$","stage_r13","probability","ɵɵpipeBind2","stats_r12","revenue","currency$","ɵɵtextInterpolate","weightedRevenue","PipelineBoardFilteredComponent_div_19_ng_container_1_ng_container_3_ng_container_11_Template","totalOpportunities","PipelineBoardFilteredComponent_div_19_ng_container_1_ng_container_2_Template","PipelineBoardFilteredComponent_div_19_ng_container_1_ng_container_3_Template","$event","_r11","dropOpportunity","handleOpportunitySelected","stageId","stages_r14","statsMap","get","opportunitiesVisibleCount$","PipelineBoardFilteredComponent_div_19_ng_container_1_Template","PipelineBoardFilteredComponent_div_19_uikit_empty_state_2_Template","PipelineBoardFilteredComponent","constructor","pipelineStats","pipelines$","defaultCurrencyCode$","pipelineSettingsURL","canAccessPipelineSettings$","partnerId$","pipelineBoardService","featureFlagService","router","sortAction","EventEmitter","draggedOpportunityId","selectedOpportunity","sortDirection","changePipeline","Map","PipelineField","pipelineSettingsFeatureFlag","hasPipelineSettingsFeatureFlag$","pipe","switchMap","partnerId","batchGetStatus","map","featureFlags","startWith","combineLatest","featureFlag","hasAccess","totalVisibleOpportunitiesForAllStages$","shareReplay","sortSelection$","sortDirection$","defaultSortDirection$","sortDirectionIcon$","defaultSortDirection","stages$","pipeline","stages","root","document","documentElement","subscribe","style","setProperty","length","stage","set","getStatsForStage$","applyFiltersFromQueryParams","pipelineID","emit","__async","firstValueFrom","navigateByUrl","action","active","changeSortDirection","ɵɵdirectiveInject","PipelineStats","USER_PIPELINES_TOKEN","DEFAULT_CURRENCY_CODE_TOKEN","PIPELINE_SETTINGS_URL_TOKEN","PIPELINE_SETTINGS_ACCESS_TOKEN","CURRENT_PIPELINE","PARTNER_ID_TOKEN","PipelineBoardService","FeatureFlagService","Router","selectors","outputs","decls","vars","consts","template","rf","ctx","PipelineBoardFilteredComponent_ng_container_3_Template","i0","_r1","PipelineBoardFilteredComponent_ng_container_14_Template","PipelineBoardFilteredComponent_div_19_Template","actions_r15","_PipelineBoardFilteredComponent","PipelineBoardFiltersModule","provide","HAS_ACCESS_TO_ALL_ACCOUNTS_IN_MARKET_TOKEN","deps","PIPELINE_BOARD_FILTER_CHIPS_CONFIG_TOKEN","useFactory","hasAccessToAllAccountsInMarketFactory","SALES_TEAM_SERVICE_TOKEN","salesTeamsServiceFactory","PIPELINE_CARD_CONFIG_TOKEN","pipelineCardConfigFactory","imports","CommonModule","FilterChipsModule","FilterModule","MatDialogModule","TranslateModule","MatMenuModule","GalaxyPageModule","MatInputModule","MatIconModule","PipelineSavedFiltersModule","MatTooltipModule","VaBadgeModule","PreferredCurrencyModule","EmptyStateModule","DragDropModule","MatButtonModule","MatFormFieldModule","PipelineCardModule","MatProgressSpinnerModule","MatDivider","_PipelineBoardFiltersModule","config","hasAccessToAllAccountsInMarket$","salesTeamsService","allSalespeople$","defaultCurrency$","opportunityInfoUrlBuilder","detailsConfig","LAST_VIEWED_PIPELINE_ORIGIN_KEY","ClientOrigin","PIPELINE_PAGE_VIEW","PipelineBoardViews","PipelinePageCacheService","constructor","appCache","lastViewedPipelinePageView","get","isCacheHit","value","DEFAULT_BOARD","setLastViewedPipelinePageView","view","entry","origin","JSON","stringify","add","ɵɵinject","AppCacheService","factory","ɵfac","_PipelinePageCacheService","PipelineCacheModule","PipelinePageCacheService","SelectedPipelineCacheService","_PipelineCacheModule","UserPipelinesModule","UserPipelines","provide","PARTNER_ID_TOKEN","deps","USER_PIPELINES_SERVICE_CONFIG_TOKEN","useFactory","partnerIdFactory","imports","PipelineCacheModule","_UserPipelinesModule","config","partnerId$","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","monthYear_r1","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","displayString","MAX_MONTHS_TO_DISPLAY","RevenueDateSelectorComponent","constructor","translate","revenueDateService","initialSelection","monthYear","stream","date","getYear","Date","ngOnInit","monthYearRevenueFilterList","generateMonthYearRevenueList","currentSelection$","selectedDate$","pipe","map","d","find","m","isEqual","changeDate","$event","setDate","options","i","temp","getUTCEndOfMonth","addMonths","push","of","format","locale","getLocale","ɵɵdirectiveInject","TranslateService","PotentialRevenueService","selectors","decls","vars","consts","template","rf","ctx","ɵɵlistener","ɵɵtemplate","RevenueDateSelectorComponent_mat_option_3_Template","_RevenueDateSelectorComponent","RevenueDateDropdownModule","CommonModule","ReactiveFormsModule","TranslateModule","MatSelectModule","FormsModule","GalaxyFormFieldModule","_RevenueDateDropdownModule","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind2","ɵɵpipeBind1","ctx_r1","monthlyWeightedRevenue$","prefCurrency_r1","ɵɵtemplate","PotentialRevenueComponent_div_0_ng_container_1_div_1_div_10_Template","ɵɵtextInterpolate2","selectedDate$","monthlyRevenue$","ɵɵproperty","weightedPotentialRevenue$","ɵɵelementContainerStart","PotentialRevenueComponent_div_0_ng_container_1_div_1_Template","PotentialRevenueComponent_div_0_ng_container_1_div_11_Template","showMonthlyRevenue$","potentialRevenue$","PotentialRevenueComponent_div_0_ng_container_1_Template","isPotentialRevenueLoaded$","loading_r3","ɵɵelement","PotentialRevenueComponent","constructor","potentialRevenueService","currency$","pipe","map","date","ɵɵdirectiveInject","PotentialRevenueService","selectors","decls","vars","consts","template","rf","ctx","PotentialRevenueComponent_div_0_Template","PotentialRevenueComponent_ng_template_2_Template","ɵɵtemplateRefExtractor","MonthYearPipe","styles","_PotentialRevenueComponent","transform","format","locale","getLocale","pure","_MonthYearPipe","PotentialRevenueModule","PotentialRevenueService","imports","CommonModule","TranslateModule","PreferredCurrencyModule","RevenueDateDropdownModule","MatProgressSpinnerModule","MatIconModule","_PotentialRevenueModule","en_devel_default","WEBLATE_COMPONENT_NAME","ProductSelectorModule","ProductSelectorService","provide","PRODUCTS_TOKEN","deps","PRODUCT_SELECTOR_CONFIG_TOKEN","useFactory","productsFactory","imports","CommonModule","TranslateModule","MatSelectModule","MatButtonModule","MatDialogModule","MatCheckboxModule","MatProgressSpinnerModule","ItemSearchSelectFilterModule","_ProductSelectorModule","config","products$","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","pipeline_r1","ɵɵtextInterpolate","name","pipelineStage_r2","ɵɵtextInterpolate1","ɵɵlistener","selectedPipelines_r4","ɵɵrestoreView","_r3","ngIf","ctx_r4","ɵɵnextContext","ɵɵresetView","handlePipelineSelection","ɵɵpipeBind1","PipelineMultiSelectComponent","constructor","data","store","dialog","subscriptions","SubscriptionList","new","selectablePipelinesStages$$","ReplaySubject","selectablePipelinesStages$","asObservable","checkedPipelinesIds$$","checkedPipelinesIds$","pipe","map","checkedPipelinesIds","pipeline","id","selectedPipelineStage$$","selectedPipelineStage$","selectablePipelines$","next","pipelines","pipelineControl","UntypedFormControl","pipelineStageControl","pipelineStage","pipelineIds","length","withLatestFrom","selectedPipeline","find","stages","valueChanges","subscribe","selectedPipelines","enable","disable","ngOnDestroy","destroy","pipelineIdComparison","option","value","__async","firstValueFrom","pipelineId","found","p","undefined","push","setPipelineSelection","setPipelineStageSelection","closeAll","setCheckedPipelines","setValue","setSelectedPipelineStage","selectedStage","ɵɵdirectiveInject","MAT_DIALOG_DATA","PipelineMultiSelectService","MatDialog","selectors","decls","vars","consts","template","rf","ctx","$event","ɵɵtemplate","PipelineMultiSelectComponent_ng_container_9_Template","PipelineMultiSelectComponent_ng_container_18_Template","PipelineMultiSelectComponent_button_24_Template","tmp_7_0","_PipelineMultiSelectComponent","PipelineMultiSelectModule","PipelineMultiSelectService","imports","CommonModule","ReactiveFormsModule","MatButtonModule","MatDialogModule","TranslateModule","VaFormsModule","MatSelectModule","MatCheckboxModule","MatTooltipModule","_PipelineMultiSelectModule","StatusSelectService","constructor","selectedStatus$$","BehaviorSubject","selectedStatus$","asObservable","setStatus","statuses","next","clearStatus","factory","ɵfac","_StatusSelectService","StatusSelectModule","StatusSelectService","imports","CommonModule","TranslateModule","MatDialogModule","MatButtonModule","MatSelectModule","MatCheckboxModule","_StatusSelectModule","SalesTeamMultiSelectModule","SalesTeamMultiSelectStoreService","provide","PARTNER_ID_TOKEN","deps","SALES_TEAM_MULTI_SELECT_CONFIG_TOKEN","useFactory","partnerIdFactory","MARKET_ID_TOKEN","marketIdFactory","SALES_TEAMS_SERVICE_TOKEN","salesTeamsServiceFactory","imports","CommonModule","ReactiveFormsModule","MatButtonModule","MatDialogModule","TranslateModule","VaFormsModule","_SalesTeamMultiSelectModule","config","partnerId$","marketId$","salesTeamsService","TagMultiSelectModule","TagMultiSelectionStoreService","provide","PARTNER_ID_TOKEN","deps","TAG_MULTI_SELECT_CONFIG_TOKEN","useFactory","partnerIdFactory","MARKET_ID_TOKEN","marketIdFactory","TAG_SERVICE_TOKEN","tagServiceFactory","imports","CommonModule","ReactiveFormsModule","MatButtonModule","MatDialogModule","MatFormFieldModule","MatSelectModule","MatOptionModule","TranslateModule","VaFormsModule","_TagMultiSelectModule","config","partnerId$","marketId$","tagService","DateFiltersModule","ExpectedCloseFilterService","ActualCloseFilterService","CreatedDateFilterService","AssignedDateFilterService","imports","CommonModule","_DateFiltersModule","SalespersonMultiSelectModule","SalespersonMultiSelectStoreService","provide","ALL_SALESPEOPLE_TOKEN","deps","SALESPERSON_MULTI_SELECT_CONFIG_TOKEN","useFactory","salespersonFactory","SALESPERSON_ID_TOKEN","salespersonIdFactory","SALESPERSON_NAME_TOKEN","salespersonNameFactory","INIT_WITH_CUR_SALESPERSON_TOKEN","initWithCurSalespersonFactory","imports","CommonModule","ReactiveFormsModule","MatButtonModule","MatDialogModule","TranslateModule","VaFormsModule","_SalespersonMultiSelectModule","config","allSalespeople$","salespersonId$","salespersonName$","initWithLoggedInSalesperson","PipelineFilterPackageSelectorModule","PipelineFilterPackageStoreService","PipelineFilterPackageSelectionService","provide","PARTNER_ID_TOKEN","deps","PACKAGE_SELECT_CONFIG_TOKEN","useFactory","partnerIdFactory","MARKET_ID_TOKEN","marketIdFactory","imports","CommonModule","TranslateModule","MatSelectModule","MatButtonModule","MatDialogModule","FormsModule","ItemSearchSelectFilterModule","_PipelineFilterPackageSelectorModule","config","partnerId$","marketId$","PipelineFiltersServiceModule","PipelineFiltersService","imports","PipelineMultiSelectModule","StatusSelectModule","TagMultiSelectModule","SalesTeamMultiSelectModule","DateFiltersModule","SalespersonMultiSelectModule","PipelineFilterPackageSelectorModule","ProductSelectorModule","_PipelineFiltersServiceModule","PipelineBoardServiceModule","PipelineBoardService","provide","PIPELINE_SERVICE_INJECTION_TOKEN","useExisting","PARTNER_ID_TOKEN","deps","PIPELINE_BOARD_SERVICE_CONFIG_TOKEN","useFactory","partnerIdFactory","MARKET_ID_TOKEN","marketIdFactory","SALESPERSON_ID_TOKEN","salespersonIdFactory","imports","PipelineFiltersServiceModule","OpportunityServiceModule","_PipelineBoardServiceModule","config","partnerId$","marketId$","salespersonId$","defaultCurrencyCodeFactory","config","defaultCurrency$","pipelineSettingsURLFactory","pipelineSettingsURL","pipelineSettingsAccessFactory","pipelineSettingsAccess$","packageSelectConfigFactory","partnerId$","marketId$","salesTeamMultiSelectConfigFactory","salesTeamsService","productSelectorConfigFactory","products$","tagMultiSelectConfigFactory","tagService","PIPELINE_BOARD_CONFIG_TOKEN","InjectionToken","PipelineBoardModule","forRoot","config","ngModule","providers","provide","useExisting","FILTERS_CACHE_SERVICE_TOKEN","PipelineFiltersCacheService","PIPELINE_SERVICE_INJECTION_TOKEN","PipelineBoardService","REVENUE_DEFAULT_CURRENCY_CODE_TOKEN","deps","useFactory","defaultCurrencyCodeFactory","PACKAGE_SELECT_CONFIG_TOKEN","packageSelectConfigFactory","SALESPERSON_MULTI_SELECT_CONFIG_TOKEN","salespersonMultiSelectConfigFactory","SALES_TEAM_MULTI_SELECT_CONFIG_TOKEN","salesTeamMultiSelectConfigFactory","PRODUCT_SELECTOR_CONFIG_TOKEN","productSelectorConfigFactory","TAG_MULTI_SELECT_CONFIG_TOKEN","tagMultiSelectConfigFactory","DEFAULT_CURRENCY_CODE_TOKEN","PIPELINE_SETTINGS_URL_TOKEN","pipelineSettingsURLFactory","PIPELINE_SETTINGS_ACCESS_TOKEN","pipelineSettingsAccessFactory","PIPELINE_BOARD_SERVICE_CONFIG_TOKEN","pipelineBoardServiceConfigFactory","PARTNER_ID_TOKEN","partnerIdFactory","MARKET_ID_TOKEN","marketIdFactory","PIPELINE_BOARD_FILTER_CHIPS_CONFIG_TOKEN","pipelineBoardFilterChipsConfigFactory","USER_PIPELINES_TOKEN","userPipelinesFactory","CURRENT_PIPELINE","currentPipelineFactory","salespersonId$","PipelineBusinessNameService","PipelineStats","imports","UserPipelinesModule","PipelineStatusCheckboxModule","ProductSelectorModule","PotentialRevenueModule","PipelineBoardServiceModule","PipelineCardModule","PipelineBoardFiltersModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","_PipelineBoardModule","marketId$","partnerId$","pipelines$","currentPipeline$","allSalespeople$","defaultCurrency$","opportunityInfoUrlBuilder","hasAccessToAllAccountsInMarket$","salesTeamsService","detailsConfig","salespersonName$","initWithLoggedInSalesperson","PipelinePageUrls","PipelineSwitcherService","constructor","router","cache","cachedPipelinePage$$","ReplaySubject","cachedPipelinePage$","asObservable","lastViewedPipelinePageView","PipelineBoardViews","DEFAULT_BOARD","next","BOARD","TABLE","navigateToTable","navigate","queryParamsHandling","setLastViewedPipelinePageView","DEFAULT_TABLE","navigateToBoard","navigateToTableWithAccountFilter","accountGroupId","params","filters","JSON","stringify","status","open","queryParams","ɵɵinject","Router","PipelinePageCacheService","factory","ɵfac","providedIn","_PipelineSwitcherService","PipelineSwitcherComponent","constructor","pipelineSwitcherService","cache","pipelineView","lastViewedPipelinePageView","PipelineBoardViews","DEFAULT_TABLE","currentPage$","cachedPipelinePage$","navigateToTable","navigateToBoard","DEFAULT_BOARD","ɵɵdirectiveInject","PipelineSwitcherService","PipelinePageCacheService","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","_PipelineSwitcherComponent","PipelineSwitcherModule","CommonModule","MatIconModule","MatButtonToggleModule","TranslateModule","_PipelineSwitcherModule","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","openSalespeopleSelector","clearSalespeopleFilters","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵtextInterpolate","names_r3","_r4","openSalesTeamSelector","clearSalesTeamFilters","names_r5","_r6","openAssignedDateSelector","clearAssignedDateFilter","assignedDateFilterToString$","_r7","openPipelineStatusSelector","clearPipelineStatuses","selectedStatusesNames$","_r8","openPackageSelector","clearPackageFilter","selectedPackagesNames$","_r9","openProductSelector","clearProductsFilter","selectedProductNames$","_r10","openTagSelector","clearTagFilter","tags_r11","_r12","openPipelineSelector","clearPipelinesFilter","selectedPipelineNames$","_r13","openExpectedCloseSelector","clearExpectedCloseFilter","expectedCloseFilterToString$","_r14","openCreatedDateSelector","clearCreatedDateFilter","createdDateFilterToString$","_r15","openOpportunityTypeFilter","clearOpportunityTypeFilter","selectedTypeNames$","_r16","openActualCloseSelector","clearActualCloseFilter","actualCloseFilterToString$","_r17","openAccountGroupFilter","clearAccountGroupFilter","selectedAccountGroupName$","ɵɵelementContainerStart","_r18","PipelineTableFilterChipsComponent","constructor","dialog","spStore","tagStore","stStore","pkgStore","productSelectorService","pipelineMultiSelectService","statusesFilterStore","expectedCloseFilterService","actualCloseFilterService","createdDateFilterService","assignedDateFilterService","opportunityTypeFilterService","accountFilterService","i18n","salesTeamsService","hasAccessToAllAccountsInMarket$","pipelinesSelectedFilter$","selectedPipelines$","pipe","startWith","shareReplay","pipelineStageSelectedFilter$","selectedPipelineStage$","expectedCloseFilter$","dateRange$","selectedTypes$","dateFilterToString$","createdDateFilter$","actualCloseFilter$","assignedDateFilter$","subscriptions","SubscriptionList","new","today","Date","CALENDAR_DEFAULTS","NOW","ADD_ONE_WEEK","addWeeks","ADD_TWO_YEARS","addYears","START_OF_MONTH","startOfMonth","selectedTags$$","ReplaySubject","selectedTags$","asObservable","selectedStatuses$","statuses$","hasSelectedStatuses$","map","s","won","lost","open","add","selectedSalesTeams$","st","id","ids","salesTeamIdsToArrayOfSalesPeopleIds","selectedSalespeopleNames$","selectedSalespeople$","sp","fullName","join","filter","p","Boolean","pipelines","name","selectedSalesTeamNames$","teamName","showSalespeopleAndTeams$","combineLatest","selectedOppTags$","selectedAccountTags$","oppTags","accTags","length","next","concat","t","selectedPackages$","packages","selectedProducts$","products","buildStatusFitlerChipNames","ngOnDestroy","destroy","SalespersonMultiSelectComponent","width","AccountFilterComponent","OpportunityTypeFilterComponent","__async","firstValueFrom","pipelineStage","PipelineMultiSelectComponent","data","expectedCloseFilter","dateRangeSelectorData","maxDate","beginDate","start","endDate","end","dialogResultsToDateService","assignedDateFilter","actualCloseFilter","createdDateFilter","clearPipelineSelection","clearPipelineStageSelection","clearSelection","SalesTeamMultiSelectComponent","setSelectedSalespeople","clearOpportunityTypeSelection","TagMultiSelectComponent","setSelectedSalesTeams","clearTagsSelection","PipelineStatusCheckboxComponent","resetFilter","PipelineFilterPackageSelectorComponent","ProductSelectorComponent","clearPackageSelection","clearProductSelection","i18nWonKey","i18nLostKey","i18nOpenKey","stream","translations","dateService","dialogRef","DateRangeSelectorDialogComponent","afterClosed","results","setDateRange","ɵɵdirectiveInject","MatDialog","SalespersonMultiSelectStoreService","TagMultiSelectionStoreService","SalesTeamMultiSelectStoreService","PipelineFilterPackageSelectionService","ProductSelectorService","PipelineMultiSelectService","PipelineStatusCheckboxService","ExpectedCloseFilterService","ActualCloseFilterService","CreatedDateFilterService","AssignedDateFilterService","OpportunityTypeFilterService","AccountFilterService","TranslateService","SALES_TEAM_SERVICE_TOKEN","HAS_ACCESS_TO_ALL_ACCOUNTS_IN_MARKET_TOKEN","selectors","decls","vars","consts","template","rf","ctx","ɵɵtemplate","PipelineTableFilterChipsComponent_sales_ui_filter_chip_1_Template","PipelineTableFilterChipsComponent_sales_ui_filter_chip_4_Template","PipelineTableFilterChipsComponent_sales_ui_filter_chip_7_Template","PipelineTableFilterChipsComponent_sales_ui_filter_chip_9_Template","PipelineTableFilterChipsComponent_sales_ui_filter_chip_11_Template","PipelineTableFilterChipsComponent_sales_ui_filter_chip_13_Template","PipelineTableFilterChipsComponent_sales_ui_filter_chip_15_Template","PipelineTableFilterChipsComponent_sales_ui_filter_chip_17_Template","PipelineTableFilterChipsComponent_sales_ui_filter_chip_19_Template","PipelineTableFilterChipsComponent_sales_ui_filter_chip_21_Template","PipelineTableFilterChipsComponent_sales_ui_filter_chip_23_Template","PipelineTableFilterChipsComponent_sales_ui_filter_chip_25_Template","PipelineTableFilterChipsComponent_sales_ui_filter_chip_27_Template","PipelineTableFilterChipsComponent_ng_container_36_Template","tmp_4_0","tmp_5_0","tmp_7_0","tmp_10_0","_PipelineTableFilterChipsComponent","PIPELINE_TABLE_FILTER_CHIPS_CONFIG_TOKEN","InjectionToken","PipelineTableFilterChipsModule","provide","HAS_ACCESS_TO_ALL_ACCOUNTS_IN_MARKET_TOKEN","deps","PIPELINE_TABLE_FILTER_CHIPS_CONFIG_TOKEN","useFactory","hasAccessToAllAccountsInMarketFactory","SALES_TEAM_SERVICE_TOKEN","salesTeamsServiceFactory","imports","CommonModule","FilterChipsModule","FilterModule","MatDialogModule","TranslateModule","MatMenuModule","_PipelineTableFilterChipsModule","config","hasAccessToAllAccountsInMarket$","salesTeamsService","SearchbarService","constructor","searchTerm$$","ReplaySubject","searchTerm$","asObservable","setSearchTerm","term","next","factory","ɵfac","_SearchbarService","SearchbarComponent","constructor","store","currentTerm$","searchTerm$","pipe","startWith","searchCtrl","UntypedFormControl","subscriptions","SubscriptionList","new","ngOnInit","add","valueChanges","change","setSearchTerm","ngOnDestroy","destroy","ɵɵdirectiveInject","SearchbarService","selectors","inputs","i18nPlaceholderToken","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpipeBind1","_SearchbarComponent","SearchbarModule","SearchbarService","imports","CommonModule","TranslateModule","GalaxyFormFieldModule","ReactiveFormsModule","_SearchbarModule","PIPELINE_TABLE_SERVICE_CONFIG_TOKEN","InjectionToken","ALL_SALESPEOPLE_TOKEN","DEFAULT_CURRENCY_TOKEN","OPPORTUNITY_DETAILS_URL_TOKEN","ACCOUNT_DETAILS_URL_TOKEN","DEFAULT_SEARCH_TERM","DIRECTION_PROPERTY","queryConstants","PAGE_SIZE","calculateRevenueInMonth","initialRevenue","recurringRevenue","oppCloseDate","filterDate","safeInitialRevenue","safeRecurringRevenue","getMonth","getFullYear","pipelineStatusesToListOpportunitiesRequestFilter","statuses","out","open","push","won","lost","PipelineTableService","constructor","partnerId$","marketId$","allSalespeople$","defaultCurrency$","generateOpportunityDetailsUrl","generateAccountDetailsUrl","salesOpportunitiesService","searchbarStore","potentialRevenueService","pipelineFiltersService","activatedRoute","router","totalItems$$","ReplaySubject","totalItems$","asObservable","pipe","startWith","nextCursor$$","nextCursor$","triggerCursorUpdate$$","triggerCursorUpdate$","triggerTableReload$$","Subject","triggerTableReload$","lastSearchTerm$$","BehaviorSubject","lastSearchTerm$","sort$$","lastSort$$","lastMarketId$$","enabledColumns$$","enabledColumns$","isMonthlyFilterSet$","selectedDate$","map","selectedDate","listOpportunitiesState","SwitchingWorkState","e","searchOpportunities","loading$","isLoading$","shareReplay","listOpportunityError$","isSuccess$","s","preferredCurrency$","selectedUIFilters$","selectedFilters$","selectedFiltersListRequestData$","tap","next","searchTerm$","debounceTime","routeParams","snapshot","queryParams","sort$","setInitialSort","setInitialSearchTerm","setupLiveQueryParams","resetToFirstPage$","combineLatest","opportunities$","getOpportunities$","listOpportunityTrigger$","switchMap","triggerReload","marketId","filters","searchTerm","triggerCursor","sort","take","partnerId","cursor","distinctUntilChanged","prev","curr","JSON","stringify","shouldGoToFirstPage","lastSortValue","getValue","hasSortChanged","isAscending","active","cursorIsEmpty","searchChanged","marketIdChanged","getUpdatedFilters","buildSortOptions","reset","subscribe","req","startWork","applyFiltersFromQueryParams","applySavedFiltersFromStorage","setSearchTerm","legacySort","direction","SortDirection","ASC","applySorting","workResults$","scan","accumulator","response","rows","concat","reloadTable","getNextPage","__async","firstValueFrom","setEnabledColumns$","alwaysVisibleColumns","PipelineField","OPPORTUNITY","ACCOUNT","PIPELINE_NAME","PIPELINE_STAGE","POTENTIAL","TYPE","STATUS","MEDDIC","CREATED","EXPECTED_CLOSE","ACTUAL_CLOSE","ASSIGNEE","ASSIGNED_DATE","CALLS","EMAILS","MEETINGS","TOTAL_EFFORTS","CONNECTIONS","LAST_ACTIVITY","LAST_CONNECTED","isMonthlyColumnSet","defaultColumns","Object","assign","potentialColumnPosition","indexOf","splice","MONTHLY_REVENUE","term","lastSearchTerm","lastMarketId","revDate","monthlyRevenueDate","revenueDate","revenuePeriod","OpportunityRevenuePeriod","SELECTED_MONTH","tags","oppTags","length","acctTags","probabilityRange","pipelines","pipelineStage","findProbabilityRangeFromStage","accountGroupId","salesPersonIds","salespeopleIds","pipelineIds","p","id","lineItemProductIds","products","productId","packageIds","packages","packageId","actualCloseDateFilter","dateRangeToDateRangeFilter","actualClose","expectedCloseDateFilter","expectedClose","createdDateFilter","createdDate","probabilityRangeFilter","revenuePeriodFilter","pipelineStages","assignedDate","opportunityTypes","types","t","dateRange","beginRange","start","endRange","end","search","list","salespeople","totalResults","nextCursor","setMonthlyRevenue","totalRevenueForRevenuePeriod","setPotentialRevenue","totalProjectedFirstYearValue","rawOpportunitiesToRows","results","rawOpps","revenueMonth","opp","opportunityId","name","opportunityUrl","accountUrl","pipelineId","probability","potentialRevenue","projectedFirstYearValue","monthlyRevenue","forecasting","revenueInMonth","expectedCloseDate","status","score","scoring","scores","reduce","total","currentScore","scoreValue","created","actualCloseDate","actualClosedDate","lastActivityDate","lastConnectedDate","assigneeName","find","sp","salesPersonId","fullName","calls","emails","meetings","totalEfforts","connections","type","opportunityType","merge","SORT_DIRECTION","ACTIVE_COLUMN","_","v","undefined","st","SEARCH_TERM","params","navigate","relativeTo","queryParamsHandling","directionFromUrl","parse","columnFromUrl","ListOpportunitiesRequestSortField","PROJECTED_FIRST_YEAR_VALUE","defaultSortOption","searchTermFromUrl","ɵɵinject","PARTNER_ID_TOKEN","MARKET_ID_TOKEN","ALL_SALESPEOPLE_TOKEN","DEFAULT_CURRENCY_TOKEN","OPPORTUNITY_DETAILS_URL_TOKEN","ACCOUNT_DETAILS_URL_TOKEN","SalesOpportunitiesService","SearchbarService","PotentialRevenueService","PipelineFiltersService","ActivatedRoute","Router","factory","ɵfac","_PipelineTableService","PipelineTableServiceModule","PipelineTableService","provide","PIPELINE_SERVICE_INJECTION_TOKEN","useExisting","PARTNER_ID_TOKEN","deps","PIPELINE_TABLE_SERVICE_CONFIG_TOKEN","useFactory","partnerIdFactory","MARKET_ID_TOKEN","marketIdFactory","ALL_SALESPEOPLE_TOKEN","allSalespeopleFactory","DEFAULT_CURRENCY_TOKEN","defaultCurrencyFactory","OPPORTUNITY_DETAILS_URL_TOKEN","opportunityDetailsUrlGeneratorFactory","ACCOUNT_DETAILS_URL_TOKEN","accountDetailsUrlGeneratorFactory","imports","SearchbarModule","PipelineFiltersServiceModule","_PipelineTableServiceModule","config","partnerId$","marketId$","allSalespeople$","defaultCurrency$","getOpportunityDetailsUrl","getAccountDetailsUrl","GetTypeNameFromIdPipe","transform","id","types","findTypeNameFromId","pure","_GetTypeNameFromIdPipe","find","type","ɵɵelementContainer","ɵɵelementContainerStart","ɵɵtemplate","PipelineTableComponent_ng_container_8_ng_container_1_Template","ɵɵadvance","ɵɵproperty","data_r2","length","emptyState_r3","tableRows_r4","ɵɵpureFunction1","_c1","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵtext","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵpureFunction0","_c2","opportunity_r7","opportunityUrl","name","ɵɵtextInterpolate","PipelineTableComponent_ng_template_17_ng_container_3_td_3_ng_container_1_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_3_ng_template_2_Template","ɵɵtemplateRefExtractor","noUrlTemplate_r8","opportunity_r10","accountUrl","account_r9","PipelineTableComponent_ng_template_17_ng_container_3_td_6_ng_container_8_Template","accountGroupId","tmp_11_0","ɵɵpipeBind2","opportunity_r11","pipelineId","ctx_r5","userPipelines$","PipelineTableComponent_ng_template_17_ng_container_3_td_9_span_1_Template","opportunity_r12","probability","PipelineTableComponent_ng_template_17_ng_container_3_td_12_span_1_Template","tmp_12_0","opportunity_r14","type","undefined","availableTypes_r13","displayName","PipelineTableComponent_ng_template_17_ng_container_3_td_15_span_1_Template","availableTypes$","ɵɵpropertyInterpolate","COLUMNS","POTENTIAL","opportunity_r15","potentialRevenue","templateData_r16","preferredCurrency","opportunity_r17","score","opportunity_r18","monthlyRevenue","opportunity_r19","status","CREATED","opportunity_r20","createdDate","EXPECTED_CLOSE","opportunity_r21","expectedCloseDate","CLOSEDWON","CLOSEDLOST","PipelineTableComponent_ng_template_17_ng_container_3_td_33_mat_card_subtitle_4_Template","ACTUAL_CLOSE","opportunity_r22","actualCloseDate","opportunity_r23","assigneeName","ASSIGNED_DATE","opportunity_r24","assignedDate","PipelineTableComponent_ng_template_17_ng_container_3_td_42_mat_card_subtitle_3_Template","_c3","efforts","opportunity_r25","id","opportunity_r26","opportunity_r27","opportunity_r28","opportunity_r29","LAST_ACTIVITY","opportunity_r30","lastActivityDate","PipelineTableComponent_ng_template_17_ng_container_3_td_60_mat_card_subtitle_4_Template","LAST_CONNECTED","opportunity_r31","lastConnectedDate","PipelineTableComponent_ng_template_17_ng_container_3_td_63_mat_card_subtitle_4_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_2_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_3_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_5_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_6_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_8_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_9_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_11_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_12_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_14_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_15_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_17_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_18_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_20_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_21_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_23_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_24_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_26_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_27_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_29_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_30_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_32_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_33_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_35_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_36_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_38_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_39_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_41_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_42_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_44_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_45_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_47_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_48_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_50_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_51_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_53_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_54_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_56_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_57_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_59_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_60_Template","PipelineTableComponent_ng_template_17_ng_container_3_th_62_Template","PipelineTableComponent_ng_template_17_ng_container_3_td_63_Template","OPPORTUNITY","ACCOUNT","PIPELINE_NAME","PIPELINE_STAGE","TYPE","MEDDIC","MONTHLY_REVENUE","STATUS","ASSIGNEE","CALLS","EMAILS","MEETINGS","TOTAL_EFFORTS","CONNECTIONS","ɵɵlistener","$event","ɵɵrestoreView","_r5","ɵɵnextContext","ɵɵresetView","sortChanged","PipelineTableComponent_ng_template_17_ng_container_3_Template","PipelineTableComponent_ng_template_17_tr_5_Template","PipelineTableComponent_ng_template_17_tr_7_Template","opportunities_r32","sortActive$","sortDir$","opportunityMetaTemplateData$","displayedColumns$","PipelineTableComponent","constructor","pipelineTableService","userPipelines","effortsGetter","opportunityTypeStoreService","activatedRoute","subscriptions","SubscriptionList","new","PipelineField","sort$","pipe","map","s","isAscending","SortDirection","ASC","DESC","sort","active","startWith","currentPageStartIndex$$","BehaviorSubject","currentPageStartIndex$","asObservable","PAGE_SIZE","partnerPipelines$","loadingOpportunities$","loading$","loadingError$","listOpportunityError$","opportunities$","totalItems$","displayedOpportunities$","combineLatest","opps","pageIndex","slice","preferredCurrency$","opportunityEfforts$","o","switchMap","ids","iif","getMultiOpportunitySalespersonEfforts","of","c","e","disablePagination$","loading","error","add","resetToFirstPage$","paginator","firstPage","setEnabledColumns$","enabledColumns$","columns","applyFiltersFromQueryParams","ngOnDestroy","destroy","direction","applySorting","pageUpdated","event","__async","oppsLength","firstValueFrom","previousPageIndex","pageSize","getNextPage","then","next","ɵɵdirectiveInject","PipelineTableService","UserPipelines","SalespeopleService","OpportunityTypeFilterStoreService","ActivatedRoute","selectors","viewQuery","rf","ctx","PipelineTableComponent_ng_container_7_Template","PipelineTableComponent_ng_container_8_Template","i0","_r1","PipelineTableComponent_ng_template_13_Template","PipelineTableComponent_ng_template_15_Template","PipelineTableComponent_ng_template_17_Template","errorState_r33","_PipelineTableComponent","PipelineTableModule","DatePipe","CurrencyPipe","imports","CommonModule","AsyncUiModule","VaStencilsModule","TranslateModule","GalaxyEmptyStateModule","EmptyStateModule","VImgModule","MatMenuModule","RouterModule","MatTableModule","MatSortModule","DaysAwayModule","MatCardModule","PreferredCurrencyModule","DaysAgoPipeModule","AccountNameGetterModule","MatProgressSpinnerModule","MatPaginatorModule","PipelineSelectorPipeModule","SalesOpportunitiesPipesModule","PipelineTableServiceModule","_PipelineTableModule","ExportCsvNotificationDialogComponent","constructor","dialogRef","closeDialog","close","ɵɵdirectiveInject","MatDialogRef","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵtextInterpolate1","_ExportCsvNotificationDialogComponent","CLIENT_ORIGIN_TOKEN","InjectionToken","PipelineExportCsvService","constructor","pipelineTableService","salesOpportunitiesService","partnerId$","marketId$","defaultCurrency$","clientOrigin","currency$","getListFilters","filters","ListOpportunitiesRequestFilters","listFilters","salespeopleIds","salesPersonIds","statuses","pipelineStages","getPipelinesStatuses","createdDateRange","buildDateRange","createdDate","expectedCloseRange","expectedClose","actualCloseRange","actualClose","assignedDateRange","assignedDate","createdDateFilter","expectedCloseDateFilter","actualCloseDateFilter","packages","packageIds","map","p","packageId","oppTags","tags","concat","acctTags","pipelines","pipelineIds","id","length","pipelineStage","probs","findProbabilityRangeFromStage","probabilityRangeFilter","maximum","minimum","products","lineItemProductIds","productId","monthlyRevenueDate","revenue","RevenuePeriodFilter","revenueDate","revenuePeriod","OpportunityRevenuePeriod","SELECTED_MONTH","revenuePeriodFilter","types","opportunityTypes","type","inputDateRange","returnDateRange","start","end","DateRangeFilter","beginRange","endRange","pipelineStatuses","open","push","won","lost","getSortOption","sort","sortOption","ListOpportunitiesRequestSortOption","active","PipelineField","POTENTIAL","field","ListOpportunitiesRequestSortField","PROJECTED_FIRST_YEAR_VALUE","PIPELINE_STAGE","PROBABILITY","CREATED","EXPECTED_CLOSE","ASSIGNED_DATE","ACCOUNT","NAME","LAST_ACTIVITY","LAST_CONNECTED","ACTUAL_CLOSE","STATUS","isAscending","undefined","direction","SortDirection","ASCENDING","DESCENDING","initiateCSVExport","csvExports","combineLatest","selectedFilters$","sort$","lastSearchTerm$","pipe","switchMap","partnerId","marketId","pipelineFilters","searchTerm","currency","pipelineSort","csvOptions","CSVFormatOptions","currencyCode","initiateOpportunityExport","ɵɵinject","PipelineTableService","SalesOpportunitiesService","PARTNER_ID_TOKEN","MARKET_ID_TOKEN","DEFAULT_CURRENCY_CODE_TOKEN","CLIENT_ORIGIN_TOKEN","factory","ɵfac","_PipelineExportCsvService","requireOneValidator","formGroup","controls","Object","values","some","control","value","requireOneFilled","ExportCsvSelectionDialogComponent","constructor","dialogRef","i18n","pipelineExportCsvService","alertService","dialog","formBuilder","isLoading$$","BehaviorSubject","isLoading$","exportForm","group","opportunities","FormControl","history","validators","closeDialog","close","onSubmit","__async","valid","next","i18nString","firstValueFrom","stream","req","CSVExports","opportunityHistory","initiateCSVExport","then","openCSVNotificationDialog","catch","openErrorSnack","finally","open","ExportCsvNotificationDialogComponent","width","ɵɵdirectiveInject","MatDialogRef","TranslateService","PipelineExportCsvService","SnackbarService","MatDialog","FormBuilder","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵlistener","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵproperty","ɵɵtextInterpolate1","_ExportCsvSelectionDialogComponent","PipelineExportCSVComponent","constructor","dialog","openCSVSelectionDialog","open","ExportCsvSelectionDialogComponent","width","ɵɵdirectiveInject","MatDialog","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","_PipelineExportCSVComponent","PipelineCSVModule","PipelineExportCsvService","imports","CommonModule","FormsModule","TranslateModule","CsvModule","MatButtonModule","MatDialogModule","MatIconModule","GalaxyWrapModule","MatCheckboxModule","GalaxyButtonLoadingIndicatorModule","ReactiveFormsModule","_PipelineCSVModule","PIPELINE_CONFIG_TOKEN","InjectionToken","OPPORTUNITY_DETAILS_URL_TOKEN","ACCOUNT_DETAILS_URL_TOKEN","PipelinesModule","forRoot","config","ngModule","providers","provide","useExisting","deps","DEFAULT_CURRENCY_CODE_TOKEN","useFactory","defaultCurrencyCodeFactory","PIPELINE_SETTINGS_URL_TOKEN","pipelineSettingsURLFactory","PIPELINE_SETTINGS_ACCESS_TOKEN","pipelineSettingsAccessFactory","REVENUE_DEFAULT_CURRENCY_CODE_TOKEN","SALESPERSON_MULTI_SELECT_CONFIG_TOKEN","salespersonMultiSelectConfigFactory","SALES_TEAM_MULTI_SELECT_CONFIG_TOKEN","salesTeamMultiSelectConfigFactory","PACKAGE_SELECT_CONFIG_TOKEN","packageSelectConfigFactory","PRODUCT_SELECTOR_CONFIG_TOKEN","productSelectorConfigFactory","PIPELINE_TABLE_SERVICE_CONFIG_TOKEN","pipelineTableServiceConfigFactory","TAG_MULTI_SELECT_CONFIG_TOKEN","tagMultiSelectConfigFactory","PIPELINE_TABLE_FILTER_CHIPS_CONFIG_TOKEN","pipelineTableFilterChipsConfigFactory","USER_PIPELINES_SERVICE_CONFIG_TOKEN","userPipelinesConfigFactory","opportunityDetailsUrlGeneratorFactory","accountDetailsUrlGeneratorFactory","CLIENT_ORIGIN_TOKEN","clientOriginFactory","PipelineStats","imports","UserPipelinesModule","PipelineStatusCheckboxModule","PipelineTableModule","ProductSelectorModule","PotentialRevenueModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","_PipelinesModule","allSalespeople$","initWithLoggedInSalesperson","salespersonId$","salespersonName$","getOpportunityDetailsUrl","getAccountDetailsUrl","defaultCurrency$","marketId$","partnerId$","hasAccessToAllAccountsInMarket$","salesTeamsService","clientOrigin","PIPELINE_SETTINGS_CONFIG_TOKEN","InjectionToken","PipelineSettingsService","constructor","config","salesPipelinesService","translateService","currentPipeline$$","BehaviorSubject","currentPipeline$","asObservable","redirectRequests$$","redirectRequests$","defaultPipelineName","instant","defaultPipelineStages","name","probability","partnerId$","list","partnerId","updatePipelineName","pipelineId","pipelineName","of","pipe","switchMap","map","_","catchError","deletePipeline","createDefaultPipeline","createPipeline","resp","deleteStage","stageId","removePipelineStages","updateStageName","stageName","updatePipelineStageName","updateStageProbability","updatePipelineStageProbability","addStages","stages","newStages","stage","addPipelineStages","requestReload","next","ɵɵinject","PIPELINE_SETTINGS_CONFIG_TOKEN","SalesPipelinesService","TranslateService","factory","ɵfac","_PipelineSettingsService","settingsPagePreviousUrl","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","pipeline_r1","pipelineId","ɵɵadvance","ɵɵtextInterpolate","name","ɵɵtemplate","PipelineSettingsComponent_Conditional_11_glxy_nav_item_2_Template","ɵɵelement","ctx","PipelineSettingsComponent","constructor","pipelineSettingsService","snackbarService","route","router","previousPageUrl","settingsPagePreviousUrl","reloadRequests$","redirectRequests$","partnerId$","pipelineId$","getPipelineIdFromRoute","pipelines$","listAndSortPipelines","pipe","map","pipelines","Map","pipeline","takeUntilDestroyed","withLatestFrom","subscribe","setCurrentPipeline","setCurrentPipelineToFallback","setCurrentPipelineToEmpty","size","fallback","values","next","value","fallbackId","loadPipeline","then","_","currentPipeline$$","found","get","firstChild","params","shareReplay","distinctUntilChanged","combineLatest","switchMap","partnerId","list","filter","sort","a","b","__async","navigate","relativeTo","createNewPipeline","newPipelineId","firstValueFrom","createDefaultPipeline","openSuccessSnack","openErrorSnack","ɵɵdirectiveInject","PipelineSettingsService","SnackbarService","ActivatedRoute","Router","selectors","decls","vars","consts","template","rf","ɵɵlistener","PipelineSettingsComponent_Conditional_11_Template","PipelineSettingsComponent_Conditional_13_Template","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵconditional","tmp_4_0","_PipelineSettingsComponent","ɵɵelement","ɵɵproperty","ɵɵelementStart","ɵɵelementEnd","ɵɵlistener","i_r3","ɵɵrestoreView","_r2","$index","ctx_r3","ɵɵnextContext","ɵɵresetView","deleteDisplayStage","ɵɵtext","ɵɵtemplate","PipelineSettingsFormComponent_Conditional_0_Conditional_0_Conditional_2_For_26_Conditional_12_Template","stageForm_r5","ɵɵadvance","ɵi_48_r6","ɵ$count_48_r7","ɵɵpropertyInterpolate","ɵɵpipeBind1","ɵɵconditional","_r8","saveChanges","cancelChanges","currentPipeline_r9","deletePipeline","pipelineId","ɵɵtextInterpolate1","ɵɵrepeaterCreate","PipelineSettingsFormComponent_Conditional_0_Conditional_0_Conditional_2_For_26_Template","ɵɵrepeaterTrackByIdentity","_r1","addStage","PipelineSettingsFormComponent_Conditional_0_Conditional_0_Conditional_2_glxy_sticky_footer_31_Template","pipelineForm","ɵɵtextInterpolate","ɵɵrepeater","stages","controls","PipelineSettingsFormComponent_Conditional_0_Conditional_0_Conditional_0_Template","PipelineSettingsFormComponent_Conditional_0_Conditional_0_Conditional_2_Template","savingChanges$","PipelineSettingsFormComponent_Conditional_0_Conditional_0_Template","PipelineSettingsFormComponent_Conditional_0_Conditional_1_Template","ctx","DisplayPercentageToStored","display","StoredPercentageToDisplay","stored","PipelineSettingsFormComponent","constructor","pipelineSettingsService","snackbarService","confirmationModal","FormGroup","FormArray","name","FormControl","validators","whitespaceValidator","savingChanges$$","BehaviorSubject","asObservable","resetRequests$$","pendingChanges$$","valueChanges","pipe","takeUntilDestroyed","subscribe","_","next","currentPipeline$","combineLatest","pipeline","setFormValues","setValue","emitEvent","clear","sort","a","b","probability","forEach","stage","newStage","Validators","min","max","id","stageId","push","stageIndex","removeAt","deleteStage","__async","firstValueFrom","openErrorSnack","setPipelineName","valid","dirty","newName","value","updatePipelineName","setStageName","updateStageName","setStageProbability","newProbability","updateStageProbability","addStages","buildUpdates","currentPipeline","promises","pipelineStagesForLookup","Map","map","stagesToCreate","nameForm","get","probForm","has","set","found","length","Promise","all","requestReload","openModal","type","title","message","confirmButtonText","cancelButtonText","actionOnEnterKey","openSuccessSnack","canDeactivate","switchMap","pendingChanges","confirmation","of","ɵɵdirectiveInject","PipelineSettingsService","SnackbarService","OpenConfirmationModalService","selectors","decls","vars","consts","template","rf","PipelineSettingsFormComponent_Conditional_0_Template","PipelineSettingsFormComponent_Conditional_2_Template","tmp_0_0","_PipelineSettingsFormComponent","PipelineSettingsRoutes","path","component","PipelineSettingsComponent","children","PipelineSettingsFormComponent","canDeactivate","c","PipelineSettingsModule","PipelineSettingsService","imports","CommonModule","GalaxyPageModule","TranslateModule","MatButtonModule","GalaxyStickyFooterModule","GalaxyFormFieldModule","ReactiveFormsModule","MatIcon","MatCardModule","MatDivider","GalaxyLoadingSpinnerModule","GalaxyEmptyStateModule","GalaxyPageNavModule","GalaxyNavLayoutModule","_PipelineSettingsModule","PARTNER_ID_TOKEN","MARKET_ID_TOKEN","MARKET_IDS_TOKEN","SALESPEOPLE_TOKEN","SALES_TEAMS_TOKEN","SalesOpportunityStoreService","constructor","salesOpportunityService","opportunityStore","Map","buildId","accountGroupId","opportunityId","join","getOpportunityState","id","has","fetchOpportunity","get","pipe","skipWhile","o","undefined","set","BehaviorSubject","next","opportunity","loading","currentValue","getValue","tap","take","subscribe","refreshOpportunity","ɵɵinject","SalesOpportunitiesService","factory","ɵfac","_SalesOpportunityStoreService","convertItemsToAppKeys","items","map","item","AppKey","appId","itemId","editionId","type","edition","undefined","mapify","array","keyFn","reduce","set","Map","StatusToBadgeMapping","Map","Status","ACTIVATION_ERRORS","text","color","APPROVED","DECLINED","FULFILLED","PROCESSING","SUBMITTED","DRAFTED","ARCHIVED","SUBMITTED_FOR_CUSTOMER_APPROVAL","CANCELLATION_REQUESTED","CANCELLED","SCHEDULED_ACTIVATION","AWAITING_PAYMENT","PROCESSING_PAYMENT","undefined","convertPackagePricingToSalesOrderRevenue","pricing","prices","Revenue","revenueComponents","map","p","RevenueComponent","value","price","period","packageFrequencyToSalesOrderPeriod","frequency","isStartingRevenue","isStartingPrice","f","Frequency","DAILY","RevenuePeriod","MONTHLY","ONCE","ONETIME","WEEKLY","YEARLY","packageCurrencyToCurrencyCode","currency","PackageCurrency","packageToSalesOrderLineItem","pkg","LineItem","packageId","currencyCode","currentRevenue","quantity","OpportunityToOrderLineItems","lineItems","li","__spreadValues","OrderToOpportunityLineItems","OpportunityLineItem","appToSalesOrderLineItem","app","appKey","key","convertMarketplaceFreqToRevenueFreq","freq","UnitBillingFrequency","UNIT_BILLING_FREQUENCY_MONTHLY","UNIT_BILLING_FREQUENCY_ONETIME","UNIT_BILLING_FREQUENCY_YEARLY","convertAppPriceToRevenuePrice","appPrice","editionID","frequencyPrice","pricesForEditions","pricesForCurrencies","pricesForFrequencies","pricingRules","setupFee","push","ItemSelectorAdapterService","constructor","appPartnerService","appPricingService","marketplacePackagesApiService","convertAppsToItems","apps","map","a","ToInventoryItem","convertAppsAndPackagesToItems","packages","selectedItems","push","p","getMarketplaceApps","items","partnerId","marketId","appItems","filter","item","type","length","getMulti","convertItemsToAppKeys","pipe","mapify","app","key","appId","of","Map","getMarketplacePackages","packageIds","itemId","getMultiPackages","resp","packageContainers","container","package","getRetailPricing","appIds","getMultiPricing","FieldMask","paths","appPrices","ap","getAppsWithRetailPricing","itemIds","combineLatest","get","appPrice","partnerCurrency","getPartnerCurrency","pricesForContexts","appWithRetailPrice","retailPricing","currencyCode","revenue","convertAppPriceToRevenuePrice","editionId","ɵɵinject","AppPartnerService","AppPricingService","MarketplacePackagesApiService","factory","ɵfac","_ItemSelectorAdapterService","ItemSelectorAdapterComponent","constructor","itemSelectorAdapterService","ngOnInit","selectedItems","ItemSelectorAdapterService","convertAppsAndPackagesToItems","selectedApps","selectedPackages","itemSelectionChanged","selectionChange","getAppsWithRetailPricing","config","partnerId","marketId","getMarketplacePackages","ɵɵdirectiveInject","selectors","inputs","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","$event","ɵɵelementEnd","ɵɵproperty","_ItemSelectorAdapterComponent","PackageSelectorCustomComponentDirective","selectors","inputs","columnDefinition","translateService","element","eventEmitter","_PackageSelectorCustomComponentDirective","PackageNameCellComponent","PackageSelectorCustomComponentDirective","ngOnInit","iconUrl","element","package","icon","title","name","t","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵtextInterpolate1","_PackageNameCellComponent","PackageRevenueCellComponent","PackageSelectorCustomComponentDirective","constructor","ngOnInit","currencyCode","packageCurrencyToCurrencyCode","element","package","pricing","currency","appPrice","price","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","_PackageRevenueCellComponent","PackageRevenueHeaderCellComponent","PackageSelectorCustomComponentDirective","constructor","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","_PackageRevenueHeaderCellComponent","PACKAGE_SELECTOR_TABLE_DEF","id","labels","noResults","cancel","none","update","sortBy","thenSortBy","addAnotherSortColumn","chooseColumnToSortBy","columnSorting","date","ascending","descending","number","string","default","export","buttonText","buttonTooltipBeforeCount","buttonTooltipAfterCount","options","selectableRows","columns","displayName","field","pinned","Pinned","PINNED_LEFT","type","ColumnType","COLUMN_TYPE_STRING","cellComponent","PackageNameCellComponent","PackageRevenueCellComponent","headerComponent","PackageRevenueHeaderCellComponent","rowEqualityFunc","row1","row2","package","packageId","tableDefinitionFactory","packageSelectorService","tableDefinition","filters","PackageSelectorService","constructor","partnerId$","marketId$","packageService","pricingService","translateService","totalResults$$","BehaviorSubject","totalResults$","asObservable","filters","FilterGroup","addToolbarSection","SearchFilterControl","instant","load","request","cursor","btoa","pageIndex","pageSize","toString","packages$","combineLatest","pipe","switchMap","partnerId","marketId","marketIdOverride","filterTerm","list","Status","PUBLISHED","take","map","results","packages","next","totalResults","ids","pkg","packageId","getMultiPricing","FieldMask","paths","catchError","error","console","of","share","withLatestFrom","prices","price","appId","package","pricesForContexts","setMarketId","id","ɵɵinject","PARTNER_ID_TOKEN","MARKET_ID_TOKEN","PackageService","AppPricingService","TranslateService","factory","ɵfac","_PackageSelectorService","PackageSelectorComponent","constructor","dataService","ngOnInit","setMarketId","marketId","ngOnChanges","preselectedPackagesWithPrices","preselectedPackages","map","pkg","package","price","getSelectedRows","table","row","ɵɵdirectiveInject","PackageSelectorService","selectors","viewQuery","rf","ctx","VaTableSortService","VaFilteredMatTableService","FilterService","provide","TABLE_DEFINITION","useFactory","tableDefinitionFactory","deps","ɵɵNgOnChangesFeature","decls","vars","consts","template","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","_PackageSelectorComponent","ɵɵelementContainer","ɵɵproperty","itemSelector_r1","ɵɵelementStart","ɵɵelementEnd","ɵɵpipeBind1","ɵɵadvance","ɵɵelement","ctx_r1","preselectedPackages","marketId","ɵɵtemplate","SalesOrderLineItemSelectorComponent_ng_template_1_mat_tab_1_Template","SalesOrderLineItemSelectorComponent_ng_template_1_mat_tab_2_Template","hideSellingStandaloneProducts","hidePackages","preselectedApps","ɵɵpureFunction7","_c3","partnerId","hideOwnerName","wholesalePricing","hideOrderFormProducts","itemTypesAvailable","SalesOrderLineItemSelectorComponent","constructor","preselectedPackages","preselectedApps","itemTypesAvailable","ngOnInit","itemSelectorIncludesPackages","push","hidePackages","filter","itemType","hideSellingStandaloneProducts","getSelectedAppsWithRetailPricing","of","itemSelectorAdapter","getAppsWithRetailPricing","getSelectedPackages","getMarketplacePackages","package","getSelectedRows","selectors","viewQuery","rf","ctx","ɵɵtemplate","SalesOrderLineItemSelectorComponent_ng_container_0_Template","SalesOrderLineItemSelectorComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","SalesOrderLineItemSelectorComponent_ng_template_3_Template","ɵɵproperty","tabbedSelector_r3","_SalesOrderLineItemSelectorComponent","SalesOrderLineItemSelectorModule","ItemSelectorAdapterService","imports","CommonModule","Filter2TableModule","MatTabsModule","VaIconModule","VaPricingModule","VaBadgeModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","MatSelectModule","BillingUiModule","GalaxyBadgeModule","ItemSelectorModule","_SalesOrderLineItemSelectorModule","SalesOrderLineItemSelectorComponent","NgIf","NgTemplateOutlet","MatTab","MatTabGroup","PackageSelectorComponent","ItemSelectorAdapterComponent","TranslatePipe","SalesOrderStoreService","constructor","salesOrdersService","customerSalesOrdersService","ordersStore","Map","buildId","businessId","orderId","join","getOrderState","id","has","fetchOrder","get","pipe","skipWhile","o","undefined","set","BehaviorSubject","order$$","next","order","loading","currentValue","getValue","catchError","tap","take","subscribe","refreshOrder","clearOrderStateCache","clear","ɵɵinject","SalesOrdersService","CustomerSalesOrdersService","factory","ɵfac","_SalesOrderStoreService","INVALID_ITEM","name","iconUrl","lineItem","SalesOrderConfirmationService","constructor","packageSdk","appSdk","salesOrdersSdk","salesOrderStoreService","taxRateService","salesOpportunityStoreService","salesOpportunitiesSdk","orderId$$","BehaviorSubject","orderId$","asObservable","opportunityId$$","opportunityId$","specifiedLineItems$$","specifiedLineItems$","loading$$","loading$","subscriptions","orderState$","pipe","skipWhile","orderId","switchMap","getOrderState","businessId","publishReplay","refCount","opportunityState$","opportunityId","getOpportunityState","push","tap","orderState","loading","next","subscribe","oppState","order$","filter","map","order","opportunity$","opportunity","taxOptions$","of","taxOptions","calculate","partnerId","catchError","response","taxRates","item","label","percentageMultiplier","percentage","orderOrigin$","origin","confirmation$","combineLatest","contractDuration$","val","contractDuration","expectedContractDuration","estimatedTotal$","confirmation","taxOption","calculateOpportunityEstimatedTotal","defaultDisplayCurrency","combinedLineItems$","lineItems","concat","OpportunityToOrderLineItems","packages$","packageLineItems","li","packageId","length","getMulti","appsAndAddons$","appsAndAddonsKeys","appKey","app","AppKey","marketId","apps","a","key","appId","uiLineItems$","zip","packages","appsAndAddons","uiLineItem","pack","find","p","packageToUILineItem","editionId","appWithPossibleRevenueToUILineItem","ngOnDestroy","forEach","sub","unsubscribe","updateLineItems","take","updateLineItemsForOpportunity","accountGroupId","salesPersonId","OrderToOpportunityLineItems","refreshOpportunity","refreshOrder","pkg","packageToSalesOrderLineItem","icon","bannerUrl","headerImageUrl","isMultiActivatable","description","tagline","appToSalesOrderLineItem","sharedMarketingInformation","editionName","bannerImageUrl","billingId","externalIdentifiers","appType","activationInformation","multipleActivationsEnabled","retailPricing","currentRevenue","revenue","currencyCode","parentRequirements","enabled","parentIconUrl","parentDetails","parentName","initialize","clearOrderStateCache","addSpecifiedLineItems","getValue","ɵɵinject","PackageService","AppPartnerService","SalesOrdersService","SalesOrderStoreService","TaxRateService","SalesOpportunityStoreService","SalesOpportunitiesService","factory","ɵfac","_SalesOrderConfirmationService","Opportunity","total","projectedFirstYearValue","taxTotal","reduce","all","tax","startingPrice","some","revenueComponents","rc","isStartingRevenue","SalesOrderLineItemSelectorDialogComponent","constructor","partnerId$","data","dialogRef","itemSelectorIncludesPackages","marketId","preselectedPackages","preselectedApps","hideSellingStandaloneProducts","hidePackages","hideOwnerName","hideOrderFormProducts","wholesalePricing","selectPackages","combineLatest","selectorComponent","getSelectedAppsWithRetailPricing","getSelectedPackages","pipe","take","subscribe","apps","packages","close","ɵɵdirectiveInject","MAT_DIALOG_DATA","MatDialogRef","selectors","viewQuery","rf","ctx","SalesOrderLineItemSelectorComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵlistener","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵproperty","ɵɵtextInterpolate1","_SalesOrderLineItemSelectorDialogComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵproperty","option_r1","value","label","ɵɵelementContainerStart","ɵɵtemplate","SalesOrderEditPriceComponent_ng_container_19_mat_option_1_Template","ctx_r1","periodOptions","option_r3","SalesOrderEditPriceComponent_ng_container_20_mat_option_1_Template","oneTimeOnly","ɵɵlistener","ɵɵrestoreView","_r4","ɵɵnextContext","ɵɵresetView","handleDelete","SalesOrderEditPriceComponent","constructor","formatCurrencyPipe","allowNegativeValues","canEditPeriod","errorMessage","EventEmitter","delete","RevenuePeriod","ONETIME","MONTHLY","YEARLY","ngOnInit","currencySymbol","transform","currencyCode","charAt","emit","revenueComponent","markAsTouched","form","updateValueAndValidity","i","controls","ɵɵdirectiveInject","CurrencyPipe","selectors","viewQuery","rf","ctx","ɵɵelement","SalesOrderEditPriceComponent_mat_error_10_Template","SalesOrderEditPriceComponent_mat_error_11_Template","SalesOrderEditPriceComponent_mat_error_12_Template","SalesOrderEditPriceComponent_ng_container_19_Template","SalesOrderEditPriceComponent_ng_container_20_Template","SalesOrderEditPriceComponent_mat_error_21_Template","SalesOrderEditPriceComponent_button_23_Template","ɵɵtextInterpolate","ɵɵpropertyInterpolate1","revenue","hasError","period","allowDelete","_SalesOrderEditPriceComponent","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","edit","ɵɵtext","ɵɵelementEnd","ɵɵtemplate","SalesOrderConfirmationComponent_ng_container_1_ng_container_4_Template","ɵɵelement","ɵɵadvance","ɵɵtextInterpolate","title","ɵɵproperty","editable","editing","ɵɵpipeBind1","uiLineItems$","orderState_r3","orderItems","taxOptions","duration","loading","openExpansionPanel$","showPricing$","partnerId","marketId","estimatedTotal","SalesOrderConfirmationComponent_ng_container_3_ng_container_1_Template","orderState$","_r5","liIndex_r6","index","deleteLineItem","SalesOrderConfirmationComponent_ng_template_4_ng_container_1_Conditional_3_mat_icon_0_Template","editingItems","length","ɵɵtextInterpolate1","_r8","onAddBillingSchedule","_r9","_r7","onEditBillingSchedule","SalesOrderConfirmationComponent_ng_template_4_ng_container_1_Conditional_17_button_8_Template","SalesOrderConfirmationComponent_ng_template_4_ng_container_1_Conditional_17_button_9_Template","menu_r10","uiLineItem_r11","lineItem","billingPeriod","$event","rcIndex_r13","_r12","deleteRevenueRow","SalesOrderConfirmationComponent_ng_template_4_ng_container_1_ng_container_20_ng_container_3_Template","revenueComponent_r14","allowNegativeValues","currencyCode","defaultDisplayCurrency","currentRevenue","revenueComponents","formForLineItems","controls","last_r15","SalesOrderConfirmationComponent_ng_template_4_ng_container_1_Conditional_3_Template","SalesOrderConfirmationComponent_ng_template_4_ng_container_1_mat_error_16_Template","SalesOrderConfirmationComponent_ng_template_4_ng_container_1_Conditional_17_Template","SalesOrderConfirmationComponent_ng_template_4_ng_container_1_ng_container_20_Template","SalesOrderConfirmationComponent_ng_template_4_ng_container_1_div_22_Template","_r4","addRevenueRow","SalesOrderConfirmationComponent_ng_template_4_ng_container_1_mat_checkbox_30_Template","ɵɵconditional","areBillingPeriodsEnabled$","enableEditBillingSchedule","ɵɵpureFunction4","_c1","name","editionName","iconUrl","period","isMultiActivatable","ɵɵpropertyInterpolate","quantity","hasError","ɵɵpureFunction0","_c2","hasNoRevenue","createRetailSubscriptions","_r17","featureFlags_r18","ngIf","addLineItems","_r19","SalesOrderConfirmationComponent_ng_template_4_div_2_div_1_Template","SalesOrderConfirmationComponent_ng_template_4_div_2_ng_template_2_Template","ɵɵtemplateRefExtractor","noLineItems_r20","_r22","save","valid","_r21","cancel","SalesOrderConfirmationComponent_ng_template_4_div_4_ng_container_4_Template","SalesOrderConfirmationComponent_ng_template_4_div_4_ng_container_5_Template","saving","SalesOrderConfirmationComponent_ng_template_4_ng_container_1_Template","SalesOrderConfirmationComponent_ng_template_4_div_2_Template","SalesOrderConfirmationComponent_ng_template_4_div_4_Template","featureFlags$","orderId","opportunityId","ITEM_SELECTOR_INCLUDES_PACKAGES","SALES_OPPORTUNITIES_BILLING_PERIODS","SalesOrderConfirmationComponent","constructor","salesOrderConfirmationService","fb","cdk","alertService","dialog","salesOrdersService","featureFlagService","hidePackages","startEditing","bypassQuantityRestrictions","chargeOrdersEnabled","allowDuplicateItems","EventEmitter","openExpansionPanel$$","BehaviorSubject","asObservable","taxOptions$","loading$","order$","pipe","map","order","origin","Origin","PC","statusHistory","some","history","status","Status","SUBMITTED_FOR_CUSTOMER_APPROVAL","inputDuration$$","duration$","switchMap","inputDuration","iif","contractDuration$","estimatedTotal$","combineLatest","hideSellingStandaloneProducts","subscriptions","validateRevenue","c","revenueValue","value","isNaN","pattern","Number","min","next","ngOnInit","batchGetStatus","featureFlags","initialize","lineItems","businessId","push","getConfig","config","salespersonOptions","disableSellingStandaloneProducts","subscribe","array","uiLineItems","displayItems","resetEditingItems","detectChanges","tap","loading$$","emit","ngOnDestroy","forEach","sub","unsubscribe","clearOrderStateCache","setEditingLineItems","JSON","parse","stringify","resetFormToEditingItems","li","revenueControls","revenueControlFromLineItemRevenue","quantityEnabled","nonBillable","group","disabled","Validators","shouldInvoice","revenue","rc","required","undefined","RevenuePeriod","ONETIME","startingAt","isStartingRevenue","uiLineItem","isFormValid","items","formatEditingItems","updateLineItems","take","openSuccessSnack","error","openErrorSnack","writeFormValuesToEditingItems","lineItemFormGroup","fa","fg","RevenueComponent","Math","round","Revenue","getCurrentLineItems","markAsTouched","updateValueAndValidity","editPriceComponents","find","item","addSpecifiedLineItems","lineItemIndex","revenueComponent","open","BillingTermDialogComponent","data","itemId","appKey","appId","packageId","startDate","endDate","maxWidth","maxHeight","width","afterClosed","dialogOutput","BillingPeriod","billingFrequency","patchValue","addAnotherTerm","deepCopiedItem","structuredClone","splice","components","liIndex","rcIndex","removeAt","itemSelectorIncludesPackages","preselectedPackages","filter","Package","preselectedApps","App","key","editionId","parentRequirements","parentDetails","parentAppId","parentName","appType","SalesOrderLineItemSelectorDialogComponent","hideOwnerName","height","minHeight","result","updatedItems","selectedPackages","packages","selectedApps","apps","deselectItems","dedupePackages","dedupeApps","concat","pkg","packageToUILineItem","app","appWithPossibleRevenueToUILineItem","openDropdown","uilineItem","sort","a","b","deselectedPackageIds","selected","includes","deselectedAppIds","addedApps","reduce","added","addedPackages","ɵɵdirectiveInject","SalesOrderConfirmationService","UntypedFormBuilder","ChangeDetectorRef","SnackbarService","MatDialog","SalesOrdersService","FeatureFlagService","selectors","viewQuery","rf","ctx","decls","vars","consts","template","SalesOrderConfirmationComponent_ng_container_1_Template","SalesOrderConfirmationComponent_ng_container_3_Template","SalesOrderConfirmationComponent_ng_template_4_Template","removeHeader","editingTemplate_r23","_SalesOrderConfirmationComponent","SalesOrderConfirmationModule","CurrencyPipe","SalesOrderStoreService","SalesOpportunityStoreService","imports","CommonModule","VaOrderFormModule","VaOrderSummaryModule","MatButtonModule","MatListModule","VaIconModule","CoreSharedModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","FormsModule","MatTooltipModule","MatInputModule","MatCheckboxModule","MatSelectModule","ReactiveFormsModule","MatIconModule","MatProgressSpinnerModule","MatDialogModule","SalesOrderLineItemSelectorModule","MatCardModule","MatGridListModule","MatAutocompleteModule","MatMenuModule","_SalesOrderConfirmationModule","ɵɵelement","ɵɵproperty","ctx_r0","title","iconUrl","ɵɵelementContainerStart","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate1","editionName","ɵɵelementStart","ɵɵelementEnd","ɵɵpipeBind2","ɵɵpureFunction1","_c2","previousEditionName","titleDescriptor","ɵɵelementContainer","ɵɵtemplate","SalesOrderPackageDropdownItemComponent_div_14_ng_container_3_Template","description","enableDropdown","dropdownButton_r2","menu_r3","statusItem","failureDetails","ɵɵsanitizeHtml","SalesOrderPackageDropdownItemComponent_div_15_span_9_Template","SalesOrderPackageDropdownItemComponent_div_15_ng_container_10_Template","calculateClassFromStatus","status","ɵɵtextInterpolate","icon","ɵɵtextInterpolate2","ɵɵpipeBind1","text","statusText","ɵɵlistener","ɵɵrestoreView","_r4","ɵɵnextContext","ɵɵresetView","toggleItem","ɵɵpureFunction2","_c3","toggleValue","SalesOrderPackageDropdownItemComponent_ng_template_16_button_0_Template","menuItem_r6","_r5","$implicit","menuItemClick","SalesOrderPackageDropdownItemComponent_ng_template_18_div_0_button_6_mat_icon_1_Template","label","SalesOrderPackageDropdownItemComponent_ng_template_18_div_0_button_6_Template","menu_r7","menuItems","SalesOrderPackageDropdownItemComponent_ng_template_18_div_0_Template","length","showMenuItems","secondaryIconUrl","secondaryIconName","ListIndent","MenuItemEventType","SalesOrderPackageDropdownItemComponent","constructor","enableMenu","indent","INDENT_ZERO","first","menuItemClicked","EventEmitter","itemToggled","emit","ActivationStatus","ACTIVATED","IGNORED_ERRORS","ALREADY_ACTIVATED","ERRORED","item","value","eventType","selectors","viewQuery","rf","ctx","SalesOrderPackageDropdownItemComponent_va_icon_3_Template","SalesOrderPackageDropdownItemComponent_ng_container_8_Template","SalesOrderPackageDropdownItemComponent_span_9_Template","SalesOrderPackageDropdownItemComponent_span_10_Template","SalesOrderPackageDropdownItemComponent_div_14_Template","SalesOrderPackageDropdownItemComponent_div_15_Template","SalesOrderPackageDropdownItemComponent_ng_template_16_Template","ɵɵtemplateRefExtractor","SalesOrderPackageDropdownItemComponent_ng_template_18_Template","SalesOrderPackageDropdownItemComponent_ng_template_20_Template","ɵɵclassMap","_c1","dualIcon_r8","subtitle","_SalesOrderPackageDropdownItemComponent","SalesPackage","Package","constructor","pkg","salesProducts","addonsWithNoParent","totalAddons","activationStatus","SalesProduct","App","app","addons","menuItems","buildSalesPackages","packages","apps","length","map","buildSalesPackageFromPackage","appMap","Map","forEach","set","key","appId","buildSalesProducts","buildSalesAddonsWithNoParent","totalAddonsCount","lineItems","filter","li","parentId","reduce","count","addon","quantity","size","productMatch","get","id","addonsInPackage","multiplyAddonsByTheirQuantity","il","buildSalesProductFromProduct","productItem","addonLineItems","addonsArray","i","push","productsInPackageMap","lineItemsThatAreAddonsThatDontHaveTheParentAppInThePackage","addonArray","a","addStatusesToSalesPackages","salesPackages","statuses","failureDetails","salesPackage","newProducts","product","addStatusesToSalesProduct","newAddonsWithNoParent","productStatuses","status","addonStatuses","statusList","reducedList","concat","addonsWithNoParentStatuses","allStatuses","packageStatus","aggregateStatuses","statusNotification","createStatusNotificationItem","activationFailureDetails","productStatus","findStatus","editionId","uniqueId","previousEditionId","isEditionChange","newSalesAddons","addMenuItemsToSalesPackages","addMenuItemsToSalesProduct","ActivationStatus","ERRORED","label","icon","value","eventType","MenuItemEventType","IGNORE_ACTIVATION_ERRORS","statusIndex","findIndex","s","packageItemId","splice","ACTIVATED","text","ALREADY_ACTIVATED","IGNORED_ERRORS","some","every","PENDING","undefined","ɵɵelementContainerStart","ɵɵtemplate","SalesOrderPackageDropdownComponent_ng_container_0_ng_template_1_Template","ɵɵadvance","ɵɵproperty","content_r1","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","SalesOrderPackageDropdownComponent_ng_template_1_ng_template_6_Template","ɵɵtextInterpolate","ɵɵpipeBind1","ctx_r1","title","ɵɵlistener","$event","ɵɵrestoreView","_r6","ɵɵnextContext","ɵɵresetView","menuItemClick","addon_r7","sharedMarketingInformation","name","iconUrl","activationStatus","menuItems","packageAddonWithProductIndent","showMenuItems","_r5","SalesOrderPackageDropdownComponent_ng_template_3_div_1_mat_list_2_div_1_sales_ui_sales_order_package_dropdown_item_2_Template","product_r8","editionName","getPreviousEditionName","packageProductIndent","addons","_r9","addon_r10","ɵɵpipeBind2","ɵɵpureFunction1","_c0","parentRequirements","parentDetails","packageAddonWithoutProductIndent","SalesOrderPackageDropdownComponent_ng_template_3_div_1_mat_list_2_div_1_Template","SalesOrderPackageDropdownComponent_ng_template_3_div_1_mat_list_2_sales_ui_sales_order_package_dropdown_item_2_Template","undefined","package_r11","salesProducts","addonsWithNoParent","packageIndex_r4","_r3","index","togglePackage","SalesOrderPackageDropdownComponent_ng_template_3_div_1_mat_list_2_Template","icon","packageDescription","length","packageToggles","first_r12","_r13","first_r15","product_r14","standAloneProductWithParentDescription","enabled","SalesOrderPackageDropdownComponent_ng_template_3_div_1_Template","SalesOrderPackageDropdownComponent_ng_template_3_div_2_Template","salesPackages","SalesOrderPackageDropdownComponent","constructor","translateService","compactView","packages","appsInPackages","standAloneApps","statuses","menuItemClicked","EventEmitter","ListIndent","INDENT_ONE","INDENT_TWO","orderItemLengths","products","productToggles","ngOnChanges","changes","currentValue","addMenuItemsToSalesPackages","addStatusesToSalesPackages","buildSalesPackages","activationFailureDetails","map","a","addMenuItemsToSalesProduct","addStatusesToSalesProduct","buildSalesProductFromProduct","openAllDropdowns","x","indexToToggle","product","instant","requirementName","pkg","productsCount","itemCount","totalAddons","event","emit","isEditionChange","editionId","previousEditionId","editionInformation","editions","find","edition","appKey","ɵɵdirectiveInject","TranslateService","selectors","inputs","outputs","features","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","SalesOrderPackageDropdownComponent_ng_container_0_Template","SalesOrderPackageDropdownComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","SalesOrderPackageDropdownComponent_ng_template_3_Template","nonCompactView_r16","trigger","state","style","height","transition","animate","_SalesOrderPackageDropdownComponent","convertActivationsToPackageItemActivationStatuses","productActivations","filter","productActivation","activationStatus","ActivationStatus","PENDING","map","packageItemId","productId","status","uniqueId","editionId","previousEditionId","isEditionChange","SalesOrderContentsService","constructor","packageSdk","appSdk","salesOrdersSdk","salesOrderStoreService","orderId$$","BehaviorSubject","orderId$","asObservable","specifiedLineItems$$","specifiedLineItems$","loading$$","loading$","validationErrorMsgs","Map","subscriptions","orderState$","pipe","skipWhile","orderId","switchMap","getOrderState","businessId","publishReplay","refCount","push","tap","orderState","loading","next","subscribe","order$","filter","map","order","combinedLineItems$","combineLatest","lineItems","concat","packages$","packageLineItems","li","packageId","length","getMulti","of","packageItemActivationStatus$","productActivations","previewOrderActivations","catchError","convertActivationsToPackageItemActivationStatuses","uniqueAppsAndAddons$","zip","packages","appKeys","appKey","AppKey","appId","editionId","p","id","uniqueAppKeys","reduce","unique","app","find","u","partnerId","marketId","apps","a","key","uiPackages$","uniqueAppsAndAddons","statuses","packagesLineItems","quantifyLineItems","products","status","uiProducts$","nonPackageLineItems","quantifiedNonPackage","appType","AppType","APP_TYPE_APP","npli","uiAddons$","addons","APP_TYPE_ADDON","ngOnDestroy","forEach","sub","unsubscribe","initialize","ignoreErrors","itemId","ignoreProductActivationError","refreshOrder","clearOrderStateCache","ɵɵinject","PackageService","AppPartnerService","SalesOrdersService","SalesOrderStoreService","factory","ɵfac","_SalesOrderContentsService","flattenArray","array","quantifiedLineItems","lineItem","replicatedLineItems","quantity","i","ɵɵelementContainerStart","ɵɵelement","ɵɵtext","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵtextInterpolate2","uiPackages_r2","packages","length","ɵɵelementStart","ɵɵelementEnd","ɵɵtemplate","SalesOrderContentsComponent_div_4_ng_container_1_ng_container_1_ng_template_8_Template","SalesOrderContentsComponent_div_4_ng_container_1_ng_container_1_ng_template_9_Template","ɵɵlistener","$event","ɵɵrestoreView","_r1","ctx_r2","ɵɵnextContext","ɵɵresetView","menuItemClick","ɵɵadvance","ɵɵproperty","compactView","products","status","ɵɵpureFunction0","_c0","showMenuItems","_r4","SalesOrderContentsComponent_div_4_ng_container_1_ng_container_1_Template","SalesOrderContentsComponent_div_4_ng_container_1_ng_template_2_Template","ɵɵtemplateRefExtractor","nonCompactPackageView_r5","SalesOrderContentsComponent_div_4_ng_container_1_Template","uiProducts_r7","SalesOrderContentsComponent_div_6_ng_container_1_ng_container_1_ng_template_8_Template","SalesOrderContentsComponent_div_6_ng_container_1_ng_container_1_ng_template_9_Template","_r6","_r8","SalesOrderContentsComponent_div_6_ng_container_1_ng_container_1_Template","SalesOrderContentsComponent_div_6_ng_container_1_ng_template_2_Template","nonCompactPackageView_r9","SalesOrderContentsComponent_div_6_ng_container_1_Template","uiAddons_r11","addons","SalesOrderContentsComponent_div_8_ng_container_1_ng_container_1_ng_template_8_Template","SalesOrderContentsComponent_div_8_ng_container_1_ng_container_1_ng_template_9_Template","_r10","_r12","SalesOrderContentsComponent_div_8_ng_container_1_ng_container_1_Template","SalesOrderContentsComponent_div_8_ng_container_1_ng_template_2_Template","nonCompactPackageView_r13","SalesOrderContentsComponent_div_8_ng_container_1_Template","SalesOrderContentsComponent","constructor","contentsService","orderFulfillmentService","lineItems","loading","EventEmitter","loading$","subscriptions","push","pipe","tap","emit","subscribe","ngOnInit","initialize","partnerId","marketId","businessId","orderId","packageActivationErrors$","uiPackages$","switchMap","uiPackages","orderItemIDs","filter","ActivationStatus","ERRORED","map","uniqueId","getMultiActivationErrorsForOrderItems","take","catchError","of","errorDetails","productActivationErrors$","uiProducts$","uiProducts","addonsActivationErrors$","uiAddons$","uiAddons","combineLatest","errDetailsMap","reduce","prev","curr","set","orderItemId","Map","openDropdownOnError","forEach","pckg","has","failureDetails","translateFailureDetails","get","prod","addon","ngOnDestroy","sub","unsubscribe","clearOrderStateCache","errorCount","signalToOpenAllDropdowns","topExpansionPanels","panel","open","window","setTimeout","packageDropdowns","section","openAllDropdowns","event","eventType","MenuItemEventType","IGNORE_ACTIVATION_ERRORS","ignoreErrors","value","activationFailureDetails","failureReason","FailureReason","FAILURE_REASON_VALIDATION_ERROR","translateValidationError","details","FAILURE_REASON_CHARGE_ERROR","formattedChargeError","FAILURE_REASON_VENDOR_REJECTED_ERROR","FAILURE_REASON_ACTIVATION_ERROR","failureMsg","detail","validationMsg","validationErrorMsgs","toCapitalize","split","line","toUpperCase","join","ɵɵdirectiveInject","SalesOrderContentsService","OrderFulfillmentService","selectors","viewQuery","rf","ctx","SalesOrderPackageDropdownComponent","MatExpansionPanel","decls","vars","consts","template","SalesOrderContentsComponent_ng_container_0_Template","SalesOrderContentsComponent_div_4_Template","SalesOrderContentsComponent_div_6_Template","SalesOrderContentsComponent_div_8_Template","_SalesOrderContentsComponent","SalesOrderContentsModule","CommonModule","MatCardModule","MatListModule","MatIconModule","MatTooltipModule","VaIconModule","VaBadgeModule","MatMenuModule","MatButtonModule","MatProgressSpinnerModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","GalaxyTooltipModule","MatExpansionModule","_SalesOrderContentsModule","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵproperty","declineReason_r1","id","reason","ɵɵtemplate","SalesOrderDeclineDialogComponent_ng_container_3_ng_container_1_form_3_glxy_form_field_2_mat_error_7_Template","SalesOrderDeclineDialogComponent_ng_container_3_ng_container_1_form_3_glxy_form_field_2_mat_radio_button_9_Template","ctx_r2","formReasonId","dirty","invalid","declinedReasons_r2","ɵɵelementContainerStart","SalesOrderDeclineDialogComponent_ng_container_3_ng_container_1_form_3_glxy_form_field_2_Template","ɵɵelement","SalesOrderDeclineDialogComponent_ng_container_3_ng_container_1_form_3_mat_error_9_Template","form","length","ɵɵpropertyInterpolate","formMessage","SalesOrderDeclineDialogComponent_ng_container_3_ng_container_1_form_3_Template","ɵɵtextInterpolate","details","declinedReasons$$","SalesOrderDeclineDialogComponent_ng_container_3_ng_container_1_Template","declinedReasonsApiError$$","declineReasonsError_r4","ɵɵlistener","ɵɵrestoreView","_r5","ɵɵnextContext","ɵɵresetView","onLeaseBtnPressed","submitDisabled$","_r6","onDecline","_r7","loadDeclinedReasons","AUTOMATIONS_ORDER_WORKFLOW","SalesOrderDeclineDialogComponent","constructor","dialogRef","salesOrdersService","declinedReasonsService","snackbarService","featureFlagService","fb","router","partnerId$","error","EventEmitter","formSubmitted$$","BehaviorSubject","ReplaySubject","loadingDeclinedReasons$$","destroyed$","ngOnInit","events","pipe","takeUntil","subscribe","close","leaseOrderToAutomations$","get","orderId","businessId","switchMap","salesOrder","batchGetStatus","partnerId","marketId","map","res","take","combineLatest","formSubmitted","loadingDeclinedReasons","declinedReasons","group","reasonId","UntypedFormControl","Validators","required","message","controls","next","list","finalize","valid","decline","value","o","err","openErrorSnack","emit","leaseToAutomations","customFields","commonFields","extraFields","ngOnDestroy","complete","ɵɵdirectiveInject","MatDialogRef","SalesOrdersService","DeclinedReasonService","SnackbarService","FeatureFlagService","UntypedFormBuilder","Router","selectors","inputs","title","outputs","decls","vars","consts","template","rf","ctx","SalesOrderDeclineDialogComponent_ng_container_3_Template","SalesOrderDeclineDialogComponent_ng_container_13_Template","SalesOrderDeclineDialogComponent_ng_template_15_Template","ɵɵtemplateRefExtractor","SalesOrderDeclineDialogComponent_ng_template_17_Template","SalesOrderDeclineDialogComponent_ng_template_19_Template","loadingTemplate_r9","declineButton_r8","_SalesOrderDeclineDialogComponent","SalesOrderDeclineDialogModule","CommonModule","FormsModule","ReactiveFormsModule","MatButtonModule","MatInputModule","MatDialogModule","MatProgressSpinnerModule","MatRadioModule","GalaxyFormFieldModule","TranslateModule","RouterModule","GalaxySnackbarModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","_SalesOrderDeclineDialogModule","import_moment","ContractDurationKeysToEnum","key","value","DurationPeriod","DAY","WEEK","MONTH","YEAR","ContractDurationEnumToKeys","SalesOrderTagsService","constructor","salesOrderService","initialize","businessId","orderId","partnerId","marketId","tagOptions$","listTags","marketIds","pipe","switchMap","tags","of","map","tag","name","value","updateTags","order","ɵɵinject","SalesOrdersService","factory","ɵfac","_SalesOrderTagsService","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","tag_r1","ɵɵtemplate","SalesOrderDetailsTagsComponent_ng_container_6_div_1_div_1_Template","ɵɵproperty","ctx_r1","tags","ɵɵpipeBind1","ɵɵlistener","ɵɵrestoreView","_r3","ɵɵnextContext","ɵɵresetView","editTags","ɵɵelementContainerStart","SalesOrderDetailsTagsComponent_ng_container_6_div_1_Template","SalesOrderDetailsTagsComponent_ng_container_6_ng_template_2_Template","ɵɵtemplateRefExtractor","SalesOrderDetailsTagsComponent_ng_container_6_button_4_Template","length","noTags_r4","editable","ɵɵelement","_r5","sendTags","ɵɵpropertyInterpolate","options_r6","maxTags","editingTags","ɵɵtextInterpolate1","SalesOrderDetailsTagsComponent_ng_template_7_ng_container_0_ng_container_1_Template","isSubmittingTags","loading_r7","SalesOrderDetailsTagsComponent_ng_template_7_ng_container_0_Template","SalesOrderDetailsTagsComponent_ng_template_7_ng_template_2_Template","options$","SalesOrderDetailsTagsComponent","content","vaInputTags","constructor","orderTagsService","cdr","snackbarService","ngOnInit","initialize","businessId","orderId","partnerId","marketId","tagOptions$","isEditing","overMaxFields","openErrorSnack","interpolateTranslateParams","toString","newTags","value","updateTags","pipe","take","tap","t","catchError","of","finalize","detectChanges","subscribe","ɵɵdirectiveInject","SalesOrderTagsService","ChangeDetectorRef","SnackbarService","selectors","viewQuery","rf","ctx","GlxyInputTagsComponent","decls","vars","consts","template","SalesOrderDetailsTagsComponent_ng_container_6_Template","SalesOrderDetailsTagsComponent_ng_template_7_Template","editMode_r8","_SalesOrderDetailsTagsComponent","import_moment","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","requestedActivation","ɵɵresetView","ɵɵlistener","picker_r3","ɵɵreference","open","ɵɵelement","updateRequestedActivation","ɵɵadvance","ɵɵproperty","ɵɵtextInterpolate","ɵɵpipeBind1","minDate","ɵɵtwoWayProperty","ɵɵtextInterpolate1","updatingRequestedActivation","_r4","edit","ɵɵtemplate","SalesOrderDetailsRequestedActivationComponent_ng_template_7_button_2_Template","formatDate","editable","SalesOrderDetailsRequestedActivationComponent","constructor","salesOrdersService","alertService","cdk","isEditing","Date","ngOnChanges","changes","currentValue","ngOnInit","order","date","moment","format","undefined","openErrorSnack","detectChanges","setHours","orderId","businessId","pipe","take","subscribe","ɵɵdirectiveInject","SalesOrdersService","SnackbarService","ChangeDetectorRef","selectors","inputs","features","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","SalesOrderDetailsRequestedActivationComponent_ng_container_6_Template","SalesOrderDetailsRequestedActivationComponent_ng_template_7_Template","ɵɵtemplateRefExtractor","display_r5","_SalesOrderDetailsRequestedActivationComponent","DurationMapping","Map","DurationPeriod","DAY","WEEK","MONTH","YEAR","OrderDetailField","buildFieldsFromStatusHistory","historyItems","usersMap","fields","forEach","historyItem","index","status","field","buildFieldFromStatusHistory","push","length","childFields","isChild","metadata","getMetadataFromStatusHistoryItem","userId","user","email","created","createFromOrderWithUsers","salesOrder","statusHistory","constructor","date","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","period_r3","value","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","key","ɵɵpipeBind2","ɵɵpureFunction0","_c0","ɵɵelementContainerStart","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","contractDuration","ɵɵresetView","ɵɵlistener","convertDuration","duration","ɵɵtemplate","SalesOrderDetailsContractDurationComponent_ng_container_6_mat_option_15_Template","SalesOrderDetailsContractDurationComponent_ng_container_6_glxy_error_19_Template","updateContractDuration","contractDurationForm","ɵɵtextInterpolate","ɵɵtwoWayProperty","contractPeriods","invalidDurationValue","updating","_r4","edit","SalesOrderDetailsContractDurationComponent_ng_template_7_button_3_Template","contractDurationText$","editable","MIN_CONTRACT_DURATION_REGEX","SalesOrderDetailsContractDurationComponent","constructor","salesOrdersService","alertService","translateService","cdk","isEditing","ContractDurationKeysToEnum","ngOnChanges","changes","currentValue","order","ngOnInit","UntypedFormGroup","UntypedFormControl","Validators","pattern","required","stream","DurationMapping","get","toString","markAsTouched","controls","invalid","dirty","invalidDurationPeriod","orderId","businessId","pipe","take","subscribe","detectChanges","openErrorSnack","ɵɵdirectiveInject","SalesOrdersService","SnackbarService","TranslateService","ChangeDetectorRef","selectors","inputs","features","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","SalesOrderDetailsContractDurationComponent_ng_container_6_Template","SalesOrderDetailsContractDurationComponent_ng_template_7_Template","ɵɵtemplateRefExtractor","display_r5","_SalesOrderDetailsContractDurationComponent","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","notes","ɵɵresetView","ɵɵelementEnd","ɵɵtext","ɵɵlistener","updateNotes","ɵɵadvance","ɵɵproperty","ɵɵpropertyInterpolate","ɵɵpipeBind1","ɵɵtwoWayProperty","ɵɵtextInterpolate","updatingNotes","ɵɵtextInterpolate1","_r3","edit","ɵɵtemplate","SalesOrderDetailsNotesComponent_ng_template_7_button_2_Template","editable","SalesOrderDetailsNotesComponent","constructor","salesOrdersService","alertService","cdk","isEditing","ngOnChanges","changes","currentValue","ngOnInit","order","orderId","businessId","pipe","take","subscribe","detectChanges","openErrorSnack","ɵɵdirectiveInject","SalesOrdersService","SnackbarService","ChangeDetectorRef","selectors","inputs","features","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","SalesOrderDetailsNotesComponent_ng_container_6_Template","SalesOrderDetailsNotesComponent_ng_template_7_Template","ɵɵtemplateRefExtractor","ɵɵelement","display_r4","_SalesOrderDetailsNotesComponent","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","customerNotes","ɵɵresetView","ɵɵelementEnd","ɵɵtext","ɵɵlistener","updateCustomerNotes","ɵɵadvance","ɵɵproperty","ɵɵpropertyInterpolate","ɵɵpipeBind1","ɵɵtwoWayProperty","ɵɵtextInterpolate1","updatingNotes","_r3","edit","ɵɵtemplate","SalesOrderDetailsCustomerNotesComponent_ng_template_7_button_2_Template","ɵɵtextInterpolate","isCustomerDetails","editable","ɵɵelement","SalesOrderDetailsCustomerNotesComponent","constructor","salesOrdersService","alertService","cdk","isEditing","ngOnChanges","changes","currentValue","ngOnInit","order","orderId","businessId","pipe","take","subscribe","detectChanges","openErrorSnack","ɵɵdirectiveInject","SalesOrdersService","SnackbarService","ChangeDetectorRef","selectors","inputs","features","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","SalesOrderDetailsCustomerNotesComponent_ng_container_6_Template","SalesOrderDetailsCustomerNotesComponent_ng_template_7_Template","ɵɵtemplateRefExtractor","SalesOrderDetailsCustomerNotesComponent_mat_divider_9_Template","display_r4","_SalesOrderDetailsCustomerNotesComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind2","ɵɵpureFunction1","_c0","nameOfSubmitter_r1","ɵɵelementContainerStart","ɵɵpropertyInterpolate","badgeInfo_r2","color","ɵɵpipeBind1","tranlationKey","ɵɵtemplate","SalesOrderDetailsCardComponent_mat_card_subtitle_6_span_3_Template","SalesOrderDetailsCardComponent_mat_card_subtitle_6_ng_container_4_Template","ɵɵproperty","ctx_r2","getOrderSubmitterName","getOrderSubmitterBadgeInfo","ɵɵtextInterpolate2","salesperson","firstName","lastName","offerExpiryDisplay","ɵɵelementContainer","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_ng_container_5_ng_template_2_ng_container_5_ng_container_1_Template","ɵɵelement","singleStep_r5","_c2","child_r4","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_ng_container_5_ng_template_2_ng_container_3_Template","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_ng_container_5_ng_template_2_ng_container_5_Template","_c1","info_r6","childFields","_c3","compact_r9","buildDetailName","info_r7","isChild_r8","buildDetailValue","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_ng_container_5_ng_container_1_Template","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_ng_container_5_ng_template_2_Template","ɵɵtemplateRefExtractor","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_ng_container_5_ng_template_4_Template","info_r10","length","multiStep_r11","declinedReason","ɵɵlistener","$event","ɵɵrestoreView","_r13","ɵɵnextContext","filesUploader_r14","ɵɵreference","ɵɵresetView","deleteFile","files","_r12","handleFileUploadError","updateFilesUploaded","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_div_7_ng_container_5_div_4_Template","updateAttachmentsOnOrder","attachmentsUploadUrl","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_div_7_ng_template_7_glxy_uploader_list_2_Template","_r15","edit","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_div_7_ng_container_5_Template","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_div_7_ng_template_7_Template","isEditing$$","display_r16","agreement_r17","name","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_div_8_div_8_mat_icon_3_Template","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_div_8_div_8_mat_icon_4_Template","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_div_8_div_8_div_8_Template","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_div_8_div_8_mat_divider_10_Template","agreed","term","ɵɵsanitizeHtml","isLast_r18","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_div_8_div_8_Template","ɵɵtextInterpolate","buildCustomerApprovalNameAndDate","agreements","order","isCustomerDetails","orderDetailsEditable","tags","orderId","businessId","partnerId","marketId","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_ng_container_1_Template","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_ng_container_2_Template","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_ng_container_5_Template","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_div_6_Template","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_div_7_Template","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_div_8_Template","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_sales_ui_sales_order_details_customer_notes_9_Template","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_ng_container_10_Template","editable","orderDetails","customerNotes","SalesOrderDetailsCardComponent_mat_card_content_10_div_1_Template","isLoading","loadingOrder_r19","SalesOrderDetailsCardComponent","constructor","translateService","alertService","salesOrderService","userLookupService","hasError","BehaviorSubject","ngOnInit","getUploadFileUrl","attachments","map","attachment","url","status","FileUploadStatus","Success","offerExpiryDate","getOfferExpiry","formattedDate","formatDateWithTime","moment","isAfter","instant","date","ngOnChanges","changes","currentValue","salespersonId","userId","getMultiUsers","pipe","users","take","subscribe","user","err","console","error","getDisplayNameForSalesUser","customerApproval","getLastCustomerApproval","formatDateAndNamePair","orderDetailsCopy","reverse","find","historyItem","index","statusHistory","Status","SUBMITTED_FOR_CUSTOMER_APPROVAL","origin","Origin","SSC","VBC","PC","orderDetailField","isChild","getEventNameTranslationKeyForOrderDetailField","StatusToBadgeMapping","get","text","SUBMITTED","nameAndDateString","buildValueFromMetadata","metadata","signalToOpenAllDropdowns","matAccordions","forEach","accordion","openAll","file","updateAttachments","tap","next","openSuccessSnack","openErrorSnack","errorMessage","message","displayName","RequestCancellationMetadata","NotesMetadata","CustomerNotesMetadata","notes","current","event","id","DeclineCancellationEvent","DeclinedOrderMetadata","declinedReasons","join","UpdatedTagsMetadata","tagsString","value","UpdatedRequestedActivationMetadata","previous","fromValue","formatDate","toValue","UpdateContractDurationMetadata","previousDurationPeriod","ContractDurationEnumToKeys","duration","previousDuration","currentDurationPeriod","currentDuration","ɵɵdirectiveInject","TranslateService","SnackbarService","SalesOrdersService","IAMService","selectors","viewQuery","rf","ctx","MatAccordion","SalesOrderDetailsCardComponent_mat_card_subtitle_6_Template","SalesOrderDetailsCardComponent_mat_card_content_10_Template","SalesOrderDetailsCardComponent_ng_template_11_Template","SalesOrderDetailsCardComponent_ng_template_13_Template","orderErrorMsg_r20","_SalesOrderDetailsCardComponent","DatePipe","transform","names","push","email","UpdatedTagsEvent","UpdatedNotesEvent","UpdatedSalespersonEvent","UpdatedCustomerNotesEvent","UpdatedRequestedActivationEvent","UpdateContractDurationEvent","RequestCancellationEvent","UpdatedDraftEvent","UpdatedLineItemsEvent","getCustomerApprovalTranslationKeyForEventID","eventID","CustomerApprovalEventSending","CustomerApprovalEventProcessing","CustomerApprovalEventDelivered","CustomerApprovalEventBounced","CustomerApprovalEventDropped","CustomerApprovalEventUnsubscribed","CustomerApprovalEventDeferred","CustomerApprovalEventSpamReport","CustomerApprovalEventOpened","CustomerApprovalEventClicked","CustomerApprovalEventUpdatedAnswers","SalesOrderDetailsCardModule","SalesOrderTagsService","imports","CommonModule","MatCardModule","MatListModule","MatProgressSpinnerModule","EmptyStateModule","MatExpansionModule","VaFormsModule","MatIconModule","FormsModule","ReactiveFormsModule","MatCheckboxModule","MatTooltipModule","MatButtonModule","MatDatepickerModule","MatInputModule","MatSelectModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","GalaxyUploaderModule","GalaxyBadgeModule","GalaxyFormFieldModule","GalaxyButtonLoadingIndicatorModule","_SalesOrderDetailsCardModule","OrderDetailAgreement","agreementFromOrderAgreementWithUser","agreement","usersMap","names","name","userId","user","firstName","push","lastName","join","email","term","agreed","createFromOrderWithUsers","salesOrder","agreements","map","a","constructor","SalesOrderService","convertOrderCurrencyToMPCurrency","orderCurrency","Currency","USD","convertOrderRevenuePeriodToMPFrequency","revenuePeriod","undefined","RevenuePeriod","ONETIME","Frequency","ONCE","DAILY","WEEKLY","MONTHLY","YEARLY","BIWEEKLY","OTHER","getPricingFromLineItem","lineItem","prices","currentRevenue","revenueComponents","map","c","Price","price","value","frequency","period","Pricing","currency","currencyCode","constructor","accountGroupService","salesService","packageService","appsService","salesOrdersService","salesOrderStoreService","businessId$$","BehaviorSubject","businessId$","asObservable","orderId$$","orderId$","specifiedLineItems$$","specifiedLineItems$","order$","combineLatest","pipe","skipWhile","orderId","businessId","switchMap","getOrderState","filter","orderState","loading","order","publishReplay","refCount","business$","getMulti","ProjectionFilter","accountGroupExternalIdentifiers","napData","accounts","ReadFilter","includeDeleted","results","length","throwError","Error","salesperson$","business","externalIdentifiers","salesPersonId","getSalesperson","partnerId","of","catchError","orderConfig$","getConfig","marketId","lineItems$","lineItems","concat","packageIds$","packageId","standaloneAppKeys$","appKey","AppKey","packages$","packageIds","includedAppKeys$","zip","packages","standaloneAppKeys","packageAppKeys","pkg","item","appId","id","editionId","reduce","a","b","apps$","includedAppKeys","uniqueApps$","apps","appKeys","unique","app","key","find","uniqueKey","push","initialize","next","ɵɵinject","AccountGroupService","SalespersonService","PackageService","AppPartnerService","SalesOrdersService","SalesOrderStoreService","factory","ɵfac","_SalesOrderService","SalesOrderFormService","constructor","translateService","appsApiService","salesOrderService","salesOrderSdk","initialize","businessId","orderId","lineItems","userOptions","order$","mpOrderForms$","combineLatest","apps$","business$","pipe","switchMap","apps","business","getMarketplaceOrderForms","externalIdentifiers","partnerId","publishReplay","refCount","appQuantityMap$","zip","packages$","lineItems$","map","packages","salesLineItems","quantityMap","Map","allPkgLineItems","reduce","items","pkg","pkgLineItem","find","lineItem","packageId","pkgCount","quantity","concat","salesOrderLineItemsFromPackage","filter","forEach","item","count","get","appKey","appId","set","length","LineItem","id","editionId","appIds","app","key","activationInformation","orderFormEnabled","getMultiOrderForms","resp","orderFormContainer","of","getOrderForms","options","uniqueApps$","orderForms","appQuantityMap","forms","commonFormRequiredFields","customFields","activationSpecificUrlEnabled","unshift","label","instant","type","required","showOfficeUseQuestions","hidden","regexValidator","regexErrorMessage","textboxType","orderForm","o","isTrialUpgrade","f","__spreadProps","__spreadValues","optionsWithLabels","addonId","parentRequirements","enabled","appType","AppType","APP_TYPE_ADDON","parentDetails","createdForm","footerText","trim","push","multipleActivationsEnabled","separateOrderForms","i","isTrialLineItem","businessHasActiveTrial","accounts","li","isTrial","account","a","marketplaceAppId","getNewCommonData","commonFormData","salesperson$","salesperson","user","businessAddress","napData","address","city","state","join","user_options","contact_email","email","contact_name","firstName","lastName","contact_phone_number","phoneNumber","business_account_group_id","accountGroupId","business_name","companyName","business_address","business_phone_number","workNumber","business_website","website","salesperson_name","salesperson_email","salesperson_phone_number","getCommonData","order","commonData","commonFields","cf","fieldAnswer","field","answer","JSON","parse","fieldId","getProductInfo","productInfoMap","productInfo","productId","addonInfo","has","name","tagline","icon","iconUrl","sharedMarketingInformation","Array","from","values","getAnswers","answers","c","fieldAnswers","fields","productID","addonKey","customFieldsAnswers","getExtraQuestions","orderConfig$","config","extraFields","getExtraAnswers","updateAnswers","customFormData","hasQuestions","orderFormOptions","questions","hasExtraQuestions","commonFormHasQuestions","commonForm","Object","some","form","hasCommonForm","hasCommonFormRequiredFields","hasCustomFields","ɵɵinject","TranslateService","MarketplaceAppsApiService","SalesOrderService","SalesOrdersService","factory","ɵfac","_SalesOrderFormService","import_moment","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","create","ɵɵtext","ɵɵelementEnd","ɵɵelementContainerStart","ɵɵelement","ɵɵadvance","ɵɵproperty","ɵɵpropertyInterpolate","ɵɵpipeBind1","uiOrder_r3","fulfillmentFormUrl$","ɵɵtextInterpolate","ɵɵtemplate","SalesOrderShortListComponent_ng_container_9_ng_container_1_ng_container_1_mat_list_2_mat_list_item_1_glxy_alert_13_Template","ɵɵpureFunction1","_c2","actionRequired_r4","get","salesOrder","orderId","orderDetailsUrl$","ɵɵtextInterpolate1","ɵɵpipeBind2","_c3","requestedActivation","badge","color","text","SalesOrderShortListComponent_ng_container_9_ng_container_1_ng_container_1_mat_list_2_mat_list_item_1_Template","response_r5","salesOrders","SalesOrderShortListComponent_ng_container_9_ng_container_1_ng_container_1_mat_list_2_Template","actionRequiredForFO$","ordersPageForBusinessUrl","ordersPageForBusinessQuery","SalesOrderShortListComponent_ng_container_9_ng_container_1_ng_container_1_Template","length","noneFound_r6","SalesOrderShortListComponent_ng_container_9_ng_container_1_Template","response$","SalesOrderShortListComponent","constructor","salesOrdersService","cdk","fulfillmentOrderApiService","analyticsService","showCreateButton","createClicked","EventEmitter","loading","error","ngOnInit","list","partnerId","ListSalesOrderRequestFilters","businessId","ListSalesOrderRequestSortOption","field","ListSalesOrderRequestSortField","CREATED","direction","ListSalesOrderRequestSortDirection","DESCENDING","pipe","take","map","resp","hasMore","results","r","getOrderDetailsUrl","getFulfillmentFormUrl","StatusToBadgeMapping","status","Status","SUBMITTED","moment","format","catchError","e","detectChanges","throwError","filter","response","switchMap","searchFulfillmentOrder","SearchFulfillmentOrderRequest","pageSize","cursor","salesOrderIds","x","businessIds","fulfillmentOrders","trackEvent","createActionRequiredMapFromFulfillmentOrders","Map","result","forEach","fo","salesOrderId","set","FulfillmentOrderStatus","FULFILLMENT_ORDER_STATUS_DETAILS_NEEDED","emit","ɵɵdirectiveInject","SalesOrdersService","ChangeDetectorRef","FulfillmentOrderApiService","ProductAnalyticsService","selectors","inputs","outputs","ngContentSelectors","_c1","decls","vars","consts","template","rf","ctx","ɵɵprojection","SalesOrderShortListComponent_button_7_Template","SalesOrderShortListComponent_ng_container_8_Template","SalesOrderShortListComponent_ng_container_9_Template","SalesOrderShortListComponent_ng_template_10_Template","ɵɵtemplateRefExtractor","SalesOrderShortListComponent_ng_template_12_Template","errorTemplate_r7","_SalesOrderShortListComponent","SalesOrderShortListModule","CommonModule","MatButtonModule","MatListModule","VaIconModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","MatIconModule","MatProgressSpinnerModule","MatCardModule","GalaxyEmptyStateModule","GalaxyAlertModule","RouterModule","GalaxyBadgeModule","_SalesOrderShortListModule","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","ɵɵresetView","unselectSalesperson","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate2","selectedSalesperson","firstName","lastName","ɵɵelement","ɵɵproperty","user_r4","ɵɵelementContainerStart","ɵɵtemplate","SalespersonSelectorDialogComponent_ng_container_5_mat_chip_row_8_Template","SalespersonSelectorDialogComponent_ng_container_5_glxy_loading_spinner_11_Template","$event","_r1","selectSalesperson","SalespersonSelectorDialogComponent_ng_container_5_mat_option_14_Template","loadMore","ɵɵtextInterpolate","ɵɵpipeBind1","searchCtrl","chipList_r6","autocomplete_r7","loading","salespersonOptions_r5","SalespersonSelectorDialogComponent","constructor","userLookupService","data","dialogRef","cdr","salespersonOptions$$","BehaviorSubject","cursor","pageSize","hasMore","UntypedFormControl","searchTerm$$","loadMore$$","partnerId","ngOnInit","previouslySelectedUser","getMultiUsers","userId","pipe","take","subscribe","user","length","valueChanges","map","searchTerm","next","debounceTime","switchMap","detectChanges","listUsers","direction","SortDirection","SORT_DIRECTION_ASCENDING","field","UserSortField","USER_SORT_FIELD_FIRST_NAME","USER_SORT_FIELD_LAST_NAME","resp","updateSalespersonOptions","users","nextCursor","withLatestFrom","currentSalespersonOptions","event","option","value","chipInput","nativeElement","setValue","newSalespersonOptions","concat","select","close","salesperson","ɵɵdirectiveInject","IAMService","MAT_DIALOG_DATA","MatDialogRef","ChangeDetectorRef","selectors","viewQuery","rf","ctx","SalespersonSelectorDialogComponent_ng_container_5_Template","ɵɵtextInterpolate1","_SalespersonSelectorDialogComponent","ORDER_LINK","InjectionToken","providedIn","factory","order","businessId","orderId","SalesOrderTableCustomComponentDirective","selectors","inputs","columnDefinition","translateService","element","eventEmitter","_SalesOrderTableCustomComponentDirective","SALES_ORDERS_ACCESS_SERVICE_TOKEN","InjectionToken","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ɵɵpureFunction1","_c3","_c2","_c1","ɵɵpureFunction2","_c0","ctx_r1","element","partnerId","businessId","orderId","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵelementContainerStart","ɵɵlistener","ɵɵrestoreView","_r1","ɵɵnextContext","ɵɵresetView","archive","ignoreErrors","cancel","duplicateOrder","changeSalesperson","ɵɵtemplate","AdminOrderActionsCellComponent_ng_container_1_Conditional_21_Template","menuRef_r3","status","PROCESSING","ARCHIVED","ACTIVATION_ERRORS","CANCELLED","ɵɵconditional","canEditCustomFields$","ɵɵelement","AdminOrderActionsCellComponent","SalesOrderTableCustomComponentDirective","constructor","salesOrdersService","alertService","cdk","dialog","router","accessService","Status","loading","orderLink","inject","ORDER_LINK","canModifyCustomFields$","of","pipe","take","finalize","detectChanges","subscribe","next","error","openErrorSnack","approveCancellation","ignoreAllProductActivationErrors","FULFILLED","duplicate","map","orderRow","url","navigate","open","SalespersonSelectorDialogComponent","data","previouslySelectedUser","salespersonId","width","afterClosed","switchMap","selectedSalesperson","updateSalesperson","salesperson","userId","firstName","lastName","email","phoneNumber","err","console","ɵɵdirectiveInject","SalesOrdersService","SnackbarService","ChangeDetectorRef","MatDialog","Router","SALES_ORDERS_ACCESS_SERVICE_TOKEN","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","AdminOrderActionsCellComponent_ng_container_1_Template","AdminOrderActionsCellComponent_ng_template_2_Template","ɵɵtemplateRefExtractor","loadingTemplate_r4","_AdminOrderActionsCellComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ctx_r0","business","companyName","ɵɵproperty","businessLink","element","ɵɵtextInterpolate","ɵɵelementContainerStart","ɵɵtemplate","BusinessInfoCellComponent_ng_container_0_div_2_Template","BusinessInfoCellComponent_ng_container_0_ng_template_6_Template","ɵɵtemplateRefExtractor","deleted","linkToBusinessDetails_r2","ɵɵpipeBind1","address$","BUSINESS_LINK","InjectionToken","providedIn","factory","order","businessId","BusinessInfoCellComponent","SalesOrderTableCustomComponentDirective","constructor","addressService","address$$","BehaviorSubject","inject","ngOnInit","shortAddress$","address1","address","address2","city","province","state","zip","country","pipe","tap","next","ɵɵdirectiveInject","AddressService","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","BusinessInfoCellComponent_ng_container_0_Template","_BusinessInfoCellComponent","import_moment","DateCellComponent","constructor","cellValueService","ngOnInit","value","getCellValue","columnDefinition","id","field","element","momentFormatDate","date","format","moment","ɵɵdirectiveInject","CellValueService","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ɵɵadvance","ɵɵtextInterpolate1","_DateCellComponent","import_moment","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ctx_r0","momentFormatDate","expiryDate","ɵɵadvance","ɵɵtextInterpolate1","fromNow","ɵɵpipeBind1","ExpiryCellComponent","SalesOrderTableCustomComponentDirective","constructor","showDate","showExpired","ngOnInit","element","expiryMoment","moment","toDate","isBefore","date","format","t","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","ExpiryCellComponent_span_0_Template","ExpiryCellComponent_span_1_Template","_ExpiryCellComponent","OrderIdCellComponent","SalesOrderTableCustomComponentDirective","constructor","orderLink","inject","ORDER_LINK","t","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","element","ɵɵadvance","ɵɵtextInterpolate","orderId","_OrderIdCellComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","tag_r1","OrderTagsCellComponent","SalesOrderTableCustomComponentDirective","ngOnInit","tags","element","t","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","OrderTagsCellComponent_div_1_Template","ɵɵproperty","_OrderTagsCellComponent","SALESPERSON_LINK","InjectionToken","providedIn","factory","SALESPERSON_LINK_QUERY","order","sales_person_id","salespersonId","SalespersonCellComponent","SalesOrderTableCustomComponentDirective","constructor","salespersonLink","inject","salespersonLinkQuery","getSalespersonName","element","salesperson","firstName","lastName","getSalespersonEmail","email","t","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵtextInterpolate1","ɵɵtextInterpolate","_SalespersonCellComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ɵɵpureFunction1","_c3","_c2","_c1","ɵɵpureFunction2","_c0","ctx_r1","element","partnerId","businessId","orderId","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵelementContainerStart","ɵɵlistener","ɵɵrestoreView","_r1","ɵɵnextContext","ɵɵresetView","duplicateOrder","ɵɵtemplate","SalespersonOrderActionsCellComponent_ng_container_1_Conditional_9_Template","menuRef_r3","ɵɵconditional","canEditCustomFields$","ɵɵelement","SalespersonOrderActionsCellComponent","SalesOrderTableCustomComponentDirective","constructor","salesOrdersService","cdk","router","accessService","status","Status","loading","orderLink","inject","ORDER_LINK","canModifyCustomFields$","of","duplicate","pipe","take","map","orderRow","url","navigate","finalize","detectChanges","subscribe","ɵɵdirectiveInject","SalesOrdersService","ChangeDetectorRef","Router","SALES_ORDERS_ACCESS_SERVICE_TOKEN","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","SalespersonOrderActionsCellComponent_ng_container_1_Template","SalespersonOrderActionsCellComponent_ng_template_2_Template","ɵɵtemplateRefExtractor","loadingTemplate_r4","_SalespersonOrderActionsCellComponent","StatusCellComponent","SalesOrderTableCustomComponentDirective","constructor","status","Status","getStatusName","statusName","element","t","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","template","rf","ctx","ɵɵtext","ɵɵtextInterpolate","ɵɵpipeBind1","_StatusCellComponent","RequestedExportType","SALES_ORDERS_TABLE_FACTORY_PARAM_TOKEN","exportDataFormatModalOption","BaseSalesOrdersTableFilterService","SalesOrdersExportAllService","constructor","salesOrderService","partnerId$","salesTeamService","alertService","convertSortOptions","sort","s","length","direction","SortDirection","SORT_DIRECTION_ASCENDING","InitiateOrderExportRequestSortDirection","ASCENDING","DESCENDING","field","InitiateOrderExportRequestSortField","STATUS","REQUESTED_ACTIVATION","CREATED","EXPIRY_DATE","InitiateOrderExportRequestSortOption","convertFilters","filters","filteredTeamSalesPersonIds","forcedMarkets","forcedSalesperson","forcedBusinessId","f","statuses","created","requestedActivation","expiryDate","controls","value","push","Status","FULFILLED","ACTIVATION_ERRORS","APPROVED","ARCHIVED","SUBMITTED_FOR_CUSTOMER_APPROVAL","DECLINED","SUBMITTED","PROCESSING","DRAFTED","CANCELLATION_REQUESTED","CANCELLED","SCHEDULED_ACTIVATION","beginRange","endRange","tags","untagged","orderId","packageIds","packageId","marketIds","marketId","businessIds","salespersonIds","salespersonId","includes","InitiateOrderExportRequestFilters","initialize","forcedFilterOptions","exportOptions","getSelectedDataFormat","fileFormatSelected","selectedDataFormat","InitiateOrderExportRequestDataFormatOption","ORDERS_PER_ROW","exportDataFormatModalOption","PRODUCTS_PER_ROW","RequestedExportType","Buyer","PRODUCTS_PER_ROW_BUYER","ORDERS_PER_ROW_BUYER","Sales","PRODUCTS_PER_ROW_SALES","ORDERS_PER_ROW_SALES","exportAllRowsToCSV","request","option","sortOptions","sortingOptions","salesPersonIdsBelongingToFilteredTeam$","of","getMembers","id","pipe","catchError","filters$","map","salesPersonIdsBelongingToFilteredTeam","teamSalesPersonIds","sp","businessId","combineLatest","switchMap","partnerId","tableUrlWithFiltersSet","window","location","href","exportOrderRequest","InitiateOrderExportRequest","sortOption","tryAgainUrl","initiateOrderExport","subscribe","next","openSuccessSnack","error","err","status","openErrorSnack","ɵɵinject","CustomerSalesOrdersService","PARTNER_ID_TOKEN","SalesTeamService","SnackbarService","factory","ɵfac","_SalesOrdersExportAllService","calculateContractDurationMonths","d","months","duration","DurationPeriod","MONTH","value","YEAR","CustomerSalesOrdersTableService","constructor","salesOrderService","partnerId$","totalResults$$","BehaviorSubject","totalResults$","asObservable","initialize","forcedFilterOptions","convertFilters","filters","forcedBusiness","f","created","requestedActivation","expiryDate","beginRange","endRange","businessId","ListCustomerSalesOrderRequestFilters","convertSortOptions","sort","s","length","direction","SortDirection","SORT_DIRECTION_ASCENDING","ListCustomerSalesOrderRequestSortDirection","ASCENDING","DESCENDING","field","ListCustomerSalesOrderRequestSortField","STATUS","REQUESTED_ACTIVATION","CREATED","EXPIRY_DATE","ListCustomerSalesOrderRequestSortOption","load","request","sorting","sortingOptions","cursor","btoa","pageIndex","pageSize","toString","combineLatest","pipe","switchMap","partnerId","apiFilters","list","take","map","results","next","totalResults","o","orderId","salespersonId","salesperson","business","marketId","status","tags","contractDurationInMonths","calculateContractDurationMonths","contractDuration","ɵɵinject","CustomerSalesOrdersService","PARTNER_ID_TOKEN","factory","ɵfac","_CustomerSalesOrdersTableService","CustomerSalesOrdersTableFilterService","BaseSalesOrdersTableFilterService","constructor","partnerId$","translateService","filters","FilterGroup","initialize","forcedFilterOptions","contractStartFromControl","DateFilterControl","instant","contractStartToControl","submittedDateFromControl","submittedDateToControl","expiryDateFromControl","expiryDateToControl","addSection","ɵɵinject","PARTNER_ID_TOKEN","TranslateService","factory","ɵfac","_CustomerSalesOrdersTableFilterService","SalesOrdersTableFilterService","BaseSalesOrdersTableFilterService","constructor","partnerId$","markets$","salespeople$","salesTeams$","alertService","salesOrdersService","translateService","packageService","accountGroupService","addressPipe","filters","FilterGroup","destroy$","Subject","packageFilterSectionName","instant","reduceSalesTeamToMap","salesTeamMap","st","set","teamName","convertSalesTeamsToMap","salesTeams","reduce","Map","ngOnDestroy","next","complete","initialize","forcedFilterOptions","canAccessSalesTeams","marketOptions$","pipe","map","markets","sort","a","b","aName","name","toLowerCase","bName","objMap","market","catchError","e","openErrorSnack","throwError","tags","combineLatest","switchMap","partnerId","marketIds","getMarketIds","listTags","resp","t","v","msg","adminControls","TextInputFilterControl","marketFilterControl","SelectFilterControl","appliedValueMapper","value","marketLabel","label","push","takeUntil","subscribe","availMarkets","Array","from","values","length","setValue","salespersonId","createSalesPeopleSelectControl","createSalesTeamsSelectControl","createAccountSearchControl","addSection","contractStartFromControl","DateFilterControl","contractStartToControl","submittedDateFromControl","submittedDateToControl","expiryDateFromControl","expiryDateToControl","CheckboxFilterControl","tagLabel","take","addPackageFilterSection","valueChanges","removeSection","marketId","formatSearchAccountOption","accountGroup","address","napData","address2","city","state","formattedAddress","transform","companyName","m","salesPeopleOptions$","salesPeople","sp","salespersonLabel","salesTeamOptions$","teams","salesTeamLabel","accountGroupProjectionFilter","accountSearchTerm$$","BehaviorSubject","accountGroupIdToCompanyName","accountOptions$","searchTerm","lookup","projectionFilter","pageSize","response","accountGroupLabelToId","accountGroups","forEach","selectOptionLabel","accountGroupId","accountLabel","accountSearchControl","SearchSelectFilterControl","searchDisplay","accountId","get","list","Status","PUBLISHED","packages","sortedPackages","p","ɵɵinject","PARTNER_ID_TOKEN","MARKET_IDS_TOKEN","SALESPEOPLE_TOKEN","SALES_TEAMS_TOKEN","SnackbarService","SalesOrdersService","TranslateService","PackageService","AccountGroupSdkService","GalaxyAddressPipe","factory","ɵfac","_SalesOrdersTableFilterService","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","handleViewItemsClick","ɵɵadvance","ɵɵproperty","badgeColor","ɵɵtextInterpolate1","ɵɵpipeBind1","stringStatus","ɵɵtextInterpolate","ɵɵtemplate","FulfillmentCellComponent_ng_template_1_glxy_badge_0_Template","notApplicableOption_r3","UNIFIED_TABLES_FEATURE","FulfillmentCellComponent","SalesOrderTableCustomComponentDirective","constructor","partnerId$","fulfillmentCellLinkVersion","hasAccessToUnifiedTables$","fulfillmentOrderStatus","FulfillmentOrderStatus","router","inject","Router","hasAccessToUnifiedTables","signal","pipe","takeUntilDestroyed","subscribe","hasAccessToUnifiedTable","set","ngOnInit","element","orderID","orderId","queryParamsLink","getLinkQueryParams","hasFulfillment","statusAsNumber","convertStringStatusToNumber","statusColorMap","get","WorkOrderPersona","CP","Object","values","indexOf","queryParams","orderIds","JSON","stringify","tab","navigateToUnifiedTables","navigateToOrderFulfillmentTable","navigate","queryParamsHandling","ɵɵdirectiveInject","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","FulfillmentCellComponent_ng_container_0_Template","FulfillmentCellComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","FulfillmentCellComponent_ng_template_3_Template","noLinkVersion_r4","_FulfillmentCellComponent","ORDERS_TABLE_DEF","id","columnOrganizerType","ColumnOrganizerType","ADVANCED_ORGANIZER","labels","noResults","cancel","none","update","sortBy","thenSortBy","addAnotherSortColumn","chooseColumnToSortBy","columnSorting","date","ascending","descending","number","string","default","export","buttonText","buttonTooltipBeforeCount","buttonTooltipAfterCount","columnSelector","options","disableMultiColumnSorting","tableTitle","csvExportEnabled","columns","displayName","pinned","Pinned","PINNED_LEFT","type","ColumnType","COLUMN_TYPE_STRING","field","cellComponent","OrderIdCellComponent","BusinessInfoCellComponent","StatusCellComponent","sortOptions","sortable","FulfillmentCellComponent","COLUMN_TYPE_DATE","DateCellComponent","SalespersonCellComponent","initialSortDirection","SortDirection","SORT_DIRECTION_DESCENDING","translateCell","ExpiryCellComponent","OrderTagsCellComponent","adminActionsCell","PINNED_RIGHT","AdminOrderActionsCellComponent","salesActionsCell","SalespersonOrderActionsCellComponent","tableDefinitionFactory","filterService","customerFilterService","params","translateService","tableDefinition","showActions","isSalesTable","some","c","push","isCustomerTable","removeIds","filter","column","includes","filters","exportDialogDefinition","buildExportModalContent","content","headerText","descriptionText","exportOptions","combineLatest","stream","subscribe","exportHeaderMessage","exportDescriptionMessage","orderPerRowOptionText","orderPerRowOptionHelpText","productsPerRowOptionText","productsPerRowOptionHelpText","exportDataFormatModalOption","ORDERS_PER_ROW","selectionText","selectionHelpText","PRODUCTS_PER_ROW","SalesOrdersTableService","constructor","salesOrderService","partnerId$","translateService","salesTeamService","snackbarService","totalResults$$","BehaviorSubject","totalResults$","asObservable","initialize","forcedFilterOptions","stats$","pipe","switchMap","partnerId","getStatusCounts","marketIds","salespersonId","map","counts","shareReplay","currentDate","Date","nextDate","setMonth","getMonth","presetViews","JSON","stringify","viewId","viewName","instant","viewDescription","attributeFiltersJson","expiryDateFrom","expiryDateTo","sortingJson","convertFilters","filters","teamSalesPersonIds","forcedMarkets","forcedSalesperson","f","statuses","created","requestedActivation","expiryDate","push","Status","FULFILLED","ACTIVATION_ERRORS","APPROVED","ARCHIVED","SUBMITTED_FOR_CUSTOMER_APPROVAL","DECLINED","SUBMITTED","RESUBMITTED","PROCESSING","DRAFTED","CANCELLATION_REQUESTED","CANCELLED","SCHEDULED_ACTIVATION","marketId","salespersonIds","includes","length","beginRange","endRange","tags","untagged","businessId","orderId","packageId","extractSalespersonIds","salespeople","sp","convertSortOptions","sort","s","direction","SortDirection","SORT_DIRECTION_ASCENDING","ListSalesOrderRequestSortDirection","ASCENDING","DESCENDING","field","ListSalesOrderRequestSortField","STATUS","REQUESTED_ACTIVATION","CREATED","EXPIRY_DATE","ListSalesOrderRequestSortOption","load","request","sorting","sortingOptions","cursor","btoa","pageIndex","pageSize","toString","salesPersonIdsBelongingToTeam$","salesTeam","getMembers","id","catchError","of","combineLatest","salesPersonIds","apiFilters","ListSalesOrderRequestFilters","list","take","results","next","totalResults","o","salesperson","business","status","contractDurationInMonths","calculateContractDurationMonths","contractDuration","fulfillmentOrderStatus","fulfillmentStatus","hasFulfillment","error","openErrorSnack","ɵɵinject","SalesOrdersService","PARTNER_ID_TOKEN","TranslateService","SalesTeamService","SnackbarService","factory","ɵfac","_SalesOrdersTableService","SalespersonService","constructor","salesService","cache","getSalesperson","partnerId","salespersonId","pipe","publishReplay","refCount","take","ɵɵinject","factory","ɵfac","_SalespersonService","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","stat_r1","value","ɵɵelement","ɵɵtemplate","SalesOrderTableStatsComponent_div_0_div_1_glxy_statistic_value_6_Template","SalesOrderTableStatsComponent_div_0_div_1_glxy_statistic_value_7_Template","title","ɵɵproperty","loading","SalesOrderTableStatsComponent_div_0_div_1_Template","stats_r2","SalesOrderTableStatsComponent","dataService","stats$","pipe","map","stats","startCardData","startWith","constructor","i18n","instant","statValue","Object","values","Status","SUBMITTED","SUBMITTED_FOR_CUSTOMER_APPROVAL","RESUBMITTED","CANCELLED","APPROVED","SCHEDULED_ACTIVATION","FULFILLED","statuses","reduce","acc","status","ɵɵdirectiveInject","TranslateService","selectors","inputs","decls","vars","consts","template","rf","ctx","SalesOrderTableStatsComponent_div_0_Template","ɵɵpipeBind1","_SalesOrderTableStatsComponent","ɵɵelement","ɵɵproperty","ctx_r0","dataService","SalesOrdersTableComponent","constructor","inj","tableFactoryParams","i18n","productAnalyticsService","snackBarService","translateService","options","showStats","canAccessSalesTeams","ngOnInit","forcedFilters","exportOptions","RequestedExportType","Partner","trackEvent","isCustomerTable","tableFilterService","get","CustomerSalesOrdersTableFilterService","CustomerSalesOrdersTableService","SalesOrdersTableFilterService","SalesOrdersTableService","exportAllDataService","SalesOrdersExportAllService","initialize","presetViews","handleCustomExportEvent","event","__async","firstValueFrom","totalResults$","then","total","openErrorSnack","instant","exportAllRowsToCSV","requestInfo","optionId","ɵɵdirectiveInject","Injector","SALES_ORDERS_TABLE_FACTORY_PARAM_TOKEN","TranslateService","ProductAnalyticsService","SnackbarService","selectors","inputs","features","ɵɵProvidersFeature","VaTableSortService","SalespersonService","VaFilteredMatTableService","provide","TABLE_DEFINITION","useFactory","tableDefinitionFactory","deps","FeatureFlagService","PartnerService","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtemplate","SalesOrdersTableComponent_sales_ui_sales_order_table_stats_1_Template","ɵɵlistener","$event","ɵɵelementEnd","ɵɵadvance","_SalesOrdersTableComponent","SalespersonSelectorDialogModule","CommonModule","RouterModule","MatProgressSpinnerModule","MatTooltipModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","MatMenuModule","MatIconModule","MatButtonModule","MatCardModule","MatDividerModule","MatDialogModule","MatAutocompleteModule","GalaxyInfiniteScrollTriggerModule","MatChipsModule","FormsModule","MatFormFieldModule","ReactiveFormsModule","GalaxyFormFieldModule","MatInputModule","GalaxyWrapModule","GalaxyLoadingSpinnerModule","_SalespersonSelectorDialogModule","SalesOrdersTableModule","AccountGroupService","GalaxyAddressPipe","provide","MAT_DATE_LOCALE","useValue","getLocale","DateAdapter","useClass","DateFnsAdapter","deps","MAT_DATE_FORMATS","MAT_DATE_FNS_FORMATS","imports","CommonModule","Filter2TableModule","RouterModule","MatProgressSpinnerModule","MatTooltipModule","VaBadgeModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","MatMenuModule","MatIconModule","MatButtonModule","MatCardModule","MatDividerModule","VaCardsModule","GalaxyStatisticModule","GalaxyBadgeModule","SalespersonSelectorDialogModule","_SalesOrdersTableModule","SidePanelState","SidePanelStateService","constructor","sidePanelState$$","ReplaySubject","sidePanelState$","asObservable","switchState","state","data","next","factory","ɵfac","_SidePanelStateService","SlideOutPanelComponent","constructor","slideOutPanelService","mode","isOpened$","isSlideOutOpen$","closeSideNav","closeSlideOut","ɵɵdirectiveInject","SlideOutPanelService","selectors","inputs","ngContentSelectors","_c1","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵprojection","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpipeBind1","_SlideOutPanelComponent","SlideOutPanelModule","SlideOutPanelService","SidePanelStateService","imports","MatButtonModule","MatIconModule","MatSidenavModule","CommonModule","TranslateModule","MatToolbarModule","GalaxyBadgeModule","_SlideOutPanelModule","CreateOpportunityService","constructor","createPageDetails$$","BehaviorSubject","createPageDetails$","asObservable","setCreatePageDetails","data","next","factory","ɵfac","_CreateOpportunityService","OpportunityDetailsService","constructor","opportunityUpdates","mode$$","ReplaySubject","mode$","asObservable","setSelectedOpportunity","opportunity","setMode","mode","next","ɵɵinject","OpportunityService","factory","ɵfac","_OpportunityDetailsService","OpportunitySidePanelEventsService","constructor","sidePanelCloseEvents$$","Subject","sidePanelCloseEvents$","asObservable","opportunityCreatedEvents$$","BehaviorSubject","opportunityCreatedEvents$","sidePanelCloseRequested","next","opportunityCreated","opportunity","factory","ɵfac","providedIn","_OpportunitySidePanelEventsService","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","files_r1","OpportunityAttachmentsCardComponent","constructor","updateService","salesOrderService","snackBar","ngOnInit","opportunity$","currentOpportunity$","attachmentsUploadUrl","getUploadFileUrl","files$","pipe","distinctUntilChanged","map","opportunity","attachments","attachment","name","url","uploadFile","file","take","switchMap","addAttachmentToOpportunity","opportunityId","accountGroupId","subscribe","openSuccessSnack","openErrorSnack","handleFileUploadError","err","errorMessage","error","message","ɵɵdirectiveInject","OpportunityService","SalesOrdersService","SnackbarService","selectors","decls","vars","consts","template","rf","ctx","ɵɵlistener","$event","ɵɵtemplate","OpportunityAttachmentsCardComponent_div_2_Template","ɵɵpipeBind1","_OpportunityAttachmentsCardComponent","AddTagsDialogComponent","constructor","dialogRef","data","tagsControl","FormControl","filteredTags","availableTags","filterTags","setValue","opportunityTags","searchText","filter","tag","toLowerCase","includes","searchTextChanged","save","close","value","cancel","ɵɵdirectiveInject","MatDialogRef","MAT_DIALOG_DATA","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵlistener","$event","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵproperty","_AddTagsDialogComponent","ɵɵelementContainerStart","ɵɵelement","ɵɵadvance","ɵɵproperty","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","openEditTagsDialog","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵtemplate","OpportunityTagsComponent_ng_template_1_ng_container_0_Template","hasTags$","tagContent_r3","tag_r5","name","OpportunityTagsComponent_ng_template_3_mat_chip_2_Template","_r4","tags$","OpportunityTagsComponent","opportunity","opp","opportunity$$","next","constructor","dialog","accountGroupService","salesOpportunitiesService","tagsChanged","EventEmitter","BehaviorSubject","opportunity$","asObservable","accountGroupInfo$","pipe","filter","Boolean","distinctUntilChanged","a","b","accountGroupId","switchMap","getAccountGroup","shareReplay","accountTags$","map","accountGroup","getAccountGroupTags","tags","tag","accountTag","opportunityTags$","combineLatest","oppTags","accountTags","concat","length","availableTags$","getSuggestedTags","get","ProjectionFilter","accountGroupExternalIdentifiers","externalIdentifiers","getTags","partnerId","marketId","__async","closeAll","getValue","availableTags","firstValueFrom","config","minWidth","maxWidth","width","data","opportunityId","opportunityTags","open","AddTagsDialogComponent","afterClosed","take","res","subscribe","emit","ɵɵdirectiveInject","MatDialog","AccountGroupApiService","SalesOpportunitiesService","selectors","inputs","loading","outputs","decls","vars","consts","template","rf","ctx","OpportunityTagsComponent_ng_container_0_Template","OpportunityTagsComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","OpportunityTagsComponent_ng_template_3_Template","opportunityTags_r6","_OpportunityTagsComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ctx_r0","getErrorMessage","ReopenOpportunityDialogComponent","constructor","dialogRef","translate","data","reason","UntypedFormControl","Validators","required","opportunityInfo","onSubmit","valid","close","value","hasError","instant","ɵɵdirectiveInject","MatDialogRef","TranslateService","MAT_DIALOG_DATA","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵelementContainerStart","ɵɵlistener","ɵɵelement","ɵɵtemplate","ReopenOpportunityDialogComponent_mat_error_13_Template","ɵɵtextInterpolate1","ɵɵpipeBind2","ɵɵpureFunction1","_c0","opportunityName","ɵɵpipeBind1","ɵɵpropertyInterpolate","ɵɵproperty","invalid","_ReopenOpportunityDialogComponent","ɵɵelementContainer","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","closeStateOption_r2","value","ɵɵadvance","ɵɵtextInterpolate1","displayValue","ɵɵtemplate","CloseOpportunityDialogComponent_ng_template_10_mat_option_5_Template","ɵɵpipeBind1","ctx_r2","closeStateOptions","reasonOption_r4","CloseOpportunityDialogComponent_mat_form_field_12_mat_option_7_Template","defaultReason","reasonOptions","CloseOpportunityDialogComponent","constructor","fb","dialogRef","translate","data","closeState","CloseState","instant","WON","LOST","ngOnInit","createForm","isCloseStateNullOrUndefined","undefined","closeOpportunityForm","group","getInitialCloseState","Validators","required","reason","notes","actualClosedDate","Date","disableCloseOppNotes","get","disable","controls","setValue","updateCloseOpportunityReason","valueChanges","subscribe","setValidators","updateValueAndValidity","ɵɵdirectiveInject","UntypedFormBuilder","MatDialogRef","TranslateService","MAT_DIALOG_DATA","selectors","decls","vars","consts","template","rf","ctx","ɵɵelement","CloseOpportunityDialogComponent_ng_container_9_Template","CloseOpportunityDialogComponent_ng_template_10_Template","ɵɵtemplateRefExtractor","CloseOpportunityDialogComponent_mat_form_field_12_Template","ɵɵlistener","i0","ɵɵrestoreView","_r1","ɵɵresetView","close","selectState_r5","ɵɵpropertyInterpolate","valid","_CloseOpportunityDialogComponent","ɵɵelementContainer","ɵɵproperty","createOrderButton_r2","ɵɵelementStart","ɵɵtemplate","CloseOpportunityComponent_div_0_ng_container_1_Template","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r2","ɵɵnextContext","ɵɵresetView","closeOpportunity","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵpipeBind1","canCreateOrders$","ɵɵtextInterpolate1","ɵɵelementContainerStart","_r4","reopenOpportunity","CloseOpportunityComponent_ng_template_2_ng_container_5_Template","CloseOpportunityComponent_ng_template_2_ng_template_7_Template","ɵɵtemplateRefExtractor","closedWon$","closedLost_r5","opportunity_r7","_r6","ngIf","createOrderAction","CloseOpportunityComponent_ng_template_4_button_0_Template","opportunity$","CloseOpportunityComponent","constructor","router","dialog","salesOpportunitiesApiService","opportunityUpdates","snackbarService","translate","config","subscriptions","SubscriptionList","new","opportunityOpen$$","BehaviorSubject","closedWon$$","opportunityOpen$","asObservable","currentOpportunity$","pipe","shareReplay","ordersUrl","getOrdersUrl","ngOnInit","add","opp","next","isClosed","pipelineStage","__async","orderUrl","navigate","route","queryParams","won","closeState","CloseState","WON","LOST","opportunity","firstValueFrom","dialogRef","open","CloseOpportunityDialogComponent","width","data","afterClosed","switchMap","EMPTY","notes","closeOpportunityAsWon","opportunityId","accountGroupId","salesPersonId","reason","ClosedLostReasonStringMapping","closeOpportunityAsLost","reopenOpportunityRequest$","ReopenOpportunityDialogComponent","opportunityName","name","then","catch","err","instant","openErrorSnack","ɵɵdirectiveInject","Router","MatDialog","SalesOpportunitiesService","OpportunityService","SnackbarService","TranslateService","SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN","selectors","decls","vars","consts","template","rf","ctx","CloseOpportunityComponent_div_0_Template","CloseOpportunityComponent_ng_template_2_Template","CloseOpportunityComponent_ng_template_4_Template","opportunityClosed_r8","_CloseOpportunityComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","type_r3","id","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","displayName","ɵɵelementContainerStart","ɵɵlistener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","emitTypeChange","value","ɵɵtemplate","TypeSelectorComponent_ng_container_0_mat_option_8_Template","ɵɵtextInterpolate","tmp_3_0","selectedType$","availableTypes_r4","getOpportunityTypeFromId","typeId","OpportunityTypes","find","t","getDefaultOpportunityType","TypeSelectorComponent","constructor","typeChanged","EventEmitter","opportunityTypes$$","BehaviorSubject","opportunityTypes$","asObservable","selectedType$$","defaultType","type","next","emit","selectors","inputs","outputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","TypeSelectorComponent_ng_container_0_Template","MatSelectModule","MatSelect","MatOption","CommonModule","NgForOf","NgIf","AsyncPipe","TranslateModule","TranslatePipe","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","encapsulation","_TypeSelectorComponent","ɵɵelementStart","ɵɵlistener","$event","opportunity_r2","ɵɵrestoreView","_r1","ngIf","ctx_r2","ɵɵnextContext","ɵɵresetView","handleTypeChange","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpipeBind1","initialType$","UpdateTypeSelectorComponent","constructor","opportunityUpdates","snackbarService","ngOnInit","opportunity$","currentOpportunity$","pipe","map","opportunity","getOpportunityTypeFromId","opportunityType","typeId","__async","firstValueFrom","updateType","openSuccessSnack","openErrorSnack","ɵɵdirectiveInject","OpportunityService","SnackbarService","selectors","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","UpdateTypeSelectorComponent_div_0_Template","MatFormFieldModule","CommonModule","NgIf","AsyncPipe","TranslateModule","MatSelectModule","TypeSelectorComponent","OpportunityServiceModule","encapsulation","_UpdateTypeSelectorComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","pipeline_r4","ɵɵadvance","ɵɵtextInterpolate1","name","ɵɵelementContainerStart","ɵɵlistener","$event","ɵɵrestoreView","_r1","opportunity_r2","ɵɵnextContext","ngIf","ctx_r2","ɵɵresetView","pipelineSelectionChange","value","ɵɵtemplate","PipelineSelectorComponent_div_0_ng_container_1_ng_container_1_mat_option_9_Template","ɵɵpipeBind1","ɵɵpropertyInterpolate","selectedPipeline$","pipelines_r5","PipelineSelectorComponent_div_0_ng_container_1_ng_container_1_Template","length","stage_r7","ɵɵtextInterpolate","PipelineSelectorComponent_div_0_ng_container_3_glxy_error_5_Template","_r6","stageSelectionChange","PipelineSelectorComponent_div_0_ng_container_3_mat_option_11_Template","Boolean","selectedStage$","pipeline_r8","stages","PipelineSelectorComponent_div_0_ng_container_1_Template","PipelineSelectorComponent_div_0_ng_container_3_Template","userPipelines$","PipelineSelectorComponent","constructor","config","opportunityUpdates","ngOnInit","pipelines$","opportunity$","currentOpportunity$","combineLatest","pipe","distinctUntilChanged","map","opp","pipelines","oppPipeline","find","p","id","pipelineId","pipeline","findStage","probability","updatePipelineId","stage","updateProbability","ɵɵdirectiveInject","SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN","OpportunityService","selectors","decls","vars","consts","template","rf","ctx","PipelineSelectorComponent_div_0_Template","_PipelineSelectorComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","contractDuration_r1","value","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","key","ɵɵtextInterpolate","ContractDurationSelectorComponent","parentForm","_parentForm","isEmbeddedForm","constructor","updateService","snackbarService","contractDurationTranslations","contractDurationKeysToEnum","destroyRef","inject","DestroyRef","ngOnInit","setFormGroup","opportunity$","currentOpportunity$","pipe","takeUntilDestroyed","subscribe","opportunity","setValueUpdateSubscription","duration","expectedContractDuration","period","contractDurationForm","FormGroup","contractDurationValue","FormControl","validateContractDurationValue","MIN_CONTRACT_DURATION_REGEX","contractDurationPeriod","addControl","valueChanges","withLatestFrom","filter","formValue","dirty","switchMap","updateExpectedContractDuration","take","newOpp","openSuccessSnack","openErrorSnack","ɵɵdirectiveInject","OpportunityService","SnackbarService","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵelement","ɵɵtemplate","ContractDurationSelectorComponent_mat_option_7_Template","ContractDurationSelectorComponent_glxy_hint_8_Template","_ContractDurationSelectorComponent","r","regexp","RegExp","c","undefined","test","valid","SubscribersSelectorComponent","constructor","config","opportunityUpdatesService","snackbarService","subscribersFormControl","FormControl","value","disabled","opportunity$","currentOpportunity$","pipe","takeUntilDestroyed","subscribe","opportunity","setValue","subscriberUserIds","emitEvent","enable","salespeople$","combineLatest","map","salespeople","filter","sp","id","salesPersonId","name","fullName","valueChanges","debounceTime","salesUserIds","firstValueFrom","updateSubscribers","then","openSuccessSnack","catch","openErrorSnack","ɵɵdirectiveInject","SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN","OpportunityService","SnackbarService","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵproperty","_SubscribersSelectorComponent","OpportunityNameComponent","constructor","updateService","snackbarService","opportunityNameControl","FormControl","Validators","required","opportunity$","currentOpportunity$","pipe","takeUntilDestroyed","subscribe","opp","setValue","name","emitEvent","valueChanges","distinctUntilChanged","filter","valid","debounceTime","switchMap","newName","updateName","newOpp","openSuccessSnack","openErrorSnack","updateValueAndValidity","ɵɵdirectiveInject","OpportunityService","SnackbarService","selectors","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵpropertyInterpolate","ɵɵproperty","CommonModule","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","MatInputModule","MatInput","TranslateModule","TranslatePipe","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","FormControlDirective","styles","_OpportunityNameComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","sp_r1","id","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","fullName","AssigneeSelectorComponent","constructor","salespersonService","opportunityUpdatesService","config","opportunity$","currentOpportunity$","assigneeId$","pipe","map","opp","salesPersonId","lookupSalesperson$","distinctUntilChanged","x","y","withLatestFrom","partnerId$","switchMap","partnerId","getSalespersonBySubjectId","salesperson","Salesperson","convertSalespeopleFromSalesResponse","catchError","of","undefined","salespeople$","combineLatest","salespeople","assigneeId","findIndex","sp","updateAssignee","__async","take","updateOpportunitySalesperson","firstValueFrom","ɵɵdirectiveInject","SalespersonService","OpportunityService","SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN","selectors","decls","vars","consts","template","rf","ctx","ɵɵlistener","$event","value","ɵɵtemplate","AssigneeSelectorComponent_mat_option_6_Template","ɵɵtextInterpolate","_AssigneeSelectorComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵlistener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","handleExpectedCloseDateChange","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵproperty","expectedClosePicker_r4","ɵɵpropertyInterpolate","opportunity_r3","expectedCloseDate","minDate","ExpectedCloseSelectorComponent","constructor","updateService","snackbarService","addDays","Date","destroyRef","inject","DestroyRef","ngOnInit","opportunity$","currentOpportunity$","pipe","take","switchMap","opp","updateExpectedCloseDate","value","subscribe","newOpp","openSuccessSnack","openErrorSnack","ɵɵdirectiveInject","OpportunityService","SnackbarService","selectors","decls","vars","consts","template","rf","ctx","ɵɵtemplate","ExpectedCloseSelectorComponent_glxy_form_field_0_Template","_ExpectedCloseSelectorComponent","OpportunityInfoFormComponent","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","_OpportunityInfoFormComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind2","ɵɵpureFunction1","_c0","opportunity_r1","created","projectedFirstYearValue","ctx_r1","preferredCurrency","ɵɵpipeBind1","OpportunityInfoComponent","constructor","opportunity$$","ReplaySubject","opportunity$","asObservable","opportunity","next","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵtemplate","OpportunityInfoComponent_div_0_Template","ɵɵproperty","_OpportunityInfoComponent","OpportunityQualificationComponent","selectors","inputs","opportunity","decls","vars","consts","template","rf","ctx","ɵɵelement","ɵɵproperty","accountGroupId","opportunityId","salesPersonId","_OpportunityQualificationComponent","OpportunityNotesEditComponent","constructor","save","EventEmitter","cancel","ngAfterContentInit","textarea","nativeElement","focus","handleSave","event","stopPropagation","emit","note","handleCancel","selectors","viewQuery","rf","ctx","ɵɵelementStart","ɵɵtwoWayListener","$event","i0","ɵɵrestoreView","_r1","ɵɵtwoWayBindingSet","ɵɵresetView","ɵɵelementEnd","ɵɵlistener","ɵɵtext","ɵɵadvance","ɵɵtwoWayProperty","ɵɵproperty","opportunityNotes_r2","ɵɵtextInterpolate1","ɵɵpipeBind1","_OpportunityNotesEditComponent","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","enterEditMode","ɵɵtext","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵtemplate","OpportunityNotesComponent_ng_template_1_div_0_div_1_div_2_Template","note_r3","editable$","OpportunityNotesComponent_ng_template_1_div_0_div_1_Template","currentNote$","emptyState_r4","OpportunityNotesComponent_ng_template_1_div_0_Template","inEditMode$","editMode_r5","_r6","OpportunityNotesComponent_ng_template_3_div_7_Template","ɵɵtextInterpolate","$event","_r7","save","cancel","OpportunityNotesComponent","constructor","currentNote$$","ReplaySubject","asObservable","editable$$","inEditMode$$","BehaviorSubject","noteChanged","EventEmitter","note","currentNote","next","editable","isEditable","newNote","emit","selectors","inputs","loading","outputs","decls","vars","consts","template","rf","ctx","OpportunityNotesComponent_div_0_Template","OpportunityNotesComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","OpportunityNotesComponent_ng_template_3_Template","OpportunityNotesComponent_ng_template_5_Template","note_r8","_OpportunityNotesComponent","openSecureNewTab","url","window","open","OpportunityBusinessService","constructor","businessInfoService","workStateMap","ObservableWorkStateMap","state","currentBusiness$$","BehaviorSubject","currentBusiness$","pipe","filter","Boolean","loadBusinessAndSetSelected","accountId","business$","getBusinessData","result$","merge","getWorkResults$","first","subscribe","value","next","getMarketName","partnerId","marketId","getBusinessDataUrl","isEdit","getAccountTags","canEditCustomerIdentifier","canEditCustomFields","ɵɵinject","BUSINESS_INFO_SERVICE_TOKEN","factory","ɵfac","_OpportunityBusinessService","ɵɵelementContainerStart","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","handleRetry","ɵɵtext","ɵɵtextInterpolate1","failMessage","ɵɵpipeBind1","ɵɵtemplate","AsyncTextComponent_ng_template_1_ng_container_0_Template","loadFailed","text_r3","ɵɵprojection","AsyncTextComponent","constructor","loading","retry","EventEmitter","emit","selectors","inputs","failTooltipText","outputs","ngContentSelectors","_c0","decls","vars","consts","template","rf","ctx","AsyncTextComponent_ng_container_0_Template","AsyncTextComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","AsyncTextComponent_ng_template_3_Template","content_r4","_AsyncTextComponent","import_dayjs","LocalTimeCardService","constructor","accountGroupSdk","getLocalTime","agid","EMPTY","projectionFilter","ProjectionFilter","napData","get","pipe","switchMap","ag","of","address","city","timezone","ɵɵinject","AccountGroupApiService","factory","ɵfac","_LocalTimeCardService","import_timezone","import_utc","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpipeBind1","ctx_r0","editTimezoneUrl$","ɵɵtextInterpolate1","ɵɵelement","ɵɵtextInterpolate","localTime_r2","time","address","ɵɵlistener","ɵɵrestoreView","_r3","ɵɵnextContext","ɵɵresetView","retryLoading","success$","loading$","ɵɵtemplate","LocaltimeCardComponent_ng_template_10_ng_container_0_Template","LocaltimeCardComponent_ng_template_10_ng_template_2_Template","ɵɵtemplateRefExtractor","localTime$","reload_r4","dayjs","extend","utc","timezone","LocaltimeCardComponent","accountGroupId","id","accountGroupId$$","next","editTimezoneUrl","url","editTimezoneUrl$$","constructor","localTimeCardService","router","ReplaySubject","accountGroupId$","pipe","distinctUntilChanged","subscriptions","SubscriptionList","new","timeState$","SwitchingWorkState","agid","getLocalTime","take","timeState","isLoading$","isSuccess$","add","tap","startWork","combineLatest","workResults$","timer","map","timeObj","tz","format","shouldAddTimezone$","editUrl","localTime","firstValueFrom","then","ngOnDestroy","destroy","ɵɵdirectiveInject","LocalTimeCardService","Router","selectors","inputs","ngContentSelectors","_c1","decls","vars","consts","template","rf","ctx","ɵɵprojection","LocaltimeCardComponent_ng_container_8_Template","LocaltimeCardComponent_ng_template_10_Template","showTime_r5","_LocaltimeCardComponent","ɵɵelementContainer","ɵɵelementContainerStart","ɵɵtemplate","BusinessInfoComponent_ng_container_0_ng_container_1_Template","ɵɵadvance","ɵɵproperty","ctx_r0","pipelineBoardSlideoutStyling","infoCardSlideout_r2","infoCardDefault_r3","contactInfoSlideout_r4","businessCategoriesLayoutFirst_r5","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵprojection","ɵɵtextInterpolate","ɵɵpipeBind1","tmp_12_0","businessDataUrl$","edit","contactInfoDefault_r6","socialMediaLayoutFirst_r7","tmp_13_0","info","ɵɵpureFunction0","_c2","ɵɵtextInterpolate1","bizData_r8","name","streetAddress","ɵɵtextInterpolate3","city","state","countryCode","zip","phoneAndWebsite_r9","BusinessInfoComponent_ng_template_6_ng_container_0_Template","businessData$","bizData_r10","ɵɵtextInterpolate4","BusinessInfoComponent_ng_template_8_ng_container_0_Template","ɵɵelement","businessCategories_r11","businessId","socialMedia_r12","bizData_r13","phoneNumber","website","BusinessInfoComponent_ng_template_14_ng_container_0_Template","sc_r15","BusinessInfoComponent_ng_template_16_ng_container_9_div_1_ng_template_5_div_0_Template","bizData_r16","serviceCategories","BusinessInfoComponent_ng_template_16_ng_container_9_div_1_ng_container_4_Template","BusinessInfoComponent_ng_template_16_ng_container_9_div_1_ng_template_5_Template","ɵɵtemplateRefExtractor","length","listCategories_r17","BusinessInfoComponent_ng_template_16_ng_container_9_div_1_Template","tag_r18","BusinessInfoComponent_ng_template_16_div_26_span_2_Template","tags","BusinessInfoComponent_ng_template_16_ng_container_9_Template","ɵɵlistener","ɵɵrestoreView","_r14","ɵɵnextContext","ɵɵresetView","triggerGetMarketNameWork","BusinessInfoComponent_ng_template_16_div_26_Template","BusinessInfoComponent_ng_template_16_ng_template_27_Template","vCategoryIds$","ɵɵpropertyInterpolate2","ɵɵpipeBind2","_c3","marketNameFailed$","marketNameLoading$","marketName$","noTags_r19","_r21","socialUrls_r22","ngIf","openUrl","facebookUrl","_r23","twitterUrl","_r24","linkedinUrl","BusinessInfoComponent_ng_template_18_div_0_mat_icon_2_Template","BusinessInfoComponent_ng_template_18_div_0_ng_template_3_Template","BusinessInfoComponent_ng_template_18_div_0_mat_icon_5_Template","BusinessInfoComponent_ng_template_18_div_0_ng_template_6_Template","BusinessInfoComponent_ng_template_18_div_0_mat_icon_8_Template","BusinessInfoComponent_ng_template_18_div_0_ng_template_9_Template","_r20","googleSearchForBusiness","inactiveFacebook_r25","inactiveTwitter_r26","inactiveLinkedin_r27","BusinessInfoComponent_ng_template_18_div_0_Template","socialUrls$","BusinessInfoComponent","id","businessService","loadBusinessAndSetSelected","constructor","marketNameState$","SwitchingWorkState","input","partnerId","marketId","EMPTY","getMarketName","pipe","take","marketNameState","isLoading$","isSuccess$","map","isSuccess","subscriptions","SubscriptionList","new","currentBusiness$","add","workResults$","business","getBusinessDataUrl","socialUrls","distinctUntilChanged","x","y","vCategories","firstValueFrom","then","bd","startWork","url","openSecureNewTab","googleSearchPhrase","replace","trim","ngOnDestroy","destroy","ɵɵdirectiveInject","OpportunityBusinessService","selectors","inputs","ngContentSelectors","_c1","decls","vars","consts","template","rf","ctx","BusinessInfoComponent_ng_container_0_Template","BusinessInfoComponent_ng_template_2_Template","BusinessInfoComponent_ng_template_4_Template","BusinessInfoComponent_ng_template_6_Template","BusinessInfoComponent_ng_template_8_Template","BusinessInfoComponent_ng_template_10_Template","BusinessInfoComponent_ng_template_12_Template","BusinessInfoComponent_ng_template_14_Template","BusinessInfoComponent_ng_template_16_Template","BusinessInfoComponent_ng_template_18_Template","BusinessInfoComponent_ng_template_20_Template","tmp_10_0","deletedState_r28","_BusinessInfoComponent","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","ɵɵresetView","setMode","$event","addActivity","ɵɵelementEnd","ɵɵproperty","crmObjectType","ɵɵpipeBind1","companyId$","extraAssociations$","_r4","loadMoreActivities","OpportunityActivitiesComponent","opportunity","value","opportunity$$","next","constructor","accountGroupService","activitiesTimelineService","mode","showLoadMore","scrollTop","crmAssociationType","ReplaySubject","initializeState","setupSubscriptions","pipe","map","opportunityId","filter","id","Boolean","distinctUntilChanged","crmObjectId","accountGroup$","accountGroupId","switchMap","get","ProjectionFilter","accountGroupExternalIdentifiers","shareReplay","opportunityId$","accountGroup","externalIdentifiers","activity","timeline","handleActivitiesChanged","activities","scrollableContainer","nativeElement","length","ɵɵdirectiveInject","AccountGroupService","ActivitiesTimelineService","selectors","viewQuery","rf","ctx","provide","PrimaryAccountGroupIDForCrmObject","useFactory","comp","deps","decls","vars","consts","template","ɵɵtemplate","OpportunityActivitiesComponent_crm_activity_logger_0_Template","i0","_r1","ɵɵtext","OpportunityActivitiesComponent_glxy_infinite_scroll_trigger_12_Template","ɵɵadvance","ɵɵtextInterpolate1","_OpportunityActivitiesComponent","ɵɵelementContainer","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtemplate","OpportunityDetailsComponent_ng_container_5_ng_container_4_Template","ɵɵelementEnd","ɵɵelement","ɵɵadvance","ɵɵproperty","ɵɵpipeBind1","details_r3","ctx_r1","opportunity$","ɵɵlistener","$event","ɵɵrestoreView","_r5","ɵɵnextContext","ɵɵresetView","updateNote","updateNoteLoading$$","isEditable$","tmp_5_0","notes","partnerId$","marketId$","opportunity_r6","accountGroupId","opportunityId","bypassQuantityRestrictions$","OpportunityDetailsComponent_ng_template_7_ng_container_36_sales_ui_sales_order_confirmation_1_Template","forceReload$","ɵɵtext","_r4","handleQualificationClicked","OpportunityDetailsComponent_ng_template_7_ng_container_21_Template","OpportunityDetailsComponent_ng_template_7_sales_ui_opportunity_notes_28_Template","OpportunityDetailsComponent_ng_template_7_ng_container_36_Template","handleTagsChanged","mode$","ɵɵtextInterpolate1","accountGroupId$","ɵɵtextInterpolate","updateTagsLoading$$","OpportunityDetailsComponent","constructor","config","updates","opportunityDetailsSlideoutService","snackbarService","sidePanelEvents","userEvents$$","Subject","subscriptions","SubscriptionList","new","BehaviorSubject","forceReload$$","asObservable","currentOpportunity$","pipe","map","opportunity","shareReplay","bufferSize","refCount","showActivities$","of","add","next","window","setTimeout","ngOnDestroy","destroy","setMode","tags","__async","work$","updateTags","finalize","firstValueFrom","openErrorSnack","closeSideNav","sidePanelCloseRequested","newNote","ɵɵdirectiveInject","SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN","OpportunityService","OpportunityDetailsService","SnackbarService","OpportunitySidePanelEventsService","selectors","decls","vars","consts","template","rf","ctx","i0","_r1","OpportunityDetailsComponent_ng_container_5_Template","OpportunityDetailsComponent_ng_template_7_Template","ɵɵtemplateRefExtractor","tmp_1_0","name","_OpportunityDetailsComponent","CONTRACT_DURATION_FORM_NAME","CONTRACT_DURATION_FORM_PERIOD","CONTRACT_DURATION_FORM_VALUE","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","pipeline_r3","ɵɵadvance","ɵɵtextInterpolate1","name","ɵɵlistener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","selectPipeline","value","ɵɵtemplate","OpportunityPipelineSelectorComponent_div_0_glxy_form_field_2_mat_option_6_Template","ɵɵtextInterpolate","ɵɵpipeBind1","selectedPipeline$","pipelines_r4","stage_r7","probability","selectedPipeline_r6","_r5","ngIf","selectStage","OpportunityPipelineSelectorComponent_div_0_glxy_form_field_3_mat_option_5_Template","stages","OpportunityPipelineSelectorComponent_div_0_glxy_form_field_2_Template","OpportunityPipelineSelectorComponent_div_0_glxy_form_field_3_Template","form","length","OpportunityPipelineSelectorComponent","constructor","formBuilder","config","subscriptionList","SubscriptionList","new","pipelineValues","EventEmitter","selectedPipeline$$","ReplaySubject","asObservable","pipelines$","cachedPipeline$","currentPipeline$","group","stage","ngOnInit","add","cachedPipeline","pipeline","ngOnDestroy","destroy","emitSelection","emit","pipelineId","id","controls","setValue","next","ɵɵdirectiveInject","FormBuilder","SALES_UI_CREATE_OPPORTUNITY_CONFIG_TOKEN","selectors","outputs","decls","vars","consts","template","rf","ctx","OpportunityPipelineSelectorComponent_div_0_Template","_OpportunityPipelineSelectorComponent","ɵɵtext","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵelementStart","ɵɵtemplate","CreateOpportunityComponent_mat_vertical_stepper_5_mat_step_2_ng_template_1_Template","ɵɵelement","ɵɵelementEnd","ɵɵproperty","ctx_r1","accountForm","ɵɵadvance","accountCtrl","ɵɵpipeBind2","ɵɵpureFunction1","_c3","spFullName_r3","ɵɵtextInterpolate","sp_r4","fullName","CreateOpportunityComponent_mat_vertical_stepper_5_mat_expansion_panel_34_span_6_Template","CreateOpportunityComponent_mat_vertical_stepper_5_mat_expansion_panel_34_ng_template_7_Template","ɵɵtemplateRefExtractor","CreateOpportunityComponent_mat_vertical_stepper_5_mat_expansion_panel_34_mat_option_22_Template","additionalInfoForm","controls","selectedSalesperson","value","loading_r6","compareSalespeople","salespeople_r5","selectedSubscribers","subscribers$","tags$","ɵɵpureFunction0","_c2","tags","CreateOpportunityComponent_mat_vertical_stepper_5_mat_step_2_Template","CreateOpportunityComponent_mat_vertical_stepper_5_ng_template_5_Template","ɵɵlistener","ɵɵrestoreView","_r1","ɵɵnextContext","ɵɵresetView","secondStepNext","CreateOpportunityComponent_mat_vertical_stepper_5_ng_template_18_Template","$event","setPipelineValues","handleTypeChanged","CreateOpportunityComponent_mat_vertical_stepper_5_mat_expansion_panel_34_Template","closeSideNav","pmConfig_r7","ngIf","saveHandler","CreateOpportunityComponent_mat_vertical_stepper_5_mat_spinner_47_Template","CreateOpportunityComponent_mat_vertical_stepper_5_ng_template_49_Template","skipAccountSelection$","partnerId","marketId","firstStepCtrl","accountGroupId","currency","bypassQuantityLimit","datePicker_r8","today","defaultOpportunityType","sortedSalespeople$","saving$","submitButtonText_r9","CreateOpportunityComponent","constructor","formBuilder","sidePanelEvents","businessService","snackbarService","config","opportunityApi","packageService","appPartnerService","createService","marketOverride","destroyRef","inject","DestroyRef","skipAccountSelection$$","BehaviorSubject","asObservable","Date","getDefaultOpportunityType","saving$$","partnerId$","marketId$","of","bypassQuantityRestrictions$","defaultCurrency$","salesPersonId$","salespersonId$","salesPeople$","salespeople$","data$","createPageDetails$","partnerMarketConfig$","combineLatest","pipe","map","ngOnInit","initFirstStep","initFinalStep","currentBusiness$","takeUntilDestroyed","subscribe","business","pageData","sourceLocation","next","setValue","companyName","name","businessId","disable","FormControl","Validators","required","group","salesOrderConfirmation","isFormValid","stepper","monthFromToday","startOfDay","addMonths","pipelineAndStageCtrl","undefined","expectedClosedDate","opportunityName","overviewNotes","opportunityType","id","switchMap","pm","getTags","t","tap","people","me","curSalesperson","find","sp","sort","sp1","sp2","localeCompare","values","newType","areFormsInvalid","invalid","autoGenerateOpportunityNameFromLineItem$","li","packageId","getPackageName","getAppName","appKey","appId","editionId","getMulti","packages","AppKey","apps","sharedMarketingInformation","getCurrentLineItems","filter","item","p","quantity","contractDuration","form","CONTRACT_DURATION_FORM_NAME","CONTRACT_DURATION_FORM_VALUE","duration","CONTRACT_DURATION_FORM_PERIOD","isContractDurationInvalid","partnerMarket","lineItems","length","openErrorSnack","subscriberUserIds","assigneeId","includes","take","autoGenOppNameFromLineItem","createOpportunity","o","onSubmitSuccess","add","items","nameFallback","rawExpectedCloseDate","expectCloseDate","zonedTimeToUtc","endOfDay","create","probability","pipelineId","OrderToOpportunityLineItems","openSuccessSnack","opportunityCreated","sidePanelCloseRequested","ɵɵdirectiveInject","FormBuilder","OpportunitySidePanelEventsService","OpportunityBusinessService","SnackbarService","SALES_UI_CREATE_OPPORTUNITY_CONFIG_TOKEN","SalesOpportunitiesService","PackageService","AppPartnerService","CreateOpportunityService","MARKET_ID_OVERRIDE_TOKEN","selectors","viewQuery","rf","ctx","CreateOpportunityComponent_mat_vertical_stepper_5_Template","_CreateOpportunityComponent","ɵɵelement","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtemplate","PipelineSidePanelComponent_ng_container_3_sales_ui_opportunity_details_3_Template","PipelineSidePanelComponent_ng_container_3_sales_ui_create_opportunity_4_Template","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","sidePanelState_r1","state","ctx_r1","SidePanelState","opportunityDetails","opportunityCreate","PipelineSidePanelComponent","constructor","sidePanelState","slideOutPanelService","opportunityUpdates","detailsSlideOut","createOpportunityService","sidePanelEvents","destroyRef","inject","DestroyRef","sidePanelState$","pipe","startWith","data","undefined","opportunity$","currentOpportunity$","formData","sourceLocation","setCreatePageDetails","opportunityCreatedEvents$","takeUntilDestroyed","subscribe","scrollToTop","sidePanelCloseEvents$","closeSlideOut","document","getElementById","scrollIntoView","behavior","ɵɵdirectiveInject","SidePanelStateService","SlideOutPanelService","OpportunityService","OpportunityDetailsService","CreateOpportunityService","OpportunitySidePanelEventsService","selectors","ngContentSelectors","_c1","decls","vars","consts","template","rf","ctx","ɵɵprojection","PipelineSidePanelComponent_ng_container_3_Template","ɵɵpipeBind1","_PipelineSidePanelComponent","OpportunityAttachmentsModule","CommonModule","TranslateModule","GalaxyUploaderModule","_OpportunityAttachmentsModule","OpportunityTagsModule","CommonModule","TranslateModule","ReactiveFormsModule","MatButtonModule","MatChipsModule","MatDialogModule","MatIconModule","GalaxyEmptyStateModule","GalaxyFormFieldModule","GalaxyLoadingSpinnerModule","GalaxyTagsModule","_OpportunityTagsModule","PipelineSelectorModule","MatFormFieldModule","MatOptionModule","MatSelectModule","TranslateModule","GalaxyFormFieldModule","_PipelineSelectorModule","ContractDurationSelectorModule","CommonModule","GalaxyFormFieldModule","ReactiveFormsModule","MatFormFieldModule","MatSelectModule","MatOptionModule","MatInputModule","TranslateModule","_ContractDurationSelectorModule","SubscribersSelectorModule","CommonModule","GalaxyFormFieldModule","ReactiveFormsModule","TranslateModule","VaFormsModule","_SubscribersSelectorModule","OPP_DATE_FORMATS","parse","dateInput","display","monthYearLabel","dateA11yLabel","monthYearA11yLabel","OpportunityInfoModule","provide","DateAdapter","useClass","MomentDateAdapter","deps","MAT_DATE_LOCALE","MAT_DATE_FORMATS","useValue","imports","CommonModule","ReactiveFormsModule","MatFormFieldModule","MatSelectModule","MatInputModule","TranslateModule","PreferredCurrencyModule","MatMenuModule","MatIconModule","VaFormsModule","MatNativeDateModule","MatDatepickerModule","UIKitModule","MatButtonModule","MatDialogModule","GalaxyFormFieldModule","UpdateTypeSelectorComponent","PipelineSelectorModule","ContractDurationSelectorModule","SubscribersSelectorModule","OpportunityNameComponent","_OpportunityInfoModule","OpportunityQualificationModule","CommonModule","MatButtonModule","TranslateModule","MatExpansionModule","MatIconModule","UIKitModule","EmptyStateModule","MatButtonToggleModule","MatTabsModule","RouterModule","MatTooltipModule","AsyncUiModule","MatSelectModule","MatDividerModule","MatProgressBarModule","MeddicModule","_OpportunityQualificationModule","AsyncTextModule","CommonModule","MatIconModule","MatButtonModule","TranslateModule","MatProgressSpinnerModule","_AsyncTextModule","LocalTimeCardModule","LocalTimeCardService","imports","CommonModule","MatCardModule","MatInputModule","MatDividerModule","AsyncTextModule","TranslateModule","RouterModule","_LocalTimeCardModule","FacebookIconSvg","TwitterIconSvg","LinkedInIconSvg","BusinessSearchSvg","BusinessInfoModule","constructor","iconRegistry","sanitizer","addSvgIconLiteral","bypassSecurityTrustHtml","FacebookIconSvg","TwitterIconSvg","LinkedInIconSvg","BusinessSearchSvg","ɵɵinject","MatIconRegistry","DomSanitizer","CommonModule","MatCardModule","MatInputModule","MatDividerModule","MatDialogModule","MatIconModule","AsyncTextModule","RouterModule","VFormModule","BusinessProfileModule","VaBadgeModule","TranslateModule","LocalTimeCardModule","MatListModule","MatGridListModule","MatButtonModule","GalaxyPageModule","BusinessCategoryModule","GalaxyBadgeModule","_BusinessInfoModule","OpportunityNotesModule","CommonModule","MatButtonModule","MatFormFieldModule","MatInputModule","TranslateModule","EmptyStateModule","FormsModule","GalaxyFormFieldModule","GalaxyEmptyStateModule","MatIconModule","VoiceDictationModule","GalaxyLoadingSpinnerModule","_OpportunityNotesModule","OpportunityActivitiesModule","CommonModule","TranslateModule","MatButtonModule","MatIconModule","CrmActivityLoggerComponent","CrmTimelineComponent","GalaxyInfiniteScrollTriggerModule","_OpportunityActivitiesModule","OpportunityDetailsModule","OpportunityDetailsService","imports","CommonModule","MatExpansionModule","MatIconModule","TranslateModule","OpportunityAttachmentsModule","OpportunityTagsModule","OpportunityInfoModule","OpportunityQualificationModule","OpportunityNotesModule","SalesOrderConfirmationModule","BusinessInfoModule","MatTabsModule","MatToolbarModule","OpportunityActivitiesModule","_OpportunityDetailsModule","AccountSelectorModule","AccountSelectorApiService","imports","CommonModule","GalaxyFormFieldModule","MatAutocompleteModule","MatInputModule","ReactiveFormsModule","TranslateModule","_AccountSelectorModule","CreateOpportunityModule","CreateOpportunityService","imports","CommonModule","MatIconModule","TranslateModule","AccountSelectorModule","FormsModule","MatButtonModule","MatStepperModule","ReactiveFormsModule","SalesOrderConfirmationModule","GalaxyFormFieldModule","MatSelectModule","MatExpansionModule","MatInputModule","VaFormsModule","MatDatepickerModule","MatDividerModule","TypeSelectorComponent","MatProgressSpinnerModule","ContractDurationSelectorModule","_CreateOpportunityModule","PipelineSidePanelModule","CommonModule","SlideOutPanelModule","GalaxyEmptyStateModule","MatIconModule","MatButtonModule","MatExpansionModule","TranslateModule","OpportunityDetailsModule","CreateOpportunityModule","_PipelineSidePanelModule","AccountFilterModule","AccountFilterService","imports","CommonModule","AccountSelectorModule","TranslateModule","MatButtonModule","MatDialogModule","_AccountFilterModule","OpportunityTypeFilterModule","OpportunityTypeFilterService","OpportunityTypeFilterStoreService","imports","CommonModule","UpdateTypeSelectorComponent","TranslateModule","MatButtonModule","MatDialogModule","MatFormFieldModule","MatOptionModule","MatSelectModule","_OpportunityTypeFilterModule","OpportunityModule","OpportunityBusinessService","provide","SALES_UI_OPPORTUNITY_DETAILS_CONFIG_TOKEN","useExisting","SALES_UI_OPPORTUNITY_CONFIG_TOKEN","SALES_UI_CREATE_OPPORTUNITY_CONFIG_TOKEN","SALES_PERSON_ID_TOKEN","deps","useFactory","salesPersonIdFactory","PIPELINES_TOKEN","pipelinesFactory","CURRENT_PIPELINE","currentPipelineFactory","SALESPERSON_ID_TOKEN","BUSINESS_INFO_SERVICE_TOKEN","businessInfoServiceFactory","ActivitiesTimelineService","RxState","imports","OpportunityServiceModule","_OpportunityModule","config","pipelines$","salespersonId$","currentPipeline$","businessInfoService","ɵɵelementContainer","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","clickUpdate","ɵɵtext","ɵɵelementEnd","ɵɵproperty","submitting","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵelement","ɵɵtemplate","SalesOrderFormComponent_ng_template_3_div_0_button_1_Template","SalesOrderFormComponent_ng_template_3_div_0_div_2_Template","SalesOrderFormComponent_ng_template_3_div_0_Template","showSelfSaveButton","loading$","orderData_r3","orderForms","length","extraQuestions","form","fileUploadUrl","commonData","productInfo","answers","extraAnswers","orderFormOptions","users","businessId","SalesOrderFormComponent_ng_template_5_div_0_Template","orderData$","loading_r4","SalesOrderFormComponent_ng_template_7_div_0_Template","SalesOrderFormComponent","constructor","alertService","salesOrderFormService","salesOrderStoreService","cdr","partnerId$","loading","EventEmitter","hasSalesOrderFormEvent","loading$$","BehaviorSubject","asObservable","subscriptions","ngOnInit","push","getOrderState","orderId","pipe","tap","orderState","next","orderStatus","order","status","subscribe","initialize","lineItems","userOptions","UntypedFormGroup","orderForms$","getOrderForms","commonData$","getCommonData","productInfo$","getProductInfo","extraQuestions$","getExtraQuestions","extraAnswers$","getExtraAnswers","answers$","getAnswers","map","combineLatest","zip","partnerId","orderData","emit","ngOnDestroy","forEach","sub","unsubscribe","clearOrderStateCache","getCommonFormData","orderFormComponent","getCustomFormData","getExtraFieldsData","requiresPartnerInput","orderFormRequiresPartnerInput","getLineItems","li","LineItem","changeReadOnly","readOnly","validateForm","valid","setAsTouched","openDropdown","result$","updateAnswers","openSuccessSnack","openErrorSnack","Status","DRAFTED","customFormData","extraFieldsData","commonFormData","take","detectChanges","markAsTouched","controls","i","Object","keys","UntypedFormControl","updateValueAndValidity","ɵɵdirectiveInject","SnackbarService","SalesOrderFormService","SalesOrderStoreService","ChangeDetectorRef","PARTNER_ID_TOKEN","selectors","viewQuery","rf","ctx","SalesOrderService","decls","vars","consts","template","ɵɵelementContainerStart","SalesOrderFormComponent_ng_container_1_Template","SalesOrderFormComponent_ng_container_2_Template","SalesOrderFormComponent_ng_template_3_Template","ɵɵtemplateRefExtractor","SalesOrderFormComponent_ng_template_5_Template","SalesOrderFormComponent_ng_template_7_Template","orderForm_r6","selfSaveButton_r5","_SalesOrderFormComponent","SalesOrderFormModule","SalesOrderService","SalesOrderFormService","SalesOrderStoreService","provide","useExisting","MarketplaceAppsApiService","imports","CommonModule","FormsModule","ReactiveFormsModule","VaOrderFormModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","MatButtonModule","MatCardModule","MatProgressSpinnerModule","MatExpansionModule","_SalesOrderFormModule"],"x_google_ignoreList":[0]}